MediaTailor Ad insertionのログ出力まわりについて確認してみた

AWS Elemental MediaTailorのAd insertion機能におけるログ出力まわりについて確認してみました。セッションログとデバッグログが設定できます。ログ出力を有効にする方法や必要なIAMロールが異なりますので注意しましょう。
2024.05.31

はじめに

清水です。AWSのリニアチャネルアセンブリとパーソナライズされた広告挿入サービスであるAWS Elemental MediaTailorのAd insertion(広告挿入)機能でログ出力まわりの設定などを確認してみたのでまとめてみます。

MediaTailor Ad insertionではログはAmazon CloudWatch Logsに出力されます。デフォルトでログ出力は有効になっていません。Log configurationを設定することでログ出力が有効になります。このログはセッションログと呼ばれ、出力する割合を指定することができます。またリクエスト時にクエリ文字列を付与することでデバッグログを出力することも可能です。このデバッグログの出力には、MediaTailorがCloudWatchにアクセスできるように設定したIAMロールが必要です。本エントリではこれらについて実際に設定、確認していきます。

なお、同じAWS Elemental MediaTailorでも、Channel Assembly機能ではログ出力設定が異なり、As Run logが出力されます。詳細については以下ブログエントリをご参照ください。

MediaTailor Ad insertionのセッションログ

まずはMediaTailor Ad insertionのセッションログについて確認してみます。セッションログを有効にするにはConfigurationリソース内のLog configurationを設定します。セッションログはCloudWatch Logsに出力されますが、すべて取得するとその量が膨大になってしまう場合があります。用途やアクセス数にもよりますが、MediaTailorではログコストの削減のためにCloudWatch Logsに送信するログ出力の量を割合で指定可能です。またセッションログを有効にすると、サービスリンクロールAWSServiceRoleForMediaTailorが自動的に作成されます。別途IAMロールなどを作成する必要はありません。

以下User Guideを確認しながら設定を進めていきます。

動画コンテンツや広告決定サーバなどは以下ブログエントリのMediaTailor単体でのプリロール広告付きVOD動画配信と同様の手順で準備したものを使用します。

Configuration作成の際、Log configurationの箇所を展開します。Percent enabledという項目がありますね。ここでセッションログを取得する割合を指定します。パーセンテージで指定するので、例えば5と指定すれば、1000件のセッションのうち50件のログをCloudWatch Logsに送信するかたちですね。今回は動作確認のため、100と指定しました。すべてのセッションログを出力します。

このログ出力の割合はConfiguration設定後に変更することができます。実際の用途やアクセス数などを鑑みて設定しましょう。0と指定すればセッションログ出力が無効化されます。

ログ出力を100%に設定したConfigurationを作成後、広告付きVOD動画を再生してみます。以下、2つのLog groupが作成されていました。

  • MediaTailor/TranscodeService
  • MediaTailor/AdDecisionServerInteractions

TranscodeServiceのログから確認してみます。こちらは広告動画がトランスコードされる際に出力されるようです。以下のようなログが出力されていました。adUriでは実際の広告動画のURLが指定されています。出力は広告動画がトランスコードされたタイミングのみのようで、トランスコード済みと思われるタイミングの出力はありませんでした。

{
    "eventTimestamp": "2024-05-31T03:50:36.049235973Z",
    "eventType": "TRANSCODE_IN_PROGRESS",
    "eventDescription": "Transcoded video not yet ready - transcoding is in progress. Using empty set of ads.",
    "awsAccountId": "123456789012",
    "originId": "vod-preroll-log-1",
    "sessionId": "8bxxxxa6-0xxc-4xx3-bxx1-9fxxxxxxxx6d",
    "creativeUniqueId": "https://mediatailor-ad-insertion-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/ads/ad-kichijoji-station-s1-15.mp4",
    "transcodeRequestId": "a4xxxxe5-bxxa-4xx8-bxx2-67xxxxxxxxd1",
    "cacheStatus": "MISS",
    "adUri": "https://mediatailor-ad-insertion-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/ads/ad-kichijoji-station-s1-15.mp4"
}

続いてAdDecisionServerInteractionsのLog streamです。こちらは広告動画が再生されるたびに数個のログが書き出されるようです。

ログの内容としては以下のように("eventType": "MAKING_ADS_REQUEST")広告サーバにリクエストを行ったもの。

