我使用以下代码将文件从一个存储桶复制到另一个存储桶
AmazonS3 s3client = new AmazonS3Client(new ProfileCredentialsProvider());
s3client.copyObject(sourceBucketName, sourceKey,
destinationBucketName, destinationKey);
但我总是得到“com.amazonaws.services.s3.model.AmazonS3Exception:Access Denied(服务:亚马逊S3;状态代码:403;错误代码:AccessDenied;请求ID:B6466D562B6988E2)”`作为响应可能是什么原因为了那个原因
2 回答
可能有很多可能会出现这样的错误(如不存在的存储桶,权限问题,应用于源或目标存储桶的自定义策略等) . 我建议您在计算机上设置AWS S3 CLI并尝试不同的s3 commands以确保您实际上有权限集进行操作 . 这将允许您快速迭代并快速调试问题 . 我并不反对在这里编写Java代码来做同样的事情,但cli肯定会为你节省时间 .
另外看这个SO link看看这是否有助于你解决问题 .
现在我使用java aws sdk复制文件这是因为在使用cpoying文件时缺少元数据所以我们必须使用copy
copyObjRequest.setNewObjectMetadata(objectMetadata);
ref http://docs.aws.amazon.com/AmazonS3/latest/dev/SSEUsingJavaSDK.html添加元数据以获取详细信息