Tag: aws sdk

Spring Boot,Spring Cloud AWS和AWS SQS无法从队列中读取

我正在尝试使用Spring Boot和Spring Cloud AWS SQS构建一个最小的gradle java项目,但我无法从队列中读取它。 这些是我的项目文件: 的build.gradle: apply plugin: “java” apply plugin: “eclipse” apply plugin: “spring-boot” apply plugin: “io.spring.dependency-management” sourceCompatibility = 1.8 targetCompatibility = 1.8 buildscript { repositories { mavenCentral() } dependencies { classpath(“org.springframework.boot:spring-boot-gradle-plugin:1.3.5.RELEASE”) classpath(“io.spring.gradle:dependency-management-plugin:0.5.2.RELEASE”) } } dependencyManagement { imports { mavenBom(“org.springframework.cloud:spring-cloud-aws:1.1.0.RELEASE”) } } repositories { mavenCentral() } dependencies { compile(“org.springframework.boot:spring-boot-starter-actuator:1.3.5.RELEASE”) compile(“org.springframework.cloud:spring-cloud-starter-aws:1.1.0.RELEASE”) // if […]

Kinesis:关闭工人的最佳/安全方法是什么?

我正在使用AWS Kinesis客户端库 。 我需要一种方法在部署期间关闭Kinesis Worker线程,这样我就停在检查点而不是在processRecords()的中间。 我在Worker.java看到了一个关闭boolean,但它是私有的。 我需要的原因是检查点和幂等性对我来说至关重要,我不想在批处理中间杀死进程。 [编辑] 感谢@CaptainMurphy,我注意到Worker.java公开了shutdown()方法,它安全地关闭了worker和LeaseCoordinator 。 它没有做的是在IRecordProcessor调用shutdown()任务。 它突然终止了IRecordProcessor而不用担心状态。 我确实理解KCL不保证检查点之间的幂等性,并且开发人员应该使设计容错,但我觉得在LeaseCoordinator停止之前, IRecordProcessor应该正确关闭, LeaseCoordinator 。

使用ResourceNotFoundException的简单DynamoDB请求失败

我刚刚使用Java SDK(v1.8)启动并运行DynamoDB。 我使用AWS控制台创建了一个非常简单的表。 我的表有一个主哈希键,它是一个String(没有范围)。 我已经将一个项目放入表中,其中包含4个其他属性值(所有字符串)。 我正在为表中的该项创建一个简单的Java请求,但是它因ResourceNotFoundException而失败。 我绝对肯定我提供的表名是正确的,因为我用来查询该项的主哈希键的名称。 表状态在AWS控制台中列为Active ,我也可以看到该项及其值。 这是我得到的错误: Requested resource not found (Service: AmazonDynamoDB; Status Code: 400; Error Code: ResourceNotFoundException; Request ID: …) 我尝试了以下(使用类的dynamodbv2版本): Map key = new HashMap(); key.put(PRIMARY_KEY, new AttributeValue().withS(value)); GetItemRequest request = new GetItemRequest() .withTableName(TABLE_NAME) .withKey(key); GetItemResult result = client.getItem(request); 我也尝试使用所有这些类的较旧的,已弃用的版本,如下所示: GetItemRequest request = new GetItemRequest() .withTableName(TABLE_NAME) .withKey(new Key().withHashKeyElement(new AttributeValue().withS(value))); […]

AWS S3无需访问和密钥在Java中上载

我想在不使用AWS服务器的访问权限和密钥的情况下将文件上传到S3。 AWS键应作为默认值。 但是,在服务器中运行以下命令,我可以访问它而无需提供任何访问和密钥。 aws s3 cp somefile.txt s3:// somebucket / 从Java代码,它无法访问,因为它无法加载凭据。 以下是我的代码。 AmazonS3 s3client = new AmazonS3Client(new DefaultAWSCredentialsProviderChain());

AWS Java SDK – 无法通过区域提供程序链查找区域

我已经完成了题为“以编程方式设置AWS区域1”的问题,但它没有提供我需要的所有答案。 Q1:我收到了SDKClientException-Unable to find a region via the region provider chain 。 我究竟做错了什么? 还是我错过了一个错字。 public class CreateS3Bucket { public static void main(String[] args) throws IOException { BasicAWSCredentials creds = new BasicAWSCredentials(“aws-access-key”, “aws-secret-key”); AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(creds)).build(); Region region = Region.getRegion(Regions.US_EAST_1); s3Client.setRegion(region); try { String bucketName = “testBucket” + UUID.randomUUID(); s3Client.createBucket(bucketName); System.out.println(“Bucket Created Successfully.”); } […]

如何从DynamoDB流新的图像中获取纯Json字符串?

我有一个启用了流媒体的Dynamodb表。 我还为此表创建了一个触发AWS Lambda函数的触发器。 在这个lambda函数中,我正在尝试从Dynamodb流中读取新图像(修改后的Dynamodb项)并尝试从中获取纯json字符串。 我的问题是如何获得通过流发送的DynamoDB项的纯json字符串? 我正在使用下面给出的代码片段来获取新的Image,但我不知道如何从中获取json字符串。 感谢你的帮助。 public class LambdaFunctionHandler implements RequestHandler { @Override public Object handleRequest(DynamodbEvent input, Context context) { context.getLogger().log(“Input: ” + input); for (DynamodbStreamRecord record : input.getRecords()){ context.getLogger().log(record.getEventID()); context.getLogger().log(record.getEventName()); context.getLogger().log(record.getDynamodb().toString()); Map currentRecord = record.getDynamodb().getNewImage(); //how to get the pure json string of the new image //………………………………………. } return “Successfully processed ” + […]

com.amazonaws.services.s3.model.AmazonS3Exception:Forbidden(Service:Amazon S3; Status Code:403; Error Code:403 Forbidden; Request ID:XXXXXXXX)

从几天开始,当我尝试将文件推送到S3Bucket时,我收到此exception。 Ealier的一切似乎都有效,我相信我的代码没有任何代码变化。 com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden (Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden; Request ID: XXXXXXXXXXXX), S3 Extended Request ID: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1077) at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:725) at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:460) at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:295) at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3699) at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:999) at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:977) …. …. 我遇到了许多与com.amazonaws.services.s3.model.AmazonS3exception相关的Q:禁止跟随这些 我已经在我的服务器上安装了NTP来解决任何时间相关的问题。 我还将“AmazonS3Client”对象的endPointUrl添加到我觉得可以解决我的问题的代码中。 我还可以尝试解决这个问题 我正在使用aws-java-sdk:1.9.10将文件推送到S3 Bucket。