基本認証/パスワード保護を備えた S3 ベースのメディア サーバーを設定する方法

基本認証/パスワード保護を備えた S3 ベースのメディア サーバーを設定する方法

要件

  • 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 を使用すると、バケットを非公開にしたままバケットからコンテンツを提供でき、良好なレイテンシーなどを実現できます。

関連情報