メモ
-
このトピックでは、以前のバージョンの標準ログ記録について説明します。最新バージョンについては、「標準ログ記録 (v2) を設定する」を参照してください。
-
標準ログ記録 (レガシー) を既に有効にしていて、Amazon S3 への標準ログ記録 (v2) を有効にする場合は、別の Amazon S3 バケットを指定するか、同じバケット内の別のパスを使用する (例: ログプレフィックスやパーティショニングを使用する) ことをお勧めします。これにより、どのログファイルがどのディストリビューションに関連付けられているかを追跡し、ログファイルが互いに上書きされるのを防ぐことができます。
標準ログ記録 (レガシー) を開始するには、次の手順を実行します。
-
ログを受信する Amazon S3 バケットを選択し、必要なアクセス許可を追加します。
-
CloudFront コンソールまたは CloudFront API を使用して標準ログ記録 (レガシー) を設定します。ログの受信先として Amazon S3 バケットのみを選択できます。
-
アクセスログを表示します。
標準ログ用の Amazon S3 バケットを選択する
ディストリビューションのログ記録を有効にする際には、CloudFront でログファイルを保存する Amazon S3 バケットを指定します。オリジンとして Amazon S3 を使用する場合は、ログファイル用に別のバケットを使用することをお勧めします。
CloudFront でアクセスログを保存する先の Amazon S3 バケット (例: amzn-s3-demo-bucket.s3.amazonaws.com
) を指定します。
複数のディストリビューションのログファイルを同じバケットに保存することもできます。ログ記録を有効にする際には、ファイル名のプレフィックスをオプションで指定できます。これにより、どのログファイルがどのディストリビューションに関連しているか追跡できます。
S3 バケットの選択について
-
バケットでは、アクセスコントロールリスト (ACL) が有効になっている必要があります。CloudFront コンソールで ACL を有効にしていないバケットを選択すると、エラーメッセージが表示されます。「アクセス許可」を参照してください。
-
強制を行ったバケット所有者に設定される S3 オブジェクトの所有権を使用して Amazon S3 バケットを選択してはいけません。この設定では、バケットとその中のオブジェクトの ACL が無効になり、CloudFront によるバケットへのログファイルの配信を阻止します。
以下の AWS リージョンでは、Amazon S3 バケットを選択しないでください。CloudFront は、これらのリージョンのバケットに標準ログを配信しません。
-
アフリカ (ケープタウン)
-
アジアパシフィック (香港)
-
アジアパシフィック (ハイデラバード)
-
アジアパシフィック (ジャカルタ)
-
アジアパシフィック (メルボルン)
-
カナダ西部 (カルガリー)
-
欧州 (ミラノ)
-
欧州 (スペイン)
-
欧州 (チューリッヒ)
-
イスラエル (テルアビブ)
-
中東 (バーレーン)
-
中東 (UAE)
-
アクセス許可
重要
2023 年 4 月以降、CloudFront 標準ログで使用する新しい S3 バケットでは S3 の ACL を有効にする必要があります。ACL は、バケットを作成するときに有効にするか、既存のバケットに対して有効にすることができます。
変更の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「新しい S3 バケットのデフォルト設定に関するよくある質問」と、「AWS ニュースブログ」の「注意喚起: 2023 年 4 月に予定されている Amazon S3 のセキュリティ変更
AWS アカウントには、ログファイル用に指定するバケットに対して以下のアクセス許可が必要です。
-
バケットの ACL は
FULL_CONTROL
をユーザーに付与する必要があります バケット所有者のアカウントには、デフォルトでこのアクセス許可があります。権限がない場合、バケット所有者はバケットの ACL を更新する必要があります。 -
s3:GetBucketAcl
-
s3:PutBucketAcl
- バケットの ACL
-
ディストリビューションを作成または更新してロギングを有効にすると、CloudFront はこれらのアクセス許可を使用してバケットの ACL を更新し、
awslogsdelivery
アカウントにFULL_CONTROL
のアクセス許可を付与します。awslogsdelivery
アカウントはログファイルをバケットに書き込みます。アカウントに ACL を更新するために必要なアクセス許可がない場合、ディストリビューションの作成または更新は失敗します。状況によっては、バケットを作成するリクエストをプログラムで送信したが、指定した名前のバケットが既に存在する場合、S3 ではバケットのアクセス許可をデフォルト値にリセットします。アクセスログを S3 バケットに保存するように CloudFront を設定した後で、そのバケットでのログ受信を中止する場合は、バケットのアクセス許可をチェックして CloudFront に必要なアクセス許可があることを確認します。
- バケットの ACL を復元する
-
awslogsdelivery
アカウントのアクセス許可を削除すると、CloudFront はログを S3 バケットに保存できません。CloudFront がディストリビューションのログ保存を再開するには、次のいずれかの操作を行って ACL アクセス許可を復元します。-
CloudFront ディストリビューションのログ記録を無効化してから、再度有効にします。詳細については、「標準ログ記録」を参照してください。
-
Amazon S3 コンソールで S3 バケットに移動してアクセス許可を追加することで、
awslogsdelivery
の ACL アクセス許可を手動で追加します。awslogsdelivery
の ACL を追加するには、アカウントの正規 ID を入力する必要があります。これは次のとおりです。c4c1ede66af53448b93c283ce9448c4ba468c9432aa01d700d3878632f77d2d0
ACL を S3 バケットに追加する方法の詳細については、「Amazon Simple Storage Service コンソールユーザーガイド」の「ACL の設定」を参照してください。
-
- 各ログファイルの ACL
-
バケットの ACL に加えて、各ログファイルの ACL があります。バケット所有者にはログファイルに対する
FULL_CONTROL
アクセス許可があり、ディストリビューション所有者 (バケット所有者と異なる場合) にはアクセス許可がありません。awslogsdelivery
アカウントには読み取りアクセス許可と書き込みアクセス許可があります。 - ログ記録の無効化
-
ログ記録を無効にしても、CloudFront ではバケットやログファイルの ACL が削除されません。ACL は、必要に応じて削除できます。
SSE-KMS バケット必須のキーポリシー
標準ログ用の S3 バケットで、カスタマーマネージド型キーを使用する AWS KMS keys (SSE-KMS) を用いたサーバー側の暗号化が使用されている場合は、カスタマーマネージド型キーのキーポリシーに次のステートメントを追加する必要があります。これにより、CloudFront はログファイルをバケットに書き込むことができます。AWS マネージドキー で SSE-KMS を使用することはできません (CloudFront はログファイルをバケットに書き込むことができないため)。
{
"Sid": "Allow CloudFront to use the key to deliver logs",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "kms:GenerateDataKey*",
"Resource": "*"
}
標準ログの S3 バケットで S3 バケットキーを有する SSE-KMS を使用する場合は、ポリシーステートメントに kms:Decrypt
許可を追加する必要もあります。この場合、完全なポリシーステートメントは次のようになります。
{
"Sid": "Allow CloudFront to use the key to deliver logs",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": [
"kms:GenerateDataKey*",
"kms:Decrypt"
],
"Resource": "*"
}
注記
S3 バケットで SSE-KMS を有効にするときは、カスタマーマネージドキーの完全な ARN を指定します。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「AWS KMS keys (SSE-KMS) によるサーバー側の暗号化の指定」を参照してください。
標準ログ記録 (レガシー) を有効にする
標準ログを有効にするには、CloudFront コンソールまたは CloudFront API を使用します。
標準ログ記録 (レガシー) を有効にする (CloudFront コンソール)
CloudFront ディストリビューションの標準ログを有効にするには (コンソール)
-
CloudFront コンソールを使用して、新しいディストリビューションを作成するか、既存のディストリビューションを更新します。
-
[標準ログ記録] セクションの [ログ配信] で、[オン] を選択します。
-
(オプション) [cookie ログ記録] で、ログに cookie を含める場合は [オン] を選択します。詳細については、「cookie のログ作成」を参照してください。
ヒント
cookie ログ記録は、ディストリビューションのすべての標準ログに適用されるグローバル設定です。この設定を個別の配信先で上書きすることはできません。
-
[配信先] セクションで、[Amazon S3 (レガシー)] を指定します。
-
Amazon S3 バケットを指定します。バケットがまだない場合は、[作成] を選択するか、ドキュメントを参照してバケットを作成できます。
-
(オプション) [ログプレフィックス] で、このディストリビューションのアクセスログファイル名の先頭に CloudFront で追加する文字列 (ある場合) を指定します (例:
exampleprefix/
)。末尾のスラッシュ (/) はオプションですが、ログファイルの参照を容易にするためにこれを使用することをお勧めします。詳細については、「ログのプレフィックス」を参照してください。 -
ディストリビューションを更新または作成する手順を完了します。
-
[ログ] ページで、標準ログのステータスが、ディストリビューションの横で [有効] になっていることを確認します。
標準ログ記録の配信とログフィールドの詳細については、「標準ログ記録リファレンス」を参照してください。
標準ログ記録 (レガシー) を有効にする (CloudFront API)
CloudFront API を使用して、ディストリビューションの標準ログを有効にすることもできます。
ディストリビューションの標準ログを有効にするには (CloudFront API)
-
CreateDistribution または UpdateDistribution API オペレーションを使用して、LoggingConfig オブジェクトを設定します。
標準ログ記録設定を編集する
ログ記録の有効化および無効化、ログを保存する Amazon S3 バケットの変更、ログファイルのプレフィックスの変更は、CloudFront コンソール
詳細については、以下のトピックを参照してください。
-
CloudFront コンソールを使用してディストリビューションを更新するには、「ディストリビューションを更新する」を参照してください。
-
CloudFront API を使用してディストリビューションを更新する方法については、Amazon CloudFront API リファレンスの「UpdateDistribution」を参照してください。
ログを Amazon S3 に送信する
ログを Amazon S3 に送信すると、ログは次の形式で表示されます。
ファイル名の形式
CloudFront が Amazon S3 バケットに保存する各ログファイルの名前には、次のファイル名形式が使用されます。
<optional
prefix>
/<distribution
ID>
.YYYY
-MM
-DD
-HH
.unique-ID
.gz
日付と時刻は協定世界時 (UTC) です。
たとえば、example-prefix
をプレフィックスとして使用している場合に、ディストリビューション ID が EMLARXS9EXAMPLE
であれば、ファイル名は次のようになります。
example-prefix/EMLARXS9EXAMPLE.2019-11-14-20.RT4KCN4SGK9.gz
ディストリビューションのログ記録を有効にする際には、ファイル名のプレフィックスをオプションで指定できます。これにより、どのログファイルがどのディストリビューションに関連しているか追跡できます。ログファイルのプレフィックスの値を指定した場合、プレフィックスがスラッシュ (/
) で終わらない場合は、CloudFront によって自動的に追加されます。プレフィックスがスラッシュで終わる場合、CloudFront はスラッシュを追加しません。
ファイル名の末尾にある .gz
は、CloudFront によってログファイルが gzip で圧縮されたことを示しています。
標準ログファイル形式
ログファイルには、1 つのビューワーリクエストの詳細が 1 エントリとして記録されます。ログファイルの特性は次のとおりです。
-
W3C 拡張ログファイル形式
を使用します。 -
タブ区切りの値が含まれます。
-
レコードが必ずしも時系列順に含まれているとは限りません。
-
2 つのヘッダー行が含まれます。1 つのヘッダー行にファイル形式のバージョンが示され、もう 1 つのヘッダー行に、各レコードに含まれる W3C フィールドが示されます。
-
フィールド値に URL エンコードされたスペースおよび特定の他の文字を含めます。
URL エンコードされた同等の文字は、次の文字に使用されます。
-
ASCII 文字コード 0~32 以内
-
ASCII 文字コード 127 以上
-
次の表のすべての文字
URL エンコーディング標準は RFC 1738
で定義されています。 -
URL エンコードされた値 |
文字 |
---|---|
%3C |
< |
%3E |
> |
%22 |
" |
%23 |
# |
%25 |
% |
%7B |
{ |
%7D |
} |
%7C |
| |
%5C |
\ |
%5E |
^ |
%7E |
~ |
%5B |
[ |
%5D |
] |
%60 |
` |
%27 |
' |
%20 |
スペース |
ログファイルを削除する
CloudFront は、Amazon S3 バケットからログファイルを自動的には削除しません。Amazon S3 バケットからログファイルを削除する方法については、「Amazon Simple Storage Service コンソールユーザーガイド」の「オブジェクトの削除」を参照してください。
料金
標準ログ記録は、CloudFront のオプション機能です。CloudFront では、標準ログの有効化には料金がかかりません。ただし、Amazon S3 でのファイルの保存とアクセスには通常の Amazon S3 料金が発生します。ファイルはいつでも削除できます。
Amazon S3 の料金に関する詳細については、「Amazon S3 の料金
CloudFront の料金の詳細については、「CloudFront の料金