プログラムからS3のオブジェクト一覧を取得するIAM設定について

目的

プログラムからS3のオブジェクト一覧を取得するために、”s2:listObjects”のような権限を探したところ、見つからずにとても苦労したため、ここにオブジェクト一覧を取得する権限を記載する。

前提

・S3バケットが作成済みであること
今回対象のS3バケット名:aaabbbccc-smallit

AWSコンソールからIAMでユーザーを作成する

①ユーザー名
ユーザー名:smallit-taro
アクセスキー – プログラムによるアクセス:チェック

②アクセス許可の設定
ここでは何も選択せずに次のステップをクリック

③タグの設定
ここでは何も入力せずに次のステップをクリック

④ユーザーの作成

⑤アクセスキーとシークレットアクセスキーはアプリから使用するために必要になるので、保存しておく

ユーザーにインラインポリシーを設定する

今回はこのユーザーのみにしか必要のない権限のため
インラインポリシーで作成する。

①インラインポリシーの追加をクリック

②JSONタブをクリックし、JSONを入力する

{
  "Version": "2012-10-17",
  "Statement": [
    {
       "Sid": "VisualEditor0",
       "Effect": "Allow",
       "Action": [
           "s3:PutObject",
           "s3:GetObject",
           "s3:DeleteObject"
       ],
       "Resource": "arn:aws:s3:::aaabbbccc-smallit/*"
    },
    {
       "Sid": "VisualEditor1",
       "Effect": "Allow",
       "Action": "s3:ListBucket",
       "Resource": "arn:aws:s3:::aaabbbccc-smallit"
    }
  ]
}

権限の説明:

以下でS3のディレクトリに対して操作する権限を付与している
“s3:PutObject”:オブジェクトのアップロード
“s3:GetObject”:オブジェクトの取得
“s3:DeleteObject”:オブジェクトの削除

    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::aaabbbccc-smallit/*"
    },

以下でS3のバケットに対して操作する権限を付与している
“s3:ListBucket”:バケットの一覧を取得
※もしS3バケットがバージョン管理している場合は”s3:ListBucketVersions”の権限も必要になる

   {
     "Sid": "VisualEditor1",
     "Effect": "Allow",
     "Action": "s3:ListBucket",
     "Resource": "arn:aws:s3:::aaabbbccc-smallit"
   }

③ポリーの確認をクリック

名前:インラインポリシーの名前を入力

④ポリシーの作成をクリック

アクセス権限がアタッチされていれば、プログラムからS3オブジェクトの一覧が取得可能となる。

以上

Smallitのサービス