[update] Amazon IVSが従来までのRTMPSに加えRTMPでのingestにも対応していました [insecure ingest]

IVSはリリース時より暗号化されたRTMPSでのingestに対応していましたが、暗号化されていないRTMPでのingestにも対応しました。使用場面は限定的かと思いますが、本当に必要なときはinsecure ingestオプションを有効にしましょう。
2023.05.18

はじめに

清水です。AWSのマネージド型ライブストリーミングソリューションであるAmazon Interactive Video Service (Amazon IVS)で、従来までのRTMPS ingestに加えてRTMP ingestがサポートされるアップデートがありました。AWS What's Newに掲載はされていませんが、Amazon Interactive Video Service User Guideにて、2023/03/30付で更新があったことが確認できます。

Document History - Amazon Interactive Video Service

RTMPS? RTMP??

Amazon IVSは2020/07のリリース時からIngest方式としてRTMPSに対応していました。このRTMPSはRTMPをTLS/SSLで暗号化したものです。例えばWikipediaのReal Time Messaging Protocolのページには「“RTMPS - HTTPS を使い、SSL で暗号化されたプロトコル”」という説明がありますね。HTTPSとHTTPの違いとイメージするとわかりやすいかと思います。

今回のアップデートでは、このRTMPSに加えてRTMPもIngestの方式としてサポートしたこととなります。TLS/SSL暗号化されていないプロトコルもサポートした、というかたちです。RTMPSのほうが暗号化されておりセキュアであることから、通常はこれまでどおりRTMPSを使います。何らかの事情によりStreaming Software側がRTMPSに対応しておらずRTMPでしかIngestできない、といった場合に今回のアップデートが役に立ちます。

なお、暗号化されていないプロトコルのサポートということで、設定項目としても「Insecure ingest(安全でない取り込み)」と称されています。オプションで有効にすることでInsecure ingestである(暗号化されていない)RTMPが利用可能になるわけですが、この設定はデフォルトでは無効になっているというかたちです。

IVSでRTMPのInsecureなIngestをしてみる

Insecure IngestなChannelの作成

それでは実際にIVS ChannelでInsecure ingestを設定して、RTMPでのIngestを確認してみたいと思います。IVSマネジメントコンソールのCreate Channel画面からChannelを作成していきましょう。さっそく「Insecure ingest」という項目がありますね。

Channel ConfigurationをCustom configurationにして設定を変更しましょう。「Enable RTMP ingest」トグルボタンをonにしようとすると……

警告としてこの設定によりセキュリティが低下すること、通常はRTMPSの使用が推奨されることが表示されます。内容をきちんと確認してチェックボックスをonにしましょう。[Enable insecure ingest]のボタンが有効になります。

「Enable RTMP ingest」トグルがonになっていることを確認して、[Create channel]します。

Channel作成後の画面です。General configurationにInsecure ingestに関する項目はありませんが、Stream configurationのOther ingest optionsの項目、省略されている内容を表示させてみましょう。

「RTMP ingest server」の項目が現れました。ここでもセキュリティの低下ならびにあくまでもRTMPSが推奨されることが注意書きとして記載されています。

なお、通常利用するRTMPSのingest先とInsecure ingestのRTMPのURL、違いは先頭のプロトコル部分とRTMPSのドメイン名のあとのポート部分のみの違いのようです。ポート部分については省略しても動作する環境もあるかと思いますので、実質的な違いは先頭のプロトコル部分のみ、シンプルにこれまでのrtmps://からrtmp://に変更すれば利用可能になるぐあいですね。

  • RTMPS ingest server
    • rtmps://xxxxxxxxxxxx.global-contribute.live-video.net:443/app/
  • RTMP ingest server
    • rtmp://xxxxxxxxxxxx.global-contribute.live-video.net/app/

RTMPでIVSにIngest

Channelが作成できたら、実際にRTMPでIVSにingestしてみます。Streaming SoftwareはOBS Studioを使用しました。配信設定のサーバの部分にIVSのRTMP ingest serverのURLを入力します。

OBS Studioで配信を開始し、サクッとIVSのマネジメントコンソールから視聴確認をしてみます。RTMPでのingestができていますね!

Insecure Ingestを有効にしていない状態のRTMP Ingestの動作

Insecure ingestの「Enable RTMP ingest」をoffにした状態の動作も確認しておきましょう。

OBS Studioの[配信開始]ボタンを押しても、以下のようにエラーとなってしまいIngestができません。

なおこのInsecure ingestの「Enable RTMP ingest」をoffにした状態だと、マネジメントコンソール上でRTMP ingest serverのURLも表示されない状態となっていました。

Insecure Ingestに関するAPIまわりの変更について

今回のIVSのRTMP Insecure Ingest対応について、マネジメントコンソールでの設定項目の追加のほか、APIにも変更がありました。

Channel作成や変更時にInsecure Ingestの設定が可能になり、またChannelの情報を取得するとInsecure Ingestに関する情報も確認できるというぐあいですね。

例としてAWS CLIでaws ivs get-channelコマンドを実行した結果を確認してみましょう。"insecureIngest"の項目が追加されています。

$ aws ivs get-channel --arn arn:aws:ivs:ap-northeast-1:123456789012:channel/E1xxxxxxxxxx
{
    "channel": {
        "arn": "arn:aws:ivs:ap-northeast-1:123456789012:channel/E1xxxxxxxxxx",
        "authorized": false,
        "ingestEndpoint": "xxxxxxxxxxxx.global-contribute.live-video.net",
        "insecureIngest": true,
        "latencyMode": "LOW",
        "name": "insecure-ingest-channel",
        "playbackUrl": "https://xxxxxxxxxxxx.ap-northeast-1.playback.live-video.net/api/video/v1/ap-northeast-1.123456789012.channel.E1xxxxxxxxxx.m3u8",
        "recordingConfigurationArn": "",
        "tags": {},
        "type": "STANDARD"
    }
}

まとめ

Amazon IVSで従来から利用できていた暗号化されたプロトコルRTMPSに加えて、暗号化されていないRTMPでのIngestにも対応したアップデートについてお伝えしました。Insecure Ingestの設定を行うことでRTMPが利用可能となりますが、マネジメントコンソール上でもしつこいぐらいに確認されるように、通常であれば従来どおりの暗号化されたRTMPSを使うべきです。Streaming Software側などの事情でどうしてもRTMPSが利用できない、といった場合にInsecure Ingest設定でRTMPも利用できる、ということを思い出しましょう。