有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java AWS S3 notificationConfiguration无法验证以下目标配置(服务:Amazon S3)

我通过java SDK创建了AWS S3和SNS。现在我试图为创建的S3存储桶设置事件。下面是我的代码片段

private void createS3Event(String snsTopicARN) {
    AmazonS3Client s3Client = new AmazonS3Client();
    BucketNotificationConfiguration notificationConfiguration = new BucketNotificationConfiguration();
    TopicConfiguration topicConfiguration = new TopicConfiguration(snsTopicARN, EnumSet.of(S3Event.ObjectCreated));
    notificationConfiguration.addConfiguration("snsTopicConfig", topicConfiguration);

    String bucketName = "test-bucket";

    s3Client.setBucketNotificationConfiguration(bucketName, notificationConfiguration);
}

}

但是上面的代码会引发以下错误

Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: Unable to validate the following destination configurations (Service: Amazon S3; Status Code: 400; Error Code: InvalidArgument; Request ID: 40F2EB4DB807BD38), S3 Extended Request ID: Cr3P1AZ4FuqHr2UrYBUc5U28uDNh4pWAtqGIRYgDlQsQ5VT4eJ4XK5z0BKdannipxRnEtLyi8jM=
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1389)
at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:902)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:607)
at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:376)
at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:338)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:287)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3826)
at com.amazonaws.services.s3.AmazonS3Client.setBucketNotificationConfiguration(AmazonS3Client.java:2240)
at com.amazonaws.services.s3.AmazonS3Client.setBucketNotificationConfiguration(AmazonS3Client.java:2216)

如何使用java api实现这一点


共 (1) 个答案

  1. # 1 楼答案

    我在使用python SDK时也遇到了类似的问题。当您在s3上设置事件以触发SNS时,您需要在SNS上添加权限以允许s3触发它。我在你的代码中没有看到这样做。 很抱歉,我不熟悉java SDK,我不知道到底需要添加什么,但在SNS上添加权限应该是正确的方向