[アップデート] Amazon Lightsail のディストリビューションでプライベートバケットをオリジンにできるようになりました

[アップデート] Amazon Lightsail のディストリビューションでプライベートバケットをオリジンにできるようになりました

出来なかったのか
2026.09.15

いわさです。

Amazon Lightsail にはディストリビューションの機能がありまして、Lightsail 上のオブジェクトストレージをオリジンに指定することでよくある静的コンテンツ配信を行うことが出来ます。CloudFront + S3 みたいな感じです。
これまで、オリジンに指定する時はオブジェクトストレージ側のアクセス許可をパブリックにしておく必要がありました。

こちらが先日のアップデートで、このディストリビューションにプライベートオリジンアクセスが追加されました。
What's New アナウンスにはまだ出てきていないのですが、AWS CLI の 2.36.44 の CHANGELOG でアナウンスされていました。

Amazon Lightsail now lets you serve website content from a private Lightsail bucket through a Lightsail distribution. This release adds enablePrivateOriginAccess to the CreateDistribution and UpdateDistribution actions, plus new defaultRootObject and customErrorResponses options.

https://github.com/aws/aws-cli/commit/ef86d2d6b2ff870807a10733a50c59fcb10fb4df

今回のプライベートオリジンアクセスを有効にすると、バケットをプライベートのままにして、ディストリビューションにだけ読み取りを許可できます。また、あわせてデフォルトルートオブジェクトとカスタムエラーレスポンスも設定できるようになっているようです。

今回こちらを確認してみたので紹介します。

実際に試してみる

プライベートなバケットに静的サイトを置き、ディストリビューション経由で配信してみます。
東京リージョンのバケットをオリジンにします。

まずバケットを作成しましょう。

7FD5E5CB-DDEA-4EDE-9DE5-763AA43FD972.png

適当なコンテンツをアップロードしました。アクセス許可はデフォルトのまま変更せずで「すべてのオブジェクトはプライベートです」のままになっています。従来はここでパブリック設定が必要だったようです。

F030E301-4169-40B9-BB35-ACB0587AA494.png

次にディストリビューションを作成します。
オリジンにバケットを選択すると、Hosting settings のところに「Recommended for static sites」という案内が出て、バケットをプライベートにしたままプライベートオリジンアクセスを有効にする構成が推奨として示されていました。多分今回追加されたのでしょう。

87E14C03-7B90-47F7-A9B9-6CD252E7D74C.png

作成後、ディストリビューションのデフォルトドメインを開くと、プライベートバケットのコンテンツが確認できていました!

370E8C0C-AF92-4030-B7FD-96CEFE25C498_4_5005_c.jpeg

バケットを「すべてのオブジェクトはプライベートです」のままにして、ディストリビューション経由で配信できてますね。良い。

なお、プライベートオリジンアクセスはバケットコンテンツ自体をパブリックせずにディストリビューションから配信させれる機能なので、パケットへの直接アクセスでの公開は制御できますが、ディストリビューション自体はパブリックなのでそこは誤解のないようにしてください。公式ドキュメントにも注意書きがありました。

Private origin access controls how your distribution reaches your bucket—it does not make your website content private. Any object that your distribution serves is publicly accessible to anyone who has your distribution's URL.

https://docs.aws.amazon.com/lightsail/latest/userguide/amazon-lightsail-static-site-hosting-tutorial.html

カスタムエラーレスポンスも設定してみる

作成後のディストリビューション詳細画面に「Custom Error Responses」のセクションが確認できました。

9AFB49C7-BCF6-402B-AE46-0753EC7E636A.png

オリジンが特定の HTTP エラーを返したときに、独自のエラーページや別のステータスコードを返す設定で、CLI の履歴からするとおそらくこれも今回追加されたっぽいです。こちらも設定してみましょう。

ここで「Add custom error response」から、HTTP error code を 404 Not Found、Response path を /site/404.html、HTTP response code を 403 Forbidden で設定してみました。

2A048199-6C2E-4E6A-8248-09625BF3DF38.png

設定後ブラウザからアクセスしてみたのですが、404.html は確認できませんでした。デフォルトの 403 エラーっぽい。

B1CA8D45-FDD8-42DD-AE81-86EA8749994F_4_5005_c.jpeg

元から存在しないパスの挙動が404になってないのか、あるいはカスタムエラーレスポンスのコンテンツがうまく適用されていないのかわからないのですが、なんでだろう。

さいごに

本日は Lightsail のディストリビューションにプライベートオリジンアクセスが追加されたので確認してみました。

バケットをプライベートのままにして、ディストリビューション経由で配信できました。
Lightsail を使って静的コンテンツを配信している場合、パブリックバケット化して配信している方多そうなのでぜひプライベートバケットに変更して試してみてください。

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事