IT

【aws】MediaPackage v2に気をつけろ。

MediaPackagev2 IAM

MediaPackageがLL-HLSに対応したということで、試した見たのですが、
利用するまでに詰まったので、備忘として記載します。


MediaLiveで発生したエラー

設定クリア済みStateパイプラインタイプメッセージ
2023.7.5 9:46:25 JST-SET0Failed to Close or Finalize the OutputMPEGTS muxer for mediaID [1] unable to close output or stream.
2023.7.5 9:47:28-SET0Failed to Create Output File or SocketMPEGTS 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-SET0Failed to Write to OutputOutputDataBackground 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-SET0Failed to Get HTTP Output TokenSignature 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-SET0Failed 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は既存のものとは別だそうなので、ご注意を。

以上、どなたかの役に立てば幸いです。

  • この記事を書いた人

緑川縁

ニートからシステムエンジニアになった人
クラウド案件をメインにやっています。
保持資格:CCNA,AWS SAA&SAP,秘書検定2級
趣味でボカロ曲作り始めました。

-IT
-