我一直在閱讀多篇文章,如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不起作用?
你可以暫時將Action改爲'「s3:*」'來測試它是否有效?如果是這樣,那麼可能會有一些額外的操作,aws s3 cp命令在目標存儲桶中需要。 –
是的我試過s3:*並得到相同的結果 –
那麼它應該肯定會工作!我建議暫時將它改爲'*'的主體以查看它是否有效。這將有助於縮小可能的錯誤。 –