MediaPackageがLL-HLSに対応したということで、試した見たのですが、
利用するまでに詰まったので、備忘として記載します。
MediaLiveで発生したエラー
設定 | クリア済み | State | パイプライン | タイプ | メッセージ |
2023.7.5 9:46:25 JST | - | SET | 0 | Failed to Close or Finalize the Output | MPEGTS muxer for mediaID [1] unable to close output or stream. |
2023.7.5 9:47:28 | - | SET | 0 | Failed to Create Output File or Socket | MPEGTS muxer for mediaID [1] unable to open output or stream [https://hoge.ingest.hoge.mediapackagev2.ap-northeast-1.amazonaws.com/in/v1/hoge.m3u8]. |
2023.7.5 9:47:22 | - | SET | 0 | Failed to Write to Output | OutputDataBackground failed to send file for URL [https://hoge.ingest.hoge.mediapackagev2.ap-northeast-1.amazonaws.com/in/v1/hoge.ts], after [3] attempts, error [http client error [403]] |
2023.7.5 9:46:24 | - | SET | 0 | Failed to Get HTTP Output Token | Signature error for [Playlist], error [http client error [403]]. The channel must use an access role that includes mediapackagev2:PutObject. |
2023.7.5 9:46:23 | - | SET | 0 | Failed to Get HTTP Output Token |
★URLはマスクしてあります。
原因
MediaPackagev2は既存のMediaPackage(v1と呼称)とIAM権限自体が異なる為。
エラーメッセージにある通り、「mediapackagev2:PutObject.」の付与が必要でした。
ポイント
MediaLiveに利用するIAMロールに、デフォルトの「MediaPackageFullAcess」を付与しても、別サービス扱いなので、こける。
古くから運用されている「MediaPackageFullAcess」には、
MediaPackagev2関連の許可は反映されない為、上記ロールにプラスするか、
別途IAMロールを作成する必要があります。
また、MediaPackagev2のAWS管理ポリシーはまだないので、手動で作成が必要です。
対策手順
★特記事項だけ抜粋して記述します。
- IAMロール作成
①IAM>ロールにて、「ロールを作成」を押下
②以下ロールを付与
・AWSElementalMediaLiveFullAccess
・AmazonSSMReadOnlyAccess
③許可ポリシー>許可を追加>ポリシーをアタッチ>「ポリシーを作成」を押下
④アクセス許可を指定>JSONを選択し、以下を入力し、「次へ」を押下
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "mediapackagev2:PutObject",
"Resource": "*"
}
]
}
⑤ポリシー名等を適宜入力し、「ポリシーの作成」を押下
⑥作成したIAMポリシーを上述ロールにアタッチ
⑦IAMロールの信頼関係タブ>「信頼ポリシーを編集」を押下し、以下を入力
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "medialive.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
⑧「ポリシーを更新」を押下
- MediaPackage v2とMediaLive関連の作成
⑨MediaPackage v2のコンソールから、
チャンネルとエンドポイント、LL-HLSのマニフェストを作成
・作成したチャンネル>設定タブに記載されている、
「HLS取り込みエンドポイント1」のURLをコピー
⑩MediaLiveにて、チャンネルと入力を作成。
・チャネルと入力の詳細>全般情報>IAMロール
前述で作成したIAMロールを選択
・出力グループ>HLS グループ送信先 A
上述①のURLを入力し、「チャンネルの作成」を押下
以上
これでMediaLiveはMediaPackagev2に権限が付与された状態で利用できますので、
hls.jsのプレビューサイトからMediaLiveから送出した動画を確認できます。
- 公式ドキュメント
AWS Elemental MediaPackage V2 のアクション、リソース、および条件キー
最後に
アプデが速いのは素敵なんですが、
ドキュメント更新等が追いつかないのが困りものですね。
ちなみにAPI等もv2は既存のものとは別だそうなので、ご注意を。
以上、どなたかの役に立てば幸いです。