// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Snapshot test 1`] = ` Object { "Mappings": Object { "DefaultCrNodeVersionMap": Object { "af-south-1": Object { "value": "nodejs16.x", }, "ap-east-1": Object { "value": "nodejs16.x", }, "ap-northeast-1": Object { "value": "nodejs16.x", }, "ap-northeast-2": Object { "value": "nodejs16.x", }, "ap-northeast-3": Object { "value": "nodejs16.x", }, "ap-south-1": Object { "value": "nodejs16.x", }, "ap-south-2": Object { "value": "nodejs16.x", }, "ap-southeast-1": Object { "value": "nodejs16.x", }, "ap-southeast-2": Object { "value": "nodejs16.x", }, "ap-southeast-3": Object { "value": "nodejs16.x", }, "ca-central-1": Object { "value": "nodejs16.x", }, "cn-north-1": Object { "value": "nodejs16.x", }, "cn-northwest-1": Object { "value": "nodejs16.x", }, "eu-central-1": Object { "value": "nodejs16.x", }, "eu-central-2": Object { "value": "nodejs16.x", }, "eu-north-1": Object { "value": "nodejs16.x", }, "eu-south-1": Object { "value": "nodejs16.x", }, "eu-south-2": Object { "value": "nodejs16.x", }, "eu-west-1": Object { "value": "nodejs16.x", }, "eu-west-2": Object { "value": "nodejs16.x", }, "eu-west-3": Object { "value": "nodejs16.x", }, "me-central-1": Object { "value": "nodejs16.x", }, "me-south-1": Object { "value": "nodejs16.x", }, "sa-east-1": Object { "value": "nodejs16.x", }, "us-east-1": Object { "value": "nodejs16.x", }, "us-east-2": Object { "value": "nodejs16.x", }, "us-gov-east-1": Object { "value": "nodejs16.x", }, "us-gov-west-1": Object { "value": "nodejs16.x", }, "us-iso-east-1": Object { "value": "nodejs14.x", }, "us-iso-west-1": Object { "value": "nodejs14.x", }, "us-isob-east-1": Object { "value": "nodejs14.x", }, "us-west-1": Object { "value": "nodejs16.x", }, "us-west-2": Object { "value": "nodejs16.x", }, }, }, "Outputs": Object { "AuthUserPoolClientId8216BF9A": Object { "Value": Object { "Ref": "AuthUserPoolClientC635291F", }, }, "AuthUserPoolIdC0605E59": Object { "Value": Object { "Ref": "AuthUserPool8115E87F", }, }, "BackendApiBackendApiUrl4A0A7879": Object { "Value": Object { "Fn::GetAtt": Array [ "BackendApiC9FA6A88", "GraphQLUrl", ], }, }, "FrontendDomainName": Object { "Value": Object { "Fn::Join": Array [ "", Array [ "https://", Object { "Fn::GetAtt": Array [ "FrontendDistributionCFDistributionAE9BA647", "DomainName", ], }, ], ], }, }, }, "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "AccessLogBucketAutoDeleteObjectsCustomResource01AB31E8": Object { "DeletionPolicy": "Delete", "DependsOn": Array [ "AccessLogBucketPolicyF52D2D01", ], "Properties": Object { "BucketName": Object { "Ref": "AccessLogBucketDA470295", }, "ServiceToken": Object { "Fn::GetAtt": Array [ "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", "Arn", ], }, }, "Type": "Custom::S3AutoDeleteObjects", "UpdateReplacePolicy": "Delete", }, "AccessLogBucketDA470295": Object { "DeletionPolicy": "Delete", "Properties": Object { "BucketEncryption": Object { "ServerSideEncryptionConfiguration": Array [ Object { "ServerSideEncryptionByDefault": Object { "SSEAlgorithm": "AES256", }, }, ], }, "OwnershipControls": Object { "Rules": Array [ Object { "ObjectOwnership": "ObjectWriter", }, ], }, "PublicAccessBlockConfiguration": Object { "BlockPublicAcls": true, "BlockPublicPolicy": true, "IgnorePublicAcls": true, "RestrictPublicBuckets": true, }, "Tags": Array [ Object { "Key": "aws-cdk:auto-delete-objects", "Value": "true", }, ], }, "Type": "AWS::S3::Bucket", "UpdateReplacePolicy": "Delete", }, "AccessLogBucketPolicyF52D2D01": Object { "Properties": Object { "Bucket": Object { "Ref": "AccessLogBucketDA470295", }, "PolicyDocument": Object { "Statement": Array [ Object { "Action": "s3:*", "Condition": Object { "Bool": Object { "aws:SecureTransport": "false", }, }, "Effect": "Deny", "Principal": Object { "AWS": "*", }, "Resource": Array [ Object { "Fn::GetAtt": Array [ "AccessLogBucketDA470295", "Arn", ], }, Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "AccessLogBucketDA470295", "Arn", ], }, "/*", ], ], }, ], }, Object { "Action": Array [ "s3:GetBucket*", "s3:List*", "s3:DeleteObject*", ], "Effect": "Allow", "Principal": Object { "AWS": Object { "Fn::GetAtt": Array [ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", "Arn", ], }, }, "Resource": Array [ Object { "Fn::GetAtt": Array [ "AccessLogBucketDA470295", "Arn", ], }, Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "AccessLogBucketDA470295", "Arn", ], }, "/*", ], ], }, ], }, ], "Version": "2012-10-17", }, }, "Type": "AWS::S3::BucketPolicy", }, "AuthUserPool8115E87F": Object { "DeletionPolicy": "Retain", "Properties": Object { "AccountRecoverySetting": Object { "RecoveryMechanisms": Array [ Object { "Name": "verified_phone_number", "Priority": 1, }, Object { "Name": "verified_email", "Priority": 2, }, ], }, "AdminCreateUserConfig": Object { "AllowAdminCreateUserOnly": false, }, "AutoVerifiedAttributes": Array [ "email", ], "EmailVerificationMessage": "The verification code to your new account is {####}", "EmailVerificationSubject": "Verify your new account", "Policies": Object { "PasswordPolicy": Object { "MinimumLength": 8, "RequireNumbers": true, "RequireSymbols": true, "RequireUppercase": true, }, }, "SmsVerificationMessage": "The verification code to your new account is {####}", "UsernameAttributes": Array [ "email", ], "VerificationMessageTemplate": Object { "DefaultEmailOption": "CONFIRM_WITH_CODE", "EmailMessage": "The verification code to your new account is {####}", "EmailSubject": "Verify your new account", "SmsMessage": "The verification code to your new account is {####}", }, }, "Type": "AWS::Cognito::UserPool", "UpdateReplacePolicy": "Retain", }, "AuthUserPoolClientC635291F": Object { "Properties": Object { "AllowedOAuthFlows": Array [ "implicit", "code", ], "AllowedOAuthFlowsUserPoolClient": true, "AllowedOAuthScopes": Array [ "profile", "phone", "email", "openid", "aws.cognito.signin.user.admin", ], "CallbackURLs": Array [ "https://example.com", ], "IdTokenValidity": 1440, "SupportedIdentityProviders": Array [ "COGNITO", ], "TokenValidityUnits": Object { "IdToken": "minutes", }, "UserPoolId": Object { "Ref": "AuthUserPool8115E87F", }, }, "Type": "AWS::Cognito::UserPoolClient", }, "BackendApiApiLogsRoleEB9B6309": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "appsync.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "ManagedPolicyArns": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":iam::aws:policy/service-role/AWSAppSyncPushToCloudWatchLogs", ], ], }, ], }, "Type": "AWS::IAM::Role", }, "BackendApiC9FA6A88": Object { "Properties": Object { "AuthenticationType": "AMAZON_COGNITO_USER_POOLS", "LogConfig": Object { "CloudWatchLogsRoleArn": Object { "Fn::GetAtt": Array [ "BackendApiApiLogsRoleEB9B6309", "Arn", ], }, "FieldLogLevel": "ALL", }, "Name": "Api", "UserPoolConfig": Object { "AwsRegion": Object { "Ref": "AWS::Region", }, "DefaultAction": "ALLOW", "UserPoolId": Object { "Ref": "AuthUserPool8115E87F", }, }, }, "Type": "AWS::AppSync::GraphQLApi", }, "BackendApiChimeDataSourceDB0CB8BE": Object { "Properties": Object { "ApiId": Object { "Fn::GetAtt": Array [ "BackendApiC9FA6A88", "ApiId", ], }, "LambdaConfig": Object { "LambdaFunctionArn": Object { "Fn::GetAtt": Array [ "BackendApiChimeResolverFunctionF715C39D", "Arn", ], }, }, "Name": "ChimeDataSource", "ServiceRoleArn": Object { "Fn::GetAtt": Array [ "BackendApiChimeDataSourceServiceRole1862C0F4", "Arn", ], }, "Type": "AWS_LAMBDA", }, "Type": "AWS::AppSync::DataSource", }, "BackendApiChimeDataSourceServiceRole1862C0F4": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "appsync.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "BackendApiChimeDataSourceServiceRoleDefaultPolicyD1300BB8": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Resource": Array [ Object { "Fn::GetAtt": Array [ "BackendApiChimeResolverFunctionF715C39D", "Arn", ], }, Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "BackendApiChimeResolverFunctionF715C39D", "Arn", ], }, ":*", ], ], }, ], }, ], "Version": "2012-10-17", }, "PolicyName": "BackendApiChimeDataSourceServiceRoleDefaultPolicyD1300BB8", "Roles": Array [ Object { "Ref": "BackendApiChimeDataSourceServiceRole1862C0F4", }, ], }, "Type": "AWS::IAM::Policy", }, "BackendApiChimeResolverFunctionF715C39D": Object { "DependsOn": Array [ "BackendApiChimeResolverFunctionServiceRoleDefaultPolicy27CD3C5E", "BackendApiChimeResolverFunctionServiceRole1EDDA251", ], "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, "S3Key": "f72daf503e61afa751063462d6d58220378b1ac5587d7c1808f4a90b093482fa.zip", }, "Environment": Object { "Variables": Object { "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1", }, }, "Handler": "index.handler", "Role": Object { "Fn::GetAtt": Array [ "BackendApiChimeResolverFunctionServiceRole1EDDA251", "Arn", ], }, "Runtime": Object { "Fn::FindInMap": Array [ "DefaultCrNodeVersionMap", Object { "Ref": "AWS::Region", }, "value", ], }, "Timeout": 30, }, "Type": "AWS::Lambda::Function", }, "BackendApiChimeResolverFunctionServiceRole1EDDA251": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "ManagedPolicyArns": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", ], ], }, ], }, "Type": "AWS::IAM::Role", }, "BackendApiChimeResolverFunctionServiceRoleDefaultPolicy27CD3C5E": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "chime:createAttendee", "chime:createMeeting", ], "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "BackendApiChimeResolverFunctionServiceRoleDefaultPolicy27CD3C5E", "Roles": Array [ Object { "Ref": "BackendApiChimeResolverFunctionServiceRole1EDDA251", }, ], }, "Type": "AWS::IAM::Policy", }, "BackendApiCreateChimeMeeting4EE28BC4": Object { "DependsOn": Array [ "BackendApiChimeDataSourceDB0CB8BE", "BackendApiSchema3E54B1EF", ], "Properties": Object { "ApiId": Object { "Fn::GetAtt": Array [ "BackendApiC9FA6A88", "ApiId", ], }, "DataSourceName": "ChimeDataSource", "FieldName": "createChimeMeeting", "Kind": "UNIT", "RequestMappingTemplate": "{\\"version\\": \\"2017-02-28\\", \\"operation\\": \\"Invoke\\", \\"payload\\": $util.toJson($ctx)}", "ResponseMappingTemplate": "$util.toJson($ctx.result)", "TypeName": "Mutation", }, "Type": "AWS::AppSync::Resolver", }, "BackendApiCreateMeetingInvitationA97C9EB0": Object { "DependsOn": Array [ "BackendApiSchema3E54B1EF", "BackendApiDummyDataSource541C491E", ], "Properties": Object { "ApiId": Object { "Fn::GetAtt": Array [ "BackendApiC9FA6A88", "ApiId", ], }, "DataSourceName": "DummyDataSource", "FieldName": "createMeetingInvitation", "Kind": "UNIT", "RequestMappingTemplate": " #if ($context.identity.sub != $context.arguments.source) $util.unauthorized() #end { \\"version\\": \\"2018-05-29\\", \\"payload\\": $util.toJson($context.arguments) } ", "ResponseMappingTemplate": "$util.toJson($context.result)", "TypeName": "Mutation", }, "Type": "AWS::AppSync::Resolver", }, "BackendApiDummyDataSource541C491E": Object { "Properties": Object { "ApiId": Object { "Fn::GetAtt": Array [ "BackendApiC9FA6A88", "ApiId", ], }, "Name": "DummyDataSource", "Type": "NONE", }, "Type": "AWS::AppSync::DataSource", }, "BackendApiJoinMeetingEF98A0CD": Object { "DependsOn": Array [ "BackendApiChimeDataSourceDB0CB8BE", "BackendApiSchema3E54B1EF", ], "Properties": Object { "ApiId": Object { "Fn::GetAtt": Array [ "BackendApiC9FA6A88", "ApiId", ], }, "DataSourceName": "ChimeDataSource", "FieldName": "joinMeeting", "Kind": "UNIT", "RequestMappingTemplate": "{\\"version\\": \\"2017-02-28\\", \\"operation\\": \\"Invoke\\", \\"payload\\": $util.toJson($ctx)}", "ResponseMappingTemplate": "$util.toJson($ctx.result)", "TypeName": "Mutation", }, "Type": "AWS::AppSync::Resolver", }, "BackendApiOnMeetingInvited4F125712": Object { "DependsOn": Array [ "BackendApiSchema3E54B1EF", "BackendApiDummyDataSource541C491E", ], "Properties": Object { "ApiId": Object { "Fn::GetAtt": Array [ "BackendApiC9FA6A88", "ApiId", ], }, "DataSourceName": "DummyDataSource", "FieldName": "onMeetingInvited", "Kind": "UNIT", "RequestMappingTemplate": " #if ($context.identity.sub != $context.arguments.target) $util.unauthorized() #end { \\"version\\": \\"2018-05-29\\", \\"payload\\": {} } ", "ResponseMappingTemplate": "$util.toJson(null)", "TypeName": "Subscription", }, "Type": "AWS::AppSync::Resolver", }, "BackendApiSchema3E54B1EF": Object { "Properties": Object { "ApiId": Object { "Fn::GetAtt": Array [ "BackendApiC9FA6A88", "ApiId", ], }, "Definition": "schema { query: Query mutation: Mutation subscription: Subscription } type ChimeMeeting @aws_cognito_user_pools { meetingResponse: String! attendeeResponse: String! } type MeetingInvitation @aws_cognito_user_pools { target: ID! source: ID! meetingResponse: String! } type Query { dummy: ChimeMeeting } type Mutation { createChimeMeeting: ChimeMeeting @aws_cognito_user_pools createMeetingInvitation( target: ID! source: ID! meetingResponse: String! ): MeetingInvitation @aws_cognito_user_pools joinMeeting(meetingResponse: String!): ChimeMeeting @aws_cognito_user_pools } type Subscription { onMeetingInvited(target: ID!): MeetingInvitation @aws_subscribe(mutations: [\\"createMeetingInvitation\\"]) @aws_cognito_user_pools } ", }, "Type": "AWS::AppSync::GraphQLSchema", }, "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536": Object { "DependsOn": Array [ "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", ], "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, "S3Key": "9eb41a5505d37607ac419321497a4f8c21cf0ee1f9b4a6b29aa04301aea5c7fd.zip", }, "Environment": Object { "Variables": Object { "AWS_CA_BUNDLE": "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem", }, }, "Handler": "index.handler", "Layers": Array [ Object { "Ref": "FrontendReactBuildDeployAwsCliLayer6AE670F6", }, ], "Role": Object { "Fn::GetAtt": Array [ "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", "Arn", ], }, "Runtime": "python3.9", "Timeout": 900, }, "Type": "AWS::Lambda::Function", }, "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "ManagedPolicyArns": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", ], ], }, ], }, "Type": "AWS::IAM::Role", }, "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "s3:GetObject*", "s3:GetBucket*", "s3:List*", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, ], ], }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, "/*", ], ], }, ], }, Object { "Action": Array [ "s3:GetObject*", "s3:GetBucket*", "s3:List*", "s3:DeleteObject*", "s3:PutObject", "s3:PutObjectLegalHold", "s3:PutObjectRetention", "s3:PutObjectTagging", "s3:PutObjectVersionTagging", "s3:Abort*", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::GetAtt": Array [ "FrontendAssetBucket3FA96E62", "Arn", ], }, Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "FrontendAssetBucket3FA96E62", "Arn", ], }, "/*", ], ], }, ], }, Object { "Action": Array [ "cloudfront:GetInvalidation", "cloudfront:CreateInvalidation", ], "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", "Roles": Array [ Object { "Ref": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", }, ], }, "Type": "AWS::IAM::Policy", }, "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F": Object { "DependsOn": Array [ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", ], "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, "S3Key": "350185a1069fa20a23a583e20c77f6844218bd73097902362dc94f1a108f5d89.zip", }, "Description": Object { "Fn::Join": Array [ "", Array [ "Lambda function for auto-deleting objects in ", Object { "Ref": "AccessLogBucketDA470295", }, " S3 bucket.", ], ], }, "Handler": "__entrypoint__.handler", "MemorySize": 128, "Role": Object { "Fn::GetAtt": Array [ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", "Arn", ], }, "Runtime": "nodejs16.x", "Timeout": 900, }, "Type": "AWS::Lambda::Function", }, "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "ManagedPolicyArns": Array [ Object { "Fn::Sub": "arn:\${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", }, ], }, "Type": "AWS::IAM::Role", }, "FrontendAssetBucket3FA96E62": Object { "DeletionPolicy": "Delete", "Properties": Object { "BucketEncryption": Object { "ServerSideEncryptionConfiguration": Array [ Object { "ServerSideEncryptionByDefault": Object { "SSEAlgorithm": "AES256", }, }, ], }, "PublicAccessBlockConfiguration": Object { "BlockPublicAcls": true, "BlockPublicPolicy": true, "IgnorePublicAcls": true, "RestrictPublicBuckets": true, }, "Tags": Array [ Object { "Key": "aws-cdk:auto-delete-objects", "Value": "true", }, Object { "Key": "aws-cdk:cr-owned:e1ed62f7", "Value": "true", }, ], }, "Type": "AWS::S3::Bucket", "UpdateReplacePolicy": "Delete", }, "FrontendAssetBucketAutoDeleteObjectsCustomResource8D0834F0": Object { "DeletionPolicy": "Delete", "DependsOn": Array [ "FrontendAssetBucketPolicyE9D0C32D", ], "Properties": Object { "BucketName": Object { "Ref": "FrontendAssetBucket3FA96E62", }, "ServiceToken": Object { "Fn::GetAtt": Array [ "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", "Arn", ], }, }, "Type": "Custom::S3AutoDeleteObjects", "UpdateReplacePolicy": "Delete", }, "FrontendAssetBucketPolicyE9D0C32D": Object { "Properties": Object { "Bucket": Object { "Ref": "FrontendAssetBucket3FA96E62", }, "PolicyDocument": Object { "Statement": Array [ Object { "Action": "s3:*", "Condition": Object { "Bool": Object { "aws:SecureTransport": "false", }, }, "Effect": "Deny", "Principal": Object { "AWS": "*", }, "Resource": Array [ Object { "Fn::GetAtt": Array [ "FrontendAssetBucket3FA96E62", "Arn", ], }, Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "FrontendAssetBucket3FA96E62", "Arn", ], }, "/*", ], ], }, ], }, Object { "Action": Array [ "s3:GetBucket*", "s3:List*", "s3:DeleteObject*", ], "Effect": "Allow", "Principal": Object { "AWS": Object { "Fn::GetAtt": Array [ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", "Arn", ], }, }, "Resource": Array [ Object { "Fn::GetAtt": Array [ "FrontendAssetBucket3FA96E62", "Arn", ], }, Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "FrontendAssetBucket3FA96E62", "Arn", ], }, "/*", ], ], }, ], }, Object { "Action": "s3:GetObject", "Effect": "Allow", "Principal": Object { "CanonicalUser": Object { "Fn::GetAtt": Array [ "FrontendOriginAccessIdentity15749265", "S3CanonicalUserId", ], }, }, "Resource": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "FrontendAssetBucket3FA96E62", "Arn", ], }, "/*", ], ], }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::S3::BucketPolicy", }, "FrontendDistributionCFDistributionAE9BA647": Object { "Properties": Object { "DistributionConfig": Object { "CustomErrorResponses": Array [ Object { "ErrorCachingMinTTL": 0, "ErrorCode": 404, "ResponseCode": 200, "ResponsePagePath": "/", }, Object { "ErrorCachingMinTTL": 0, "ErrorCode": 403, "ResponseCode": 200, "ResponsePagePath": "/", }, ], "DefaultCacheBehavior": Object { "AllowedMethods": Array [ "GET", "HEAD", ], "CachedMethods": Array [ "GET", "HEAD", ], "Compress": true, "ForwardedValues": Object { "Cookies": Object { "Forward": "none", }, "QueryString": false, }, "TargetOriginId": "origin1", "ViewerProtocolPolicy": "redirect-to-https", }, "DefaultRootObject": "index.html", "Enabled": true, "HttpVersion": "http2", "IPV6Enabled": true, "Logging": Object { "Bucket": Object { "Fn::GetAtt": Array [ "AccessLogBucketDA470295", "RegionalDomainName", ], }, "IncludeCookies": false, "Prefix": "Frontend/", }, "Origins": Array [ Object { "ConnectionAttempts": 3, "ConnectionTimeout": 10, "DomainName": Object { "Fn::GetAtt": Array [ "FrontendAssetBucket3FA96E62", "RegionalDomainName", ], }, "Id": "origin1", "S3OriginConfig": Object { "OriginAccessIdentity": Object { "Fn::Join": Array [ "", Array [ "origin-access-identity/cloudfront/", Object { "Ref": "FrontendOriginAccessIdentity15749265", }, ], ], }, }, }, ], "PriceClass": "PriceClass_100", "ViewerCertificate": Object { "CloudFrontDefaultCertificate": true, }, }, }, "Type": "AWS::CloudFront::Distribution", }, "FrontendOriginAccessIdentity15749265": Object { "Properties": Object { "CloudFrontOriginAccessIdentityConfig": Object { "Comment": "Allows CloudFront to reach the bucket", }, }, "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", }, "FrontendReactBuildDeployAwsCliLayer6AE670F6": Object { "DependsOn": Array [ "FrontendReactBuildE02FF220", ], "Properties": Object { "Content": Object { "S3Bucket": Object { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, "S3Key": "cff916937906abb9c99e0ecbb4accbc091c734ce975c7ff64b3f4bfae4372b9c.zip", }, "Description": "/opt/awscli/aws", }, "Type": "AWS::Lambda::LayerVersion", }, "FrontendReactBuildDeployCustomResourceA2CE2F1C": Object { "DeletionPolicy": "Delete", "DependsOn": Array [ "FrontendReactBuildE02FF220", ], "Properties": Object { "DestinationBucketName": Object { "Ref": "FrontendAssetBucket3FA96E62", }, "DistributionId": Object { "Ref": "FrontendDistributionCFDistributionAE9BA647", }, "Prune": true, "ServiceToken": Object { "Fn::GetAtt": Array [ "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", "Arn", ], }, "SourceBucketNames": Array [ Object { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, ], "SourceObjectKeys": Array [ "5f62c592ae8acebc91660284e29c1879.zip", ], }, "Type": "Custom::CDKBucketDeployment", "UpdateReplacePolicy": "Delete", }, "FrontendReactBuildE02FF220": Object { "DeletionPolicy": "Delete", "Properties": Object { "ServiceToken": Object { "Fn::GetAtt": Array [ "NodejsBuildCustomResourceHandler25648b212c404f09aa65b6bbb0c446591C4101F8", "Arn", ], }, "buildCommands": Array [ "npm run build", ], "codeBuildProjectName": Object { "Ref": "FrontendReactBuildProject48A6230E", }, "destinationBucketName": Object { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, "destinationObjectKey": "5f62c592ae8acebc91660284e29c1879.zip", "environment": Object { "NEXT_PUBLIC_AWS_REGION": Object { "Ref": "AWS::Region", }, "NEXT_PUBLIC_BACKEND_API_URL": Object { "Fn::GetAtt": Array [ "BackendApiC9FA6A88", "GraphQLUrl", ], }, "NEXT_PUBLIC_USER_POOL_CLIENT_ID": Object { "Ref": "AuthUserPoolClientC635291F", }, "NEXT_PUBLIC_USER_POOL_ID": Object { "Ref": "AuthUserPool8115E87F", }, }, "outputSourceDirectory": "frontend/out", "sources": Array [ Object { "commands": Array [ "npm ci", ], "extractPath": "frontend", "sourceBucketName": Object { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, "sourceObjectKey": "951c82a490fb930ae21b6b4798991d255f4fbb52694a362f23dfa1b1238f5264.zip", }, ], "workingDirectory": "frontend", }, "Type": "Custom::CDKNodejsBuild", "UpdateReplacePolicy": "Delete", }, "FrontendReactBuildProject48A6230E": Object { "Properties": Object { "Artifacts": Object { "Type": "NO_ARTIFACTS", }, "Cache": Object { "Type": "NO_CACHE", }, "EncryptionKey": "alias/aws/s3", "Environment": Object { "ComputeType": "BUILD_GENERAL1_SMALL", "Image": "aws/codebuild/standard:7.0", "ImagePullCredentialsType": "CODEBUILD", "PrivilegedMode": false, "Type": "LINUX_CONTAINER", }, "ServiceRole": Object { "Fn::GetAtt": Array [ "FrontendReactBuildProjectRole67F82260", "Arn", ], }, "Source": Object { "BuildSpec": "{ \\"version\\": \\"0.2\\", \\"phases\\": { \\"install\\": { \\"runtime-versions\\": { \\"nodejs\\": 18 } }, \\"build\\": { \\"commands\\": [ \\"current_dir=$(pwd)\\", \\"\\\\necho \\\\\\"$input\\\\\\"\\\\nfor obj in $(echo \\\\\\"$input\\\\\\" | jq -r '.[] | @base64'); do\\\\n decoded=$(echo \\\\\\"$obj\\\\\\" | base64 --decode)\\\\n assetUrl=$(echo \\\\\\"$decoded\\\\\\" | jq -r '.assetUrl')\\\\n extractPath=$(echo \\\\\\"$decoded\\\\\\" | jq -r '.extractPath')\\\\n commands=$(echo \\\\\\"$decoded\\\\\\" | jq -r '.commands')\\\\n\\\\n # Download the zip file\\\\n aws s3 cp \\\\\\"$assetUrl\\\\\\" temp.zip\\\\n\\\\n # Extract the zip file to the extractPath directory\\\\n mkdir -p \\\\\\"$extractPath\\\\\\"\\\\n unzip temp.zip -d \\\\\\"$extractPath\\\\\\"\\\\n\\\\n # Remove the zip file\\\\n rm temp.zip\\\\n\\\\n # Run the specified commands in the extractPath directory\\\\n cd \\\\\\"$extractPath\\\\\\"\\\\n ls -la\\\\n eval \\\\\\"$commands\\\\\\"\\\\n cd \\\\\\"$current_dir\\\\\\"\\\\n ls -la\\\\ndone\\\\n \\", \\"ls -la\\", \\"cd \\\\\\"$workingDirectory\\\\\\"\\", \\"eval \\\\\\"$buildCommands\\\\\\"\\", \\"ls -la\\", \\"cd \\\\\\"$current_dir\\\\\\"\\", \\"cd \\\\\\"$outputSourceDirectory\\\\\\"\\", \\"zip -r output.zip ./\\", \\"aws s3 cp output.zip \\\\\\"s3://$destinationBucketName/$destinationObjectKey\\\\\\"\\" ] }, \\"post_build\\": { \\"commands\\": [ \\"echo Build completed on \`date\`\\", \\"\\\\nSTATUS='SUCCESS'\\\\nif [ $CODEBUILD_BUILD_SUCCEEDING -ne 1 ] # Test if the build is failing\\\\nthen\\\\nSTATUS='FAILED'\\\\nREASON=\\\\\\"NodejsBuild failed. See CloudWatch Log stream for the detailed reason: \\\\nhttps://$AWS_REGION.console.aws.amazon.com/cloudwatch/home?region=$AWS_REGION#logsV2:log-groups/log-group/\\\\\\\\$252Faws\\\\\\\\$252Fcodebuild\\\\\\\\$252F$projectName/log-events/$CODEBUILD_LOG_PATH\\\\\\"\\\\nfi\\\\ncat < payload.json\\\\n{\\\\n \\\\\\"StackId\\\\\\": \\\\\\"$stackId\\\\\\",\\\\n \\\\\\"RequestId\\\\\\": \\\\\\"$requestId\\\\\\",\\\\n \\\\\\"LogicalResourceId\\\\\\":\\\\\\"$logicalResourceId\\\\\\",\\\\n \\\\\\"PhysicalResourceId\\\\\\": \\\\\\"$destinationObjectKey\\\\\\",\\\\n \\\\\\"Status\\\\\\": \\\\\\"$STATUS\\\\\\",\\\\n \\\\\\"Reason\\\\\\": \\\\\\"$REASON\\\\\\"\\\\n}\\\\nEOF\\\\ncurl -vv -i -X PUT -H 'Content-Type:' -d \\\\\\"@payload.json\\\\\\" \\\\\\"$responseURL\\\\\\"\\\\n \\" ] } } }", "Type": "NO_SOURCE", }, }, "Type": "AWS::CodeBuild::Project", }, "FrontendReactBuildProjectRole67F82260": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "codebuild.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "FrontendReactBuildProjectRoleDefaultPolicyDFEE9CCE": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":logs:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":log-group:/aws/codebuild/", Object { "Ref": "FrontendReactBuildProject48A6230E", }, ], ], }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":logs:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":log-group:/aws/codebuild/", Object { "Ref": "FrontendReactBuildProject48A6230E", }, ":*", ], ], }, ], }, Object { "Action": Array [ "codebuild:CreateReportGroup", "codebuild:CreateReport", "codebuild:UpdateReport", "codebuild:BatchPutTestCases", "codebuild:BatchPutCodeCoverages", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":codebuild:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":report-group/", Object { "Ref": "FrontendReactBuildProject48A6230E", }, "-*", ], ], }, }, Object { "Action": Array [ "s3:GetObject*", "s3:GetBucket*", "s3:List*", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, ], ], }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, "/*", ], ], }, ], }, Object { "Action": Array [ "s3:DeleteObject*", "s3:PutObject", "s3:PutObjectLegalHold", "s3:PutObjectRetention", "s3:PutObjectTagging", "s3:PutObjectVersionTagging", "s3:Abort*", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, ], ], }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, "/*", ], ], }, ], }, ], "Version": "2012-10-17", }, "PolicyName": "FrontendReactBuildProjectRoleDefaultPolicyDFEE9CCE", "Roles": Array [ Object { "Ref": "FrontendReactBuildProjectRole67F82260", }, ], }, "Type": "AWS::IAM::Policy", }, "NodejsBuildCustomResourceHandler25648b212c404f09aa65b6bbb0c446591C4101F8": Object { "DependsOn": Array [ "NodejsBuildCustomResourceHandler25648b212c404f09aa65b6bbb0c44659ServiceRoleDefaultPolicyCF8879D3", "NodejsBuildCustomResourceHandler25648b212c404f09aa65b6bbb0c44659ServiceRoleCB01FBE6", ], "Properties": Object { "Code": Object { "S3Bucket": Object { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, "S3Key": "a89beece57b97d45d5016b9e88de3696daaf6ae49a79344dcb1386fe581a125b.zip", }, "Handler": "index.handler", "Role": Object { "Fn::GetAtt": Array [ "NodejsBuildCustomResourceHandler25648b212c404f09aa65b6bbb0c44659ServiceRoleCB01FBE6", "Arn", ], }, "Runtime": "nodejs18.x", "Timeout": 300, }, "Type": "AWS::Lambda::Function", }, "NodejsBuildCustomResourceHandler25648b212c404f09aa65b6bbb0c44659ServiceRoleCB01FBE6": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "ManagedPolicyArns": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", ], ], }, ], }, "Type": "AWS::IAM::Role", }, "NodejsBuildCustomResourceHandler25648b212c404f09aa65b6bbb0c44659ServiceRoleDefaultPolicyCF8879D3": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": "codebuild:StartBuild", "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "FrontendReactBuildProject48A6230E", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "NodejsBuildCustomResourceHandler25648b212c404f09aa65b6bbb0c44659ServiceRoleDefaultPolicyCF8879D3", "Roles": Array [ Object { "Ref": "NodejsBuildCustomResourceHandler25648b212c404f09aa65b6bbb0c44659ServiceRoleCB01FBE6", }, ], }, "Type": "AWS::IAM::Policy", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `;