1
1

More than 3 years have passed since last update.

AWS S3のCloudTrailによるログとS3サーバアクセスログのサンプル

Posted at

S3へのアクセスのログを取るには、CloudTrailを使う方法とS3サーバアクセスログを使う方法があります。

2つのログの比較は公式ドキュメントにも説明があります。

Amazon S3 でのログ記録 - Amazon Simple Storage Service

実際に両方のログを取ってみたのでサンプルを載せておきます。

CloudTrail S3オブジェクトレベルログ

CloudTrailでのログはJSONをgzで圧縮したものがS3に保存されます。

情報量が多いです。JSONですので項目名が書かれており、わかりやすいです。

S3サーバアクセスログと違って、イベントが発生したらすぐに保存されるようです。

{
  "Records": [
    {
      "eventVersion": "1.07",
      "userIdentity": {
        "type": "IAMUser",
        "principalId": "AIDAXXXXXXXXXXXXXXXXX",
        "arn": "arn:aws:iam::XXXXXXXXXXXX:user/xxxxxxxx",
        "accountId": "XXXXXXXXXXXX",
        "accessKeyId": "AKIAXXXXXXXXXXXXXXXX",
        "userName": "xxxxxxxx"
      },
      "eventTime": "2020-07-06T13:37:17Z",
      "eventSource": "s3.amazonaws.com",
      "eventName": "GetObject",
      "awsRegion": "ap-northeast-1",
      "sourceIPAddress": "172.XXX.XXX.XXX",
      "userAgent": "[aws-cli/1.18.68 Python/3.8.1 Linux/4.15.0-1057-aws botocore/1.16.18]",
      "requestParameters": {
        "bucketName": "XXXXBUCKETNAMEXXXX",
        "Host": "XXXXBUCKETNAMEXXXX.s3.ap-northeast-1.amazonaws.com",
        "key": "test1.txt"
      },
      "responseElements": null,
      "additionalEventData": {
        "SignatureVersion": "SigV4",
        "CipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
        "bytesTransferredIn": 0,
        "AuthenticationMethod": "AuthHeader",
        "x-amz-id-2": "XXXXAMAZONREQUESTIDXXXX",
        "bytesTransferredOut": 6
      },
      "requestID": "XXXXREQUESTIDXXXX",
      "eventID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "readOnly": true,
      "resources": [
        {
          "type": "AWS::S3::Object",
          "ARN": "arn:aws:s3:::XXXXBUCKETNAMEXXXX/test1.txt"
        },
        {
          "accountId": "XXXXXXXXXXXX",
          "type": "AWS::S3::Bucket",
          "ARN": "arn:aws:s3:::XXXXBUCKETNAMEXXXX"
        }
      ],
      "eventType": "AwsApiCall",
      "managementEvent": false,
      "recipientAccountId": "XXXXXXXXXXXX",
      "vpcEndpointId": "vpce-xxxxxxxxxxxxxxxxx",
      "eventCategory": "Data"
    }
  ]
}

S3サーバアクセスログ

S3サーバアクセスログは、Apacheのログのように1リクエストで1行書き出されます。

ログには項目名がなく、値だけがスペース区切りで書かれるので、何が書かれているのか分かりづらいのですが、公式ドキュメントに説明があります。

Amazon S3 サーバーアクセスログの形式 - Amazon Simple Storage Service

S3にログが保存されるまでに少しタイムラグがあるようです。試したときは1時間半ぐらいかかりました。

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx XXXXBUCKETNAMEXXXX [06/Jul/2020:13:37:17 +0000] 172.XXX.XXX.XXX arn:aws:iam::XXXXXXXXXXXX:user/xxxxxxxx XXXXREQUESTIDXXXX REST.GET.OBJECT test1.txt "GET /test1.txt HTTP/1.1" 200 - 6 6 12 11 "-" "aws-cli/1.18.68 Python/3.8.1 Linux/4.15.0-1057-aws botocore/1.16.18" - XXXXAMAZONREQUESTIDXXXX SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader XXXXBUCKETNAMEXXXX.s3.ap-northeast-1.amazonaws.com TLSv1.2

1つ目の64文字の項目はバケット所有者の「正規ユーザーID」というものらしいです。

Your AWS account identifiers - AWS General Reference

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1