2026年9月30日 · 6分で読めます
Amazon S3バケットを公開する方法
新しいS3バケットはすべての公開アクセスをブロックし、ACLもデフォルトで無効になっています。そのため、オブジェクトごとの昔ながらの「公開する」ボタンはもう機能しません。現在、公開読み取りはバケットポリシーで設定します。
ステップ1:公開バケットポリシーを許可する
- S3コンソールでバケットを開き、Permissionsタブに移動します。
- Block public access (bucket settings)でEditを選択します。
- bucket and access point policiesに関する2つの設定のチェックを外します。ポリシーはACLを使わないので、ACLに関する2つの設定はオンのままで構いません。
- 保存して確認します。
アカウントレベルでも設定がオンになっている場合(S3サイドバーのBlock Public Access settings for this account)は、そちらがバケットの設定より優先されるため、アカウント側でもポリシーを許可する必要があります。
ステップ2:公開読み取りのバケットポリシーを追加する
同じPermissionsタブでBucket policyを編集し、自分のバケット名に置き換えて次の内容を貼り付けます。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicRead",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket/*"
}
]
}
このポリシーで許可されるのはオブジェクトの読み取りで、バケットの一覧表示は許可されません。1つのフォルダだけを公開するには、リソースをarn:aws:s3:::your-bucket/public/*のように絞り込みます。
AWS CLIでは、同じ2つのステップを次のように実行します。
aws s3api put-public-access-block --bucket your-bucket \
--public-access-block-configuration \
BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=false,RestrictPublicBuckets=false
aws s3api put-bucket-policy --bucket your-bucket --policy file://policy.jsonステップ3:公開URLを確認する
これで、オブジェクトは仮想ホスト形式のURLで公開されます。
https://your-bucket.s3.eu-central-1.amazonaws.com/2026/09/report.pdf
リージョンは自分のバケットのものを使ってください。このアドレスがAccessDeniedを返す場合は、ブロックパブリックアクセスの設定がまだポリシーをブロックしているか、ポリシー内のバケット名が間違っています。
より安全な方法:非公開バケットとCloudFront
バケット自体を公開したくない場合は、ブロックパブリックアクセスをオンのままにして、バケットをオリジンとしOrigin access control (OAC)を使うCloudFrontディストリビューションを作成します。ディストリビューションだけがオブジェクトを読み取れるようにするバケットポリシーは、CloudFrontが表示してくれます。独自ドメインでのHTTPS配信とキャッシュが使え、バケットは非公開のままです。バケットのリンクに独自ドメインを使う方法をご覧ください。
よくある質問
「ACLを使用して公開する」が使えなくなったのはなぜですか?
2023年4月以降、新しいバケットではオブジェクト所有者の設定が「Bucket owner enforced」になり、ACLが無効になっています。公開アクセスは、バケットポリシーかCloudFrontで設定する必要があります。
バケットを公開すると、ファイルの一覧を見られてしまいますか?
上記のポリシーなら見られません。許可しているのはs3:GetObjectだけです。一覧表示にはバケット自体に対するs3:ListBucketが必要で、これを公開で許可するべきではありません。
バケットを公開するとAWSの請求額は増えますか?
ファイルがダウンロードされると、リクエストとデータ転送(アウト)の料金がかかります。頻繁に共有するファイルなら、CloudFrontや、Cloudflare R2のように転送量(egress)料金のないプロバイダのほうが、たいてい安く済みます。