継続的にMediaLiveのチャンネルを利用していると、
停止することを忘れてしまい必要以上に課金が発生してしまうケースがあると思います。
その対応として、定刻になったらチャンネルを停止する設定を実施したので、
備忘として記載します。
利用サービス
- IAM
- Amazon EventBridge
- AWS Elemental MediaLive
MediaLiveは、チャンネルIDを確認するだけです。
IAM
利用するポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "medialive:StopChannel",
"Resource": "arn:aws:medialive:ap-northeast-1:アカウントID:channel:チャンネルID"
}
]
}
上記ポリシーは、VisualEditorで作成しました。
利用するロールのエンティティ
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "scheduler.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
ポイント
コンソールから作成する場合には、信頼されたエンティティタイプは、「カスタム信頼ポリシー」を選択します。
EventBridge
Amazon EventBridge スケジューラ を利用します。
ポイント
EventBridgeで利用するAPIは、複数のチャンネルを指定することができません。
その為、1チャンネルにつき、1つのスケジュールを作成する必要があります。
毎日24:00にチャンネルを停止する為の設定は以下です。
- cron式
00 00 ? * SUN-SAT *
フレックスタイムウィンドウに関しては、オフでもOKです。
また、「時間枠」に関しては、設定しなくても問題ありません。
- ターゲットの選択
MediaLive > StopChannel
ChannelId には、該当チャンネルのIDを指定します。
- 再試行ポリシーとデッドレターキュー (DLQ)
チャンネルが停止していたケースを想定して、
再試行ポリシーはOFF、DLQはなしに設定します。
- アクセス許可
上述のポリシーとエンティティを内包したIAMロールを選択します。
設定は以上です。
発火確認について
実行結果については、CloudWatch で確認することができます。
詳細は公式ドキュメントに記述されていますが、
InvocationAttemptCountのメトリクスをみれば発火したかの確認ができます。
最後に
EventBridgeはどんどん便利になっていきますね。
現在の仕様では、ChanelIDを複数指定しようとすると、
以下の様にエラーが出てしまいますが、
将来的には複数も行けるようになれば管理も楽になりますね!
Invalid RequestJson provided. Reason The value for the field 'ChannelId' must be a STRING.
以上、どなたかの役に立てば幸いです。