

# VPC フローログトラブルシューティング
<a name="flow-logs-troubleshooting"></a>

フローログを操作する際、発生する可能性のある問題を以下に示します。

**Topics**
+ [不完全なフローログレコード](#flow-logs-troubleshooting-incomplete-records)
+ [フローログが有効でも、フローログレコードまたはロググループがない](#flow-logs-troubleshooting-no-log-group)
+ [「LogDestinationNotFoundException」または「Access Denied for LogDestination」エラー](#flow-logs-troubleshooting-not-found)
+ [Amazon S3 バケットポリシーの制限の超過](#flow-logs-troubleshooting-policy-limit)
+ [LogDestination が配信できない](#flow-logs-troubleshooting-kms-id)
+ [フローログのデータサイズが請求データと一致しない](#flow-logs-data-size-mismatch)

## 不完全なフローログレコード
<a name="flow-logs-troubleshooting-incomplete-records"></a>

**問題**  
フローログレコードが不完全であるか、公開が終了しています。

**原因**  
CloudWatch Logs ロググループへのフローログの配信に問題がある可能性があるか、[SkipData エントリが存在する可能性があります](flow-logs-records-examples.md#flow-log-example-no-data)。

**ソリューション**  
VPC、サブネット、またはネットワークインターフェイスの **[フローログ]** タブを確認します。共有された VPC またはサブネットのフローログを記述することはできませんが、共有された VPC またはサブネットで作成したネットワークインターフェイスのフローログを記述することはできます。エラーがある場合は、**[ステータス]** 列に表示されます。または、[describe-flow-logs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-flow-logs.html) コマンドを使用し、`DeliverLogsErrorMessage` フィールドに返された値を確認します。

ステータスに表示される可能性のあるエラー値は、以下のとおりです。
+ `Rate limited`: このエラーは、CloudWatch Logs のスロットリングが適用されている場合に発生することがあります。ネットワークインターフェイスのフローログのレコード数が、特定の期間内に発行できるレコードの最大数より多い場合などが該当します。このエラーは、作成できる CloudWatch Logs ロググループの数がクォータに達した場合にも発生することがあります。詳細については、「*Amazon CloudWatch ユーザーガイド*」の「[CloudWatch サービスクォータ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html)」を参照してください。
+ `Access error`: このエラーは、次のいずれかの原因で発生することがあります。
  + フローログの IAM ロールに、CloudWatch Logs ロググループにフローログレコードを発行するための十分なアクセス許可がありません。
  + IAM ロールにフローログサービスとの信頼関係がない
  + 信頼関係によりフローログサービスがプリンシパルとして指定されていない

  詳細については、「[CloudWatch Logs へのフローログ発行のための IAM ロール](flow-logs-iam-role.md)」を参照してください。
+ `Unknown error`: 内部エラーがフローログサービスで発生しました。

## フローログが有効でも、フローログレコードまたはロググループがない
<a name="flow-logs-troubleshooting-no-log-group"></a>

**問題**  
フローログを作成すると、Amazon VPC または Amazon EC2 コンソールにフローログが `Active` として表示されます。ただし、CloudWatch Logs のログストリームや、Amazon S3 バケットのログファイルは表示できない場合があります。

**考えられる原因**
+ フローログはまだ作成中である。場合によっては、ロググループのフローログを作成してからデータが表示されるまでに、10 分以上かかることがあります。
+ ネットワークインターフェイスに対して記録されたトラフィックがまだありません。CloudWatch Logs のロググループは、トラフィックの記録時にのみ作成されます。

**ソリューション**  
ロググループが作成されるか、トラフィックが記録されるまで数分待ちます。

## 「LogDestinationNotFoundException」または「Access Denied for LogDestination」エラー
<a name="flow-logs-troubleshooting-not-found"></a>

**問題**  
フローログを作成すると、`Access Denied for LogDestination` または `LogDestinationNotFoundException` エラーが発生します。

**考えられる原因**
+ Amazon S3 バケットにデータを発行するフローログを作成している場合、このエラーは、指定された S3 バケットが見つからないか、バケットポリシーでバケットへのログの配信が許可されていないことを示します。
+ Amazon CloudWatch Logs にデータを発行するフローログを作成している場合、このエラーは、IAM ロールでロググループへのログの配信が許可されていないことを示します。

**ソリューション**
+ Amazon S3 に配信する場合、既存の S3 バケットの ARN を指定したこと、および ARN が正しい形式であることを確認します。S3 バケットを所有していない場合は、[バケットポリシー](flow-logs-s3-permissions.md)に必要な許可があり、ARN に正しいアカウント ID とバケット名が使用されていることを確認します。
+ CloudWatch Logs に配信する場合は、[IAM ロール](flow-logs-iam-role.md)に必要な許可があることを確認します。

## Amazon S3 バケットポリシーの制限の超過
<a name="flow-logs-troubleshooting-policy-limit"></a>

**問題**  
フローログを作成しようとすると、`LogDestinationPermissionIssueException` エラーが発生します。

**考えられる原因**  
Amazon S3 バケットポリシーのサイズは 20 KB に制限されています。

Amazon S3 バケットに発行するフローログを作成するたびに、指定されたバケットの ARN (フォルダパスを含む) がバケットポリシーの `Resource` 要素に自動的に追加されます。

同じバケットに発行する複数のフローログを作成すると、バケットポリシーの制限を超える可能性があります。

**ソリューション**
+ 不要になったフローログエントリを削除して、バケットポリシーをクリーンアップします。
+ 個々のフローログエントリを以下で置き換えて、バケット全体にアクセス権限を付与します。

  ```
  arn:aws:s3:::{{bucket_name/*}}
  ```

  バケット全体にアクセス権限を付与した場合、新しいフローログのサブスクリプションによってバケットポリシーに新しいアクセス権限が追加されることはありません。

## LogDestination が配信できない
<a name="flow-logs-troubleshooting-kms-id"></a>

**問題**  
フローログを作成しようとすると、`LogDestination <bucket name> is undeliverable` エラーが発生します。

**考えられる原因**  
ターゲットの Amazon S3 バケットは、AWS KMS (SSE-KMS) によるサーバー側の暗号化を使って暗号化されます。バケットのデフォルトの暗号化は KMS キー ID です。

**ソリューション**  
値は KMS キー ARN である必要があります。デフォルトの S3 暗号化タイプを KMS キー ID から KMS キー ARN に変更してください。詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[デフォルト暗号化の設定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-bucket-encryption.html)」を参照してください。

## フローログのデータサイズが請求データと一致しない
<a name="flow-logs-data-size-mismatch"></a>

**問題**  
フローログの合計データサイズが、請求データが報告するサイズと一致しません。

**考えられる原因**  
フローログに SKIPDATA エントリがある場合があります。SKIPDATA エントリの説明については、「[データなしおよびスキップされたレコード](flow-logs-records-examples.md#flow-log-example-no-data)」を参照してください。

**ソリューション**  
log-status フィールドの異なるエントリがないかログのクエリを行うことで、ログエントリに SKIPDATA エントリが存在することを確認します。

SKIPDATA をチェックするサンプルクエリ:

CW Insights:

```
fields @timestamp, @message, @logStream, @log
| filter interfaceId = 'eni-123'
| stats count(*) by interfaceId, logStatus
| sort by interfaceId, logStatus
```

Athena:

```
SELECT log_status, interface_id, count(1)
FROM vpc_flow_logs
WHERE interface_id IN ('eni-1', 'eni-2', 'eni-3')
GROUP BY log_status, interface_id
```