Written by TSUYOSHI

Amazon S3でバケット内の画像をすべて公開する方法

AWS SERVER

本記事では、S3でバケット内の画像を一括ですべて公開設定にする方法を解説します。

僕自身が調べてもなかなか答えが見つからなくて、1ヶ月以上悩んでようやく解決しました。AWSに詳しくない人が同じような悩みを持っているかもしれないのでご紹介します。

S3に画像をアップロードして、一部の画像はまとめて公開設定にできていたのですが、どうしても一部のディレクトリ配下の画像で、公開設定にならないものがあって困っていました。
手動で1つ1つのオブジェクトを公開設定にすれば公開可能でしたが、かなりの数の画像を公開設定にしなければならなかったので現実的でなく、まとめて設定できる方法をいろいろ試していました。

結論としては、「バケットポリシー」を設定(JSONの書き込み)することによって解決できました。

S3でバケット内の画像をすべて公開設定にする方法

それでは早速、S3でバケット内の画像を全て公開する手順を解説していきます。
今回は画像のみがS3の特定バケット内にあってすべてが画像の場合を例に進めていきます。バケット内に公開したくないファイルが含まれる場合は違う方法で設定してください。

前提として、S3には画像は既にアップロードされているものとします。

1. S3の管理画面にアクセスします

2. バケットをクリックして概要タブに進み、「アクセス権限」のタブを開きます。

3. 「アクセス権限」の中で「ブロックパブリックアクセス」を選択し、「パブリックアクセスをすべてブロック」をオフの設定にします。
こうすることによって他の設定もすべてオフになり、すべてを公開する設定となります。

4. 「アクセス権限」の中で「バケットポリシー」をクリックして、「バケットポリシーエディター」内に以下の記述をします。

【バケット名】の部分はご自身で設定したバケット名を入れるようにしてください。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::【バケット名】/*"
        }
    ]
}

ちなみにVersion2012-10-17が最新らしく、バージョン指定の数値なので変更する必要はありません。【バケット名】の部分のみ変更するようにしてください。

入力したら「保存」ボタンを押して保存します。
これで設定完了です。

5.「アクセス権限」の中で「アクセスコントロールリスト」を選択して、「パブリックアクセス」の「Everyone」で「バケットのアクセス権限の読み取り」を「はい」にします。
おそらくこの設定はいらないと思うのですが、僕は念の為この設定まで行いました。

上記をすべて行ったことによって、公開にできていなかった下層フォルダの画像もすべて公開状態にすることができました。

まとめ:S3でバケット内の画像などを全て公開にするには、「ブロックパブリックアクセス」と「バケットポリシー」を設定する

「ブロックパブリックアクセス」にて、「パブリックアクセスをすべてブロック」をオフにする

「バケットポリシー」で設定を書き込む

以上の設定で、S3の任意のバケット内のオブジェクトがすべて公開できるようになる設定でした。

参考になれば幸いです。

※当サイトでは一部のリンクについてアフィリエイトプログラムを利用して商品を紹介しています