--- AWSTemplateFormatVersion: '2010-09-09' Parameters: OperatorEmail: Description: Email address to notify when new logs are published. Type: String Default: fake-email@fake-fake-fake-email.com Resources: S3Bucket: DeletionPolicy: Retain Type: AWS::S3::Bucket Properties: {} BucketPolicy: Type: AWS::S3::BucketPolicy Properties: Bucket: Ref: S3Bucket PolicyDocument: Version: '2012-10-17' Statement: - Sid: AWSCloudTrailAclCheck Effect: Allow Principal: Service: cloudtrail.amazonaws.com Action: s3:GetBucketAcl Resource: Fn::Join: - '' - - 'arn:aws:s3:::' - Ref: S3Bucket - Sid: AWSCloudTrailWrite Effect: Allow Principal: Service: cloudtrail.amazonaws.com Action: s3:PutObject Resource: Fn::Join: - '' - - 'arn:aws:s3:::' - Ref: S3Bucket - "/AWSLogs/" - Ref: AWS::AccountId - "/*" Condition: StringEquals: s3:x-amz-acl: bucket-owner-full-control Topic: Type: AWS::SNS::Topic Properties: Subscription: - Endpoint: Ref: OperatorEmail Protocol: email TopicPolicy: Type: AWS::SNS::TopicPolicy Properties: Topics: - Ref: Topic PolicyDocument: Version: '2008-10-17' Statement: - Sid: AWSCloudTrailSNSPolicy Effect: Allow Principal: Service: cloudtrail.amazonaws.com Resource: "*" Action: SNS:Publish myTrail: DependsOn: - BucketPolicy - TopicPolicy Type: AWS::CloudTrail::Trail Properties: S3BucketName: Ref: S3Bucket SnsTopicName: Fn::GetAtt: - Topic - TopicName IsLogging: true IsMultiRegionTrail: false