[英]using s3 copy failed with access denied
我正在嘗試將文件從s3存儲桶中的一個文件夾復制到另一個文件夾。 我使用aws jdk復制文件。我檢查了其他問題,但大多數情況下使用的是其他sdk。 我使用了本文中提到的相同方法( AWS S3復制對象源鍵和目標鍵 ),只是我的鍵包含文件夾結構。
我正在使用以下代碼。
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);
}
我正在傳遞這樣的參數。我通過使用列表服務獲得了密鑰名稱,因此密鑰名稱是正確的。
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);
解決方案可以是
謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.