
要件
- S3バケットに保存されたオーディオとビデオを提供する
- 基本認証 (ユーザー名 パスワード) を使用してフォルダーを選択的に保護します。
- 可能な限り低遅延だが必須ではない
- コストも要因ですが、アイデアは歓迎します
- メディア チームが新しいコンテンツをアップロードする方法。(S3 の場合、各ファイルを手動で公開する必要があります)
- 私たちは限られたリソースを持つ非常に小さなチームです
現在の設定
- S3バケットに保存されたデータ
- EC2インスタンス内で実行されるウェブサイト
- Apache2 サーバー
私たちの考慮事項
Apache レベルで S3 URL をリバース プロキシし、Apache レベルで基本認証を構成します。ただし、
すべてのバケット オブジェクトを公開したままにして、バケット ポリシーを適用する必要があるため、手に負えなくなります。S3 パブリック アクセスを完全にブロックし、AWS PHP SDK を使用してコーンテントを提供します。次に、メディア チームが AWS コンソールから新しいコンテンツをアップロードできるようにします。このオプションでは、レイテンシーにどのような影響があるかはわかりません。
同様の要件に対して、いくつかの優れたソリューションが利用可能であると確信しています。実行可能なソリューションをお知らせください。どうぞよろしくお願いいたします。
編集: 今のところ、すべてのパブリック アクセスをブロックしてバケットを非公開にしています。次に、EC2 インスタンスへのパブリック アクセスのみを許可するバケット ポリシーを追加し、この方法で目的を達成しました。ただし、完全に低レイテンシで実行可能なソリューションに向けてまだ準備が整っており、これに向けて前進することができます。
答え1
EC2 ではなく、S3 または CloudFront 経由で静的 Web サイトを提供することを検討してください。CloudFront を使用すると、バケットを非公開にすることもできます。動的なサイトが必要な場合は、EC2 (または Lambda と API Gateway) でのみ API をホストし、S3 でホストされたサイトからアクセスします。
いずれにしても、CloudFront を使用すると、バケットを非公開にしたままバケットからコンテンツを提供でき、良好なレイテンシーなどを実現できます。