アクセスのログ記録 - AWS Elemental MediaPackage

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

アクセスのログ記録

MediaPackage は、MediaPackage チャネルまたはパッケージンググループに送信されるリクエストについての詳細情報をキャプチャした、アクセスログを提供します。MediaPackage は、チャンネルの入力エンドポイントに送信されたリクエストに関する、受信アクセスログを生成します。同時に、チャンネルのエンドポイントまたはパッケージンググループのアセットに送信されたリクエストについては、送信アクセスログを生成します。各ログには、リクエストを受け取った時刻、クライアントの IP アドレス、レイテンシー、リクエストのパス、サーバーレスポンスなどの情報が含まれます。これらのアクセスログを使用して、サービスのパフォーマンスを分析し、問題のトラブルシューティングが行えます。また、顧客基盤について調べたり、MediaPackage の請求を把握したりする際にも役立ちます。

アクセスログ記録は、MediaPackage のオプション機能であり、デフォルトでは無効化されています。アクセスのログ記録を有効にすると、MediaPackage はログのキャプチャを開始し、作成または管理時に指定した CloudWatch のロググループに、そのログ記録を保存します。CloudWatch Logs の一般料金が適用されます。

CloudWatch にログを発行するためのアクセス許可

アクセスログ記録を有効にすると、MediaPackage は IAM のサービスにリンクされたロール (AWSServiceRoleForMediaPackage) を、AWS アカウント内に作成します。このロールにより、MediaPackage はアクセスログを CloudWatch に公開できるようになります。MediaPackage によるサービスにリンクされたロールの使用については、「 MediaPackage のサービスにリンクされたロールの使用」を参照してください。

アクセスログの作成の有効化

AWS Management Console または AWS CLI を使用して、アクセスログを有効にできます。

