

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

# アクセスのログ記録
<a name="access-logging"></a>

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

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

**Topics**
+ [CloudWatch にログを発行するためのアクセス許可](#permissions)
+ [アクセスログの作成の有効化](#enable-access-logging)
+ [アクセスログの作成の無効化](#disable-access-logging)
+ [アクセスログの形式](#access-log-format)
+ [アクセスログを読み取る](#read-access-logs)

## CloudWatch にログを発行するためのアクセス許可
<a name="permissions"></a>

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

## アクセスログの作成の有効化
<a name="enable-access-logging"></a>

アクセスログは、 AWS マネジメントコンソール または を使用して有効にできます AWS CLI。

**コンソールを使用して既存のチャネルのアクセスログを有効にするには**

1. MediaPackage コンソール ([https://console.aws.amazon.com/mediapackage/](https://console.aws.amazon.com/mediapackage/)) を開きます。

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

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

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

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

**コンソールを使用して既存のパッケージンググループのアクセスログを有効にするには**

1. MediaPackage コンソール ([https://console.aws.amazon.com/mediapackage/](https://console.aws.amazon.com/mediapackage/)) を開きます。

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

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

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

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

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

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

**を使用してチャネルのアクセスログを有効にするには AWS CLI**  
`--ingress-access-logs` パラメータか `--egress-access-logs` パラメータ (またはその両方) を指定して [configure-logs](https://docs.aws.amazon.com/cli/latest/reference/mediapackage/configure-logs.html) コマンドを実行し、アクセスログ記録を有効化します。`--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](https://docs.aws.amazon.com/cli/latest/reference/mediapackage-vod/configure-logs.html) コマンドを実行し、アクセスログ記録を有効にします。`--egress-access-logs` パラメータには、CloudWatch のロググループ名を含めることができます。ロググループ名を指定しない場合、MediaPackage はデフォルトのロググループを使用します。デフォルトのロググループは、入力ログでは `/aws/MediaPackage/IngressAccessLogs` に、出力ログの場合は `/aws/MediaPackage/EgressAccessLogs` になります。

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

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

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

## アクセスログの作成の無効化
<a name="disable-access-logging"></a>

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

**コンソールを使用してアクセスログの作成を無効にするには**

1. MediaPackage コンソール ([https://console.aws.amazon.com/mediapackage/](https://console.aws.amazon.com/mediapackage/)) を開きます。

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

1. [**編集**] を選択します。

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

1. [**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}}
```

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

## アクセスログの形式
<a name="access-log-format"></a>

アクセスログファイルは、一連の 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) 。

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

## アクセスログを読み取る
<a name="read-access-logs"></a>

MediaPackage は、Amazon CloudWatch Logs にアクセスログを書き込みます。CloudWatch Logs の一般料金が適用されます。アクセスログを読み取る際には、CloudWatch Logs のインサイトを利用します。CloudWatch Logs インサイトの使用方法の詳細については、AWS CloudWatch Logs ユーザーガイドの「[CloudWatch Logs Insights を使用したログデータの分析](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html)」を参照してください。

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

### 例
<a name="query-examples"></a>

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

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

```
fields @timestamp, @message
| filter {{channelId}} like {{'my-channel'}}
| stats count() by statusCode
```

**Example チャネル上のエンドポイントあたりのリクエスト数を取得します。**  

```
fields @timestamp, @message
| filter {{channelId}} like {{'my-channel'}}
| stats count() by {{endpointId}}
```

**Example アセットごとのステータスコードを表示します。**  

```
fields @timestamp, @message
| filter assetArnlike {{'my-asset-id'}}
| stats count() by statusCode
```

**Example パッケージング設定の応答時間 (P99) を経時的に取得します。**  

```
fields @timestamp, @message
| filter packagingConfigArn like {{'my-dash-config'}}
| stats pct(processingTime, 99) by bin(5m)
```