Amazon CloudFront ディストリビューションに届くリクエストをログに記録したいと考えています。ログ記録をオンにするにはどうすればよいですか? また、標準ログ記録とリアルタイムログ記録のどちらを選択すればよいですか?
簡単な説明
CloudFront 標準ログ、またはアクセスログには、CloudFront ディストリビューションに対して行われたすべてのリクエストの詳細が記載されています。これらのログは Amazon Simple Storage Service (Amazon S3) バケットに配信されます。CloudFront は標準ログについて請求しません。ただし、Amazon S3 でのファイルの保存とアクセスには、Amazon S3 の料金が発生する可能性があります。
CloudFront リアルタイムログは、ディストリビューションに対するリクエストが発生するときに、当該リクエストに関する情報を提供します。ログレコードで受け取るリクエストの割合と特定のフィールドを設定します。これらのログは Amazon Kinesis Data Streams に配信されます。リアルタイムのログは、生成されたログ行数に基づいて課金されます。CloudFront の料金の詳細については、「CloudFront の料金」を参照してください。Kinesis Data Streams の費用の詳細については、「Amazon Kinesis Data Streams の料金」を参照してください。
解決方法
CloudFront 標準ログをオンにする
CloudFront ディストリビューションの標準アクセスログをオンにする前に、次の点に注意してください。
- S3 オブジェクト所有権が [Bucket owner enforced] (バケット所有者強制) に設定されている Amazon S3 バケットは選択しないでください。この設定では、バケットとその中のオブジェクトのネットワークアクセスコントロールリスト (ACL) が削除されます。つまり、CloudFront はログファイルをバケットに配信できません。
- CloudFront は、アフリカ (ケープタウン)、アジアパシフィック (香港)、アジアパシフィック (ジャカルタ)、欧州 (ミラノ)、中東 (バーレーン) の AWS リージョンの Amazon S3 バケットに標準ログを配信しません。
- AWS アカウントには、ログの配信先とする Amazon S3 バケットに対する s3:GetBucketAcl および s3:PutBucketAcl 許可が必要です。
- Amazon S3 バケットのネットワーク ACL は、AWS アカウントに FULL_CONTROL を付与する必要があります。バケット所有者であれば、アカウントにはデフォルトでこの許可が付与されています。バケット所有者でない場合、バケット所有者はバケットの ACL を更新する必要があります。
- Amazon S3 バケットがカスタマーマネージドキーを使用して AWS KMS キーによるサーバー側の暗号化 (SSE-KMS) を使用する場合、SSE-KMS バケットには必須キーポリシーが必要です。
CloudFront ディストリビューションの標準ログ記録をオンにするには、次のステップに従います。
- CloudFront コンソールにアクセスします。
- 更新するディストリビューションを選択します。
- [General] (全般) タブの [Settings] (設定) で、[Edit] (編集) を選択します。
- [Standard logging] (標準ログ) で [On] (オン) を選択します。
- CloudFront がログファイルを配信する S3 バケットを選択します。ファイル名にはオプションのプレフィックスを指定できます。
- (オプション) [Cookie logging] (cookie ログ) で [On] (オン) または [Off] (オフ) を選択します。オンにすると、CloudFront は、オリジンに転送する cookie にかかわらず、すべてのリクエストで cookie をログ記録します。
- [Save changes] (変更を保存) を選択します。
CloudFront リアルタイムログをオンにする
- CloudFront コンソールにアクセスします。
- 左側のナビゲーションから、[Logs] (ログ) を選択します。
- [Real-time configurations] (リアルタイム設定) タブを選択します。
- [Create configuration] (設定を作成) を選択します。
- [Sampling rate] (サンプリングレート) で、リアルタイムログレコードを受信するリクエストの割合を入力します。
- [Fields] (フィールド) で、ログレコードで受け取る特定のフィールドを選択します。[Choose options] (オプションを選択) ドロップダウンリストで、設定に含めるフィールドを選択します。
- リアルタイムログを受信する 1 つ以上の Kinesis データストリームを選択します。
注: CloudFront リアルタイムログは、Amazon Kinesis Data Streams で選択したデータストリームに配信されます。リアルタイムログを読み取って分析するために、独自の Kinesis データストリームコンシューマーを構築できます。または、Amazon Kinesis Data Firehose を使用して、ログデータを Amazon S3、Amazon Redshift、Amazon OpenSearch Service、またはサードパーティーのログ処理サービスに送信します。
- [IAM role] (IAM ロール) で、コンソールの [Create new service role] (新しいサービスロールを作成) を選択して IAM ロールを作成します。このオプションを使用するには、IAM ロールを作成するための許可が必要です。
- (オプション) [Distribution] (ディストリビューション) セクションで、リアルタイムログ設定にアタッチする CloudFront ディストリビューションとキャッシュ動作を選択します。
- [Create configuration] (設定を作成) を選択します。