この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
清水です。本日お届けするアップデートはこちら!簡単にセットアップでき、しかも超低遅延な配信ができるAWSのライブストリーミングソリューションAmazon Interactive Video Service (Amazon IVS)がAWS CloudFormatioに対応しました!AWS Developer Forumsに2020/10/30にポストされたアップデートになります。
Amazon IVSをCloudFormationで作成してみた
では実際に、Amazon IVSのリソースをAmazon CloudFromationで作成してみたいと思います。CloudFormationのドキュメント内、テンプレートリファレンスを確認してみます。
以下の3つのリソースタイプが定義されていることがわかります。
通常のライブストリーミング配信のほか、プライベートチャンネルでの配信の構成もCloudFormationを用いて作成できそうですね。本エントリでは取り急ぎ、Channelリソースの作成をしてみたいと思います。AWS::IVS::Channelのドキュメント(テンプレートリファレンス)を参考に、以下のテンプレートファイルを作成しました。LatencyModeとTypeは、あえてデフォルトではない設定をしています。(LatencyModeならNORMAL、TypeならBASIC)
amazon-ivs-now-supports-aws-cloudformation.yaml
AWSTemplateFormatVersion: 2010-09-09
Resources:
IVSChannel:
Type: AWS::IVS::Channel
Properties:
Name: cfn-channel
LatencyMode: NORMAL
Type: BASIC
Outputs:
IVSChannelArn:
Value: !Ref IVSChannel
IVSChannelIngestEndpoint:
Value: !GetAtt IVSChannel.IngestEndpoint
IVSChannelPlaybackUrl:
Value: !GetAtt IVSChannel.PlaybackUrl
このファイルからCloudFormationスタックを作成していきます。マネージメントコンソールでAmazon IVSをサポートしているリージョン(今回はus-west-2/Oregon)を選択し、Create stack画面でテンプレートファイルをアップロードします。
Stack nameを適切に入力し、進みます。
次の画面はそのまま[Next]で進み、最後のレビュー画面で内容を確認して[Create stack]します。
1分かかることなくすぐに、リソース作成が完了しCREATE_COMPLETEの状態になりました!
IVSのマネジメントコンソールでもリソースを確認してみましょう。問題なくリソースが作成されていますね。
なお、IVS ChannelのIngestEndpointやPlaybackURLについてはCloudFormationリソース作成時のReturn valueでも確認ができます。今回使用したCloudFormationテンプレートでもOutputsで出力していますが、以下のようになります。(IngestEndtpointについては先頭にrtmps://
、末尾に/app/
を入れておくとより良さそうですね。
なお、2020/10/31 18:30現在、私が確認した限りですが、以下のようなテンプレートファイルで、Channelリソースと同時にStreamKeyリソースを作成しようとすると「ivs.ServiceQuotaExceededException: Resource: stream-key quota exceeded limit: 1」というエラーになりリソースの作成が行えませんでした。(結果、ROLLBACKしてしまいます。) AWS::IVS::Channelのドキュメントページによると、AWS::IVS::Channelリソース作成時にはStreamKeyが作成されない(ので、AWS::IVS::StreamKeyリソースで別途作成する必要がある)とのことなのですが、実際には作成されてしまっているのかな?と推測しています。(いずれにせよ、AWS::IVS::StreamKeyリソースの作成も組み合わせることができれば、CloudFormationスタック作成時のOutputで配信に必要な情報がすベて確認できそうですね。)
AWSTemplateFormatVersion: 2010-09-09
Resources:
Channel:
Type: AWS::IVS::Channel
Properties:
Name: MyChannel
Tags:
- Key: MyKey
Value: MyValue
StreamKey:
Type: AWS::IVS::StreamKey
Properties:
ChannelArn: !Ref Channel
Tags:
- Key: MyKey
Value: MyValue
Outputs:
ChannelArn:
Value: !Ref Channel
ChannelIngestEndpoint:
Value: !GetAtt Channel.IngestEndpoint
ChannelPlaybackUrl:
Value: !GetAtt Channel.PlaybackUrl
StreamKeyArn:
Value: !Ref StreamKey
まとめ
Amazon Interactive Video Service (Amazon IVS)でAWS CloudFormationを使ってリソースを作成してみました。Amazon IVSはリリース当時からAWS CLIでの対応はしていましたが、リソース構築などの選択肢が増えるのは嬉しいですね。またStreamKeyとの連携部分やプライベートチャンネル配信時に必要と思われるPlaybackKeyPairとの連携、リソースの更新時の挙動なども追って確認していきたいと思います。