Skip to content

Commit b9d843c

Browse files
[Improvement] state/s3 - Support access logs (widdix#595)
1 parent 1483b4d commit b9d843c

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

state/s3.yaml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Metadata:
2323
- ParentKmsKeyStack
2424
- ParentS3VirusScanStack
2525
- ParentVpcEndpointStack
26+
- ParentS3StackAccessLog
2627
- Label:
2728
default: 'S3 Parameters'
2829
Parameters:
@@ -51,6 +52,10 @@ Parameters:
5152
Description: 'Optional Stack name of parent VPC endpoint stack based on vpc/vpc-endpoint-s3.yaml template (Required if Access := VpcEndpointRead).'
5253
Type: String
5354
Default: ''
55+
ParentS3StackAccessLog:
56+
Description: 'Optional stack name of parent s3 stack based on state/s3.yaml template (with Access set to S3AccessLogWrite) to store access logs.'
57+
Type: String
58+
Default: ''
5459
BucketName:
5560
Description: 'Optional name of the bucket.'
5661
Type: String
@@ -59,7 +64,7 @@ Parameters:
5964
Description: 'Access policy of the bucket.'
6065
Type: String
6166
Default: Private
62-
AllowedValues: [Private, PublicRead, CloudFrontRead, CloudFrontAccessLogWrite, ElbAccessLogWrite, ConfigWrite, CloudTrailWrite, VpcEndpointRead, FlowLogWrite]
67+
AllowedValues: [Private, PublicRead, CloudFrontRead, CloudFrontAccessLogWrite, ElbAccessLogWrite, S3AccessLogWrite, ConfigWrite, CloudTrailWrite, VpcEndpointRead, FlowLogWrite]
6368
Versioning:
6469
Description: 'Enable versioning to keep a backup if objects change.'
6570
Type: String
@@ -109,11 +114,13 @@ Parameters:
109114
Default: ''
110115
Conditions:
111116
HasKmsKey: !Not [!Equals [!Ref ParentKmsKeyStack, '']]
117+
HasS3Bucket: !Not [!Equals [!Ref ParentS3StackAccessLog, '']]
112118
HasS3VirusScan: !Not [!Equals [!Ref ParentS3VirusScanStack, '']]
113119
HasPrivateAccess: !Equals [!Ref Access, Private]
114120
HasPublicReadAccess: !Equals [!Ref Access, PublicRead]
115121
HasCloudFrontReadAccess: !Equals [!Ref Access, CloudFrontRead]
116122
HasElbAccessLogWriteAccess: !Equals [!Ref Access, ElbAccessLogWrite]
123+
HasS3AccessLogWrite: !Equals [!Ref Access, S3AccessLogWrite]
117124
HasConfigWriteAccess: !Equals [!Ref Access, ConfigWrite]
118125
HasCloudTrailWriteAccess: !Equals [!Ref Access, CloudTrailWrite]
119126
HasVpcEndpointReadAccess: !Equals [!Ref Access, VpcEndpointRead]
@@ -135,6 +142,8 @@ Resources:
135142
Type: 'AWS::S3::Bucket'
136143
Properties:
137144
BucketName: !If [HasBucketName, !Ref BucketName, !Ref 'AWS::NoValue']
145+
LoggingConfiguration: !If [HasS3Bucket, {DestinationBucketName: {'Fn::ImportValue': !Sub '${ParentS3StackAccessLog}-BucketName'}, LogFilePrefix: !Ref 'AWS::StackName'}, !Ref 'AWS::NoValue']
146+
AccessControl: !If [HasS3AccessLogWrite, LogDeliveryWrite, !Ref 'AWS::NoValue']
138147
LifecycleConfiguration:
139148
Rules:
140149
- AbortIncompleteMultipartUpload:

0 commit comments

Comments
 (0)