0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS S3の特定のオブジェクトにのみ取得を許可する

Posted at

やりたいこと

S3に保存している特定のオブジェクトのみ参照(取得)できるようにしたい。

例えば以下のようなとき。

  • S3バケットs3://hogeに保存しているhoge.txtのみ取得できるようにしたい。

前提条件

  • AWSアカウントがあること
  • ローカル環境にAWS CLIがインストールされていること

方法

  1. AWS IAMにから適当なユーザーを作成
  2. アクセスキーとアクセスシークレットを控えておく
  3. AWS IAMからポリシーを作成する
    スクリーンショット 2023-08-30 19.49.24.png
  4. JSONモードに切り替えて以下のような設定を記述する
    スクリーンショット 2023-08-30 19.51.03.png
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::hoge/hoge.txt" // 取得は特定のファイルに制限する
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::hoge"
        }
    ]
}

検証

  1. ローカルのaws cliに作成したIAMロールを設定する。
$ aws configure
AWS Access Key ID [****************]: XXXXXX
AWS Secret Access Key [****************]: YYYYYY
Default region name [ap-northeast-1]: [使用するリージョン]
Default output format [None]: [空欄で可]
  1. バケットの中の一覧を取得
$ aws s3 ls s3://hoge
hoge.txt fuga.txt peta.txt ....
  1. 手順4で設定した特定のファイルを取得する
$ aws s3 cp s3://hoge/hoge.txt ./
download: s3://hoge/hoge.txt to ./hoge.txt
  1. 他のファイルは取得できない
$ aws s3 cp s3://hoge/fuga.txt ./
fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden

まとめ

Listの許可を与えるところがわからずずっと詰まっていた。
特定のファイル以外はリストすらさせたくない場合はわからないです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?