@@ -23,6 +23,7 @@ Metadata:
23
23
- ParentKmsKeyStack
24
24
- ParentS3VirusScanStack
25
25
- ParentVpcEndpointStack
26
+ - ParentS3StackAccessLog
26
27
- Label :
27
28
default : ' S3 Parameters'
28
29
Parameters :
@@ -51,6 +52,10 @@ Parameters:
51
52
Description : ' Optional Stack name of parent VPC endpoint stack based on vpc/vpc-endpoint-s3.yaml template (Required if Access := VpcEndpointRead).'
52
53
Type : String
53
54
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 : ' '
54
59
BucketName :
55
60
Description : ' Optional name of the bucket.'
56
61
Type : String
@@ -59,7 +64,7 @@ Parameters:
59
64
Description : ' Access policy of the bucket.'
60
65
Type : String
61
66
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]
63
68
Versioning :
64
69
Description : ' Enable versioning to keep a backup if objects change.'
65
70
Type : String
@@ -109,11 +114,13 @@ Parameters:
109
114
Default : ' '
110
115
Conditions :
111
116
HasKmsKey : !Not [!Equals [!Ref ParentKmsKeyStack, '']]
117
+ HasS3Bucket : !Not [!Equals [!Ref ParentS3StackAccessLog, '']]
112
118
HasS3VirusScan : !Not [!Equals [!Ref ParentS3VirusScanStack, '']]
113
119
HasPrivateAccess : !Equals [!Ref Access, Private]
114
120
HasPublicReadAccess : !Equals [!Ref Access, PublicRead]
115
121
HasCloudFrontReadAccess : !Equals [!Ref Access, CloudFrontRead]
116
122
HasElbAccessLogWriteAccess : !Equals [!Ref Access, ElbAccessLogWrite]
123
+ HasS3AccessLogWrite : !Equals [!Ref Access, S3AccessLogWrite]
117
124
HasConfigWriteAccess : !Equals [!Ref Access, ConfigWrite]
118
125
HasCloudTrailWriteAccess : !Equals [!Ref Access, CloudTrailWrite]
119
126
HasVpcEndpointReadAccess : !Equals [!Ref Access, VpcEndpointRead]
@@ -135,6 +142,8 @@ Resources:
135
142
Type : ' AWS::S3::Bucket'
136
143
Properties :
137
144
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']
138
147
LifecycleConfiguration :
139
148
Rules :
140
149
- AbortIncompleteMultipartUpload :
0 commit comments