{
    "eventTimestamp": "2024-05-31T06:57:21.859043705Z",
    "requestId": "b3xxxxf1-5xxa-4xx4-bxx2-b9xxxxxxxx9b",
    "sessionType": "HLS",
    "eventType": "MAKING_ADS_REQUEST",
    "eventDescription": "Requesting advertisements from Ad Decision Server",
    "awsAccountId": "123456789012",
    "customerId": "75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "originId": "vod-preroll-log-1",
    "sessionId": "96xxxx3d-3xx4-4xxd-axxa-2axxxxxxxxb5",
    "adsRequestUrl": "https://ad-decision-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/ads/static-vast-demo.xml",
    "requestHeaders": [
        {
            "name": "User-Agent",
            "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
        },
        {
            "name": "X-Device-User-Agent",
            "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
        },
        {
            "name": "X-Forwarded-For",
            "value": "XXX.XXX.XXX.XXX"
        }
    ]
}

また、広告動画を取得、実際に動画コンテンツに広告を挿入したことを記録するようなログなどがありました。

{
    "eventTimestamp": "2024-05-31T06:57:22.526853467Z",
    "requestId": "b3xxxxf1-5xxa-4xx4-bxx2-b9xxxxxxxx9b",
    "sessionType": "HLS",
    "eventType": "FILLED_AVAIL",
    "eventDescription": "Successfully filled avail",
    "awsAccountId": "123456789012",
    "customerId": "75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "originId": "vod-preroll-log-1",
    "sessionId": "96xxxx3d-3xx4-4xxd-axxa-2axxxxxxxxb5",
    "avail": {
        "availId": "1",
        "originAvailDuration": 0,
        "numAds": 1,
        "creativeAds": [
            {
                "uri": "https://mediatailor-ad-insertion-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/ads/ad-kichijoji-station-s1-15.mp4",
                "creativeUniqueId": "https://mediatailor-ad-insertion-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/ads/ad-kichijoji-station-s1-15.mp4",
                "vastDuration": 15,
                "transcodedAdDuration": 15.015,
                "adContent": {
                    "adPlaylistUris": {
                        "https://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_720p.m3u8": "http://transcode-ad-manifests.us-east-1.987654321098.servicelookup.internal/tm/75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/kvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/asset_720_5_1.m3u8",
                        "https://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p.m3u8": "http://transcode-ad-manifests.us-east-1.987654321098.servicelookup.internal/tm/75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/kvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/asset_360_1_0.m3u8"
                    }
                },
                "trackingEvents": {
                    "impression": [
                        ""
                    ]
                }
            }
        ],
        "filledDuration": 15.015,
        "fillRate": 1,
        "driftMillisecondsAtAvailStart": 0,
        "slateAd": null,
        "adBreakTrackingEvents": {}
    }
}

MediaTailor Ad insertionのデバッグログ

MediaTailor Ad insertionのセッションログについて、設定方法や出力された内容を確認してみました。続いてはMediaTailor Ad insertionのデバッグログについてです。デバッグログではセッションログのようにログ出力をConfiguration側の設定で有効にする必要はありません。代わりに広告動画再生URLの末尾にクエリ文字列?aws.logMode=DEBUGを付与することで出力を制御します。デバッグログは問題のトラブルシュートに役立つとのことです。

なお、デバッグログを使用する際にはMediaTailorにCloudWatch Logsへのログ送信権限を付与するためのIAMのロールが必要です。こちらは自動的に作成などはされないので、デバッグログ出力前に別途作成しておく必要があります。

User Guideの以下の項目を確認しながら、IAMロールの作成ならびにデバッグログの確認を進めていきます。

デバッグログ出力用のIAMのロールの作成

まずはMediaTailor Ad insertionでCloudWatch Logsへのログ出力ができるようにIAMロールを作成します。User Guideの以下項目の手順で作成しました。

最終的には以下のIAMロールが作成されることとなります。

  • IAMロール名
    • MediaTailorLogger
  • Permissions
    • CloudWatchLogsFullAccess
  • Trust relationships
    • Principal
      • "Service": "mediatailor.amazonaws.com"
    • 外部ID(sts:ExternalId)
      • Midas

Trusted entitiesは以下のようになります。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "mediatailor.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "sts:ExternalId": "Midas"
                }
            }
        }
    ]
}

IAMロールの作成

IAMのマネジメントコンソール、Access managementのRolesのページから[Create role]ボタンで進みます。Trusted entity typeではAWS accountを選択します。続くAn AWS AccountではThis accountを選択、OptionsとしてRequire external IDにチェックを付け、External IDとしてMidasを入力、[Next]で進みます。(このExternal ID MidasはMediaTailorのサービスとして固定のようですね。)

続くAdd permissionsでは、Permissions policiesでCloudWatchLogsFullAccessを選択します。(選択できるPolicyがたくさんあります、検索機能を上手に活用しましょう。)

