S3でのWEBホスティング
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/WebsiteHosting.html
静的ウェブサイトをホスティングするには、Amazon S3 バケットをウェブサイトホスティング用に設定してから、ウェブサイトのコンテンツをそのバケットにアップロードします。
ウェブサイトは、バケットの AWS リージョン固有のウェブサイトエンドポイントで使用できます。
<bucket-name>.s3-website-<AWS-region>.amazonaws.com
この URL にアクセスすると、ウェブサイトに対して設定されたデフォルトのインデックスドキュメントが返されます。
WEBホスティングの有効化
バケットの「プロパティ」から「Static Website hosting」を選択
「このバケットを使用してウェブサイトをホストする」を選択します。
インデックスドキュメントは、リクエストがウェブサイトのルートまたはサブフォルダに対して行われた場合に Amazon S3 によって返されるウェブページです。
例えば、ユーザーがブラウザに http://www.example.com と入力した場合は、このユーザーは特定のページをリクエストしてはいません。
この場合、Amazon S3 は、インデックスドキュメントを提供します。これがデフォルトページとして指定されていることもあります。
バケットをウェブサイトとして設定するときは、インデックスドキュメントの名前を指定します。
次に、この名前のオブジェクトをアップロードして、パブリックに読み取り可能となるように設定する必要があります。
ルートレベル URL の末尾のスラッシュは省略可能です。
Amazon S3 では、バケットとはオブジェクトが格納されるフラットなコンテナです。
つまり、コンピュータのファイルシステムとは異なり、階層構造ではありません。
論理的な階層を作成するには、フォルダ構造を暗示させる名前をオブジェクトキーに付けます。
バケットをウェブサイトとして設定するときは、そのサイトで配信するオブジェクトを、パブリックに読み取り可能となるように設定する必要があります。
これを行うには、全員に s3:GetObject を許可するバケットポリシーを作成します。
ウェブサイトエンドポイント上に、ユーザーがリクエストしたオブジェクトが存在しない場合は、Amazon S3 から HTTP レスポンスコード 404 (Not Found) が返されます。
オブジェクトが存在するが、そのオブジェクトの読み取りアクセス許可が付与されていない場合は、ウェブサイトエンドポイントから HTTP レスポンスコード 403 (Access Denied) が返されます。
ユーザーはこのレスポンスコードを見て、特定のオブジェクトが存在するかどうかを推測できます。
この動作を希望しない場合は、バケットのウェブサイトのサポートを有効にしないでください。
設定時点では下記のように閲覧できません
S3「アクセス権限」から「バケットポリシー」にて全てのオブジェクトに対して、全てからのPublicReadGetObject
権限を付与します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::s3bucket-name/*"
}
]
}
ポリシーの反映後、サイトコンテンツを表示させることが出来ます