gpt4 book ai didi

java - 使用 s3 复制失败且访问被拒绝

转载 作者:行者123 更新时间:2023-12-01 09:17:50 25 4
gpt4 key购买 nike

我正在尝试将文件从 s3 存储桶中的一个文件夹复制到另一个文件夹。我正在使用 aws jdk 来复制文件。我检查了其他问题,但主要是使用其他 sdk。我使用了本文中提到的相同方式(AWS S3 copy object source key and destination key),只是我的 key 包含文件夹结构不同。

我正在使用以下代码。

public CopyObjectResult copyToAFolder(String sourceBucketName,
String sourceKeyName, String destinationBucketName,
String destinationKeyName) {
LOG.info(
"Archiving the file Source:{},SourceKey:{},Destination:{},DestinationKey:{}",
new Object[] { sourceBucketName, sourceKeyName, destinationBucketName,
destinationKeyName });
CopyObjectRequest copyObjRequest = new CopyObjectRequest(sourceBucketName,
sourceKeyName, destinationBucketName, destinationKeyName);
return amazonS3Client.copyObject(copyObjRequest);
}

我是这样传递参数的。我通过列表服务获取了 key 名称,所以 key 名称是正确的。

 sourceBucketName: myTestBucket
sourceKeyName:testing/movement/sample.txt
destinationBucketName:myTestBucket
destinationKeyName:testing/movement2/sample.txt(I have tried with /testing/movement2/ also)

此操作失败并出现 accessDenied 异常。我拥有此存储桶的完全访问权限,我可以使用 S3Client 从此存储桶中删除文件。访问被拒绝仅针对复制。知道为什么会发生这种情况。

错误。

com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: XXXXXXXXXXXX)
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1343) ~[aws-java-sdk-core-1.11.37.jar:na]
at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:961) ~[aws-java-sdk-core-1.11.37.jar:na]
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:738) ~[aws-java-sdk-core-1.11.37.jar:na]
at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:489) ~[aws-java-sdk-core-1.11.37.jar:na]
at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:448) ~[aws-java-sdk-core-1.11.37.jar:na]
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:397) ~[aws-java-sdk-core-1.11.37.jar:na]
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:378) ~[aws-java-sdk-core-1.11.37.jar:na]
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4039) ~[aws-java-sdk-s3-1.11.37.jar:na]
at com.amazonaws.services.s3.AmazonS3Client.copyObject(AmazonS3Client.java:1714) ~[aws-java-sdk-s3-1.11.37.jar:na]

最佳答案

我遇到了类似的问题,访问被拒绝..

结果是因为我没有复制带有元数据的对象,从而添加了加密算法。

    ObjectMetadata metadatum = new ObjectMetadata();
metadatum.setSSEAlgorithm(AES);
request.setNewObjectMetadata(metadatum);

关于java - 使用 s3 复制失败且访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40404426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com