Amazon Simple Storage Service
開発者ガイド (API バージョン 2006-03-01)

ウェブサイトアクセスに必要なアクセス許可

バケットをウェブサイトとして設定する場合、人々がウェブサイトにアクセスできるように、バケットへのパブリック読み取りアクセスを許可する必要があります。バケットをパブリックに読み取り可能にするには、パブリックアクセスブロック設定を無効にし、バケットポリシーを記述する必要があります。バケットにバケット所有者が所有していないオブジェクトが含まれている場合は、すべてのユーザーに読み取りアクセスを許可するオブジェクトアクセスコントロールリスト (ACL) を追加する必要があります。

注記

ウェブサイトエンドポイント上に、ユーザーがリクエストしたオブジェクトが存在しない場合は、Amazon S3 から HTTP レスポンスコード 404 (Not Found) が返されます。オブジェクトが存在するが、そのオブジェクトの読み取りアクセス許可が付与されていない場合は、ウェブサイトエンドポイントから HTTP レスポンスコード 403 (Access Denied) が返されます。ユーザーはこのレスポンスコードを見て、特定のオブジェクトが存在するかどうかを推測できます。この動作を希望しない場合は、バケットのウェブサイトのサポートを有効にしないでください。

パブリックアクセスブロック設定を編集する

デフォルトでは、Amazon S3 はアカウントまたはバケットへのパブリックアクセスを許可しません。既存のバケットをパブリックアクセスを持つ静的ウェブサイトとして設定する場合は、そのバケットのパブリックアクセスブロック設定を編集する必要があります。

アカウントレベルでパブリックアクセスブロックを有効にしている場合は、アカウントレベルの設定も調整する必要があります。Amazon S3 は、バケットレベルとアカウントレベルの設定の最も制限的な組み合わせを適用します。たとえば、バケットのパブリックアクセスを許可するが、アカウントレベルですべてのパブリックアクセスをブロックする場合、Amazon S3 はバケットへのパブリックアクセスをブロックします。パブリックアクセスブロックについての詳細は、「バケットへのパブリックアクセスを管理する」を参照してください。

重要

パブリックアクセスブロックを無効にする前に、バケットポリシーで世界中のユーザーにパブリックアクセスを許可することを確認します。アカウントの特定のユーザーのみが静的ウェブサイトにアクセスできるようにする場合は、パブリックアクセスブロック設定を無効にするのではなく、変更できます。

静的ウェブサイトとして設定されたバケットのパブリックアクセスブロックを無効にするには

  1. Amazon S3 コンソール(https://console.aws.amazon.com/s3/)を開きます。

  2. 静的ウェブサイトとして設定したバケットを選択し、[Edit public access settings (パブリックアクセス設定の編集)] を選択します。

  3. [Block all public access (すべてのパブリックアクセスをブロックする)] をクリアし、[保存] を選択します。

  4. 確認ボックスで、confirm, を入力し、[確認] を選択します。

    Amazon S3 バケットのリストで、バケットの [アクセス] が [Objects can be public (オブジェクトはパブリックにできます)] に更新されます。これで、バケットポリシーを追加して、バケット内のオブジェクトをパブリックに読み取り可能にすることができます。アクセス がまだ Bucket and objects not public (バケットとオブジェクトはパブリックではありません) と表示される場合は、バケットポリシーを追加する前に、パブリックアクセスブロックのアカウント設定を編集する必要があります。

バケットポリシーを追加する

バケット内のオブジェクトをパブリックに読み取り可能にするには、すべてのユーザーに s3:GetObject アクセス許可を付与するバケットポリシーを作成する必要があります。次のサンプルバケットポリシーは、指定したフォルダ内のオブジェクトへのすべてのユーザーのアクセスを付与します。バケットへのパブリック読み取りアクセスを許可するバケットポリシーを追加する前に、バケットのパブリックアクセスブロックを無効にしていることを確認してください。次のバケットポリシーを使用するには、バケットに一致するように Resource を更新します。バケットポリシーの詳細については、「バケットポリシーとユーザーポリシーの使用」を参照してください。

{ "Version":"2012-10-17", "Statement":[{ "Sid":"PublicReadGetObject", "Effect":"Allow", "Principal": "*", "Action":["s3:GetObject"], "Resource":["arn:aws:s3:::example-bucket/*" ] } ] }

バケットポリシーを追加するには

  1. 静的ウェブサイトとして設定されたバケットを選択します。

  2. [Permissions] を選択します。

  3. [バケットポリシー] を選択します。

  4. [Bucket policy editor (バケットポリシーエディター)] で、バケットポリシーを追加し、[保存] を選択します。

    Amazon S3 バケットのリストで、バケットの [アクセス] が [Public (パブリック)] に更新されます。

オブジェクトアクセスコントロールリスト

バケットポリシーを使用して、オブジェクトに対するアクセス許可を付与できます。ただし、バケットポリシーは、バケット所有者が所有するオブジェクトにのみ適用されます。バケットに、バケット所有者として所有していないオブジェクトが含まれる場合は、バケット所有者は、オブジェクトのアクセスコントロールリスト (ACL) を使用して、それらのオブジェクトへのパブリック読み取りアクセス許可を付与する必要があります。

ACL を使用してオブジェクトを公開で読み取り可能にするには、次の許可要素に示すように、AllUsers グループに READ アクセス許可を付与します。この許可要素をオブジェクト ACL に追加します。ACL の管理の詳細については、「ACL によるアクセス管理」を参照してください。

<Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI> </Grantee> <Permission>READ</Permission> </Grant>