Name, review, and createに進み、Role nameはMediaTailorLoggerとします。そのほか内容を確認して[Create role]でIAMロールを作成します。

作成したIAMロールの設定変更

IAMロールが作成できたら、そのままこのIAMロールの設定変更を行います。ロールの詳細画面、Trust relationshipsのタブから[Edit trust policy]ボタンで進みます。

IAMロール作成後は、以下のように"Principal""AWS": "arn:aws:iam::[AWSアカウントID]:root"と指定されている状態です。

この"Principal"を以下のように変更します。

"Principal": {
   "Service": "mediatailor.amazonaws.com"
},

変更後のTrusted entitiesは以下のようになります。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "mediatailor.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "Midas"
        }
      }
    }
  ]
}

以上でMediaTailor Ad insertionのデバッグログでCloudWatch Logsへログ出力に使用するIAMロールの作成、設定変更は完了です。

デバッグログの出力と確認

続いては、実際にデバッグログを出力させ、その内容を確認してみます。

先ほどと同様の手順(MediaTailor Ad insertionで広告付きVOD動画配信をやってみた [2024初夏編] | DevelopersIO)でMediaTailor単体でのプリロール広告付きVOD動画配信のConfigurationを作成します。Log configurationはデフォルト(値がない状態)で設定します。セッションログが無効の状態ですね。またCloudWatch Logs側で既存のセッションログと混ざらないように、別リージョンでConfigurationリソースを作成しています。

デバッグログの出力は再生URLにクエリ文字列?aws.logMode=DEBUGを付与することで制御するということでした。これを実際に確認します。広告付き動画の再生URLは以下のように構成されますね。

  • HLS playback prefix
    • https://xxxx.mediatailor.[region].amazonaws.com/v1/master/xxxx/[configuration name]/
  • コンテンツへのパス
    • 例: vod/content01.m3u8
  • 広告付き動画の再生URL([HLS playback prefix] + [コンテンツへのパス])
    • https://xxxx.mediatailor.[region].amazonaws.com/v1/master/xxxx/[configuration name]/vod/content01.m3u8

この広告付き動画の再生URLの末尾にクエリ文字列?aws.logMode=DEBUGを付与します。以下のような形式になります。

  • https://xxxx.mediatailor.[region].amazonaws.com/v1/master/xxxx/[configuration name]/vod/content01.m3u8?aws.logMode=DEBUG

動画プレイヤーで再生後、CloudWatch Logsを確認してみると以下3種のLog groupsが作成されていました。

  • MediaTailor/TranscodeService
  • MediaTailor/AdDecisionServerInteractions
  • MediaTailor/ManifestService

このうちTranscodeServiceのログについてはセッションログの内容と同様のもののようでした。トランスコードされる際に出力され、どの広告動画(URL)をトランスコードするか、などの情報がまとめられている感じですね。AdDecisionServerInteractionsのログ内容についても、セッションログのものと同様の内容かと思います。

ManifestServiceはセッションログにはないLog Streamですね。AdDecisionServerInteractionsと同様に、1回の広告動画の再生で複数のログが出力されていました。

ログの内容としては、セッションの初期化("eventType": "SESSION_INITIALIZED")にはじまり。

{
    "originId": "vod-preroll-2",
    "awsAccountId": "123456789012",
    "mediaTailorPath": "/v1/master/75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/vod-preroll-2/vod/content01.m3u8?aws.logMode=DEBUG",
    "requestId": "8cxxxx8e-8xxe-4xx0-8xxe-fcxxxxxxxxc1",
    "customerId": "75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "sessionType": "HLS",
    "eventType": "SESSION_INITIALIZED",
    "sessionId": "52xxxx51-bxx7-4xx8-axx1-e2xxxxxxxx94",
    "eventTimestamp": "2024-05-31T08:17:37.707203390Z"
}

マニフェスト生成などのレスポンスボディが確認できました。デバッグログの名の通り、問題のトラブルシュートに役立ちそうですね。

