

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

# Application Load Balancer のアクセスログ
<a name="load-balancer-access-logs"></a>

Elastic Load Balancing は、ロードバランサーに送信されるリクエストについての詳細情報をキャプチャしたアクセスログを提供します。各ログには、リクエストを受け取った時刻、クライアントの IP アドレス、レイテンシー、リクエストのパス、サーバーレスポンスなどの情報が含まれます。これらのアクセスログを使用して、トラフィックパターンを分析し、問題のトラブルシューティングを行えます。

アクセスログは、Elastic Load Balancing のオプション機能であり、デフォルトでは無効化されています。ロードバランサーのアクセスログを有効にすると、Elastic Load Balancing はログをキャプチャし、圧縮ファイルとして指定した Amazon S3 バケット内に保存します。アクセスログはいつでも無効にできます。

Amazon S3 のストレージコストは発生しますが、Amazon S3 にログファイルを送信するために Elastic Load Balancing が使用する帯域については料金は発生しません。ストレージコストの詳細については、[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)を参照してください。

**Topics**
+ [アクセスログファイル](#access-log-file-format)
+ [アクセスログのエントリ](#access-log-entry-format)
+ [ログエントリの例](#access-log-entry-examples)
+ [ログ配信通知を設定する](#access-log-event-notifications)
+ [アクセスログファイルの処理](#log-processing-tools)
+ [アクセスログの有効化](enable-access-logging.md)
+ [アクセスログの無効化](disable-access-logging.md)

## アクセスログファイル
<a name="access-log-file-format"></a>

Elastic Load Balancing は各ロードバランサーノードのログファイルを 5 分ごとに発行します。ログ配信には結果整合性があります。ロードバランサーでは、同じ期間について複数のログが発行されることがあります。これは通常、サイトに高トラフィックがある場合に発生します。

アクセスログのファイル名には次の形式を使用します。

```
{{bucket}}[/{{prefix}}]/AWSLogs/{{aws-account-id}}/elasticloadbalancing/{{region}}/{{yyyy}}/{{mm}}/{{dd}}/{{aws-account-id}}_elasticloadbalancing_{{region}}_app.{{load-balancer-id}}_{{end-time}}_{{ip-address}}_{{random-string}}.log.gz
```

*bucket* (バケット)  
S3 バケットの名前。

*prefix*  
（オプション）バケットのプレフィックス (論理階層)。指定するプレフィックスに文字列 `AWSLogs` を含めることはできません。詳細については、「[プレフィックスを使用してオブジェクトを整理する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html)」を参照してください。

`AWSLogs`  
指定したバケット名とオプションのプレフィックスの後に、`AWSLogs` で始まるファイル名部分が追加されます。

*aws-account-id*  
所有者の AWS アカウント ID。

*region*  
ロードバランサーおよび S3 バケットのリージョン。

*yyyy*/*mm*/*dd*  
ログが配信された日付。

*load-balancer-id*  
ロードバランサーのリソース ID。リソース ID にスラッシュ (/) が含まれている場合、ピリオド (.) に置換されます。

*end-time*  
ログ作成の間隔が終了した日時。たとえば、終了時間 20140215T2340Z には、UTC または Zulu 時間の 23:35～23:40 に行われたリクエストのエントリが含まれます。

*ip-address*  
リクエストを処理したロードバランサーノードの IP アドレス。内部ロードバランサーの場合、プライベート IP アドレスです。

*random-string*  
システムによって生成されたランダム文字列。

「」をプレフィックスとするログファイル名の例を次に示します。

```
s3://amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/123456789012/elasticloadbalancing/us-east-2/2022/05/01/123456789012_elasticloadbalancing_us-east-2_app.my-loadbalancer.1234567890abcdef_20220215T2340Z_172.160.001.192_20sg8hgm.log.gz
```

プレフィックスが付いていないログファイル名の例は次のようになります。

```
s3://amzn-s3-demo-logging-bucket/AWSLogs/123456789012/elasticloadbalancing/us-east-2/2022/05/01/123456789012_elasticloadbalancing_us-east-2_app.my-loadbalancer.1234567890abcdef_20220215T2340Z_172.160.001.192_20sg8hgm.log.gz
```

必要な場合はログファイルを自身のバケットに保管できますが、ログファイルを自動的にアーカイブまたは削除するにように Amazon S3 ライフサイクルルールを定義することもできます。詳細については、「*Amazon S3 ユーザーガイド*」の「[オブジェクトのライフサイクル管理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)」を参照してください。

## アクセスログのエントリ
<a name="access-log-entry-format"></a>

Elastic Load Balancing は、ターゲットに到達しなかったリクエストを含め、ロードバランサーに送信されたリクエストを記録します。たとえば、クライアントが誤った形式のリクエストを送信した場合や、リクエストに応答できる正常に動作しているターゲットがない場合も、そのリクエストは記録されます。

各ログエントリには、ロードバランサーに対して行われた 1 つのリクエスト (または WebSocket の場合は接続) の詳細が含まれます。WebSocket の場合、エントリは接続を閉じた後にのみ書き込まれます。アップグレードされた接続を確立できない場合、エントリは HTTP または HTTPS リクエストと同じです。

**重要**  
Elastic Load Balancing はベストエフォートベースでリクエストを記録します アクセスログは、すべてのリクエストを完全に報告するためのものではなく、リクエストの本質を把握するものとして使用することをお勧めします。

**Topics**
+ [構文](#access-log-entry-syntax)
+ [実行されるアクション](#actions-taken)
+ [分類の理由](#classification-reasons)
+ [エラー理由コード](#error-reason-codes)
+ [変換ステータスコード](#transform-status-codes)

### 構文
<a name="access-log-entry-syntax"></a>

次の表は、アクセスログのエントリのフィールドを順に示しています。すべてのフィールドはスペースで区切られています。新しいフィールドを追加すると、ログエントリの末尾に追加されます。新しいフィールドをリリースする準備をすると、フィールドがリリースされる前に、末尾に追加の「-」が表示されることがあります。最後に文書化されたフィールドの後に停止するようにログ解析を設定し、新しいフィールドをリリースした後にログ解析を更新してください。


| フィールド (位置) | 説明 | 
| --- | --- | 
| タイプ (1) | リクエストまたは接続のタイプ。有効な値は次のとおりです (その他の値は無視してください)。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-access-logs.html) | 
| 時間 (2) | ロードバランサーがクライアントに対してレスポンスを生成した時刻 (ISO 8601 形式)。WebSocket の場合、これは接続を閉じる時間です。 | 
| elb (3) | ロードバランサーのリソース ID。アクセスログエントリを解析する場合、リソース ID にはスラッシュ (/) を含めることができます。 | 
| client:port (4) | リクエストを送信したクライアントの IP アドレスとポート。ロードバランサーの前にプロキシがある場合、このフィールドにはプロキシの IP アドレスが含まれています。 | 
| target:port (5) | このリクエストを処理したターゲットの IP アドレスとポート。<br />クライアントがリクエスト全体を送信しなかった場合、ロードバランサーはターゲットにリクエストをディスパッチできず、この値が - に設定されます。<br />ターゲットが Lambda 関数の場合、この値は - に設定されます。<br />リクエストが によってブロックされている場合 AWS WAF、この値は - に設定されます。 | 
| request\_processing\_time (6) | ロードバランサーがリクエストを受け取った時点からターゲットにリクエストを送信するまでの合計経過時間 (ミリ秒精度の秒単位)。<br />ロードバランサーがリクエストをターゲットにディスパッチできない場合、この値は -1 に設定されます。この状況が発生するのは、ターゲットがアイドルタイムアウト前に接続を閉じた場合か、クライアントが誤った形式のリクエストを送信した場合です。<br />この値は、TCP 接続のタイムアウトである 10 秒 に達する前にターゲットと接続を確立できない場合にも -1 に設定できます。<br />Application Load Balancer で AWS WAF が有効になっているか、ターゲットタイプが Lambda 関数である場合、クライアントが POST リクエストに必要なデータを送信するのにかかる時間は にカウントされます`request_processing_time`。 | 
| target\_processing\_time (7) | ロードバランサーがターゲットにリクエストを送信した時点から、そのターゲットが応答ヘッダーの送信を開始した時点までの合計経過時間 (ミリ秒精度の秒単位)。<br />ロードバランサーがリクエストをターゲットにディスパッチできない場合、この値は -1 に設定されます。この状況が発生するのは、ターゲットがアイドルタイムアウト前に接続を閉じた場合か、クライアントが誤った形式のリクエストを送信した場合です。<br />登録済みターゲットからアイドルタイムアウトまで応答がない場合にも、この値は -1 に設定される場合があります。<br /> AWS WAF が Application Load Balancer に対して有効になっていない場合、クライアントが POST リクエストに必要なデータを送信するのにかかる時間は にカウントされます`target_processing_time`。 | 
| response\_processing\_time (8) | ロードバランサーがターゲットから応答ヘッダーを受け取った時点から、クライアントへの応答の送信を開始した時点までの合計経過時間 (ミリ秒精度の秒単位)。これには、ロードバランサーでの待機時間と、ロードバランサーからクライアントへの接続の取得時間の両方が含まれます。<br />ロードバランサーがターゲットから応答を受け取らない場合、この値は -1 に設定されます。この状況が発生するのは、ターゲットがアイドルタイムアウト前に接続を閉じた場合か、クライアントが誤った形式のリクエストを送信した場合です。 | 
| elb\_status\_code (9) | ロードバランサー、固定レスポンスルール、またはブロックアクションの AWS WAF カスタムレスポンスコードによって生成されたレスポンスのステータスコード。 | 
| target\_status\_code (10) | ターゲットから応答のステータスコード。この値は、ターゲットへの接続が確立され、ターゲットが応答を送信した場合のみ記録されます。それ以外の場合は、- に設定されます。 | 
| received\_bytes (11) | クライアント (リクエスタ) から受け取ったリクエストのサイズ (バイト単位)。HTTP リクエストの場合、これにはヘッダーが含まれます。WebSocket の場合、これは接続でクライアントから受信した合計バイト数です。 | 
| sent\_bytes (12) | クライアント (リクエスタ) に返される応答のサイズ (バイト単位)。HTTP リクエストの場合、これにはレスポンスのヘッダーとボディが含まれます。WebSocket の場合、これは接続でクライアントに送信した合計バイト数です。<br />TCP ヘッダーと TLS ハンドシェイクペイロードは `sent_bytes` に含まれていません。したがって、 `sent_bytes`は`DataTransfer-Out-Bytes`一致しません AWS Cost Explorer。 | 
| "request\_line" (13) | クライアントからのリクエスト行は二重引用符で囲まれており、次の形式を使用してログに記録されます。HTTP メソッド \+ プロトコル://ホスト:ポート/uri \+ HTTP バージョン。ロードバランサーは、リクエスト URI を記録するときに、クライアントから送信された URL をそのまま保持します。アクセスログファイルのコンテンツタイプは設定されません。このフィールドを処理するときは、クライアントが URL を送信した方法を考慮してください。 | 
| "user\_agent" (14) | リクエスト元のクライアントを特定する User-Agent 文字列 (二重引用符で囲まれます)。この文字列は、1 つ以上の製品 ID (製品[/バージョン]) から構成されます。文字列が 8 KB より長い場合は切り捨てられます。 | 
| ssl\_cipher (15) | [HTTPS リスナー] SSL 暗号。リスナーが HTTPS リスナーではない場合、この値は - に設定されます。 | 
| ssl\_protocol (16) | [HTTPS リスナー] SSL プロトコル。リスナーが HTTPS リスナーではない場合、この値は - に設定されます。 | 
| target\_group\_arn (17) | ターゲットグループの Amazon リソースネーム (ARN)。 | 
| "trace\_id" (18) | **X-Amzn-Trace-Id** ヘッダーのコンテンツ (二重引用符で囲まれます)。 | 
| "domain\_name" (19) | [HTTPS リスナー] TLS ハンドシェイク中にクライアントから提供される SNI ドメイン (二重引用符で囲まれます)。クライアントが SNI をサポートしない場合、あるいはドメインが証明書と一致せず、デフォルトの証明書がクライアントに提示された場合、この値は - となります。 | 
| "chosen\_cert\_arn" (20) | [HTTPS リスナー] クライアントに提示される証明書の ARN (二重引用符で囲まれます)。セッションが再利用される場合、この値は `session-reused` に設定されます。リスナーが HTTPS リスナーではない場合、この値は - に設定されます。 | 
| matched\_rule\_priority (21) | リクエストに一致したルールの優先度の値。ルールが一致した場合、この値は 1～50,000 になります。一致するルールがなく、デフォルトのアクションが実行された場合、この値は 0 に設定されます。ルールの評価中にエラーが発生した場合は、-1 に設定されます。その他のエラーの場合は、- に設定されます。 | 
| request\_creation\_time (22) | ロードバランサーがクライアントからリクエストを受け取った時刻 (ISO 8601 形式)。 | 
| "actions\_executed" (23) | リクエストの処理時に実行されるアクション (二重引用符で囲まれます)。この値は、[実行されるアクション](#actions-taken) で説明されている値を含めることができるカンマ区切りリストです。形式が正しくないリクエストなどでアクションが実行されない場合、この値は - に設定されます。 | 
| "redirect\_url" (24) | HTTP レスポンスのロケーションヘッダーのリダイレクトターゲットの URL (二重引用文字で囲む)。リダイレクトアクションが実行されなかった場合、この値は - に設定されます。 | 
| "error\_reason" (25) | エラー理由コード (二重引用符で囲まれます)。リクエストが失敗した場合、これは [エラー理由コード](#error-reason-codes) で説明されているいずれかのエラーコードになります。実行されたアクションが認証アクションを含まない、またはターゲットが Lambda 関数ではない場合、この値は - に設定されます。 | 
| "target:port\_list" (26) | このリクエストを処理したターゲットの IP アドレスとポートのスペース区切りのリスト (二重引用符で囲まれます)。現在、このリストには 1 つの項目を含めることができ、target:port フィールドと一致します。<br />クライアントがリクエスト全体を送信しなかった場合、ロードバランサーはターゲットにリクエストをディスパッチできず、この値が - に設定されます。<br />ターゲットが Lambda 関数の場合、この値は - に設定されます。<br />リクエストが によってブロックされている場合 AWS WAF、この値は - に設定されます。 | 
| "target\_status\_code\_list" (27) | ターゲットの応答からのステータスコードのスペース区切りのリスト (二重引用符で囲まれます)。現在、このリストには 1 つの項目を含めることができ、target\_status\_code フィールドと一致します。<br />この値は、ターゲットへの接続が確立され、ターゲットが応答を送信した場合のみ記録されます。それ以外の場合は、- に設定されます。 | 
| "classification" (28) | desync 緩和の分類 (二重引用符で囲まれます)。リクエストが RFC 7230 に準拠していない場合、可能な値は Acceptable、Ambiguous、および Severe です。<br />リクエストが RFC 7230 に準拠している場合、この値は - に設定されます。 | 
| "classification\_reason" (29) | 分類理由コード (二重引用符で囲まれます)。リクエストが RFC 7230 に準拠していない場合、これは [分類の理由](#classification-reasons) で説明されている分類コードの 1 つです。リクエストが RFC 7230 に準拠している場合、この値は - に設定されます。 | 
| conn\_trace\_id (30) | 接続トレーサビリティ ID は、各接続を識別するために使用される**一意の不透明 ID **です。クライアントとの接続が確立されると、このクライアントからのその後のリクエストには、それぞれのアクセスログエントリにこの ID が含まれます。この ID は、接続ログとアクセスログ間のリンクを作成するための外部キーとして機能します。 | 
| "transformed\_host" (31) | ホストヘッダーの書き換え変換によって変更された後のホストヘッダー。次のいずれかが true の場合、この値は - に設定されます。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-access-logs.html) | 
| "transformed\_uri" (32) | URL 書き換え変換によって変更された後の URI。次のいずれかが true の場合、この値は - に設定されます。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-access-logs.html) | 
| "request\_transform\_status" (33) | 書き換え変換のステータス。書き換え変換が適用されなかった場合、この値は - に設定されます。それ以外の場合、この値は [変換ステータスコード](#transform-status-codes) で説明されているステータス値の 1 つです。 | 

### 実行されるアクション
<a name="actions-taken"></a>

ロードバランサーは、実行されたアクションをアクセスログの actions\_executed フィールドに格納します。
+ `authenticate` — ロードバランサーは、ルール設定で指定されているように、セッションを検証し、ユーザーを認証し、ユーザー情報をリクエストヘッダーに追加しました。
+ `fixed-response` — ロードバランサーは、ルール設定で指定された固定レスポンスを発行しました。
+ `forward` — ロードバランサーは、ルール設定で指定されているように、リクエストをターゲットに転送しました。
+ `redirect` — ロードバランサーは、ルール設定で指定されているように、リクエストを別の URL にリダイレクトしました。
+ `rewrite` — ロードバランサーは、ルール設定で指定されているように、リクエスト URL を書き換えました。
+ `waf` — ロードバランサーは、リクエストをターゲットに転送する必要があるかどうかを判別するために、リクエストを AWS WAF に転送しました。これが最後のアクションである場合、 はリクエストを拒否する必要がある AWS WAF と判断しました。デフォルトでは、 によって拒否されたリクエスト AWS WAF は、 `elb_status_code`フィールドに「403」として記録されます。カスタムレスポンスコードを使用してリクエストを拒否するように AWS WAF を設定すると、 `elb_status_code`フィールドには設定されたレスポンスコードが反映されます。
+ `waf-failed` — ロードバランサーはリクエストを に転送しようとしましたが AWS WAF、このプロセスは失敗しました。

### 分類の理由
<a name="classification-reasons"></a>

リクエストが RFC 7230 に準拠していない場合、ロードバランサーはアクセスログの classification\_reason フィールドに次のいずれかのコードを保存します。詳細については、「[Desync 軽減モード](edit-load-balancer-attributes.md#desync-mitigation-mode)」を参照してください。


| コード | 説明 | 分類 | 
| --- | --- | --- | 
| `AmbiguousUri` | リクエスト URI に制御文字が含まれています。 | Ambiguous | 
| `BadContentLength` | Content-Length ヘッダーに解析できない値または無効な数値が含まれています。 | Severe | 
| `BadHeader` | ヘッダーに NULL 文字またはキャリッジリターンが含まれています。 | Severe | 
| `BadTransferEncoding` | Transfer-Encoding ヘッダーに不正な値が含まれています。 | Severe | 
| `BadUri` | リクエスト URI に NULL 文字またはキャリッジリターンが含まれています。 | Severe | 
| `BadMethod` | リクエストメソッドの形式が正しくありません。 | Severe | 
| `BadVersion` | リクエストバージョンの形式が正しくありません。 | Severe | 
| `BothTeClPresent` | リクエストに Transfer-Encoding ヘッダーと Content-Length ヘッダーの両方が含まれています。 | Ambiguous | 
| `DuplicateContentLength` | 同じ値を持つ複数の Content-Length ヘッダーがあります。 | Ambiguous | 
| `EmptyHeader` | ヘッダーが空であるか、スペースのみを含む行があります。 | Ambiguous | 
| `GetHeadZeroContentLength` | GET または HEAD リクエストの値を 0 とする Content-Length ヘッダーがあります。 | Acceptable | 
| `MultipleContentLength` | 異なる値を持つ複数の Content-Length ヘッダーがあります。 | Severe | 
| `MultipleTransferEncodingChunked` | 複数の Transfer-Encoding: chunked ヘッダーがあります。 | Severe | 
| `NonCompliantHeader` | ヘッダーに ASCII 以外の文字または制御文字が含まれています。 | Acceptable | 
| `NonCompliantVersion` | リクエストバージョンに不正な値が含まれています。 | Acceptable | 
| `SpaceInUri` | リクエスト URI に URL エンコードされていないスペースが含まれています。 | Acceptable | 
| `SuspiciousHeader` | 一般的なテキスト正規化技術を使用して、Transfer-Encoding または Content-Length に正規化できるヘッダーがあります。 | Ambiguous | 
| `SuspiciousTeClPresent` | リクエストには、Transfer-Encoding ヘッダーと Content-Length ヘッダーの両方が含まれており、そのうち少なくとも 1 つは疑わしいです。 | Severe | 
| `UndefinedContentLengthSemantics` | GET または HEAD リクエスト用に定義された Content-Length ヘッダーがあります。 | Ambiguous | 
| `UndefinedTransferEncodingSemantics` | GET または HEAD リクエスト用に定義された Transfer-Encoding ヘッダーがあります。 | Ambiguous | 

### エラー理由コード
<a name="error-reason-codes"></a>

ロードバランサーが認証アクションを完了できない場合、ロードバランサーはアクセスログの error\_reason フィールドに次のいずれかの理由コードを保存します。また、ロードバランサーは対応する CloudWatch メトリクスを増分します。詳細については、「[Application Load Balancer を使用してユーザーを認証する](listener-authenticate-users.md)」を参照してください。


| コード | 説明 | メトリクス | 
| --- | --- | --- | 
| `AuthInvalidCookie` | 認証 Cookie が無効です。 | `ELBAuthFailure` | 
| `AuthInvalidGrantError` | トークンエンドポイントからの認可付与コードが無効です。 | `ELBAuthFailure` | 
| `AuthInvalidIdToken` | ID トークンが無効です。 | `ELBAuthFailure` | 
| `AuthInvalidStateParam` | 状態パラメータが無効です。 | `ELBAuthFailure` | 
| `AuthInvalidTokenResponse` | トークンエンドポイントからのレスポンスが無効です。 | `ELBAuthFailure` | 
| `AuthInvalidUserinfoResponse` | ユーザー情報エンドポイントからのレスポンスが無効です。 | `ELBAuthFailure` | 
| `AuthMissingCodeParam` | 認可エンドポイントからの認証レスポンスに、「code」という名前のクエリパラメータがありません。 | `ELBAuthFailure` | 
| `AuthMissingHostHeader` | 認可エンドポイントからの認証レスポンスに、ホストヘッダーフィールドがありません。 | `ELBAuthError` | 
| `AuthMissingStateParam` | 認可エンドポイントからの認証レスポンスに、「state」という名前のクエリパラメータがありません。 | `ELBAuthFailure` | 
| `AuthTokenEpRequestFailed` | トークンエンドポイントからエラーレスポンス (2XX 以外) があります。 | `ELBAuthError` | 
| `AuthTokenEpRequestTimeout` | ロードバランサーがトークンエンドポイントと通信できないか、トークンエンドポイントが 5 秒以内に応答しません。 | `ELBAuthError` | 
| `AuthUnhandledException` | ロードバランサーで処理されない例外が発生しました。 | `ELBAuthError` | 
| `AuthUserinfoEpRequestFailed` | IdP ユーザー情報エンドポイントからエラーレスポンス (2XX 以外) があります。 | `ELBAuthError` | 
| `AuthUserinfoEpRequestTimeout` | ロードバランサーが IdP ユーザー情報エンドポイントと通信できないか、ユーザー情報エンドポイントが 5 秒以内に応答しません。 | `ELBAuthError` | 
| `AuthUserinfoResponseSizeExceeded` | IdP から返されたクレームのサイズが 11K バイトを超えました。 | `ELBAuthUserClaimsSizeExceeded` | 

ロードバランサーが jwt-validation アクションを完了できない場合、ロードバランサーはアクセスログの error\_reason フィールドに次のいずれかの理由コードを保存します。また、ロードバランサーは対応する CloudWatch メトリクスを増分します。詳細については、「[Application Load Balancer を使用して JWTs を検証する](listener-verify-jwt.md)」を参照してください。


| コード | 説明 | メトリクス | 
| --- | --- | --- | 
| `JWTHeaderNotPresent` | リクエストに認可ヘッダーが含まれていません。 | `JWTValidationFailureCount` | 
| `JWTRequestFormatInvalid` | リクエスト内のトークンの形式が正しくないか、必須部分 (ヘッダー、ペイロード、または署名) がないか、ヘッダーに「ベアラー」プレフィックスが含まれていません。ヘッダーに「基本」のような別の認証タイプが含まれています。承認ヘッダーは存在しますが、リクエストに複数のトークンが存在する場合はトークンが存在しません。 | `JWTValidationFailureCount` | 
| `JWKSRequestTimeout` | ロードバランサーが JWKS エンドポイントと通信できないか、JWKS エンドポイントが 5 秒以内に応答しません。 | `JWTValidationFailureCount` | 
| `JWKSResponseSizeExceeded` | JWKS エンドポイントによって返されるレスポンスのサイズが 150KB を超えているか、JWKS エンドポイントによって返されるキーの数が 10 を超えています。 | `JWTValidationFailureCount` | 
| `JWKSRequestFailed` | JWKS エンドポイントからのエラーレスポンス (2XX 以外) があります。 | `JWTValidationFailureCount` | 
| `JWKSResponseInvalid` | JWKS レスポンスには、非 JSON 形式、無効な文字、無効な JWKS 形式、必須の JWKS 属性の欠落/無効、パブリックキーがサポートされていないアルゴリズムがあり、パブリックキーをデコードキーに変換できませんでした。パブリックキーのサイズは 2K ではありませんでした。 | `JWTValidationFailureCount` | 
| `JWTSignatureValidationError` | 署名が一致しない、トークンがサポートされていないアルゴリズムで署名されている、トークンの KID が JWKS エンドポイントに存在していないなど、何らかの理由でトークン署名を検証できませんでした。 | `JWTValidationFailureCount` | 
| `JWTClaimNotPresent` | クライアントリクエストの JWT に、検証に必要なクレームが含まれていない | `JWTValidationFailureCount` | 
| `JWTClaimFormatInvalid` | JWT のクレームの値の形式が、設定で指定された形式と一致しません | `JWTValidationFailureCount` | 
| `JWTClaimValueInvalid` | JWT の クレームの値が無効です。 | `JWTValidationFailureCount` | 
| `JWTValidationInternalError` | クライアントリクエストで JWT の検証中にロードバランサーで予期しないエラーが発生しました。 | `JWTValidationFailureCount` | 

加重ターゲットグループへのリクエストが失敗した場合、ロードバランサーはアクセスログの error\_reason フィールドに次のいずれかのエラーコードを保存します。


| コード | 説明 | 
| --- | --- | 
| `AWSALBTGCookieInvalid` | 加重ターゲットグループで使用される AWSALBTG Cookie は無効です。たとえば、Cookie 値が URL エンコードされている場合、ロードバランサーはこのエラーを返します。 | 
| `WeightedTargetGroupsUnhandledException` | ロードバランサーで処理されない例外が発生しました。 | 

Lambda 関数へのリクエストが失敗した場合、ロードバランサーはアクセスログの error\_reason フィールドに次のいずれかの理由コードを保存します。また、ロードバランサーは対応する CloudWatch メトリクスを増分します。詳細については、Lambda [呼び出し](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html)アクションを参照してください。


| コード | 説明 | メトリクス | 
| --- | --- | --- | 
| `LambdaAccessDenied` | ロードバランサーに、Lambda 関数を呼び出すアクセス権限がありませんでした。 | `LambdaUserError` | 
| `LambdaBadRequest` | クライアントリクエストヘッダーまたは本文に UTF-8 文字のみが含まれていないため、Lambda 呼び出しが失敗しました。 | `LambdaUserError` | 
| `LambdaConnectionError` | ロードバランサーが Lambda に接続できません。 | `LambdaInternalError` | 
| `LambdaConnectionTimeout` | Lambda への接続がタイムアウトしました。 | `LambdaInternalError` | 
| `LambdaEC2AccessDeniedException` | 関数の初期化中に Amazon EC2 が Lambda へのアクセスを拒否しました。 | `LambdaUserError` | 
| `LambdaEC2ThrottledException` | 関数の初期化中に Amazon EC2 が Lambda を調整しました。 | `LambdaUserError` | 
| `LambdaEC2UnexpectedException` | 関数の初期化中に Amazon EC2 で予期しない例外が発生しました。 | `LambdaUserError` | 
| `LambdaENILimitReachedException` | ネットワークインターフェイスの制限を超えたため、Lambda は Lambda 関数の設定で指定された VPC のネットワークインターフェイスを作成できませんでした。 | `LambdaUserError` | 
| `LambdaInvalidResponse` | Lambda 関数からのレスポンスの形式が間違っているか、必須フィールドが含まれていません。 | `LambdaUserError` | 
| `LambdaInvalidRuntimeException` | 指定されたバージョンの Lambda ランタイムはサポートされていません。 | `LambdaUserError` | 
| `LambdaInvalidSecurityGroupIDException` | Lambda 関数の設定で指定されたセキュリティグループ ID が無効です。 | `LambdaUserError` | 
| `LambdaInvalidSubnetIDException` | Lambda 関数の設定で指定されたサブネット ID が無効です。 | `LambdaUserError` | 
| `LambdaInvalidZipFileException` | Lambda は指定された関数の zip ファイルを解凍できませんでした。 | `LambdaUserError` | 
| `LambdaKMSAccessDeniedException` | KMS キーへのアクセスが拒否されたため、Lambda は環境変数を復号できませんでした。Lambda 関数の KMS アクセス権限を確認してください。 | `LambdaUserError` | 
| `LambdaKMSDisabledException` | 指定された KMS キーが無効化されたため、Lambda は環境変数を復号できませんでした。Lambda 関数の KMS キー設定を確認してください。 | `LambdaUserError` | 
| `LambdaKMSInvalidStateException` | KMS キーの状態が無効であるため、Lambda は環境変数を復号できませんでした。Lambda 関数の KMS キー設定を確認してください。 | `LambdaUserError` | 
| `LambdaKMSNotFoundException` | KMS キーが見つからなかったため、Lambda は環境変数を復号できませんでした。Lambda 関数の KMS キー設定を確認してください。 | `LambdaUserError` | 
| `LambdaRequestTooLarge` | リクエストボディのサイズは 1 MB を超えています。 | `LambdaUserError` | 
| `LambdaResourceNotFound` | Lambda 関数は見つかりませんでした。 | `LambdaUserError` | 
| `LambdaResponseTooLarge` | レスポンスのサイズは 1 MB を超えています。 | `LambdaUserError` | 
| `LambdaServiceException` | Lambda 内部エラーが発生しました。 | `LambdaInternalError` | 
| `LambdaSubnetIPAddressLimitReachedException` | Lambda は、1 つ以上のサブネットに使用可能な IP アドレスがないため、Lambda 関数の VPC アクセスを設定できませんでした。 | `LambdaUserError` | 
| `LambdaThrottling` | リクエストが多すぎるため、Lambda 関数が調整されました。 | `LambdaUserError` | 
| `LambdaUnhandled` | Lambda 関数で処理されない例外が発生しました。 | `LambdaUserError` | 
| `LambdaUnhandledException` | ロードバランサーで処理されない例外が発生しました。 | `LambdaInternalError` | 
| `LambdaWebsocketNotSupported` | WebSockets は、Lambda でサポートされていません。 | `LambdaUserError` | 

ロードバランサーは、リクエストの転送時にエラーが発生した場合 AWS WAF、アクセスログの error\_reason フィールドに次のいずれかのエラーコードを保存します。


| コード | 説明 | 
| --- | --- | 
| `WAFConnectionError` | ロードバランサーは に接続できません AWS WAF。 | 
| `WAFConnectionTimeout` | への接続がタイムアウト AWS WAF しました。 | 
| `WAFResponseReadTimeout` | へのリクエストがタイムアウト AWS WAF しました。 | 
| `WAFServiceError` | AWS WAF は 5XX エラーを返しました。 | 
| `WAFUnhandledException` | ロードバランサーで処理されない例外が発生しました。 | 

### 変換ステータスコード
<a name="transform-status-codes"></a>




| コード | 説明 | 
| --- | --- | 
| `TransformBufferTooSmall` | 結果が内部バッファのサイズを超えたため、書き換え変換に失敗しました。正規表現を複雑にしないようにします。 | 
| `TransformCompileError` | 正規表現のコンパイルに失敗しました。 | 
| `TransformCompileTooBig` | コンパイルされた正規表現が大きすぎます。正規表現を複雑にしないようにします。 | 
| `TransformInvalidHost` | 結果のホストが無効であるため、ホストヘッダーの書き換え変換に失敗しました。 | 
| `TransformInvalidPath` | 結果のパスが無効であるため、URL の書き換え変換に失敗しました。 | 
| `TransformRegexSyntaxError` | 正規表現に構文エラーが含まれていました。 | 
| `TransformReplaceError` | 変換の置き換えに失敗しました。 | 
| `TransformSuccess` | 書き換え変換が正常に完了しました。 | 

## ログエントリの例
<a name="access-log-entry-examples"></a>

以下にログエントリの例を示します。読みやすくするためだけの目的で、サンプルテキストは複数の行に表示されています。

**HTTP エントリ例**  
次の例は、HTTP リスナーのログエントリです (ポート 80 からポート 80)。

```
http 2018-07-02T22:23:00.186641Z app/my-loadbalancer/50dc6c495c0c9188 
192.168.131.39:2817 10.0.0.1:80 0.000 0.001 0.000 200 200 34 366 
"GET http://www.example.com:80/ HTTP/1.1" "curl/7.46.0" - - 
arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067
"Root=1-58337262-36d228ad5d99923122bbe354" "-" "-" 
0 2018-07-02T22:22:48.364000Z "forward" "-" "-" "10.0.0.1:80" "200" "-" "-" 
TID_1234abcd5678ef90 "-" "-" "-"
```

**HTTPS エントリ例**  
次の例は、HTTPS リスナーのログエントリです (ポート 443 からポート 80)。

```
https 2018-07-02T22:23:00.186641Z app/my-loadbalancer/50dc6c495c0c9188 
192.168.131.39:2817 10.0.0.1:80 0.086 0.048 0.037 200 200 0 57 
"GET https://www.example.com:443/ HTTP/1.1" "curl/7.46.0" ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 
arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067
"Root=1-58337281-1d84f3d73c47ec4e58577259" "www.example.com" "arn:aws:acm:us-east-2:123456789012:certificate/12345678-1234-1234-1234-123456789012"
1 2018-07-02T22:22:48.364000Z "authenticate,forward" "-" "-" "10.0.0.1:80" "200" "-" "-" 
TID_1234abcd5678ef90 "m.example.com" "-" "TransformSuccess"
```

**HTTP/2 エントリ例**  
HTTP/2 ストリームのログエントリの例を次に示します。

```
h2 2018-07-02T22:23:00.186641Z app/my-loadbalancer/50dc6c495c0c9188 
10.0.1.252:48160 10.0.0.66:9000 0.000 0.002 0.000 200 200 5 257 
"GET https://10.0.2.105:773/ HTTP/2.0" "curl/7.46.0" ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2
arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067
"Root=1-58337327-72bd00b0343d75b906739c42" "-" "-"
1 2018-07-02T22:22:48.364000Z "redirect" "https://example.com:80/" "-" "10.0.0.66:9000" "200" "-" "-" 
TID_1234abcd5678ef90 "-" "-" "-"
```

**WebSocket エントリの例**  
WebSocket 接続のログエントリの例を次に示します。

```
ws 2018-07-02T22:23:00.186641Z app/my-loadbalancer/50dc6c495c0c9188 
10.0.0.140:40914 10.0.1.192:8010 0.001 0.003 0.000 101 101 218 587 
"GET http://10.0.0.30:80/ HTTP/1.1" "-" - - 
arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067
"Root=1-58337364-23a8c76965a2ef7629b185e3" "-" "-"
1 2018-07-02T22:22:48.364000Z "forward" "-" "-" "10.0.1.192:8010" "101" "-" "-" 
TID_1234abcd5678ef90 "-" "-" "-"
```

**安全な WebSocket エントリの例**  
安全な WebSocket 接続のログエントリの例を次に示します。

```
wss 2018-07-02T22:23:00.186641Z app/my-loadbalancer/50dc6c495c0c9188 
10.0.0.140:44244 10.0.0.171:8010 0.000 0.001 0.000 101 101 218 786
"GET https://10.0.0.30:443/ HTTP/1.1" "-" ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 
arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067
"Root=1-58337364-23a8c76965a2ef7629b185e3" "-" "-"
1 2018-07-02T22:22:48.364000Z "forward" "-" "-" "10.0.0.171:8010" "101" "-" "-" 
TID_1234abcd5678ef90 "-" "-" "-"
```

**Lambda の関数のエントリの例。**  
成功した Lambda 関数へのリクエストのログエントリ例を次に示します。

```
http 2018-11-30T22:23:00.186641Z app/my-loadbalancer/50dc6c495c0c9188
192.168.131.39:2817 - 0.000 0.001 0.000 200 200 34 366
"GET http://www.example.com:80/ HTTP/1.1" "curl/7.46.0" - -
arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067
"Root=1-58337364-23a8c76965a2ef7629b185e3" "-" "-"
0 2018-11-30T22:22:48.364000Z "forward" "-" "-" "-" "-" "-" "-" 
TID_1234abcd5678ef90 "-" "-" "-"
```

失敗した Lambda 関数へのリクエストのログエントリ例を次に示します。

```
http 2018-11-30T22:23:00.186641Z app/my-loadbalancer/50dc6c495c0c9188
192.168.131.39:2817 - 0.000 0.001 0.000 502 - 34 366
"GET http://www.example.com:80/ HTTP/1.1" "curl/7.46.0" - -
arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067
"Root=1-58337364-23a8c76965a2ef7629b185e3" "-" "-"
0 2018-11-30T22:22:48.364000Z "forward" "-" "LambdaInvalidResponse" "-" "-" "-" "-" 
TID_1234abcd5678ef90 "-" "-" "-"
```

## ログ配信通知を設定する
<a name="access-log-event-notifications"></a>

Elastic Load Balancing が S3 バケットにログを配信するときに通知を受け取るには、Amazon S3 イベント通知を使用します。Elastic Load Balancing は、[PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)、[CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)、および [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html) を使用して Amazon S3 にログを配信します。すべてのログ配信通知を確実に受信するには、これらのオブジェクト作成イベントをすべて設定に含めます。

詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[Amazon S3 イベント通知](https://docs.aws.amazon.com/AmazonS3/latest/userguide/EventNotifications.html)」を参照してください。

## アクセスログファイルの処理
<a name="log-processing-tools"></a>

アクセスログファイルは圧縮されます。ファイルをダウンロードする場合、情報を表示するには解凍する必要があります。

ウェブサイトの需要が大きい場合は、ロードバランサーによって数 GB のデータ量のログファイルが生成されることがあります。このような大容量のデータは、行単位で処理できない場合があります。このため、場合によっては、並列処理ソリューションを提供する分析ツールを使用する必要があります。例えば、次の分析ツールを使用するとアクセスログの分析と処理を行うことができます。
+ Amazon Athena はインタラクティブなクエリサービスで、Amazon S3 内のデータを標準 SQL を使用して簡単に分析できるようになります。詳細については、*Amazon Athena ユーザーガイド*の [Querying Application Load Balancer logs](https://docs.aws.amazon.com/athena/latest/ug/application-load-balancer-logs.html) を参照してください。
+ [Loggly](https://documentation.solarwinds.com/en/success_center/loggly/content/admin/s3-ingestion-auto.htm)
+ [Splunk](https://splunk.github.io/splunk-add-on-for-amazon-web-services/)
+ [Sumo logic](https://www.sumologic.com/application/elb/)