2017-03-28 83 views
0

我一直在閱讀多篇文章,如this one關於如何使用從一個S3存儲桶向另一個使用不同賬戶傳輸數據,但我仍然無法這樣做。我相信這是因爲我還沒有完全掌握AWS中的account +權限設置的概念(例如iam account vs access key)。S3到S3使用不同賬戶轉賬?

我有給了我一個叫「富」用戶和賬號「123456789012」供應商 2個訪問鍵來訪問他們的S3存儲「SourceBucket」歐盟 - 中部 - 1。我使用供應商提供的名爲「sourceProfile」的訪問密鑰在我的計算機上創建了一個配置文件。我有我的S3調用「DestinationBucket」在我們東1,我設置桶策略如下。

{ "Version": "2012-10-17", "Id": "Policy123456789", "Statement": [ { "Sid": "Stmt1487222222222", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Foo" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DestinationBucket/", "arn:aws:s3:::DestinationBucket/*" ] } ] }

這裏來的怪異的一部分。我可以列出這些文件,甚至使用以下命令行從「DestinationBucket」下載文件。

aws s3 ls s3://DestinationBucket --profile sourceProfile aws s3 cp s3://DestinationBucket/test ./ --profile sourceProfile

但是,當我試圖把任何東西複製到使用該配置文件的「DestinationBucket」,我得到了拒絕訪問錯誤。

aws s3 cp test s3://DestinationBucket --profile sourceProfile --region us-east-1 upload failed: ./test to s3://DestinationBucket/test An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

難道我成立了鬥政策特別行動右側的列表中?從目的地到本地工作的ls和cp如何從本地到目的地桶工作,但cp不起作用?

+0

你可以暫時將Action改爲'「s3:*」'來測試它是否有效?如果是這樣,那麼可能會有一些額外的操作,aws s3 cp命令在目標存儲桶中需要。 –

+0

是的我試過s3:*並得到相同的結果 –

+0

那麼它應該肯定會工作!我建議暫時將它改爲'*'的主體以查看它是否有效。這將有助於縮小可能的錯誤。 –

回答

0

因爲AWS使它成爲parent account holder must do the delegation

實際上,除了委託人訪問該特定訪問密鑰用戶之外,您可以選擇在存儲區上執行復制,如here所述。

+0

我以爲@mootmoot建議的文章中的第2.3步是缺少的部分,但我仍然在調用PutObject操作時發生錯誤(AccessDenied):訪問被拒絕。 –

+0

@FooBarbaz:你需要閱讀整個文檔。步驟2.3是不夠的 – mootmoot

+0

我改變了方法,現在它工作。與其使用供應商創建的帳戶從桶中獲取對象並將對象放在桶上,我正在使用能夠將對象放入桶中的帳戶。設置是相同的,但是相反(例如,在供應商的存儲桶中設置允許我的帳戶訪問它的存儲桶策略)。不知道爲什麼原始方法不起作用,但沒有時間進一步調查。 –