使用java aws sdk

时间:2016-11-04 04:33:35

标签: java amazon-web-services amazon-s3

我使用以下代码将文件从一个存储桶复制到另一个存储桶

AmazonS3 s3client = new AmazonS3Client(new ProfileCredentialsProvider());
s3client.copyObject(sourceBucketName, sourceKey, 
                    destinationBucketName, destinationKey);

但我总是得到 “com.amazonaws.services.s3.model.AmazonS3Exception:拒绝访问(服务:Amazon S3;状态代码:403;错误代码:AccessDenied;请求ID:B6466D562B6988E2)”`作为可能原因的反应

2 个答案:

答案 0 :(得分:2)

有很多可能会出现这样的错误(例如不存在的存储桶,权限问题,应用于源或目标存储桶的自定义策略等)。我建议您在计算机上设置AWS S3 CLI并尝试不同的s3 commands以确保您实际拥有正确的权限集来执行操作。这将允许您快速迭代并快速调试问题。我并不反对在这里编写Java代码,但cli肯定会为你节省时间。

另请查看此SO link,了解这是否有助于您解决问题。

答案 1 :(得分:0)

现在我使用java aws sdk复制文件 这是因为在归档文件时缺少元数据,因此我们必须使用副本copyObjRequest.setNewObjectMetadata(objectMetadata);添加元数据 REF http://docs.aws.amazon.com/AmazonS3/latest/dev/SSEUsingJavaSDK.html了解详情