AWS Elemental MediaTailorでAmazon CloudFrontを経由して広告付き動画配信をしてみた
はじめに
清水です。AWSの公開しているチュートリアルを利用してMediaTailorから広告付きVOD動画配信を試しています。以前のエントリは下記になります。
AWSの公開しているチュートリアルは下記をご参照ください。
Video On Demand Ad Insertion with AWS Elemental MediaTailor | AWS Media Blog - aws-media-services-simple-vod-workflow/11-VODMediaTailor at master · aws-samples/aws-media-services-simple-vod-workflow · GitHub
このAWSのチュートリアルではAmazon CloudFrontの連携についても実施手順が記載されています。前回のエントリではここまでやってみることができませんでしたので、本エントリにて、MeditaTailorとCloudFrontの連携についての手順をまとめてみたいと思います。なおMediaTailorのConfigurationやそこに設定したVideo content source、Ad decision serverの設定は、基本的には前回のエントリと同様になりますので、詳細はそちらをご確認ください。
CloudFrontの設定
ではAWSのチュートリアルに従ってCloudFrontとの連携を設定していきます。(チュートリアルで言うところの、「3. Integrate with Amazon CloudFront」が該当します。)
ディストリビューションの作成とオリジンの追加
今回CloudFrontのディストリビューションは1つ、そこに追加するオリジンは3つとなります。まずは、Video content sourceをホストするドメインをオリジンとしてディストリビューションを作成していきます。
delivery methodとしては Web を選択します。
Origin Domain Nameとして、今回私はVideo content sourceにMediaPackageを使用していますので、MediaPackageのPlayback URLのドメイン部分、具体的にはab29fc76d7e8915fxxxxxxxxxxxxxxxx.egress.mediapackage-vod.ap-northeast-1.amazonaws.com
を入力します。Origin Pathの部分には/out
を入力します。これは後述しますがMediaTailor側で設定するCDN content segment prefixとの整合性をとるためです。Origin Protocol Policyとしては HTTPS Only を選択します。Comment部分にチュートリアルにならいCloudFront for MediaTailor
と入力、ディストリビューションを作成します。
ディストリビューション作成完了には15分ほど時間を要しますが、続いて他のオリジンを追加していきます。作成したディストリビューションの詳細画面、Origins and Origin Groupsの箇所からOriginsの[Create Origin]ボタンで進みます。
2つ目のオリジンとして、MediaTailorのConfiguration、HLS playback prefixのドメイン追加します。具体的には0d8fa756125a41bfxxxxxxxxxxxxxxxx.mediatailor.ap-northeast-1.amazonaws.com
というようなドメインとなります。
Origin Domain Nameの欄にドメイン名を入力後、わかりやすくするためにOrigin IDをMediaTailorOrigin
としておきます。またOrigin Protocol PolicyはHTTPS Onlyを選択します。
続いて3つ目のオリジンを追加します。これはMediaTailorのAdサーバーホスト名となるもの、とのことです。(MediaTailorAdsOrigin)チュートリアル中ではこのオリジンは、ads.mediatailor.<region>.amazonaws.com
と紹介されていました。(東京リージョンならads.mediatailor.ap-northeast-1.amazonaws.com
ですね。)
ただこちらのVideoJS HTTP Streamingを利用してMediaTailorから広告付き動画を再生した際に、このads.mediatailor.ap-northeast-1.amazonaws.com
にアクセスしている形跡がないことがわかりました。また代わりにsegments.mediatailor.ap-northeast-1.amazonaws.com
というドメインに広告動画のセグメントファイルをリクエストしているようでした。ドメイン名などから確認したところ、以下のAWSドキュメントに記載部分を確認、GitHub上で履歴を確認すると、ads.mediatailor.<region>.amazonaws.com
がsegments.mediatailor.<region>.amazonaws.com
に置き換えられていることが確認できました。
- AWSドキュメント記載部分
- GitHubでホストされている該当部分
- GitHubの変更履歴
こちらをもとに、今回はMediaTailorAdsOriginとしてsegments.mediatailor.ap-northeast-1.amazonaws.com
をドメイン名として指定しました。Origin IDとしてMediaTailorAdsOriginを入力、またこちらもOrigin Protocol PolicyはHTTPS Onlyを選択します。
以上で3つのオリジンを持つCloudFrontディストリビューションが作成できました。続いてこのディストリビューションのBehaviorsを設定していきます。
Behaviorsの設定
まずはVideo content sourceをホストするドメインに対するBehaviorの設定です。チュートリアルではS3オリジンを使っていおり、パスパターンとして/caminandes/*
としています。今回、本エントリでは前述のとおりMediaPackageを使っています。パスパターンとしは/out/*
となりそうなのですが、この/out/*
はCloudFront側のOrigin設定のOrigin Pathの箇所で設定しています。(CDNであるCloudFrontアクセス時は/out
はいりませんが、オリジンにアクセスする際に自動的に付与されます。これは後述しますMediaTailorのCDN content segment prefixの設定と整合性をとるためにこのように設定しました。)
続くパスである/v1/*
での設定も検討しましたが、こちらはチュートリアル側でMediaTailor Originの設定に使用していることも踏まえ、MediaPackageの/v1/
に続くディレクトリ名第1階層も含めた、/v1/edf3dff411504fecba3078d74c98b97e/*
というパスパターンで設定しました。このパスパターン/v1/edf3dff411504fecba3078d74c98b97e/*
について、オリジンをMediaPackage(スクリーンショット中ではCustom-ではじまるもの)を選択します。その他のBehaviorの設定は特に行いません。
続いてMediaTailorOriginに対するBehaviorを設定します。パスパターンは/v1/*
を指定し、オリジンIDでMediaTailorOriginを選択、Query String Forwarding and CachingでForward all, cache based on all
を選択し、すべてのクエリパラメータをオリジンに転送するように設定します。
そしてデフォルトのBehavior(パスパターンがDefault (*)
)について、OriginをMediaTailorAdsOriginに変更、またQuery String Forwarding and CachingでForward all, cache based on all
を選択し、すべてのクエリパラメータをオリジンに転送するように設定します。
最後に、Behaviorsパスパターンの優先順位の設定を行います。チュートリアルとは少し異なる順になったのですが、最も優先度の高いパスパターンにVideo content sourceのオリジン(/v1/edf3dff411504fecba3078d74c98b97e/*
)、次いでMediaTailorのオリジン(/v1/*
)、最後にMediaTailor Adsのオリジンになるように順序を設定しました。
MediaTailorのCDN設定
CloudFrontディストリビューション設定が完了しました。続いてMediaTailorのCDN設定箇所にこのCloudFrontディストリビューションを設定していきます。(チュートリアルで言うところの「Update MediaTailor Configuration with CloudFront Details 」が該当します。)
MediaTailorのManagement Console画面、前回のエントリで作成したMyTestCampaign
という名称のConfiguration詳細画面に進みます。
前回のエントリでConfiguration作成時にはConfiguration name、Video content source、Ad decision serverの各情報のみ設定、Additional configurationの欄は空欄でした。CDN設定はこのAdditional configurationでできたようですが、特に設定していなかったので現状、CDN設定まわりはNone
となっている状況です。右上[Edit]ボタンからこのConfiguration設定を変更していきます。
CDNの設定箇所としてはCDN content segment prefix、CDN ad segment prefixの2箇所で、チュートリアルにもこちらをCloudFrontのドメインにすることが記載されています。ただ私のほうで試したパターンがMediaPackageを使っていることなどから少し設定が異なりました。
具体的には、MediaTailorのVideo content sourceがhttp://origin.com/contentpath/subdir/
の場合に、CDN content segment prefixをhttps://CDN_Hostname/
と指定すると、MediaTailorは第1階層目のディレクトリ名に該当する/contentpath
を省略したhttps://CDN_Hostname/subdir/
にアクセスしようとする、という点に注意が必要でした。(詳細については、AWSドキュメントのAWS Elemental MediaTailor と CDN の統合に記載があります。)
そのため、Video content source Infoをこれまでのhttps://ab29fc76d7e8915fxxxxxxxxxxxxxxxx.egress.mediapackage-vod.ap-northeast-1.amazonaws.com/out/v1/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/abaefc902d6446df8819d01158221e27
ではなく、第2階層のディレクトリ名まで、つまりhttps://ab29fc76d7e8915fxxxxxxxxxxxxxxxx.egress.mediapackage-vod.ap-northeast-1.amazonaws.com/out/v1
としました。そして、CDN content segment prefix
にはCloudFrontのドメイン名+パス/v1
、つまりhttps://d2dx1sxxxxxxxx.cloudfront.net/v1
を入力します。
MediaTailorがCDNにアクセスする際には、第1階層目のディレクトリが省略されてhttps://ab29fc76d7e8915fxxxxxxxxxxxxxxxx.egress.mediapackage-vod.ap-northeast-1.amazonaws.com/v1
となりますが、Playback endpointsにアクセスする際のm3u8ファイルのアドレスとして、最終的にMediaPackageのPlayback URLと整合性が取れるよう、末尾にedf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/abaefc902d6446df8819d01158221e27/master.m3u8
とディレクトリ名を含めて指定します。
CDN ad segment prefixについては、CloudFrontのドメイン名をそのまま入力します。(https://d2dx1sxxxxxxxx.cloudfront.net
となります。)以上で[Save]ボタンを押して設定を保存します。
マニフェストファイルからCloudFront経由での広告付き動画配信の確認
CloudFront、MediaTailor双方の設定ができましたので、実際にCloudFront経由でMediaTailorから広告付き動画配信を行ってみます。
MediaTailorの設定の際にVideo content sourceを書き換えましたが、CloudFrontを経由せず、MediaTailorのPlayback endpointを直接見るかたちだと、以下のURLとなります。
https://0d8fa756125a41bfxxxxxxxxxxxxxxxx.mediatailor.ap-northeast-1.amazonaws.com/v1/master/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/abaefc902d6446df8819d01158221e27/master.m3u8
このドメイン部分をCloudFrontのd2dx1sxxxxxxxx.cloudfront.net
に変更し、以下がCloudFront経由でのアクセスURLとなりますね。
https://d2dx1sxxxxxxxx.cloudfront.net/v1/master/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/abaefc902d6446df8819d01158221e27/master.m3u8
このURLをVideoJS HTTP StreamingなどのVideo Playerから参照すれば、CloudFront経由の広告付き動画が視聴できます。以下ではcurlコマンドでm3u8ファイルの中身をチェックしてみます。まずはPlayback endpointとなるm3u8ファイルからですね。以下のように各ビットレートへのマニフェストファイルが列挙されています。ここは相対パスなので、ドメインは特に変更なしですね。
$ curl https://d2dx1sxxxxxxxx.cloudfront.net/v1/master/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/abaefc902d6446df8819d01158221e27/master.m3u8 #EXTM3U #EXT-X-VERSION:3 #EXT-X-INDEPENDENT-SEGMENTS #EXT-X-STREAM-INF:CODECS="avc1.4D401F,mp4a.40.5",AVERAGE-BANDWIDTH=511949,RESOLUTION=480x270,FRAME-RATE=14.985,BANDWIDTH=585556 ../../../../../../manifest/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/0.m3u8 #EXT-X-STREAM-INF:CODECS="avc1.4D401F,mp4a.40.5",AVERAGE-BANDWIDTH=731949,RESOLUTION=640x360,FRAME-RATE=29.97,BANDWIDTH=849556 ../../../../../../manifest/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/1.m3u8 #EXT-X-STREAM-INF:CODECS="avc1.4D401F,mp4a.40.5",AVERAGE-BANDWIDTH=1426218,RESOLUTION=640x360,FRAME-RATE=29.97,BANDWIDTH=1668972 ../../../../../../manifest/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/2.m3u8 #EXT-X-STREAM-INF:CODECS="avc1.640028,mp4a.40.5",AVERAGE-BANDWIDTH=3956183,RESOLUTION=960x540,FRAME-RATE=29.97,BANDWIDTH=4704946 ../../../../../../manifest/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/3.m3u8 #EXT-X-STREAM-INF:CODECS="avc1.640028,mp4a.40.5",AVERAGE-BANDWIDTH=3956183,RESOLUTION=1280x720,FRAME-RATE=29.97,BANDWIDTH=4704946 ../../../../../../manifest/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/4.m3u8 #EXT-X-STREAM-INF:CODECS="avc1.640028,mp4a.40.5",AVERAGE-BANDWIDTH=5606218,RESOLUTION=1280x720,FRAME-RATE=29.97,BANDWIDTH=6684972 ../../../../../../manifest/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/5.m3u8 #EXT-X-STREAM-INF:CODECS="avc1.640028,mp4a.40.5",AVERAGE-BANDWIDTH=7256183,RESOLUTION=1280x720,FRAME-RATE=29.97,BANDWIDTH=8664946 ../../../../../../manifest/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/6.m3u8 #EXT-X-STREAM-INF:CODECS="avc1.640028,mp4a.40.2",AVERAGE-BANDWIDTH=9491249,RESOLUTION=1920x1080,FRAME-RATE=29.97,BANDWIDTH=11332996 ../../../../../../manifest/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/7.m3u8
続いて各ビットレートにあたるマニフェストファイルを確認します。今回は上から3つ目の末尾が2.m3u8
を確認してみました。動画本編のセグメントファイルが記載されている部分はCloudFrontのドメイン(d2dx1sxxxxxxxx.cloudfront.net
)となっていることが確認できますね。
$ curl https://d2dx1sxxxxxxxx.cloudfront.net/v1/master/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/abaefc902d6446df8819d01158221e27/../../../../../../manifest/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/2.m3u8 #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:8 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-DISCONTINUITY #EXTINF:2.0, ../../../../segment/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/2/0 #EXTINF:2.0, ../../../../segment/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/2/1 #EXTINF:2.0, ../../../../segment/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/2/2 #EXTINF:2.0, ../../../../segment/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/2/3 #EXTINF:2.0, ../../../../segment/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/2/4 #EXT-X-DISCONTINUITY #EXTINF:6.006, https://d2dx1sxxxxxxxx.cloudfront.net/v1/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/index_3_0.ts #EXTINF:6.006, https://d2dx1sxxxxxxxx.cloudfront.net/v1/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/index_3_1.ts #EXT-X-DISCONTINUITY #EXTINF:2.0, ../../../../segment/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/2/7 #EXTINF:2.0, ../../../../segment/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/2/8 #EXTINF:2.0, ../../../../segment/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/2/9 #EXTINF:2.0, ../../../../segment/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/2/10 #EXTINF:2.0, ../../../../segment/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/2/11 #EXT-X-DISCONTINUITY #EXTINF:6.006, https://d2dx1sxxxxxxxx.cloudfront.net/v1/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/index_3_2.ts #EXTINF:6.006, https://d2dx1sxxxxxxxx.cloudfront.net/v1/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/index_3_3.ts #EXTINF:6.006, https://d2dx1sxxxxxxxx.cloudfront.net/v1/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/index_3_4.ts #EXTINF:6.006, https://d2dx1sxxxxxxxx.cloudfront.net/v1/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/index_3_5.ts #EXTINF:6.006, https://d2dx1sxxxxxxxx.cloudfront.net/v1/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/index_3_6.ts #EXTINF:6.006, https://d2dx1sxxxxxxxx.cloudfront.net/v1/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/index_3_7.ts #EXTINF:6.006, https://d2dx1sxxxxxxxx.cloudfront.net/v1/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/index_3_8.ts #EXTINF:6.006, https://d2dx1sxxxxxxxx.cloudfront.net/v1/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/index_3_9.ts #EXTINF:6.006, https://d2dx1sxxxxxxxx.cloudfront.net/v1/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/index_3_10.ts #EXTINF:6.006, https://d2dx1sxxxxxxxx.cloudfront.net/v1/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/index_3_11.ts #EXTINF:3.804, https://d2dx1sxxxxxxxx.cloudfront.net/v1/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/65dcec98e2214d96a8804bae4e1ee1e0/712634bb77dd43cbbf682b8155263fdf/index_3_12.ts #EXT-X-DISCONTINUITY #EXTINF:2.0, ../../../../segment/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/2/23 #EXTINF:2.0, ../../../../segment/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/2/24 #EXTINF:2.0, ../../../../segment/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/2/25 #EXTINF:2.0, ../../../../segment/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/2/26 #EXTINF:2.0, ../../../../segment/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/2/27 #EXT-X-ENDLIST
広告動画のセグメントファイルについては、以下のように301リダイレクトを挟んで配信されているようです。リダイレクト先のドメインもCloudFrontのものになっていることが確認できます。
$ curl -I https://d2dx1sxxxxxxxx.cloudfront.net/v1/master/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/edf3dff411504fecba3078d74c98b97e/4efeb74faa7148cb81bf496d9bb461c0/abaefc902d6446df8819d01158221e27/../../../../../../manifest/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-288cd7418e2/../../../../segment/75e6a676bd61befbe2b029eaxxxxxxxxxxxxxxxx/MyTestCampaign/d6683d47-d370-41cf-b747-6288cd7418e2/2/0 HTTP/2 301 content-type: application/json content-length: 2 location: https://d2dx1sxxxxxxxx.cloudfront.net/csori2haevhyjpkwhkv7amjgdegngtte/asset_360_1_2_00001.ts date: Wed, 31 Jul 2019 10:03:02 GMT x-amzn-requestid: 75182dd0-624d-4880-af8a-8e5e42adf0fd age: 4 x-cache: Hit from cloudfront via: 1.1 5fd303e4294789c9f7d3efeddb26eaf4.cloudfront.net (CloudFront) x-amz-cf-pop: NRT57-C3 x-amz-cf-id: 7hfybgJCV6YjUCzYMrWuJ4qxW_qK7IjXr0YgSZfcCINxttSM6BvYpQ==
$ curl -I https://d2dx1sxxxxxxxx.cloudfront.net/csori2haevhyjpkwhkv7amjgdegngtte/asset_360_1_2_00001.ts HTTP/2 200 content-type: video/MP2T content-length: 414352 date: Wed, 31 Jul 2019 10:04:06 GMT last-modified: Tue, 30 Jul 2019 12:01:53 GMT etag: "9a6c0adb54b3c7206ea33a7ba99dfcf2" accept-ranges: bytes server: AmazonS3 via: 1.1 7b094f2f0e9d722112e924ad75e6e4ec.cloudfront.net (CloudFront), 1.1 2abe7c09e4d4e443ea558b0b94988837.cloudfront.net (CloudFront) x-amz-cf-pop: NRT51-C3 x-cache: Miss from cloudfront x-amz-cf-pop: NRT57-C3 x-amz-cf-id: ZluqCh1b6aVmBjq3SOk9st0AjHmYuU_h1RCtW-kVuw8qIPAiSZd3gw==
まとめ
AWSが公開しているチュートリアルを利用して、Amazon CloudFrontを経由したAWS Elemental MediaTailorでの広告付きの動画配信をしてみました。CloudFrontの設定などは基本的にチュートリアルに書いてあるのですが、Video content source(動画本編のアセット)をチュートリアルのようにS3を利用するのではなく、MediaPackageを利用していたためCDN content segment prefixの設定箇所で少し悩みました。(本エントリにも少し試行錯誤の跡がにじみ出ているような…)なおこちらがうまく行かず、MediaTailor側からCDNを経由してVideo content sourceにアクセスできない場合はCDNを使わないVideo content sourceのURLがそのままPlayback endpointから返る一連のマニフェストファイルに記載されるようでした。
実際にMediaTailorをサービスとして使い場合は今回のようなセグメントファイルのCDN経由は必須かと思います。今回CloudFrontの各Behaviors/Path patternに関する設定についてはチュートリアルに記載にとおりに行いましたが、これらの詳細も(どのファイルがキャッシュされ、どのファイルがキャッシュされないのか、など含めて)確認しておきたいなぁと思いました。引き続き、AWS Elemental MediaTailor含めたAWS Media Servicesの機能詳細を追っていきたいと思います。