Amazon CloudFrontのRTMPディストリビューション機能が2020年12月31日に廃止されます

Flashを基盤とした動画再生プレイヤー向けにVOD動画をストリーミング可能なAmazon CloudFrontのRTMPディストリビューション、Flashのサポート終了と同時期となる2020年末に廃止されることがアナウンスされています。個人的に感慨深いこともあり、RTMPディストリビューション自体を振り返りつつ廃止の背景などをまとめてみました。
2020.03.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

清水です。AWSが提供する高速・高パフォーマンスなコンテンツ配信サービス(CDN)であるAmazon CloudFront、そのDiscussion FormusにRTMPディストリビューション機能の廃止がアナウンスされていました。少し前ですが、2019年12月17日にポストされた内容となります。

本エントリではこのRTMPディストリビューション機能の廃止の背景などを確認してみたいと思います。なお本日2020年3月30日現在、CloudFrontのマネジメントコンソール画面、ディストリビューションを作成する際の配信方式選択画面では以下のように廃止が強調表示されています。(私はこの警告文で廃止を知りました。)

2021/01/16 追記

2021年冒頭に状況を確認したところ、以下のようにドメインの名前解決ができずRTMPディストリビューションにアクセスできなくなっていることが確認できました。

ただし、あくまで2020年末日に廃止となったのはAmazon CloudFrontを用いたラストマイルでのRTMPの利用であり、AWSの他サービスにおけるファーストマイルのRTMPでの使用は2021年冒頭でも現役となります。

CloudFrontのRTMPディストリビューションとその歴史

まずはCloudFrontのRTMPディストリビューションについて簡単に振り返ってみます。上記で示したディストリビューション作成時の画面で見たことはあるけど使ったことはない、という方が多いのではないでしょうか。(通常は上のWebディストリビューション、つまりHTTP形式に対応したディストリビューションを使用するかと思います。)

RTMPディストリビューションを使用することで、RTMP (Real-Time Messaging Protocol)という形式でのストリーミングによるVOD動画配信が可能です。Amazon S3をオリジンとし、S3に格納している動画ファイル(mp4やflv)をRTMPでストリーミング配信します。CloudFront内部ではAdobe Flash Media Server 3.5相当として稼働してRTMPストリーミングを実現しています。

サービス開始時期は私は定かではないのですが、2011年ごろにはすでにサービスとして機能が紹介されていました。

当時は動画配信といえば、動画プレイヤーにAdobe Flashの技術を利用し、このRTMP形式でストリーミングすることがほとんどだったと思います。(その後、スマートフォンの台頭などもあり、徐々にHLSなどHTTPベースのストリーミングに移行、動画プレイヤーもJavaScript製などへ移っていったかと思います。)

RTMP形式のストリーミング配信を行う場合、Adobe Flash Media Server(現在のAdobe Media Server)などストリーミングサーバが必要でした。サーバ自体のランニングコストの他、ストリーミングサーバ製品自体のライセンス料金などが発生します。これが割と高額だったと記憶していますが、AWS Marketplaceでサブスクリプションモデルとして利用できたのも画期的でした(FMS on AWS)。それでも、EC2インスタンスが稼働すればその管理が発生します。

そんな中、このCloudFrontのRTMPストリーミング機能は、ストリーミング形式に変換していないmp4/flvファイルをS3でホスティング、CloudFrontを経由することでRTMP配信ができる、非常に画期的なサービス/機能であったことを記憶しています。(mp4/flvファイルからのストリーミング形式への変換が不要なこともメリットだったと考えます。現在も、VOD配信をCloudFront+S3で配信することはベストプラクティスな構成ではありますが、HLSなどストリーミング形式への変換が必要です。)

なぜCloudFrontのRTMPディストリビューションが廃止されるのか

廃止の理由についてはDiscussion Forumsに記載があります。まず前提として、AWSはセキュリティ上の理由や特殊な状況でない限り、AWSのサービス機能を廃止することはない、と明言があります。この点は私も同様の認識です。

そんな中、2020年12月31日にはAdobeがFlashのサポート終了を予定しています。またAdobeに加え、多くのWebブラウザでも同時期にFlashのサポートを終了します。RTMP形式によるストリーミング動画配信については、再生プレイヤーにFlashの使用が前提だと思います。(私の知る限りでは、Flashを使わずRTMP形式を再生するWebブラウザ用動画プレイヤーはありません。)この再生する基盤となるFlashのサポート終了に伴い、RTMPディストリビューション機能も廃止する予定となるようです。

RTMPディストリビューションの廃止時の動き

Discussion Forumsの該当記事には、2020年12月31日以降のRTMPディストリビューションの挙動について以下のようにアナウンスされています。(詳細は原文をご確認ください。)

  • すべてのCloudFront RTMPディストリビューションが削除される
    • 「all CloudFront RTMP distributions will be deleted」
  • CloudFrontは存在していたエンドポイントへのリクエストを拒否する
    • 「CloudFront will deny requests made to those previously existing endpoints」

RTMPディストリビューション廃止に伴う代替案

同じくDiscussion Forumsの該当記事に、RTMPディストリビューション廃止に伴う代替案として、RTMPワークロードの移行先の案内があります。内容はHLS (HTTP Live Streaming)、DASH (Dynamic Adaptive Streaming over HTTP)といったモダンなストリーミング形式へ移行です。これらはCloudFrontのWebディストリビューションで実現が可能です。またmp4などの非ストリーミング形式のファイルをHLSやDASHなどのストリーミング形式へ変換する必要もありますね。こちらはAWS Elemental MediaConvertなどで実現ができます。

まとめ

Amazon CloudFrontのRTMPディストリビューション機能の廃止についてまとめてみました。Adobe Flashのサポート終了に伴い、RTMPディストリビューション機能についても廃止されます。もしもまだRTMPディストリビューションを使用してVOD動画のストリーミング配信を行っている場合は、廃止予定の2020年12月31日までにHTTP形式のストリーミングへ移行できるように計画を行いましょう。

なおこのRTMPディストリビューション、個人的な話ですがAWSを触りはじめた当初から使っていた機能であり、最近ではめっきり使う機会は減りましたが、CloudFrontの(Web)ディストリビューション作成時に「まだあるなぁ、まだあるなぁ」と(勝手に)気にかけていました。(一時期、マネジメントコンソールからは消え、APIのみで操作するというタイミングもありましたが。)この度、AdobeのFlashサポート終了に伴い廃止されるということで、感慨深くなりまとめてみたしだいです。

また個人的に興味深い点は、RTMPプロトコル自体はいまだ利用機会が多いところでしょうか。具体的には、ライブ配信を行う際のエンコーダからストリーミングサーバへの映像伝送に利用されます。例えばAWS Elemental MediaLiveもRTMPが利用できますし、YouTube Liveなど動画配信サービスでもサポートしているものが多いですね。

おまけ RTMPディストリビューションを作成してみた

最後におまけとして、9ヶ月後に廃止されるCloudFront RTMPディストリビューションを記念に作成してみました。本当はRTMPストリーミングまで行いたかったのですが、再生プレイヤー(Flash)部分でうまくいきませんでした……。

まずはディストリビューション作成画面、Web(HTTP)ディストリビューションと比べると項目が少ないですね。

そしてディストリビューション作成完了後の画面です。こちらもWeb(HTTP)ディストリビューションと比べて設定項目数(タブの数)が少ないですね。またドメイン名がsで始まるのが特徴的です!(Webディストリビューションはdではじまる)キャッシュ期間は一律24時間(CloudFrontサービスリリース当時のまま)、キャッシュ無効化(Invalidation)は不可だったと記憶しています。