見出し画像

⑧動画配信用にクラウドストレージの設定を変更(AWS)

前回の記事はこちら


はじめに

動画配信の構成

AWS S3上にアップロードされたMPEG2-TSファイルをHLS(HTTP Live Streaming)で配信するには、これらの動画ファイルをHTTPで公開する必要があります。

本章では、MPEG2-TSファイル保存用に作成したAWS S3バケットを、公開する為の設定を行います。

公開の為に実施する設定は以下の2点です。

  • 静的ウェブサイトホスティングの有効化

  • バケットをパブリックアクセス許可に設定する

【注意!!】
本章では、AWS S3を一般公開(パブリックアクセス可能な状態)する設定を行います。
しかし、この設定を行うと、URLを知っている人は誰でも動画を取得できる状態になります。
実装・構築技術的な部分を中心に話を進めるために、簡易的な方法として、パブリックアクセス可能な状態にしていきますが、インターネット上に公開される、という状況を十分理解したうえで、撮影する映像には十分注意してください。

さらに、実際にシステムとして運用していくためには、外部からは見られないような対策が必須です。

例えば、S3のオブジェクトを指定した時間だけ一時的に公開可能にするPreSignedURLを生成する方法や、MPEG2-TSをAESで暗号化してHLSで配信する方法、AWSの認証サービス(Cognito)を使用して、ログインユーザー認証機構を設ける、など、セキュリティやプライバシーの面から、様々な対策を施す必要があります。

以降の説明ではAWSのコンソール画面のキャプチャー画像を使っていますが、AWSのコンソール画面は、頻繁にデザインが変更されますので、違うデザインのコンソールに変わっている可能性があります。

静的ウェブサイトホスティングの有効化

まずは、バケットの静的ウェブサイトホスティング設定を有効にします。
この設定を有効にすると、設定したS3バケットに固有のURLが付与され、静的なHTTPコンテンツを公開する準備ができます。

S3のページで、対象のバケットを選択し、「プロパティ」タブを開きます。
スクロールさせていくと、ページの下の方に「静的ウェブサイトホスティング」の項目がありますので、「編集」ボタンを押します。

S3 バケット プロパティ

「静的ウェブサイトホスティング」の設定画面が開きますので、下記のように設定してください

  • 「静的ウェブサイトホスティング」を「有効」に設定

  • 「ホスティングタイプ」を「静的ウェブサイトをホストする」に設定

  • 「インデックスドキュメント」に「index.html」と入力

ウェブサイトホスティング設定

設定が完了すると、「静的ウェブサイトホスティング」が「有効」に変更され、「バケットウェブサイトエンドポイント」の箇所に、このバケットにアクセスする為のURLが表示されます。

バケットの公開URLが表示される

このURLをメモしておいてください。

バケットをパブリックアクセス許可に設定する

静的ウェブサイトホスティングを有効にしただけでは、バケットに保存されたファイルを取得することはできません。

公開するには、さらに以下の2つの設定を行う必要があります。

  • パブリックアクセスのブロック設定を無効にする

  • バケットポリシーを記述する

パブリックアクセスのブロック設定を無効にする

S3のページで、対象のバケットを選択し、「アクセス許可」タブを開き、「ブロックパブリックアクセス(バケット設定)の「編集」を押します。

S3 バケット アクセス許可

ブロックパブリックアクセス設定画面が開き、最初は「パブリックアクセスをすべてブロック」にチェックが付いていると思いますので、そのチェックを外して、すべての項目にチェックが付いていない状態にします。

ブロックパブリックアクセス設定

この状態で「変更の保存」を押すと、確認画面が表示されます。

確認画面

入力欄に「確認」と入力して「確認」ボタンを押すと、パブリックアクセスのブロックが解除されます。

バケットポリシーを記述する

次に、どのようなアクションを許可するかをバケットポリシーとして記述します。

すぐ下の「バケットポリシー」項目の「編集」ボタンを押すと、「バケットポリシー」の入力画面が表示されます。

S3 バケット アクセス許可

この入力欄に下記のJSONを入力します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::[バケット名]/*"
        }
    ]
}

このポリシーでは、対象バケット内に保存されたオブジェクトに対するHTTP GETのみを許可する設定です。

上記のJSONの [バケット名] の箇所に、対象バケットの名称を入れて、入力欄に転記して、保存してください。

設定確認

以上の設定ができたら、実際に公開されているか確認してみます。

対象のバケットに保存されているMPEG2-TSファイルをブラウザでダウンロードしてみます。
MPEG2-TSファイルが保存されていなければ、何か別のファイルをバケットにアップロードしてください。

静的ウェブサイトホスティングの所に記載されたURLに、ダウンロードするファイルのパスを追加したURLを、ブラウザに入力して、ダウンロード(もしくはブラウザ上で表示)できれば、設定は完了です。

次の記事


この記事が気に入ったらサポートをしてみませんか?