通过cloudformation在s3存储桶上启用对象日志记录

时间:2019-10-06 12:53:30

标签: amazon-web-services amazon-s3 amazon-cloudformation amazon-cloudtrail

在AWS S3中,您可以访问控制台并将“对象级日志记录”添加到存储桶中。您创建或选择一个预先存在的跟踪,然后选择读写日志类型。

现在,我正在通过Yaml CloudFormation创建存储桶,并且也想向其中添加一个预先存在的路径(或创建一个新路径)。我怎么做?我找不到任何例子。

2 个答案:

答案 0 :(得分:2)

使用CloudTrail对S3存储桶进行对象记录是通过为CloudTrail中的数据事件定义所谓的事件选择器来完成的。也可以通过CloudFormation获得。以下CloudFormation模板显示了如何完成此操作。重要的部分在下半部分(上半部分仅用于设置CloudTrail可以登录的S3存储桶):

AWSTemplateFormatVersion: "2010-09-09"

Resources:
  s3BucketForTrailData:
    Type: "AWS::S3::Bucket"
  trailBucketPolicy:
    Type: "AWS::S3::BucketPolicy"
    Properties:
      Bucket: !Ref s3BucketForTrailData
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
        - Effect: Allow
          Principal:
            Service: "cloudtrail.amazonaws.com"
          Action: "s3:GetBucketAcl"
          Resource: !Sub "arn:aws:s3:::${s3BucketForTrailData}"
        - Effect: Allow
          Principal:
            Service: "cloudtrail.amazonaws.com"
          Action: "s3:PutObject"
          Resource: !Sub "arn:aws:s3:::${s3BucketForTrailData}/AWSLogs/${AWS::AccountId}/*"
          Condition:
            StringEquals:
              "s3:x-amz-acl": "bucket-owner-full-control"

  s3BucketToBeLogged:
    Type: "AWS::S3::Bucket"
  cloudTrailTrail:
    Type: "AWS::CloudTrail::Trail"
    DependsOn:
      - trailBucketPolicy
    Properties:
      IsLogging: true
      S3BucketName: !Ref s3BucketForTrailData
      EventSelectors:
        - DataResources:
            - Type: "AWS::S3::Object"
              Values:
                - "arn:aws:s3:::"  # log data events for all S3 buckets
                - !Sub "${s3BucketToBeLogged.Arn}/"  # log data events for the S3 bucket defined above
          IncludeManagementEvents: true
          ReadWriteType: All

有关更多详细信息,请查看CloudFormation documentation for CloudTrail event selectors

答案 1 :(得分:0)

虽然只是一样,但这就是我所做的。

cloudtrail:
    Type: AWS::CloudTrail::Trail
    Properties:       
      EnableLogFileValidation: Yes
      EventSelectors: 
        - DataResources:
            - Type: AWS::S3::Object
              Values: 
                - arn:aws:s3:::s3-event-step-bucket/    
          IncludeManagementEvents: Yes
          ReadWriteType: All
      IncludeGlobalServiceEvents: Yes
      IsLogging: Yes
      IsMultiRegionTrail: Yes
      S3BucketName: s3-event-step-bucket-storage       
      TrailName: xyz