// 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 [ "BackendApiED3D8698", "ApiEndpoint", ], }, }, "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<String>", }, }, "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", }, "AsyncJobHandler438266BD": Object { "DependsOn": Array [ "AsyncJobHandlerServiceRoleDefaultPolicy0B2DEDB5", "AsyncJobHandlerServiceRoleFE9F530F", ], "Properties": Object { "Code": Object { "ImageUri": Object { "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:ad6a3e16a079b164a5c207d2354d7b59e90ac7eb0df13ca5ece3e87593ccdfb9", }, }, "Environment": Object { "Variables": Object { "TABLE_NAME": Object { "Ref": "DatabaseB269D8BB", }, }, }, "ImageConfig": Object { "Command": Array [ "handler-job.handler", ], }, "MemorySize": 256, "PackageType": "Image", "ReservedConcurrentExecutions": 1, "Role": Object { "Fn::GetAtt": Array [ "AsyncJobHandlerServiceRoleFE9F530F", "Arn", ], }, "Timeout": 600, }, "Type": "AWS::Lambda::Function", }, "AsyncJobHandlerServiceRoleDefaultPolicy0B2DEDB5": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "dynamodb:BatchGetItem", "dynamodb:GetRecords", "dynamodb:GetShardIterator", "dynamodb:Query", "dynamodb:GetItem", "dynamodb:Scan", "dynamodb:ConditionCheckItem", "dynamodb:BatchWriteItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:DescribeTable", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::GetAtt": Array [ "DatabaseB269D8BB", "Arn", ], }, Object { "Ref": "AWS::NoValue", }, ], }, Object { "Action": Array [ "sqs:ReceiveMessage", "sqs:ChangeMessageVisibility", "sqs:GetQueueUrl", "sqs:DeleteMessage", "sqs:GetQueueAttributes", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "AsyncJobQueue0CD355DA", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "AsyncJobHandlerServiceRoleDefaultPolicy0B2DEDB5", "Roles": Array [ Object { "Ref": "AsyncJobHandlerServiceRoleFE9F530F", }, ], }, "Type": "AWS::IAM::Policy", }, "AsyncJobHandlerServiceRoleFE9F530F": 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", }, "AsyncJobHandlerSqsEventSourceTestStackAsyncJobQueue9C604E6F5924853A": Object { "Properties": Object { "EventSourceArn": Object { "Fn::GetAtt": Array [ "AsyncJobQueue0CD355DA", "Arn", ], }, "FunctionName": Object { "Ref": "AsyncJobHandler438266BD", }, "MaximumBatchingWindowInSeconds": 5, }, "Type": "AWS::Lambda::EventSourceMapping", }, "AsyncJobQueue0CD355DA": Object { "DeletionPolicy": "Delete", "Properties": Object { "KmsMasterKeyId": "alias/aws/sqs", "VisibilityTimeout": 600, }, "Type": "AWS::SQS::Queue", "UpdateReplacePolicy": "Delete", }, "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", }, "BackendApiAuthorizerD604C09E": Object { "Properties": Object { "ApiId": Object { "Ref": "BackendApiED3D8698", }, "AuthorizerType": "JWT", "IdentitySource": Array [ "$request.header.Authorization", ], "JwtConfiguration": Object { "Audience": Array [ Object { "Ref": "AuthUserPoolClientC635291F", }, ], "Issuer": Object { "Fn::Join": Array [ "", Array [ "https://cognito-idp.", Object { "Ref": "AWS::Region", }, ".amazonaws.com/", Object { "Ref": "AuthUserPool8115E87F", }, ], ], }, }, "Name": "Authorizer", }, "Type": "AWS::ApiGatewayV2::Authorizer", }, "BackendApiDELETEproxy5E114AEA": Object { "Properties": Object { "ApiId": Object { "Ref": "BackendApiED3D8698", }, "AuthorizationType": "JWT", "AuthorizerId": Object { "Ref": "BackendApiAuthorizerD604C09E", }, "RouteKey": "DELETE /{proxy+}", "Target": Object { "Fn::Join": Array [ "", Array [ "integrations/", Object { "Ref": "BackendApiGETproxyIntegration291A9206", }, ], ], }, }, "Type": "AWS::ApiGatewayV2::Route", }, "BackendApiDELETEproxyIntegrationPermission8A59D167": Object { "Properties": Object { "Action": "lambda:InvokeFunction", "FunctionName": Object { "Fn::GetAtt": Array [ "BackendApiHandlerF69AE07A", "Arn", ], }, "Principal": "apigateway.amazonaws.com", "SourceArn": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":execute-api:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":", Object { "Ref": "BackendApiED3D8698", }, "/*/*/{proxy+}", ], ], }, }, "Type": "AWS::Lambda::Permission", }, "BackendApiDELETEpublicproxy7B293125": Object { "Properties": Object { "ApiId": Object { "Ref": "BackendApiED3D8698", }, "AuthorizationType": "NONE", "RouteKey": "DELETE /public/{proxy+}", "Target": Object { "Fn::Join": Array [ "", Array [ "integrations/", Object { "Ref": "BackendApiGETpublicproxyPublicIntegration27407C42", }, ], ], }, }, "Type": "AWS::ApiGatewayV2::Route", }, "BackendApiDELETEpublicproxyPublicIntegrationPermission35ACAA42": Object { "Properties": Object { "Action": "lambda:InvokeFunction", "FunctionName": Object { "Fn::GetAtt": Array [ "BackendApiHandlerPublicF3ADF520", "Arn", ], }, "Principal": "apigateway.amazonaws.com", "SourceArn": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":execute-api:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":", Object { "Ref": "BackendApiED3D8698", }, "/*/*/public/{proxy+}", ], ], }, }, "Type": "AWS::Lambda::Permission", }, "BackendApiDefaultStage395BF519": Object { "Properties": Object { "ApiId": Object { "Ref": "BackendApiED3D8698", }, "AutoDeploy": true, "StageName": "$default", }, "Type": "AWS::ApiGatewayV2::Stage", }, "BackendApiED3D8698": Object { "Properties": Object { "CorsConfiguration": Object { "AllowHeaders": Array [ "*", ], "AllowMethods": Array [ "GET", "HEAD", "OPTIONS", "POST", "PUT", ], "AllowOrigins": Array [ "*", ], "MaxAge": 864000, }, "Name": "Default", "ProtocolType": "HTTP", }, "Type": "AWS::ApiGatewayV2::Api", }, "BackendApiGETproxyFCC836F3": Object { "Properties": Object { "ApiId": Object { "Ref": "BackendApiED3D8698", }, "AuthorizationType": "JWT", "AuthorizerId": Object { "Ref": "BackendApiAuthorizerD604C09E", }, "RouteKey": "GET /{proxy+}", "Target": Object { "Fn::Join": Array [ "", Array [ "integrations/", Object { "Ref": "BackendApiGETproxyIntegration291A9206", }, ], ], }, }, "Type": "AWS::ApiGatewayV2::Route", }, "BackendApiGETproxyIntegration291A9206": Object { "Properties": Object { "ApiId": Object { "Ref": "BackendApiED3D8698", }, "IntegrationType": "AWS_PROXY", "IntegrationUri": Object { "Fn::GetAtt": Array [ "BackendApiHandlerF69AE07A", "Arn", ], }, "PayloadFormatVersion": "2.0", }, "Type": "AWS::ApiGatewayV2::Integration", }, "BackendApiGETproxyIntegrationPermissionA99552CF": Object { "Properties": Object { "Action": "lambda:InvokeFunction", "FunctionName": Object { "Fn::GetAtt": Array [ "BackendApiHandlerF69AE07A", "Arn", ], }, "Principal": "apigateway.amazonaws.com", "SourceArn": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":execute-api:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":", Object { "Ref": "BackendApiED3D8698", }, "/*/*/{proxy+}", ], ], }, }, "Type": "AWS::Lambda::Permission", }, "BackendApiGETpublicproxy5F167DDD": Object { "Properties": Object { "ApiId": Object { "Ref": "BackendApiED3D8698", }, "AuthorizationType": "NONE", "RouteKey": "GET /public/{proxy+}", "Target": Object { "Fn::Join": Array [ "", Array [ "integrations/", Object { "Ref": "BackendApiGETpublicproxyPublicIntegration27407C42", }, ], ], }, }, "Type": "AWS::ApiGatewayV2::Route", }, "BackendApiGETpublicproxyPublicIntegration27407C42": Object { "Properties": Object { "ApiId": Object { "Ref": "BackendApiED3D8698", }, "IntegrationType": "AWS_PROXY", "IntegrationUri": Object { "Fn::GetAtt": Array [ "BackendApiHandlerPublicF3ADF520", "Arn", ], }, "PayloadFormatVersion": "2.0", }, "Type": "AWS::ApiGatewayV2::Integration", }, "BackendApiGETpublicproxyPublicIntegrationPermission42ACEAE2": Object { "Properties": Object { "Action": "lambda:InvokeFunction", "FunctionName": Object { "Fn::GetAtt": Array [ "BackendApiHandlerPublicF3ADF520", "Arn", ], }, "Principal": "apigateway.amazonaws.com", "SourceArn": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":execute-api:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":", Object { "Ref": "BackendApiED3D8698", }, "/*/*/public/{proxy+}", ], ], }, }, "Type": "AWS::Lambda::Permission", }, "BackendApiHandlerF69AE07A": Object { "DependsOn": Array [ "BackendApiHandlerServiceRoleDefaultPolicyED65AEB4", "BackendApiHandlerServiceRoleD7E0A5D4", ], "Properties": Object { "Code": Object { "ImageUri": Object { "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:ad6a3e16a079b164a5c207d2354d7b59e90ac7eb0df13ca5ece3e87593ccdfb9", }, }, "Environment": Object { "Variables": Object { "CORS_ALLOW_ORIGINS": "*", "JOB_QUEUE_NAME": Object { "Fn::GetAtt": Array [ "AsyncJobQueue0CD355DA", "QueueName", ], }, "TABLE_NAME": Object { "Ref": "DatabaseB269D8BB", }, }, }, "MemorySize": 256, "PackageType": "Image", "Role": Object { "Fn::GetAtt": Array [ "BackendApiHandlerServiceRoleD7E0A5D4", "Arn", ], }, "Timeout": 30, }, "Type": "AWS::Lambda::Function", }, "BackendApiHandlerPublicF3ADF520": Object { "DependsOn": Array [ "BackendApiHandlerPublicServiceRoleDefaultPolicy78498204", "BackendApiHandlerPublicServiceRoleB93A19E2", ], "Properties": Object { "Code": Object { "ImageUri": Object { "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:ad6a3e16a079b164a5c207d2354d7b59e90ac7eb0df13ca5ece3e87593ccdfb9", }, }, "Environment": Object { "Variables": Object { "CORS_ALLOW_ORIGINS": "*", "TABLE_NAME": Object { "Ref": "DatabaseB269D8BB", }, }, }, "ImageConfig": Object { "Command": Array [ "handler-public.handler", ], }, "MemorySize": 256, "PackageType": "Image", "Role": Object { "Fn::GetAtt": Array [ "BackendApiHandlerPublicServiceRoleB93A19E2", "Arn", ], }, "Timeout": 30, }, "Type": "AWS::Lambda::Function", }, "BackendApiHandlerPublicServiceRoleB93A19E2": 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", }, "BackendApiHandlerPublicServiceRoleDefaultPolicy78498204": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "dynamodb:BatchGetItem", "dynamodb:GetRecords", "dynamodb:GetShardIterator", "dynamodb:Query", "dynamodb:GetItem", "dynamodb:Scan", "dynamodb:ConditionCheckItem", "dynamodb:BatchWriteItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:DescribeTable", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::GetAtt": Array [ "DatabaseB269D8BB", "Arn", ], }, Object { "Ref": "AWS::NoValue", }, ], }, ], "Version": "2012-10-17", }, "PolicyName": "BackendApiHandlerPublicServiceRoleDefaultPolicy78498204", "Roles": Array [ Object { "Ref": "BackendApiHandlerPublicServiceRoleB93A19E2", }, ], }, "Type": "AWS::IAM::Policy", }, "BackendApiHandlerServiceRoleD7E0A5D4": 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", }, "BackendApiHandlerServiceRoleDefaultPolicyED65AEB4": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "dynamodb:BatchGetItem", "dynamodb:GetRecords", "dynamodb:GetShardIterator", "dynamodb:Query", "dynamodb:GetItem", "dynamodb:Scan", "dynamodb:ConditionCheckItem", "dynamodb:BatchWriteItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:DescribeTable", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::GetAtt": Array [ "DatabaseB269D8BB", "Arn", ], }, Object { "Ref": "AWS::NoValue", }, ], }, Object { "Action": Array [ "sqs:SendMessage", "sqs:GetQueueAttributes", "sqs:GetQueueUrl", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "AsyncJobQueue0CD355DA", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "BackendApiHandlerServiceRoleDefaultPolicyED65AEB4", "Roles": Array [ Object { "Ref": "BackendApiHandlerServiceRoleD7E0A5D4", }, ], }, "Type": "AWS::IAM::Policy", }, "BackendApiPOSTproxy1D699989": Object { "Properties": Object { "ApiId": Object { "Ref": "BackendApiED3D8698", }, "AuthorizationType": "JWT", "AuthorizerId": Object { "Ref": "BackendApiAuthorizerD604C09E", }, "RouteKey": "POST /{proxy+}", "Target": Object { "Fn::Join": Array [ "", Array [ "integrations/", Object { "Ref": "BackendApiGETproxyIntegration291A9206", }, ], ], }, }, "Type": "AWS::ApiGatewayV2::Route", }, "BackendApiPOSTproxyIntegrationPermissionFA8B3572": Object { "Properties": Object { "Action": "lambda:InvokeFunction", "FunctionName": Object { "Fn::GetAtt": Array [ "BackendApiHandlerF69AE07A", "Arn", ], }, "Principal": "apigateway.amazonaws.com", "SourceArn": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":execute-api:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":", Object { "Ref": "BackendApiED3D8698", }, "/*/*/{proxy+}", ], ], }, }, "Type": "AWS::Lambda::Permission", }, "BackendApiPOSTpublicproxy14254C5A": Object { "Properties": Object { "ApiId": Object { "Ref": "BackendApiED3D8698", }, "AuthorizationType": "NONE", "RouteKey": "POST /public/{proxy+}", "Target": Object { "Fn::Join": Array [ "", Array [ "integrations/", Object { "Ref": "BackendApiGETpublicproxyPublicIntegration27407C42", }, ], ], }, }, "Type": "AWS::ApiGatewayV2::Route", }, "BackendApiPOSTpublicproxyPublicIntegrationPermissionA34DBA5F": Object { "Properties": Object { "Action": "lambda:InvokeFunction", "FunctionName": Object { "Fn::GetAtt": Array [ "BackendApiHandlerPublicF3ADF520", "Arn", ], }, "Principal": "apigateway.amazonaws.com", "SourceArn": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":execute-api:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":", Object { "Ref": "BackendApiED3D8698", }, "/*/*/public/{proxy+}", ], ], }, }, "Type": "AWS::Lambda::Permission", }, "BackendApiPUTproxyDC049326": Object { "Properties": Object { "ApiId": Object { "Ref": "BackendApiED3D8698", }, "AuthorizationType": "JWT", "AuthorizerId": Object { "Ref": "BackendApiAuthorizerD604C09E", }, "RouteKey": "PUT /{proxy+}", "Target": Object { "Fn::Join": Array [ "", Array [ "integrations/", Object { "Ref": "BackendApiGETproxyIntegration291A9206", }, ], ], }, }, "Type": "AWS::ApiGatewayV2::Route", }, "BackendApiPUTproxyIntegrationPermission3DD7AC0F": Object { "Properties": Object { "Action": "lambda:InvokeFunction", "FunctionName": Object { "Fn::GetAtt": Array [ "BackendApiHandlerF69AE07A", "Arn", ], }, "Principal": "apigateway.amazonaws.com", "SourceArn": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":execute-api:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":", Object { "Ref": "BackendApiED3D8698", }, "/*/*/{proxy+}", ], ], }, }, "Type": "AWS::Lambda::Permission", }, "BackendApiPUTpublicproxy1B549058": Object { "Properties": Object { "ApiId": Object { "Ref": "BackendApiED3D8698", }, "AuthorizationType": "NONE", "RouteKey": "PUT /public/{proxy+}", "Target": Object { "Fn::Join": Array [ "", Array [ "integrations/", Object { "Ref": "BackendApiGETpublicproxyPublicIntegration27407C42", }, ], ], }, }, "Type": "AWS::ApiGatewayV2::Route", }, "BackendApiPUTpublicproxyPublicIntegrationPermissionD2C1A814": Object { "Properties": Object { "Action": "lambda:InvokeFunction", "FunctionName": Object { "Fn::GetAtt": Array [ "BackendApiHandlerPublicF3ADF520", "Arn", ], }, "Principal": "apigateway.amazonaws.com", "SourceArn": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":execute-api:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":", Object { "Ref": "BackendApiED3D8698", }, "/*/*/public/{proxy+}", ], ], }, }, "Type": "AWS::Lambda::Permission", }, "CronJobsHandler90E3B2B8": Object { "DependsOn": Array [ "CronJobsHandlerServiceRoleDefaultPolicy55D60D75", "CronJobsHandlerServiceRole666BE531", ], "Properties": Object { "Code": Object { "ImageUri": Object { "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:ad6a3e16a079b164a5c207d2354d7b59e90ac7eb0df13ca5ece3e87593ccdfb9", }, }, "Environment": Object { "Variables": Object { "JOB_QUEUE_NAME": Object { "Fn::GetAtt": Array [ "AsyncJobQueue0CD355DA", "QueueName", ], }, "TABLE_NAME": Object { "Ref": "DatabaseB269D8BB", }, }, }, "ImageConfig": Object { "Command": Array [ "handler-cron-job.handler", ], }, "MemorySize": 256, "PackageType": "Image", "Role": Object { "Fn::GetAtt": Array [ "CronJobsHandlerServiceRole666BE531", "Arn", ], }, }, "Type": "AWS::Lambda::Function", }, "CronJobsHandlerServiceRole666BE531": 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", }, "CronJobsHandlerServiceRoleDefaultPolicy55D60D75": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "dynamodb:BatchGetItem", "dynamodb:GetRecords", "dynamodb:GetShardIterator", "dynamodb:Query", "dynamodb:GetItem", "dynamodb:Scan", "dynamodb:ConditionCheckItem", "dynamodb:BatchWriteItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:DescribeTable", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::GetAtt": Array [ "DatabaseB269D8BB", "Arn", ], }, Object { "Ref": "AWS::NoValue", }, ], }, Object { "Action": Array [ "sqs:SendMessage", "sqs:GetQueueAttributes", "sqs:GetQueueUrl", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "AsyncJobQueue0CD355DA", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "CronJobsHandlerServiceRoleDefaultPolicy55D60D75", "Roles": Array [ Object { "Ref": "CronJobsHandlerServiceRole666BE531", }, ], }, "Type": "AWS::IAM::Policy", }, "CronJobsSampleJob259B9181": Object { "Properties": Object { "ScheduleExpression": "cron(0 0 1 * ? *)", "State": "ENABLED", "Targets": Array [ Object { "Arn": Object { "Fn::GetAtt": Array [ "CronJobsHandler90E3B2B8", "Arn", ], }, "Id": "Target0", "Input": "{\\"jobType\\":\\"SampleJob\\"}", "RetryPolicy": Object { "MaximumRetryAttempts": 3, }, }, ], }, "Type": "AWS::Events::Rule", }, "CronJobsSampleJobAllowEventRuleTestStackCronJobsHandler81C1F58395C7FF87": Object { "Properties": Object { "Action": "lambda:InvokeFunction", "FunctionName": Object { "Fn::GetAtt": Array [ "CronJobsHandler90E3B2B8", "Arn", ], }, "Principal": "events.amazonaws.com", "SourceArn": Object { "Fn::GetAtt": Array [ "CronJobsSampleJob259B9181", "Arn", ], }, }, "Type": "AWS::Lambda::Permission", }, "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", }, "DatabaseB269D8BB": Object { "DeletionPolicy": "Delete", "Properties": Object { "AttributeDefinitions": Array [ Object { "AttributeName": "PK", "AttributeType": "S", }, Object { "AttributeName": "SK", "AttributeType": "S", }, ], "BillingMode": "PAY_PER_REQUEST", "KeySchema": Array [ Object { "AttributeName": "PK", "KeyType": "HASH", }, Object { "AttributeName": "SK", "KeyType": "RANGE", }, ], }, "Type": "AWS::DynamoDB::Table", "UpdateReplacePolicy": "Delete", }, "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": "292870ae2617f1c4d62ff18422e009afd534a342c17877fd1b931fb8d8a62abc.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 [ "ed61ba10a04d936931ee0115c57672bc.zip", ], }, "Type": "Custom::CDKBucketDeployment", "UpdateReplacePolicy": "Delete", }, "FrontendReactBuildE02FF220": Object { "DeletionPolicy": "Delete", "Properties": Object { "ServiceToken": Object { "Fn::GetAtt": Array [ "NodejsBuildCustomResourceHandler25648b212c404f09aa65b6bbb0c446591C4101F8", "Arn", ], }, "buildCommands": Array [ "npm run bundle", ], "codeBuildProjectName": Object { "Ref": "FrontendReactBuildProject48A6230E", }, "destinationBucketName": Object { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, "destinationObjectKey": "ed61ba10a04d936931ee0115c57672bc.zip", "environment": Object { "VITE_AWS_REGION": Object { "Ref": "AWS::Region", }, "VITE_BACKEND_API_URL": Object { "Fn::GetAtt": Array [ "BackendApiED3D8698", "ApiEndpoint", ], }, "VITE_USER_POOL_CLIENT_ID": Object { "Ref": "AuthUserPoolClientC635291F", }, "VITE_USER_POOL_ID": Object { "Ref": "AuthUserPool8115E87F", }, }, "outputSourceDirectory": "frontend/dist", "sources": Array [ Object { "commands": Array [ "npm ci", ], "extractPath": "frontend", "sourceBucketName": Object { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, "sourceObjectKey": "7fdf654531ff6b8d4c5ed57bc19d50b1a10574e5856b8026402f090e7c1d0c4c.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 <<EOF > 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.", }, ], }, }, } `;