cheetsheet/aws/medialive

チャンネル操作

効果 コマンド
チャンネルのリスト aws medialive list-channels –region ap-southeast-1 | jq -r ‘.Channels[].Id’)
止める aws medialive stop-channel –channel-id チャンネル ID
削除 aws medialive delete-channel –channel-id チャンネル ID
作成 aws medialive create-channel –cli-input-json file://channel_sample.json | jq ‘.Channel.Id’
開始 aws medialive start-channel –channel-id チャンネル ID
インプットを作成する aws medialive create-input –cli-input-json “$CREATEINPUT” –region ap-southeast-1
インプット id を調べる aws medialive list-inputs –region ap-southeast-1 | jq -r ‘.Inputs[].Id’
インプット id から詳細を得る aws medialive describe-input –input-id インプット ID –region ap-southeast-1
インプット用のスケルトンを得る( 上記の json より、Destinations の雛形が良い ) aws medialive create-input –generate-cli-skeleton

セキュリティグループの雛形を得る

aws medialive create-input-security-group --generate-cli-skeleton
{
    "WhitelistRules": [
        {
            "Cidr": ""
        }
    ]
}

こんな感じにしたい

{
    "WhitelistRules": [
        {
            "Cidr": "118.238.204.183/32"
        },
        {
            "Cidr": "124.219.164.117/32"
        }
    ]
}

上記のような json ファイルを作る jo コマンドのオプションを考える

 jo -p WhitelistRules=$(jo -a $(jo Cidr="118.238.204.183/32") $(jo Cidr="124.219.164.117/32"))

で、上記の json ファイルができる

CLI からセキュリティグループを作成し。環境変数にセキュリティグループの ID を入れる。

SECURITY_GROUP_JSON=$(jo -p WhitelistRules=$(jo -a $(jo Cidr="118.238.204.183/32") $(jo Cidr="124.219.164.117/32")))
export SECURITY_GROUP_ID=$(aws medialive create-input-security-group  --region ap-southeast-1  --cli-input-json "$SECURITY_GROUP_JSON" | jq -r '.SecurityGroup.Id')

インプットを作成する為のパラメータを作る

インプットを作成するためのスケルトンを取得する

❯ aws medialive  create-input --generate-cli-skeleton
{
    "Destinations": [
        {
            "StreamName": ""
        }
    ],
    "InputSecurityGroups": [
        ""
    ],
    "Name": "",
    "RequestId": "",
    "Sources": [
        {
            "PasswordParam": "",
            "Url": "",
            "Username": ""
        }
    ],
    "Type": "URL_PULL"
}

ここから雛形を作成する

クラウド側の RTMP 受け側に 2 つのエンドポイントに必要なものを環境変数に設定

  • STREAM_A=‘a’
  • STREAM_B=‘b’
  • TYPE=‘RTMP_PUSH’
  • NAME=‘test’
  • INPUTSECURITYGROUPID=前の処理を受け継ぐ

下記を実行すると環境変数 CREATEINPUT にインプット用の設定が入る

export CREATEINPUT=$(cat <<EOS
{
    "Destinations": [
        {
            "StreamName": "$STREAM_A"
        },
        {
            "StreamName": "$STREAM_B"
        }
    ],
    "InputSecurityGroups": [
        "$SECURITY_GROUP_ID"
    ],
    "Name": "$NAME",
    "Type": "$TYPE"
}
EOS
)

インプット作成

M_INPUT=$(aws medialive create-input --cli-input-json "$CREATEINPUT"  --region ap-southeast-1)
export M_INPUT_ID=$(echo "$M_INPUT" | jq -r '.Input.Id')
export M_INPUT_INPUT_A=$(echo "$M_INPUT" | jq -r '.Input.Destinations[0].Url')
export M_INPUT_INPUT_B=$(echo "$M_INPUT" | jq -r '.Input.Destinations[1].Url')

MediaLive のチャンネルの雛形を作成する

MediaLive のチャンネルの設定項目は多岐に渡る。チャンネル設定用の json は

aws medialive create-channel  --region ap-southeast-1 --generate-cli-skeleton

で雛形を取得するか。下記の方法で既存のチャンネル ID を取得、詳細をコピーするカタチで取得する

aws medialive list-channels --region ap-southeast-1 | jq -r '.Channels[].Id'
aws medialive describe-channel --channel-id チャンネルID --region ap-southeast-1

MediaLive のチャンネルの雛形は channel_sample_VOD.json というファイル名に保存する。 下記の箇所を変更する

  • InputAttachments.InputId : ${M_INPUT_ID}
  • 冗長化のため下記のように Destination に 2 つ MediaPackage の 2 つのエンドポイントを登録する
    "Destinations": [
        {
            "Id": "destination1",
            "Settings": [
                {
                    "PasswordParam": "/medialive/${MPACK_C_A_USER}",
                    "Url": "${MPACK_C_A_URL}",
                    "Username": "${MPACK_C_A_USER}"
                },
                {
                    "PasswordParam": "/medialive/${MPACK_C_B_USER}",
                    "Url": "${MPACK_C_B_URL}",
                    "Username": "${MPACK_C_B_USER}"
                }
            ]
        }
    ]

MediaLive のチャンネルを作成

export MLIVE_C_ID=$(aws medialive create-channel  --region ap-southeast-1  --cli-input-json "$(cat channel_sample_VOD.json | envsubst)" | jq -r '.Channel.Id')

MediaLive のチャンネルを有効にする

aws medialive start-channel --region ap-southeast-1 --channel-id "${MLIVE_C_ID}"