S3アクセスログ
- バケットに対する詳細ログが記録される
- アクセスログはセキュリティやアクセス監査に役立つ
- S3の請求についての理解にも役立つ
ベストエフォート型のサーバーログ配信
- ログは記録された時間から数時間以内に配信される
- 配信されない場合もある
- ログの目的はトラフィックの特性を理解すること
- ログの完全性や適時性は保証されない
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/ServerLogs.html#LogDeliveryBestEffort
バケットのログ記録ステータスの変更が有効になるまでには時間がかかる
- ログ取得有効化してから数時間以内のログは記録されたりされなかったりする
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/ServerLogs.html#BucketLoggingStatusChanges
アクセスログの取得
- アクセスログ取得はデフォルトで
無効
になっている - 保存先バケットは取得元バケットと同一リージョンに作成する必要がある
- デフォルトではアクセスログの保存期間の設定はされていない
-
ログ配信グループ
と呼ばれる特別なログ配信アカウントを使用してアクセスログを書き込む- 通常のアクセスコントロールの制約に従われる
保存先バケットの作成
- 取得元と同一リージョンに作成する必要がある
- 取得元と保存先バケットは同一アカウント所有である必要がある
- 取得元にそのままアクセスログを保存可能だが非推奨
- アクセスログを書き込みに対して更にアクセスログが書き込みされる
バケット作成例
取得元と同一アカウントのS3にリージョン別の保存先を作成
s3-access-log-ap-northeast-1
s3-access-log-us-east-1
s3-access-log-us-west-2
ログ配信グループへの書き込み権限付与
- 取得元でログ取得を有効化すると保存先ACLにログ配信グループ書き込みアクセスが許可される
取得有効化
- AWS マネジメントコンソールにサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。
- [バケット名] リストで、サーバーアクセスログ記録を有効にするバケットの名前を選択します。
- [プロパティ] を選択します。
- [Server access logging (サーバーアクセスのログ記録)] を選択します。
- [ログの有効化] を選択します。[Target (ターゲット)] で、ログレコードオブジェクトを受け取るバケットの名前を選択します。 ターゲットバケットは、ソースバケットと同じリージョン内になければならず、デフォルトの保存期間設定を持ってはいけません。
- (オプション) [ターゲットプレフィックス] に、ログオブジェクトのキー名プレフィックスを入力します。これにより、すべてのログオブジェクト名が同じ文字列で始まります。
- [Save] を選択します。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/user-guide/server-access-logging.html
ログ形式
- ログは
改行
で区切った複数のレコードが1つのファイルにまとまって出力される - 各ログレコードは1個のリクエストを表している
- 各フィールドは
スペース
で区切られている
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/LogFormat.html
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be awsexamplebucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 3E57427F3EXAMPLE REST.GET.VERSIONING - "GET /awsexamplebucket1?versioning HTTP/1.1" 200 - 113 - 7 - "-" "S3Console/0.4" - s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234= SigV2 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader awsexamplebucket1.s3.us-west-1.amazonaws.com TLSV1.1
フィールド
ログファイルの削除
- ライフサイクル設定で削除する
ログ検索
- Athenaを使ってクエリでの検索
- AWSドキュメトにクエリ例ものっている