再生承認の有効化


このステップでは、IVS チャネルで再生承認を有効にします。再生許可によりプライベートのチャネルを作成でき、有効な動画再生の認証トークンを持つ視聴者のみがチャネルを視聴することができます。

LIVEストリーミングの再生承認の有効化

  1. AWS コンソールで IVS チャネルを編集
  2. 認証トークンの作成
  3. モジュールの概要

AWS コンソールで IVS チャネルを編集

  1. AWS コンソールで、下記のリンクから Interactive Video Service に移動します

    https://us-west-2.console.aws.amazon.com/ivs/home

  2. 左側のメニューから チャネル をクリックします

  3. 再生許可を有効にしたい IVS チャネルを選択後、上部の 編集 ボタンをクリックします。次に 再生承認 をクリックして 動画再生のトークン認証要件を有効にする変更の保存 をクリックして更新します

  4. 左側のメニューから 再生キー をクリックします。キーを作成するために 再生キーを作成 ボタンをクリックして、再生キー名を入力して 作成 をクリックします。秘密鍵である private-key.pem ファイルがローカル環境にダウンロードされます。

注意:Amazon IVS は秘密鍵を保存することは行いません。必ず鍵ファイルを保存してください。後で取得することはできません。

注意:Amazon IVS は動画再生のトークン認証に使用できる再生キーの作成は最大3つです。Amazon IVS はキーのローテーションを提供していません。


認証トークンの作成

チャネルに関連付けられてローカル環境に秘密鍵がダウンロードされました。このキーを使用して再生用の署名済みトークンを取得します。

注意 : AWS Command Line Interface(CLI) がローカル環境にインストールされていますか?インストールされていない場合は、次の手順に従って AWS Cloud9 を使用してブラウザベースの IDE を作成して AWS CLIを使用することができます。

AWS CLoud9 IDE の作成方法については、ここをクリック


  1. はじめに、AWS Secrets Manager を使って秘密鍵を安全な場所に保管しましょう

    1.1 AWS CLI をローカル環境で使用する場合は、保存されている private-key.pem ファイルを見つけ、ターミナルウィンドウまたはコマンドプロンプトを開き private-key.pem が配置されているディレクトリに移動します。

    1.2 AWS Cloud9 環境を使用する場合は、Cloud9 コンソールに移動し File メニューを選択して、 Upload local files …. を選択します。 private-key.pem ファイルを選択して Cloud9 にアップロードします。ファイルがアップロードされると、コンソールに表示されます。 Cloud9への秘密鍵のアップロード

  2. 次のコマンドを使って、AWS CLI のバージョンを確認してください

$ aws --version
aws-cli/1.18.157 Python/3.7.4 Darwin/18.7.0 botocore/1.18.16
$ aws --version
aws-cli/2.0.57 Python/3.7.4 Darwin/18.7.0 exe/x86_64
  1. AWS CLI のバージョンに従い、次のコマンドのいずれかを使用して秘密鍵を ivs-playauth-key という名前で AWS Secrets Manager に保存します
$ # AWS CLI Version 1.x
$ aws secretsmanager create-secret --name ivs-playauth-key --secret-binary file://private-key.pem
$ 
$ # AWS CLI Version 2.x
$ aws secretsmanager create-secret --name ivs-playauth-key --cli-binary-format raw-in-base64-out --secret-binary file://private-key.pem
  1. コマンドを実行すると、次のようなレスポンスが返されます
{
    "ARN": "arn:aws:secretsmanager:us-west-2:xxxxxx:secret:ivs-playauth-key-hq5Aa5",
    "Name": "ivs-playauth-key",
    "VersionId": "408abaa9-4dfa-429b-b1a3-8f5348a358ba"
}

この後の手順で使用するため、ARN値をメモします

  1. 認証トークンの生成に役立つ Lambda 関数を作成します。まず、下の Lambda function package をクリックして ivs-playauth.zipファイルをダウンロードします lambda function package

  2. AWSコンソールで Lambda に移動し、関数の作成 をクリックします

  3. 関数の作成 セクションで、デフォルトの 一から作成 を選択します。関数名ivs-token-generator と入力し、ランタイムNode.js 12.x を選択する。作成される実行ロール名をメモし、関数の作成 をクリックします

  4. 関数コード セクションまでスクロール後、Action ボタンをクリックして .zipファイルをアップロード を選択します。事前にダウンロードした ivs-playauth.zip ファイルをアップロードして 保存 をクリックします Lambda関数のアップロード

  5. zipファイルがアップロードされたら、左側のメニューから index.js を選択し、コード内の getPemKey 関数の引数を Secrets Manager のARNの値に置き換えます。 playload 変数を見つけ、aws:channel-arn の値を IVS チャネルの ARN に置き換えます。完了したら 保存 をクリックします Lambda関数の修正

  6. Lambda関数の デザイナー セクションまでスクロールし、「 + トリガーを追加 」をクリックします。 トリガーの設定 で、API Gatewayを選択し、APIの項目で Create an API を選択します。 API typeの項目で REST API、セキュリティの項目で オープン を選択して、追加 をクリックします API Gateway トリガーの作成

