はじめに
Ruby on Rails Tutorial 13.4.4ではfogを使用してAmazonS3にファイルをアップロードする必要があります。AmazonS3にファイルをアップロードするためにはIAMユーザーとS3 bucketの間に権限設定を行う必要があるのですが、単純にググるとIAMにAmazon S3 Full Accessを設定するように説明しているサイトが引っかかることが多いです。
もちろんチュートリアルなのでこれで動作確認はできますし、初めて利用するAWSとしては十分なのかもしれません。ただ、本番運用を想定すると、無闇にIAMに対してFullAccessは設定したくないですよね。できればbucketを限定した必要十分な権限設定としたいところです。
インラインポリシー設定方法
IAMに以下の2つのインラインポリシーを設定すると、fogによるファイルアップロードやダウンロード、削除を行うことができました。ちなみに、〜Aclの権限を設定していなくて結構時間がかかってしまいました・・・fogはアップロードしたあとに、オブジェクトの権限を設定したりしているのでしょう。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "****",
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListAllMyBuckets"
],
"Resource": [
"arn:aws:s3:::my-bucket"
]
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "****",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectAcl",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::my-bucket/*"
]
}
]
}