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}"