// 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.",
        },
      ],
    },
  },
}
`;