0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS日記49(CloudFront - AccessLogs)

Last updated at Posted at 2022-11-30

はじめに

今回は Amazon CloudFrontの標準ログ(アクセスログ)を試します
デベロッパーガイドの標準ログ (アクセスログ) の設定および使用を参考に、アクセスログの設定を行います
事前に作成済みのCloudFrontディストリビューションの設定変更を行い、アクセスログをS3バケットに保存します。

設定

01.jpg

  • 事前に作成済みのCloudFrontディストリビューションの設定画面の「編集」をクリックします

02.jpg

  • 標準ログ記録をオンにします
  • S3バケットを指定します

03.jpg

  • 指定したS3バケットのACLが無効の場合、エラー表示が出ます
  • 「Enable ACLs」をクリックします

05.jpg

  • エラー表示が消え、バケットの準備が完了します

06.jpg

  • 「変更を保存」をクリックします

追記: S3バケット用CloudFormation

AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: CloudFront AccessLogs Sample

Parameters:
  ApplicationName:
    Type: String
    Default: 'CloudFrontAccessLogsSample'

Resources:
  AccessLogsBucket:
    Type: AWS::S3::Bucket
    Properties:
      AccessControl: LogDeliveryWrite
      OwnershipControls:
        Rules:
          - ObjectOwnership: ObjectWriter
      BucketEncryption:
        ServerSideEncryptionConfiguration:
          - ServerSideEncryptionByDefault:
              SSEAlgorithm: 'AES256'
      PublicAccessBlockConfiguration:
        BlockPublicAcls: true
        BlockPublicPolicy: true
        IgnorePublicAcls: true
        RestrictPublicBuckets: true
      LifecycleConfiguration:
        Rules:
          - Id: 30days
            Status: Enabled
            ExpirationInDays: 30
            NoncurrentVersionExpirationInDays: 30
    DeletionPolicy: Retain
  AccessLogsBucketPolicy:
    Type: AWS::S3::BucketPolicy
    Properties:
      Bucket: !Ref AccessLogsBucket
      PolicyDocument:
        Version: 2012-10-17
        Statement:
          - Sid: SampleCloudFrontAccessLogsBucketRead
            Effect: Allow
            Principal:
              Service: cloudfront.amazonaws.com
            Action: s3:GetBucketAcl
            Resource: !Sub "arn:aws:s3:::${AccessLogsBucket}"
          - Sid: SampleCloudFrontAccessLogsBucketWrite
            Effect: Allow
            Principal:
              Service: cloudfront.amazonaws.com
            Action: s3:PutBucketAcl
            Resource: !Sub "arn:aws:s3:::${AccessLogsBucket}"

Outputs:
  BucketName:
    Description: "BucketName"
    Value: !Ref AccessLogsBucket
  • 前述の「ACL無効のエラー」が出ない設定です

確認

07.jpg

  • 指定したS3バケットにログファイルが保存されます
  • gunzipコマンド等で解凍し、内容を確認します

アクセスログのフィールドは以下の通りです

date time x-edge-location sc-bytes c-ip cs-method cs(Host) cs-uri-stem sc-status cs(Referer) cs(User-Agent) cs-uri-query cs(Cookie) x-edge-result-type x-edge-request-id x-host-header cs-protocol cs-bytes time-taken x-forwarded-for ssl-protocol ssl-cipher x-edge-response-result-type cs-protocol-version fle-status fle-encrypted-fields c-port time-to-first-byte x-edge-detailed-result-type sc-content-type sc-content-len sc-range-start sc-range-end

終わりに

今回はCloudFrontの標準ログ(アクセスログ)を設定しました。
リアルタイムログエッジ関数のログも取得できるため、必要に応じて試そうと思います。

参考ドキュメント

標準ログ (アクセスログ) の設定および使用

ディストリビューションを作成または更新する場合に指定する値

CloudFrontのアクセスログ保存用S3バケットにはACL有効化が必要なので注意しよう

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?