Amazon S3の公開設定を色々とためしてみました
事前準備
- Amazon S3のバケット作成とファイル登録
Amazon S3 #001 - バケット作成
Amazon S3 #002 - ファイル登録・ダウンロード
ファイル公開
Amazon S3のファイルを公開する方法です。
アクセス許可 → ブロックパブリックアクセス(バケット設定)の「編集」をクリック。
パブリックアクセスをすべてブロックのチェックをOFF。
これだけでは公開されないので、バケットポリシーの「編集」をクリック。
バケットポリシーを設定 → 「変更の保存」をクリック。今回は、Amazon S3からオブジェクトを取得するためのアクセス許可を付与。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::バケット名/*"
}
]
}
アクセス権限が公開になっているのを確認。
URLに直接アクセスするとファイルが表示されます。
指定IPのみファイル公開
Amazon S3の指定IPのみファイルを公開する方法です。
アクセス許可 → ブロックパブリックアクセス(バケット設定)の「編集」をクリック。
パブリックアクセスをすべてブロックのチェックをOFF。
これだけでは公開されないので、バケットポリシーの「編集」をクリック。
バケットポリシーを設定 → 「変更の保存」をクリック。今回は、Amazon S3からオブジェクトを取得するためのアクセス許可と指定IPのアクセス許可を付与。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::バケット名/*"
},
{
"Sid": "IP",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::バケット名/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": "許可したいIP"
}
}
}
]
}
アクセス権限が公開になっているのを確認。IP制限をした場合は公開表示にはならない。
設定したIPからURLに直接アクセスするとファイルが表示されます。指定IP以外はファイルが表示されません。
指定期間のみファイル公開
Amazon S3の指定期間のみファイルを公開する方法です。
対象のファイルを選択。
オブジェクトアクション → 「署名付きURLで共有」をクリック。
対象の期間を設定 → 「署名付きURLを作成」をクリック。クリップボードにコピーされたURLにアクセスすると期間中ファイルが表示されます。
静的ウェブサイトホスティング
Amazon S3の静的ウェブサイトホスティングで公開する方法です。
公開したいHTML等のファイル一式をアップロード。
アクセス許可 → ブロックパブリックアクセス(バケット設定)の「編集」をクリック。
パブリックアクセスをすべてブロックのチェックをOFF。
これだけでは公開されないので、バケットポリシーの「編集」をクリック。
バケットポリシーを設定 → 「変更の保存」をクリック。今回は、Amazon S3からオブジェクトを取得するためのアクセス許可を付与。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::バケット名/*"
}
]
}
アクセス権限が公開になっているのを確認。
プロパティ → 静的ウェブサイトホスティングの「編集」をクリック。
有効にする・静的ウェブサイトをホストする・ルートのHTMLを設定 → 「変更の保存」をクリック。
静的ウェブサイトホスティングが有効になったのを確認します。URLが発行されるのでアクセスします。
アップロードしたWebSiteが表示されます。
Amazon S3単体で色々と設定可能なことが改めて把握できました。AWS Amplify・ServerlessFramework・CloudFormation等でも構築可能ですが、AWSマネジメントコンソールからS3を操作し、基礎からふりかえるのもすごく大事だなと思いました
次回は、Amazon CloudFrontと組み合わせた別の方法も紹介できたらと思います。
Amazon S3について、他にも記事を書いています。よろしければぜひ
tags - Amazon S3
やってみたシリーズ
tags - Try