注意 :ここで「オープン」セキュリティを選択するのは、トークン生成機能のデモのみを目的としています。本番環境では、このREST APIを保護するために、認証と承認のメカニズムを実装する必要があります。

  1. AWS コンソールで API Gateway に移動し、「ivs-token-generator-API」の名前をクリックして詳細を表示します。 メソッドの実行 フローを表示するには /ivs-token-generator の下の ANY を選択します Edit API Gateway

  2. 統合リクエスト をクリックし、Lambda プロキシ統合の使用 をオフにして OK をクリックし、再度 OK をクリックします。

  3. 上部の <-メソッドの実行 をクリックして前の画面に戻り メソッドレスポンス をクリックします。 レスポンスモデルの追加 をクリックし コンテンツタイプapplication/json 、モデルに  Empty を入力し、チェックマーク をクリックして保存します Edit API Gateway

  4. 上部にある アクション ボタンをクリックし、APIのデプロイ をクリックします。 デプロイされるステージdefault を選択し、デプロイメントの説明 を任意で入力した後で デプロイ をクリックします Deploy API Gateway

  5. 一度デプロイすると ステージdefault の三角ボタンを押してアコーディオンを広げて /ivs-token-generatorGET メソッドを選択し、URLの呼び出し をメモします Deploy API Gateway - URLの呼び出し

  6. Lambda関数は AWS Secrets Manager の秘密鍵情報にアクセスする必要があることを忘れないでください。自動的に作成されたLambdaロールに適切なアクセス許可を設定する必要があります

  7. IAM に移動し ロール を選択して検索ボックスで「ivs-token」を検索すると、自動生成されたLambdaロール「ivs-token-generator-role-xxxxx」が表示されます。 ロール名をクリックし、アクセス権限 タブで ポリシー をクリックして ポリシーの編集 ボタンをクリックします。次にポリシーエディターで JSON タブを選択します

  8. 以下のポリシーサンプルを参考にポリシーを変更して、Secrets Manager へのアクセス許可を加えます。 <ARN_SECRET> を Secrets Manager の ARN に書き換えてください。その後、ポリシーの確認 をクリックして 変更を保存 をクリックします

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents"
                ],
                "Resource": [
                    "arn:aws:logs:us-west-2:582048091268:log-group:/aws/lambda/*"
                ],
                "Effect": "Allow"
            },
            {
                "Action": [
                    "secretsmanager:GetSecretValue"
                ],
                "Resource": [
                    "<ARN_SECRET>"
                ],
                "Effect": "Allow"
            }
        ]
    }
    
  9. 次に API Gateway の URL をリクエストしてトークン生成の Lambda 関数を実行します。 API Gateway コンソールで GET メソッドのリンクをクリックするか、新しいブラウザウィンドウから URL を直接アクセスすることができます。実行すると、次のような出力が表示されます。

{"statusCode":200,"body":"{\"token\":\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCJ9.eyJhd3M6Y2hhbm5lbC1hcm4iOiJhcm46YXdzOml2czp1cy13ZXN0LTI6MjM4MDIyODc0OTkyOmNoYW5uZWwvZm1qdjh2cXRJMmk0IiwiYXdzOmFjY2Vzcy1jb250cm9sLWFsbG93LW9yaWdpbiI6IioiLCJpYXQiOjE1OTk3OTkwNzQsImV4cCI6MTU5OTk3MTg3NH0.3r669EJg8r0lOr24WKYReWTmmO1_WuXzBXVyuM79wxXnHMcaC9u1hcUmHOxIi10ZC_SQ79BCFm6NhCMNNaX0FBwr4GnxJUbQmbzwZ3jp6fEUKVZTAWS8HQ2LvEeYye3K\"}","headers":{"Access-Control-Allow-Origin":"*"}}
  1. 次にトークンを使用してチャネルを再生しましょう。以下のようにURLの最後に ?token=<token> を手動で追加してチャネルを再生します。 クエリパラメータがない場合はチャネルを再生できないことに注意してください。 https://<ivs_channel_url>?token=<token>


モジュールの概要

このモジュールでは、再生承認を有効にしてプライベート IVS チャネルを作成し、チャネルを再生するための認証トークンを生成する方法を学びました。この機能により有料配信向けのプライベートチャネルとしてチャネルを保護することができます。