コンソールを使用して既存のチャネルのアクセスログを有効にするには
  1. MediaPackage コンソール (https://console.aws.amazon.com/mediapackage/) を開きます。

  2. 使用しているチャンネルを選択します。

  3. [Configure Access Logs] (アクセスログの設定) セクションで、以下の操作を行います。

    1. [Enable ingress access logs] (受信アクセスログの有効化) または[Enable egress access logs] (送信アクセスログの有効化) のどらか (あるいはその両方) を選択します。

    2. CloudWatch ロググループ名をカスタムで指定できます。この設定を空白のままにすると、デフォルトのグループが使用されます。

コンソールを使用して既存のパッケージンググループのアクセスログを有効にするには
  1. MediaPackage コンソール (https://console.aws.amazon.com/mediapackage/) を開きます。

  2. ナビゲーションセクションで、[Packaging groups] (パッケージンググループ) をクリックします。

  3. 使用しているパッケージンググループを選択します。

    1. ナビゲーションバーで [Edit] (編集) をクリックします。

    2. [Access logging] (アクセスログ記録) セクションで、[Enable egress access logs] (送信アクセスログの有効化) を選択します。

    3. CloudWatch ロググループ名をカスタムで指定できます。この設定を空白のままにすると、デフォルトのグループが使用されます。

  4. [Save changes] (変更の保存) をクリックします。

AWS CLI を使用してチャネルのアクセスログを有効にするには

--ingress-access-logs パラメータか --egress-access-logs パラメータ (またはその両方) を指定して configure-logs コマンドを実行し、アクセスログ記録を有効化します。--ingress-access-logs および --egress-access-logs パラメータには、CloudWatch ロググループ名を含めることができます。ロググループ名を指定しない場合、MediaPackage はデフォルトのロググループを使用します。デフォルトのロググループは、入力ログでは /aws/MediaPackage/IngressAccessLogs に、出力ログの場合は /aws/MediaPackage/EgressAccessLogs になります。

次のコマンドによりデフォルトのロググループを使用して、受信ログとアクセスログの両方を有効化します。

aws mediapackage configure-logs --id channel-name --ingress-access-logs {} --egress-access-logs {}

このコマンドの戻り値はありません。

AWS CLI を使用してパッケージンググループのアクセスログを有効にするには

--egress-access-logs パラメータを使用して configure-logs コマンドを実行し、アクセスログ記録を有効にします。--egress-access-logs パラメータには、CloudWatch のロググループ名を含めることができます。ロググループ名を指定しない場合、MediaPackage はデフォルトのロググループを使用します。デフォルトのロググループは、入力ログでは /aws/MediaPackage/IngressAccessLogs に、出力ログの場合は /aws/MediaPackage/EgressAccessLogs になります。

次のコマンドによりデフォルトのロググループを使用して、送信アクセスログを有効化します。

aws mediapackage configure-logs --id package-name --egress-access-logs {}

このコマンドの戻り値はありません。

アクセスログの作成の無効化

MediaPackage チャネルまたはパッケージンググループのアクセスログは、任意のタイミングで無効化できます。

コンソールを使用してアクセスログの作成を無効にするには
  1. MediaPackage コンソール (https://console.aws.amazon.com/mediapackage/) を開きます。

    チャンネルまたはパッケージンググループを選択します。

  2. [Edit] (編集) を選択します。

  3. [Access logging] (アクセスログ記録) セクションで、[Ingress access logging] (受信アクセスログ記録) か [Egress access logging] (送信アクセスログ記録) のどちらか (または両方) の選択を解除します。

  4. [Save changes] (変更の保存) をクリックします。

AWS CLI を使用してチャネルのアクセスログ記録を無効にするには

アクセスのログ記録を無効にするには、configure-logs コマンドを使用します。configure-logs コマンドに、宣言されていないアクセスログパラメータが 1 つ以上存在する場合、それらと対応するアクセスログは無効になります。次のコマンド例では、チャネルに対して送信アクセスログが有効化され、受信アクセスログは無効化されます。

aws mediapackage configure-logs --id channel-name --egress-access-logs {}

このコマンドの戻り値はありません。

AWS CLI を使用してパッケージンググループのアクセスログ記録を無効にするには

アクセスのログ記録を無効にするには、configure-logs コマンドを使用します。configure-logs コマンドに、宣言されていないアクセスログパラメータが 1 つ以上存在する場合、それらと対応するアクセスログは無効になります。例えば、以下のコマンドでは configure-logs--egress-access-logs が含まれていないため、送信ログが無効になります。

aws mediapackage configure-logs --id package-group-name

このコマンドの戻り値はありません。

アクセスログの形式

アクセスログファイルは、一連の JSON 形式のログレコードで構成されており、各ログレコードは 1 つのリクエストを表します。ログ内のフィールドの順序は変わることがあります。チャネルでの送信アクセスログの例を次に示します。

{ "timestamp": "2020-07-13T18:59:56.293656Z", "clientIp": "192.0.2.0/24", "processingTime": 0.445, "statusCode": "200", "receivedBytes": 468, "sentBytes": 2587370, "method": "GET", "request": "https://aaabbbcccdddee.mediapackage.us-east-1.amazonaws.com:443/out/v1/75ee4f20e5df43e5821e5cb17ea19238/hls_7_145095.ts?m=1538005779", "protocol": "HTTP/1.1", "userAgent": "sabr/3.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Safari/528.17", "account": "111122223333", "channelId": "my_channel", "channelArn": "arn:aws:mediapackage:us-west-2:111122223333:channels/ExampleChannelID", "domainName": "aaabbbcccdddee.mediapackage.us-east-1.amazonaws.com", "requestId": "aaaAAA111bbbBBB222cccCCC333dddDDD", "endpointId": "my_endpoint", "endpointArn": "arn:aws:mediapackage:us-west-2:111122223333:origin_endpoints/ExampleEndpointID" }

次のリストで、ログレコードのフィールドを順番に従い説明します。

timestamp

リクエストを受け取った時刻。この値は ISO-8601 の日時で、リクエストに対応したホストのシステムクロックに基づいています。

clientIp

リクエストを送信したクライアントの IP アドレス。

processingTime

MediaPackage でリクエストの処理に要した秒数。これは、リクエストの最終バイトが受信されてから、レスポンスの先頭バイトが送信されるまでの時間を計測した値です。

statusCode

レスポンスの HTTP ステータスの数値。

receivedBytes

MediaPackage サーバーが受信するリクエストボディのバイト数。

sentBytes

MediaPackage サーバーが送信するレスポンスボディのバイト数。この値は、多くの場合、サーバーレスポンスに含まれている Content-Length ヘッダーの値と同じです。

method

リクエストに使用された HTTP リクエストメソッド:DELETE、GET、HEAD、OPTIONS、PATCH、POST、または PUT。

request

リクエスト URL。

protocol

リクエストに使用されるプロトコルのタイプ (HTTP など)。

userAgent

リクエスト送信元のクライアントを特定する user-agent 文字列 (二重引用符で囲まれます)。この文字列は、1 つ以上の製品 ID (製品/バージョン) で構成されます。文字列が 8 KB より長い場合は切り捨てられます。

account

リクエストを行うために使用されたアカウントの AWS アカウント ID。

channelId

リクエストを受信したチャネルの ID。

channelArn

リクエストを受信したチャネルの Amazon リソースネーム (ARN)。

domainName

TLS ハンドシェイク中にクライアントから提供される SNI (Server Name Indication) ドメイン (二重引用符で囲まれます)。クライアントで SNI をサポートしていない場合、あるいはドメインが証明書と一致せず、デフォルトの証明書がクライアントに提示された場合、この値は - となります。

requestId

各リクエストを一意に識別するために MediaPackage で生成される文字列。

endpointId

リクエストを受信したエンドポイントの ID。

endpointArn

リクエストを受信したエンドポイントの Amazon リソースネーム (ARN) 。

ログのフィールドの順序は変わることがあります。

アクセスログを読み取る

MediaPackage は、Amazon CloudWatch Logs にアクセスログを書き込みます。CloudWatch Logs の一般料金が適用されます。アクセスログを読み取る際には、CloudWatch Logs のインサイトを利用します。CloudWatch Logs インサイトの使用方法の詳細については、AWS CloudWatch Logs ユーザーガイドの「CloudWatch Logs Insights を使用したログデータの分析」を参照してください。

注記

CloudWatch にアクセスログが表示されるまでに数分かかることがあります。ログが表示されない場合は、数分後にもう一度お試しださい。

このセクションでは、MediaPackage のデバッグログデータの読み取りに使用できるクエリ例を示しています。

例 チャネルについての HTTP ステータスコードレスポンスを表示します。

このクエリを使用して、チャネルの HTTP ステータスコード別のレスポンスを表示します。ここで表示される HTTP エラーコードレスポンスは、問題のトラブルシューティングに役立ちます。

fields @timestamp, @message | filter channelId like 'my-channel' | stats count() by statusCode
例 チャネル上のエンドポイントあたりのリクエスト数を取得します。
fields @timestamp, @message | filter channelId like 'my-channel' | stats count() by endpointId
例 アセットごとのステータスコードを表示します。
fields @timestamp, @message | filter assetArnlike 'my-asset-id' | stats count() by statusCode
例 パッケージング設定の応答時間 (P99) を経時的に取得します。
fields @timestamp, @message | filter packagingConfigArn like 'my-dash-config' | stats pct(processingTime, 99) by bin(5m)