シナリオ:同じアカウントの下にEC2インスタンスとS3バケットがあり、そのEC2のWebアプリケーションがそのバケットのリソースにアクセスしたいとします。IAMの役割を持つS3へのAWS EC2のアクセス
公式の文書に続いて、s3access
でIAMロールを作成し、それをEC2インスタンスに割り当てました。私の理解では、今、私のWebアプリケーションはバケツにアクセスできるはずです。しかし、裁判の後、私はこのようなallowPublicRead
バケットポリシーを追加する必要がありそうです:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucket/*"
}
]
}
そうでなければ、私はアクセス禁止を得ました。
しかし、s3access
EC2インスタンスにIAMロールを既に割り当てているので、このallowPublicRead
バケットポリシーを使用する理由は何ですか?
ありがとうございました!もう1つの疑問は、クライアントがS3に直接話しているだけの場合、なぜIAMの役割に「s3access」をEC2に割り当てる必要があるのでしょうか? –
あなたのコードがec2マシンにデプロイされているので、オブジェクトにアクセスするためにS3に接続してからクライアントに送り返す必要があります。したがって、ec2にはS3アクセス権が必要です。 –