簡體   English   中英

如何將AWS S3中的對象從私有存儲桶復制到公共存儲桶而不進行下載?

[英]How to copy object in aws s3 from private bucket to public bucket without downloading?

使用請求,可以更輕松地在s3中的同一區域中跨存儲桶復制對象:

AmazonS3 pS3client = new AmazonS3Client(new BasicAWSCredentials(/*supressed*/));
String key = "key";
pS3client.copyObject("sourceBucket", key, "destinationBucket", key);

但是,當sourceBucket是私有訪問存儲桶,並且需要預簽名的url來訪問存儲桶中的對象時,上述請求將失敗。

由於私有訪問,文件訪問被拒絕。

com.amazonaws.services.s3.model.AmazonS3Exception:訪問被拒絕(服務:Amazon S3;狀態代碼:403;錯誤代碼:AccessDenied;請求ID:<>),S3擴展請求ID:<>,位於com.amazonaws.http .com.amazonaws上的.AmazonHttpClient $ RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1579)。 )的com.amazonaws.http.AmazonHttpClient $ RequestExecutor的com.amazonaws.http.AmazonHttpClient $ RequestExecutor.executeWithTimer(AmazonHttpClient.java:716)的com.amazonaws.http.AmazonHttpClient $ RequestExecutor.doExecute(AmazonHttpClient.java:742)的com.amazonaws.http.Amazon.Http。在com.amazonaws.http.AmazonHttpClient $ RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649)上執行(AmazonHttpClient.java:699)在com.amazonaws.http.AmazonHttpClient $ RequestExecutor.access $ 500(AmazonHttpClient.java:667)

如何發出s3請求或在copyObject請求中提供預先簽名的參數以從私有存儲桶復制到公共destinationBucket

對於變通辦法,顯而易見的解決方案是使用GeneratePresignedUrlRequest並獲取預簽名的url以訪問sourceBucket的對象,下載到臨時文件中,並使用putObject在目標存儲桶中上載。 那是太多的網絡-所以想知道有什么更好的選擇嗎?

s3:CopyObject命令不能使用預簽名的URL。

為了使用s3:CopyObject命令,所使用的AWS憑證僅要求對源存儲桶具有讀訪問權限,而對目標存儲桶具有寫訪問權限。

如果兩個存儲桶都在同一個AWS賬戶中,那么這應該很簡單。

但是,如果存儲桶位於不同的帳戶中,則您需要在源存儲桶上應用存儲桶策略,以授予對擁有目標存儲桶的AWS賬戶的讀取訪問權限,並使用擁有目標存儲桶的AWS賬戶執行副本。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DelegateS3Access",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:root"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::BUCKET_NAME",
                "arn:aws:s3:::BUCKET_NAME/*"
            ]
        }
    ]
}

BUCKET_NAME替換為 S3存儲桶的名稱,並將123456789012替換為目標 AWS賬戶的AWS賬戶ID。 編輯后,將此策略應用於您的 S3存儲桶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM