LoginSignup
1
0

More than 3 years have passed since last update.

S3のバケットの一部のフォルダの中のファイルを公開する

Posted at

概要

アプリケーションを作成していて,S3に画像を置いて公開したかった.

既にユーザーからの入力などを保存しておく非公開のバケットを作成していた.

画像を配信するには公開用のバケットを別途作成しなければいけないかと思っていたが,バケットの一部分のファイルのみを公開することができるらしい

これにより1つのアプリケーションで複数のバケットを使用せずに済んだ.
また複数のバケットを作成,管理する必要がなくなった.

手順をメモしておく

やったこと

バケットの一部のフォルダの中に入っているファイルのみパブリックアクセス可能にした.

その他のファイルは全て非公開になっている.

やり方

  1. 公開したいバケットのページにいき,アクセス許可からブロックパブリックアクセスを編集
    デフォルトではパブリックアクセスを全てブロックにチェックがついているが,これを外して4つの項目のうち下2つのチェックを外した状態で変更の保存をする.
    スクリーンショット 2020-12-08 18.27.28.png

  2. バケットポリシーを作成する
    バケットのページのアクセス許可からバケットポリシーを編集する
    バケットポリシーには以下のjsonを記入する

   {
     "Version":"2012-10-17",
     "Statement":[
       {
         "Sid":"AddPerm",
         "Effect":"Allow",
         "Principal": "*",
         "Action":["s3:GetObject"],
         "Resource":["arn:aws:s3:::DOC-EXAMPLE-BUCKET/publicprefix/*"]
         }
     ]
   }

ここでDOC-EXAMPLE-BUCKETにはバケットの名前,publicprefixには公開したいフォルダの名前を書く

以上で一部のフォルダのみを公開することができる.

試しに公開設定をしたフォルダの中のオブジェクトのオブジェクトURL(https://bucket-name.s3-ap-northeast-1.amazonaws.com/hoge/hoge.png のようなurl.各オブジェクトのページに記載されている)を開くと公開されていることがわかる.

また公開設定していないフォルダの中のオブジェクトのオブジェクトURLを開くとアクセス拒否されるのでこちらはきちんと非公開になっていることがわかる.

参考

AWS公式

こちらのページにはフォルダ以下を公開するやり方以外にもオブジェクトにタグをつけて特定のタグがついているオブジェクトのみ公開する方法なども紹介されている.

1
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
1
0