{
    "originId": "vod-preroll-2",
    "awsAccountId": "123456789012",
    "responseBody": "#EXTM3U\n#EXT-X-VERSION:3\n#EXT-X-INDEPENDENT-SEGMENTS\n#EXT-X-STREAM-INF:BANDWIDTH=1585134,AVERAGE-BANDWIDTH=1354669,CODECS=\"avc1.4d401f,mp4a.40.5\",RESOLUTION=640x360,FRAME-RATE=29.970\ncontent01_360p.m3u8\n#EXT-X-STREAM-INF:BANDWIDTH=5979940,AVERAGE-BANDWIDTH=5228071,CODECS=\"avc1.640028,mp4a.40.5\",RESOLUTION=1280x720,FRAME-RATE=29.970\ncontent01_720p.m3u8\n",
    "mediaTailorPath": "/v1/master/75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/vod-preroll-2/vod/content01.m3u8?aws.logMode=DEBUG",
    "requestId": "8cxxxx8e-8xxe-4xx0-8xxe-fcxxxxxxxxc1",
    "customerId": "75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "sessionType": "HLS",
    "eventType": "ORIGIN_MANIFEST",
    "sessionId": "52xxxx51-bxx7-4xx8-axx1-e2xxxxxxxx94",
    "originRequestUrl": "https://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01.m3u8",
    "eventTimestamp": "2024-05-31T08:17:38.042442186Z"
}
{
    "originId": "vod-preroll-2",
    "awsAccountId": "123456789012",
    "responseBody": "#EXTM3U\n#EXT-X-VERSION:3\n#EXT-X-INDEPENDENT-SEGMENTS\n#EXT-X-STREAM-INF:CODECS=\"avc1.4d401f,mp4a.40.5\",AVERAGE-BANDWIDTH=1354669,RESOLUTION=640x360,FRAME-RATE=29.97,BANDWIDTH=1585134\n../../../../manifest/75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/vod-preroll-2/52xxxx51-bxx7-4xx8-axx1-e2xxxxxxxx94/0.m3u8\n#EXT-X-STREAM-INF:CODECS=\"avc1.640028,mp4a.40.5\",AVERAGE-BANDWIDTH=5228071,RESOLUTION=1280x720,FRAME-RATE=29.97,BANDWIDTH=5979940\n../../../../manifest/75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/vod-preroll-2/52xxxx51-bxx7-4xx8-axx1-e2xxxxxxxx94/1.m3u8\n",
    "mediaTailorPath": "/v1/master/75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/vod-preroll-2/vod/content01.m3u8?aws.logMode=DEBUG",
    "requestId": "8cxxxx8e-8xxe-4xx0-8xxe-fcxxxxxxxxc1",
    "customerId": "75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "sessionType": "HLS",
    "eventType": "GENERATED_MANIFEST",
    "sessionId": "52xxxx51-bxx7-4xx8-axx1-e2xxxxxxxx94",
    "originRequestUrl": "https://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01.m3u8",
    "eventTimestamp": "2024-05-31T08:17:38.042767263Z"
}
{
    "originId": "vod-preroll-2",
    "awsAccountId": "123456789012",
    "responseBody": "#EXTM3U\n#EXT-X-VERSION:3\n#EXT-X-TARGETDURATION:4\n#EXT-X-MEDIA-SEQUENCE:1\n#EXT-X-PLAYLIST-TYPE:VOD\n#EXTINF:3,\ncontent01_360p_00001.ts\n#EXTINF:3,\ncontent01_360p_00002.ts\n#EXTINF:3,\ncontent01_360p_00003.ts\n#EXTINF:3,\ncontent01_360p_00004.ts\n#EXTINF:3,\ncontent01_360p_00005.ts\n#EXTINF:3,\ncontent01_360p_00006.ts\n#EXTINF:3,\ncontent01_360p_00007.ts\n#EXTINF:3,\ncontent01_360p_00008.ts\n#EXTINF:3,\ncontent01_360p_00009.ts\n#EXTINF:3,\ncontent01_360p_00010.ts\n#EXTINF:3,\ncontent01_360p_00011.ts\n#EXTINF:3,\ncontent01_360p_00012.ts\n#EXTINF:3,\ncontent01_360p_00013.ts\n#EXTINF:3,\ncontent01_360p_00014.ts\n#EXTINF:3,\ncontent01_360p_00015.ts\n#EXTINF:3,\ncontent01_360p_00016.ts\n#EXTINF:3,\ncontent01_360p_00017.ts\n#EXTINF:3,\ncontent01_360p_00018.ts\n#EXTINF:3,\ncontent01_360p_00019.ts\n#EXTINF:3,\ncontent01_360p_00020.ts\n#EXTINF:2,\ncontent01_360p_00021.ts\n#EXT-X-ENDLIST\n",
    "mediaTailorPath": "/v1/manifest/75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/vod-preroll-2/52xxxx51-bxx7-4xx8-axx1-e2xxxxxxxx94/0.m3u8",
    "requestId": "9bxxxxdf-dxxc-4xx7-9xx6-cdxxxxxxxxc2",
    "customerId": "75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "sessionType": "HLS",
    "eventType": "ORIGIN_MANIFEST",
    "sessionId": "52xxxx51-bxx7-4xx8-axx1-e2xxxxxxxx94",
    "originRequestUrl": "https://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p.m3u8",
    "eventTimestamp": "2024-05-31T08:17:38.741623086Z"
}
{
    "originId": "vod-preroll-2",
    "awsAccountId": "123456789012",
    "responseBody": "#EXTM3U\n#EXT-X-VERSION:3\n#EXT-X-PLAYLIST-TYPE:VOD\n#EXT-X-TARGETDURATION:4\n#EXT-X-MEDIA-SEQUENCE:1\n#EXT-X-DISCONTINUITY-SEQUENCE:0\n#EXT-X-DISCONTINUITY\n#EXTINF:2.002,\n../../../../segment/75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/vod-preroll-2/52xxxx51-bxx7-4xx8-axx1-e2xxxxxxxx94/0/0\n#EXTINF:2.002,\n../../../../segment/75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/vod-preroll-2/52xxxx51-bxx7-4xx8-axx1-e2xxxxxxxx94/0/1\n#EXTINF:2.002,\n../../../../segment/75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/vod-preroll-2/52xxxx51-bxx7-4xx8-axx1-e2xxxxxxxx94/0/2\n#EXTINF:2.002,\n../../../../segment/75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/vod-preroll-2/52xxxx51-bxx7-4xx8-axx1-e2xxxxxxxx94/0/3\n#EXTINF:2.002,\n../../../../segment/75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/vod-preroll-2/52xxxx51-bxx7-4xx8-axx1-e2xxxxxxxx94/0/4\n#EXTINF:2.002,\n../../../../segment/75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/vod-preroll-2/52xxxx51-bxx7-4xx8-axx1-e2xxxxxxxx94/0/5\n#EXTINF:2.002,\n../../../../segment/75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/vod-preroll-2/52xxxx51-bxx7-4xx8-axx1-e2xxxxxxxx94/0/6\n#EXTINF:1.001,\n../../../../segment/75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/vod-preroll-2/52xxxx51-bxx7-4xx8-axx1-e2xxxxxxxx94/0/7\n#EXT-X-DISCONTINUITY\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00001.ts\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00002.ts\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00003.ts\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00004.ts\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00005.ts\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00006.ts\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00007.ts\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00008.ts\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00009.ts\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00010.ts\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00011.ts\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00012.ts\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00013.ts\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00014.ts\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00015.ts\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00016.ts\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00017.ts\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00018.ts\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00019.ts\n#EXTINF:3.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00020.ts\n#EXTINF:2.0,\nhttps://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p_00021.ts\n#EXT-X-ENDLIST\n",
    "mediaTailorPath": "/v1/manifest/75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/vod-preroll-2/52xxxx51-bxx7-4xx8-axx1-e2xxxxxxxx94/0.m3u8",
    "requestId": "9bxxxxdf-dxxc-4xx7-9xx6-cdxxxxxxxxc2",
    "customerId": "75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "sessionType": "HLS",
    "eventType": "GENERATED_MANIFEST",
    "sessionId": "52xxxx51-bxx7-4xx8-axx1-e2xxxxxxxx94",
    "originRequestUrl": "https://content-source-xxxxxxxx.s3.ap-northeast-1.amazonaws.com/vod/content01_360p.m3u8",
    "eventTimestamp": "2024-05-31T08:17:39.166508051Z"
}

まとめ

AWS Elemental MediaTailorのAd insertion(広告挿入)機能のログ出力について、2種類(セッションログ、デバッグログ)それぞれの出力のための設定方法や、実際に広告付きVODを再生した際に出力されるログの内容について確認してみました。

MediaTailorのログといわれた場合、そもそもMediaTailorに2つの機能(Ad insertionとChannel assemblyがあることから、どちらの機能のログ出力となるかを確認しましょう。Channel assemblyについてはAs Run logとなります。Ad insertionについては本ブログエントリで確認してきた通り、広告動画再生に対して一定の割合でログを取得するセッションログと、再生URLにクエリ文字列を付与することでより詳細なログが取得できるデバッグログですね。デバッグログについてはConfigurationの設定を変更せずクエリ文字列を付与することで利用できる点、そしてより詳細なログが確認できる点が利点かと思いますが、IAMロールの作り忘れについては注意しましょう。(私ははじめロールを作り忘れて少しハマりました。)各種ログについて、MediaTailor Ad insertionの動作がうまくいかない場合にどのようなものが出力され問題解決につながりそうかといった点についても、別途確認できればなと思います。