2017-01-12 6 views
2

シナリオ:同じアカウントの下に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 s3:GetObjectは、ec2インスタンスからのオブジェクトへのアクセスのみを許可し、あなたのブラウザからウェブアプリケーションからこれらのオブジェクトにアクセスすることです。この場合、これらのイメージ/オブジェクトはユーザーブラウザに表示されます公開されているアプリケーションの場合は、AllowPublicReadの権限も割り当てる必要があります。

+0

ありがとうございました!もう1つの疑問は、クライアントがS3に直接話しているだけの場合、なぜIAMの役割に「s3access」をEC2に割り当てる必要があるのでしょうか? –

+1

あなたのコードがec2マシンにデプロイされているので、オブジェクトにアクセスするためにS3に接続してからクライアントに送り返す必要があります。したがって、ec2にはS3アクセス権が必要です。 –

関連する問題