IT

【aws】AWS Elemental MediaLiveを自動停止したい

継続的に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 *
画像に alt 属性が指定されていません。ファイル名: image.png

フレックスタイムウィンドウに関しては、オフでも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.

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

  • この記事を書いた人

緑川縁

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

-IT
-,