AWS Elemental MediaTailorでAmazon CloudFrontを経由して広告付き動画配信をしてみた

動画のパーソナライズと収益化に利用できるAWS Elemental MediaTailorをAWSの公開しているチュートリアルを利用して使ってみました。本エントリではAWSのCDNサービスであるAmazon CloudFrontとMeditaTailorの連携方法を確認しています。
2019.07.31

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

はじめに

清水です。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.comsegments.mediatailor.<region>.amazonaws.comに置き換えられていることが確認できました。

こちらをもとに、今回は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 CachingForward all, cache based on allを選択し、すべてのクエリパラメータをオリジンに転送するように設定します。

そしてデフォルトのBehavior(パスパターンがDefault (*))について、OriginをMediaTailorAdsOriginに変更、またQuery String Forwarding and CachingForward 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 prefixCDN 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の機能詳細を追っていきたいと思います。