Edited at

【AWS初心者】EC2からS3にある特定のバケットにアクセスするIAM roleを作成する

More than 3 years have passed since last update.

IAM policy設定をしていて躓いたので、備忘録として残します。

要件:とあるEC2インスタンスから、S3のある特定のバケットへのフルアクセス権限を与える。

当初、何も考えずに以下のようにpolicyを作成して、IAM roleに設定した。

{

"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::test/*",
]
}
]
}

試しに、IAM roleを付与したEC2からaws-cliのaws s3 ls使って確認すると、アクセスを拒否される。

[root@hoge ~]# aws s3 ls s3://test/

A client error (AccessDenied) occurred when calling the ListObjects operation: Access Denied

調べていくと、IAM roleに設定するpolicyの設定が間違っていた。

bucketそのものに対するアクセスと、bucket配下のオブジェクトに対するアクセス両方を指定する必要があるらしい。

{

"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::test",
"arn:aws:s3:::test/*"
]
}
]
}

aws-cliで確認したら、S3からデータを取得できました。

[ec2-user@hoge ~]$ aws s3 ls s3://test/

2015-07-13 06:24:49 47811 -------.txt
2015-07-13 06:24:49 45773 -------.txt