diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/PipelinesFileSystemLocations.assets.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/PipelinesFileSystemLocations.assets.json index fa5de7a001438..83ee6dcf525d5 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/PipelinesFileSystemLocations.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/PipelinesFileSystemLocations.assets.json @@ -8,7 +8,7 @@ "packaging": "zip" }, "destinations": { - "current_account-current_region": { + "current_account-current_region-094cbf39": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", "objectKey": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" @@ -22,7 +22,7 @@ "packaging": "file" }, "destinations": { - "current_account-current_region": { + "current_account-current_region-19fddc38": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", "objectKey": "cc2e914c1b86f585a913f7e509c24d92d62eb2644a17f422701893bf30561f5c.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/PipelinesFileSystemLocations.template.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/PipelinesFileSystemLocations.template.json index 33e629d0f024b..aefb9107bf7f1 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/PipelinesFileSystemLocations.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/PipelinesFileSystemLocations.template.json @@ -1768,7 +1768,7 @@ ] }, "Source": { - "BuildSpec": "{\n \"version\": \"0.2\",\n \"phases\": {\n \"install\": {\n \"commands\": [\n \"npm install -g cdk-assets@latest\"\n ]\n },\n \"build\": {\n \"commands\": [\n \"cdk-assets --path \\\"assembly-PipelinesFileSystemLocations-Beta/PipelinesFileSystemLocationsBetaStack18199ECAE.assets.json\\\" --verbose publish \\\"8289faf53c7da377bb2b90615999171adef5e1d8f6b88810e5fef75e6ca09ba5:current_account-current_region\\\"\"\n ]\n }\n }\n}", + "BuildSpec": "{\n \"version\": \"0.2\",\n \"phases\": {\n \"install\": {\n \"commands\": [\n \"npm install -g cdk-assets@latest\"\n ]\n },\n \"build\": {\n \"commands\": [\n \"cdk-assets --path \\\"assembly-PipelinesFileSystemLocations-Beta/PipelinesFileSystemLocationsBetaStack18199ECAE.assets.json\\\" --verbose publish \\\"8289faf53c7da377bb2b90615999171adef5e1d8f6b88810e5fef75e6ca09ba5:current_account-current_region-3d50c90e\\\"\"\n ]\n }\n }\n}", "Type": "CODEPIPELINE" }, "VpcConfig": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/assembly-PipelinesFileSystemLocations-Beta/PipelinesFileSystemLocationsBetaStack18199ECAE.assets.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/assembly-PipelinesFileSystemLocations-Beta/PipelinesFileSystemLocationsBetaStack18199ECAE.assets.json index 3c5386e46f102..59524fe373800 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/assembly-PipelinesFileSystemLocations-Beta/PipelinesFileSystemLocationsBetaStack18199ECAE.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/assembly-PipelinesFileSystemLocations-Beta/PipelinesFileSystemLocationsBetaStack18199ECAE.assets.json @@ -8,7 +8,7 @@ "packaging": "file" }, "destinations": { - "current_account-current_region": { + "current_account-current_region-3d50c90e": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", "objectKey": "8289faf53c7da377bb2b90615999171adef5e1d8f6b88810e5fef75e6ca09ba5.txt", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" @@ -22,7 +22,7 @@ "packaging": "file" }, "destinations": { - "current_account-current_region": { + "current_account-current_region-d8d86b35": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/assembly-PipelinesFileSystemLocations-Beta/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/assembly-PipelinesFileSystemLocations-Beta/manifest.json index ca43838c61ccf..2d70496ac5028 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/assembly-PipelinesFileSystemLocations-Beta/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/assembly-PipelinesFileSystemLocations-Beta/manifest.json @@ -51,5 +51,5 @@ "displayName": "PipelinesFileSystemLocations/Beta/Stack1" } }, - "minimumCliVersion": "2.1019.2" +"minimumCliVersion": "2.1019.2" } \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/cdkintegcodepipelinewithfilesystemlocationsDefaultTestDeployAssert3E26E748.assets.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/cdkintegcodepipelinewithfilesystemlocationsDefaultTestDeployAssert3E26E748.assets.json index 12966238be822..a26d2c1f2c28f 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/cdkintegcodepipelinewithfilesystemlocationsDefaultTestDeployAssert3E26E748.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-file-system-locations.js.snapshot/cdkintegcodepipelinewithfilesystemlocationsDefaultTestDeployAssert3E26E748.assets.json @@ -8,7 +8,7 @@ "packaging": "file" }, "destinations": { - "current_account-current_region": { + "current_account-current_region-d8d86b35": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/PipelineStack.assets.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/PipelineStack.assets.json index 51337d890b6fc..51032c241b734 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/PipelineStack.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/PipelineStack.assets.json @@ -1,16 +1,16 @@ { - "version": "41.0.0", + "version": "44.0.0", "files": { - "93e5631ca81a8787d3d4b8893c36ed935fc0994784a235f220fb271ac32a21f6": { + "b8e9e7d60a3210ccd3381923691cfa65e590547639404152ba566ba901094b58": { "displayName": "PipelineStack Template", "source": { "path": "PipelineStack.template.json", "packaging": "file" }, "destinations": { - "current_account-current_region": { + "current_account-current_region-47062573": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "93e5631ca81a8787d3d4b8893c36ed935fc0994784a235f220fb271ac32a21f6.json", + "objectKey": "b8e9e7d60a3210ccd3381923691cfa65e590547639404152ba566ba901094b58.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/PipelineStack.template.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/PipelineStack.template.json index 0b892bac6a014..e211a4ccb8032 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/PipelineStack.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/PipelineStack.template.json @@ -1973,7 +1973,7 @@ ] }, "Source": { - "BuildSpec": "{\n \"version\": \"0.2\",\n \"phases\": {\n \"install\": {\n \"commands\": [\n \"npm install -g cdk-assets@latest\"\n ]\n },\n \"build\": {\n \"commands\": [\n \"cdk-assets --path \\\"assembly-PipelineStack-Beta/PipelineStackBetaStack1E6541489.assets.json\\\" --verbose publish \\\"8289faf53c7da377bb2b90615999171adef5e1d8f6b88810e5fef75e6ca09ba5:current_account-current_region\\\"\"\n ]\n }\n }\n}", + "BuildSpec": "{\n \"version\": \"0.2\",\n \"phases\": {\n \"install\": {\n \"commands\": [\n \"npm install -g cdk-assets@latest\"\n ]\n },\n \"build\": {\n \"commands\": [\n \"cdk-assets --path \\\"assembly-PipelineStack-Beta/PipelineStackBetaStack1E6541489.assets.json\\\" --verbose publish \\\"8289faf53c7da377bb2b90615999171adef5e1d8f6b88810e5fef75e6ca09ba5:current_account-current_region-3d50c90e\\\"\"\n ]\n }\n }\n}", "Type": "CODEPIPELINE" }, "VpcConfig": { @@ -2072,7 +2072,7 @@ ] }, "Source": { - "BuildSpec": "{\n \"version\": \"0.2\",\n \"phases\": {\n \"install\": {\n \"commands\": [\n \"npm install -g cdk-assets@latest\"\n ]\n },\n \"build\": {\n \"commands\": [\n \"cdk-assets --path \\\"assembly-PipelineStack-Beta/PipelineStackBetaStack1E6541489.assets.json\\\" --verbose publish \\\"ac76997971c3f6ddf37120660003f1ced72b4fc58c498dfd99c78fa77e721e0e:current_account-current_region\\\"\"\n ]\n }\n }\n}", + "BuildSpec": "{\n \"version\": \"0.2\",\n \"phases\": {\n \"install\": {\n \"commands\": [\n \"npm install -g cdk-assets@latest\"\n ]\n },\n \"build\": {\n \"commands\": [\n \"cdk-assets --path \\\"assembly-PipelineStack-Beta/PipelineStackBetaStack1E6541489.assets.json\\\" --verbose publish \\\"ac76997971c3f6ddf37120660003f1ced72b4fc58c498dfd99c78fa77e721e0e:current_account-current_region-8b0ef02d\\\"\"\n ]\n }\n }\n}", "Type": "CODEPIPELINE" }, "VpcConfig": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/assembly-PipelineStack-Beta/PipelineStackBetaStack1E6541489.assets.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/assembly-PipelineStack-Beta/PipelineStackBetaStack1E6541489.assets.json index 6439a09da6874..1278434e0d576 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/assembly-PipelineStack-Beta/PipelineStackBetaStack1E6541489.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/assembly-PipelineStack-Beta/PipelineStackBetaStack1E6541489.assets.json @@ -1,5 +1,5 @@ { - "version": "41.0.0", + "version": "44.0.0", "files": { "8289faf53c7da377bb2b90615999171adef5e1d8f6b88810e5fef75e6ca09ba5": { "displayName": "Asset", @@ -8,7 +8,7 @@ "packaging": "file" }, "destinations": { - "current_account-current_region": { + "current_account-current_region-3d50c90e": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", "objectKey": "8289faf53c7da377bb2b90615999171adef5e1d8f6b88810e5fef75e6ca09ba5.txt", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" @@ -22,7 +22,7 @@ "packaging": "file" }, "destinations": { - "current_account-current_region": { + "current_account-current_region-8b0ef02d": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", "objectKey": "ac76997971c3f6ddf37120660003f1ced72b4fc58c498dfd99c78fa77e721e0e.txt", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" @@ -36,7 +36,7 @@ "packaging": "file" }, "destinations": { - "current_account-current_region": { + "current_account-current_region-4ddded02": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", "objectKey": "9b0251342ce12f30650bbf24424c57aba9857cc654420b1deff1533588801ceb.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/assembly-PipelineStack-Beta/cdk.out b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/assembly-PipelineStack-Beta/cdk.out index 188478b55560e..b3a26d44a5f73 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/assembly-PipelineStack-Beta/cdk.out +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/assembly-PipelineStack-Beta/cdk.out @@ -1 +1 @@ -{"version":"41.0.0"} \ No newline at end of file +{"version":"44.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/assembly-PipelineStack-Beta/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/assembly-PipelineStack-Beta/manifest.json index 43b8426b16c7d..e4cd024fa59cd 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/assembly-PipelineStack-Beta/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/assembly-PipelineStack-Beta/manifest.json @@ -1,5 +1,5 @@ { - "version": "41.0.0", + "version": "44.0.0", "artifacts": { "PipelineStackBetaStack1E6541489.assets": { "type": "cdk:asset-manifest", @@ -62,5 +62,6 @@ }, "displayName": "PipelineStack/Beta/Stack1" } - } + }, + "minimumCliVersion": "2.1018.0" } \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/cdk.out b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/cdk.out index 188478b55560e..b3a26d44a5f73 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/cdk.out +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/cdk.out @@ -1 +1 @@ -{"version":"41.0.0"} \ No newline at end of file +{"version":"44.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/integ.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/integ.json index 2e60de18fa2ae..92db9e05f5010 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/integ.json +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/integ.json @@ -1,5 +1,5 @@ { - "version": "42.0.0", + "version": "44.0.0", "testCases": { "integ.newpipeline-with-vpc": { "stacks": [ @@ -13,5 +13,5 @@ "@aws-cdk/core:newStyleStackSynthesis": "true" }, "enableLookups": false, - "minimumCliVersion": "2.1006.0" + "minimumCliVersion": "2.1018.0" } \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/manifest.json index 6c42974682f12..c9fd26e466b63 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/manifest.json @@ -1,5 +1,5 @@ { - "version": "42.0.0", + "version": "44.0.0", "artifacts": { "assembly-PipelineStack-Beta": { "type": "cdk:cloud-assembly", @@ -25,7 +25,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/93e5631ca81a8787d3d4b8893c36ed935fc0994784a235f220fb271ac32a21f6.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/b8e9e7d60a3210ccd3381923691cfa65e590547639404152ba566ba901094b58.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -315,6 +315,12 @@ "data": "VpcVPCGWBF912B6E" } ], + "/PipelineStack/Pipeline": [ + { + "type": "aws:cdk:warning", + "data": "V1 pipeline type is implicitly selected when `pipelineType` is not set. If you want to use V2 type, set `PipelineType.V2`. [ack: @aws-cdk/aws-codepipeline:unspecifiedPipelineType]" + } + ], "/PipelineStack/Pipeline/Pipeline": [ { "type": "aws:cdk:analytics:construct", @@ -327,7 +333,8 @@ "restartExecutionOnUpdate": true, "role": "*", "enableKeyRotation": "*", - "artifactBucket": "*" + "artifactBucket": "*", + "usePipelineRoleForActions": false } }, { @@ -421,7 +428,8 @@ "assumedBy": { "principalAccount": "*", "assumeRoleAction": "*" - } + }, + "roleName": "*" } }, { @@ -1883,5 +1891,5 @@ } } }, - "minimumCliVersion": "2.1006.0" + "minimumCliVersion": "2.1018.0" } \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/tree.json index fd2c6d47505fa..65ef0dec12ea8 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.newpipeline-with-vpc.js.snapshot/tree.json @@ -1 +1 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"PipelineStack":{"id":"PipelineStack","path":"PipelineStack","children":{"Vpc":{"id":"Vpc","path":"PipelineStack/Vpc","children":{"Resource":{"id":"Resource","path":"PipelineStack/Vpc/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::VPC","aws:cdk:cloudformation:props":{"cidrBlock":"10.0.0.0/16","enableDnsHostnames":true,"enableDnsSupport":true,"instanceTenancy":"default","tags":[{"key":"Name","value":"PipelineStack/Vpc"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnVPC","version":"0.0.0"}},"PublicSubnet1":{"id":"PublicSubnet1","path":"PipelineStack/Vpc/PublicSubnet1","children":{"Subnet":{"id":"Subnet","path":"PipelineStack/Vpc/PublicSubnet1/Subnet","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:props":{"availabilityZone":{"Fn::Select":[0,{"Fn::GetAZs":""}]},"cidrBlock":"10.0.0.0/18","mapPublicIpOnLaunch":true,"tags":[{"key":"aws-cdk:subnet-name","value":"Public"},{"key":"aws-cdk:subnet-type","value":"Public"},{"key":"Name","value":"PipelineStack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"0.0.0"}},"Acl":{"id":"Acl","path":"PipelineStack/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"PipelineStack/Vpc/PublicSubnet1/RouteTable","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"PipelineStack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"0.0.0"}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"PipelineStack/Vpc/PublicSubnet1/RouteTableAssociation","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"VpcPublicSubnet1RouteTable6C95E38E"},"subnetId":{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"0.0.0"}},"DefaultRoute":{"id":"DefaultRoute","path":"PipelineStack/Vpc/PublicSubnet1/DefaultRoute","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","gatewayId":{"Ref":"VpcIGWD7BA715C"},"routeTableId":{"Ref":"VpcPublicSubnet1RouteTable6C95E38E"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"0.0.0"}},"EIP":{"id":"EIP","path":"PipelineStack/Vpc/PublicSubnet1/EIP","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::EIP","aws:cdk:cloudformation:props":{"domain":"vpc","tags":[{"key":"Name","value":"PipelineStack/Vpc/PublicSubnet1"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnEIP","version":"0.0.0"}},"NATGateway":{"id":"NATGateway","path":"PipelineStack/Vpc/PublicSubnet1/NATGateway","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::NatGateway","aws:cdk:cloudformation:props":{"allocationId":{"Fn::GetAtt":["VpcPublicSubnet1EIPD7E02669","AllocationId"]},"subnetId":{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},"tags":[{"key":"Name","value":"PipelineStack/Vpc/PublicSubnet1"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnNatGateway","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PublicSubnet","version":"0.0.0","metadata":[{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":true,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":true,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{},{"addNatGateway":["*"]}]}},"PublicSubnet2":{"id":"PublicSubnet2","path":"PipelineStack/Vpc/PublicSubnet2","children":{"Subnet":{"id":"Subnet","path":"PipelineStack/Vpc/PublicSubnet2/Subnet","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:props":{"availabilityZone":{"Fn::Select":[1,{"Fn::GetAZs":""}]},"cidrBlock":"10.0.64.0/18","mapPublicIpOnLaunch":true,"tags":[{"key":"aws-cdk:subnet-name","value":"Public"},{"key":"aws-cdk:subnet-type","value":"Public"},{"key":"Name","value":"PipelineStack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"0.0.0"}},"Acl":{"id":"Acl","path":"PipelineStack/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"PipelineStack/Vpc/PublicSubnet2/RouteTable","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"PipelineStack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"0.0.0"}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"PipelineStack/Vpc/PublicSubnet2/RouteTableAssociation","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"VpcPublicSubnet2RouteTable94F7E489"},"subnetId":{"Ref":"VpcPublicSubnet2Subnet691E08A3"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"0.0.0"}},"DefaultRoute":{"id":"DefaultRoute","path":"PipelineStack/Vpc/PublicSubnet2/DefaultRoute","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","gatewayId":{"Ref":"VpcIGWD7BA715C"},"routeTableId":{"Ref":"VpcPublicSubnet2RouteTable94F7E489"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"0.0.0"}},"EIP":{"id":"EIP","path":"PipelineStack/Vpc/PublicSubnet2/EIP","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::EIP","aws:cdk:cloudformation:props":{"domain":"vpc","tags":[{"key":"Name","value":"PipelineStack/Vpc/PublicSubnet2"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnEIP","version":"0.0.0"}},"NATGateway":{"id":"NATGateway","path":"PipelineStack/Vpc/PublicSubnet2/NATGateway","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::NatGateway","aws:cdk:cloudformation:props":{"allocationId":{"Fn::GetAtt":["VpcPublicSubnet2EIP3C605A87","AllocationId"]},"subnetId":{"Ref":"VpcPublicSubnet2Subnet691E08A3"},"tags":[{"key":"Name","value":"PipelineStack/Vpc/PublicSubnet2"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnNatGateway","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PublicSubnet","version":"0.0.0","metadata":[{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":true,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":true,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{},{"addNatGateway":["*"]}]}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"PipelineStack/Vpc/PrivateSubnet1","children":{"Subnet":{"id":"Subnet","path":"PipelineStack/Vpc/PrivateSubnet1/Subnet","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:props":{"availabilityZone":{"Fn::Select":[0,{"Fn::GetAZs":""}]},"cidrBlock":"10.0.128.0/18","mapPublicIpOnLaunch":false,"tags":[{"key":"aws-cdk:subnet-name","value":"Private"},{"key":"aws-cdk:subnet-type","value":"Private"},{"key":"Name","value":"PipelineStack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"0.0.0"}},"Acl":{"id":"Acl","path":"PipelineStack/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"PipelineStack/Vpc/PrivateSubnet1/RouteTable","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"PipelineStack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"0.0.0"}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"PipelineStack/Vpc/PrivateSubnet1/RouteTableAssociation","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"VpcPrivateSubnet1RouteTableB2C5B500"},"subnetId":{"Ref":"VpcPrivateSubnet1Subnet536B997A"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"0.0.0"}},"DefaultRoute":{"id":"DefaultRoute","path":"PipelineStack/Vpc/PrivateSubnet1/DefaultRoute","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","natGatewayId":{"Ref":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet1RouteTableB2C5B500"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PrivateSubnet","version":"0.0.0","metadata":[{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":false,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":false,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{}]}},"PrivateSubnet2":{"id":"PrivateSubnet2","path":"PipelineStack/Vpc/PrivateSubnet2","children":{"Subnet":{"id":"Subnet","path":"PipelineStack/Vpc/PrivateSubnet2/Subnet","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:props":{"availabilityZone":{"Fn::Select":[1,{"Fn::GetAZs":""}]},"cidrBlock":"10.0.192.0/18","mapPublicIpOnLaunch":false,"tags":[{"key":"aws-cdk:subnet-name","value":"Private"},{"key":"aws-cdk:subnet-type","value":"Private"},{"key":"Name","value":"PipelineStack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"0.0.0"}},"Acl":{"id":"Acl","path":"PipelineStack/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"PipelineStack/Vpc/PrivateSubnet2/RouteTable","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"PipelineStack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"0.0.0"}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"PipelineStack/Vpc/PrivateSubnet2/RouteTableAssociation","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"},"subnetId":{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"0.0.0"}},"DefaultRoute":{"id":"DefaultRoute","path":"PipelineStack/Vpc/PrivateSubnet2/DefaultRoute","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","natGatewayId":{"Ref":"VpcPublicSubnet2NATGateway9182C01D"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PrivateSubnet","version":"0.0.0","metadata":[{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":false,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":false,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{}]}},"IGW":{"id":"IGW","path":"PipelineStack/Vpc/IGW","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::InternetGateway","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"PipelineStack/Vpc"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnInternetGateway","version":"0.0.0"}},"VPCGW":{"id":"VPCGW","path":"PipelineStack/Vpc/VPCGW","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::VPCGatewayAttachment","aws:cdk:cloudformation:props":{"internetGatewayId":{"Ref":"VpcIGWD7BA715C"},"vpcId":{"Ref":"Vpc8378EB38"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnVPCGatewayAttachment","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"restrictDefaultSecurityGroup":false}]}},"Pipeline":{"id":"Pipeline","path":"PipelineStack/Pipeline","children":{"Pipeline":{"id":"Pipeline","path":"PipelineStack/Pipeline/Pipeline","children":{"ArtifactsBucket":{"id":"ArtifactsBucket","path":"PipelineStack/Pipeline/Pipeline/ArtifactsBucket","children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/ArtifactsBucket/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"bucketEncryption":{"serverSideEncryptionConfiguration":[{"serverSideEncryptionByDefault":{"sseAlgorithm":"aws:kms"}}]},"publicAccessBlockConfiguration":{"blockPublicAcls":true,"blockPublicPolicy":true,"ignorePublicAcls":true,"restrictPublicBuckets":true}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"}},"Policy":{"id":"Policy","path":"PipelineStack/Pipeline/Pipeline/ArtifactsBucket/Policy","children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/ArtifactsBucket/Policy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:props":{"bucket":{"Ref":"PipelineArtifactsBucketAEA9A052"},"policyDocument":{"Statement":[{"Action":"s3:*","Condition":{"Bool":{"aws:SecureTransport":"false"}},"Effect":"Deny","Principal":{"AWS":"*"},"Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Principal":{"AWS":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-deploy-role-",{"Ref":"AWS::AccountId"},"-",{"Ref":"AWS::Region"}]]}},"Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]}],"Version":"2012-10-17"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"0.0.0","metadata":[{"bucket":"*"}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"bucketName":"*","encryptionKey":"*","encryption":"KMS_MANAGED","enforceSSL":true,"blockPublicAccess":"*","removalPolicy":"retain"}]}},"Role":{"id":"Role","path":"PipelineStack/Pipeline/Pipeline/Role","children":{"ImportRole":{"id":"ImportRole","path":"PipelineStack/Pipeline/Pipeline/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"codepipeline.amazonaws.com"}}],"Version":"2012-10-17"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"PipelineStack/Pipeline/Pipeline/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["s3:Abort*","s3:DeleteObject*","s3:GetBucket*","s3:GetObject*","s3:List*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]},{"Action":"sts:AssumeRole","Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineCodeBuildActionRole226DB0CB","Arn"]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-deploy-role-",{"Ref":"AWS::AccountId"},"-",{"Ref":"AWS::Region"}]]}]}],"Version":"2012-10-17"},"policyName":"PipelineRoleDefaultPolicy7BDC1ABB","roles":[{"Ref":"PipelineRoleB27FAA37"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::CodePipeline::Pipeline","aws:cdk:cloudformation:props":{"artifactStore":{"type":"S3","location":{"Ref":"PipelineArtifactsBucketAEA9A052"}},"pipelineType":"V1","restartExecutionOnUpdate":true,"roleArn":{"Fn::GetAtt":["PipelineRoleB27FAA37","Arn"]},"stages":[{"name":"Source","actions":[{"name":"aws_aws-cdk","outputArtifacts":[{"name":"aws_aws_cdk_Source"}],"actionTypeId":{"category":"Source","version":"1","owner":"ThirdParty","provider":"GitHub"},"configuration":{"Owner":"aws","Repo":"aws-cdk","Branch":"v2-main","OAuthToken":"{{resolve:secretsmanager:github-token:SecretString:::}}","PollForSourceChanges":false},"runOrder":1}]},{"name":"Build","actions":[{"name":"Synth","inputArtifacts":[{"name":"aws_aws_cdk_Source"}],"outputArtifacts":[{"name":"Synth_Output"}],"actionTypeId":{"category":"Build","version":"1","owner":"AWS","provider":"CodeBuild"},"configuration":{"ProjectName":{"Ref":"PipelineBuildSynthCdkBuildProject6BEFA8E6"},"EnvironmentVariables":"[{\"name\":\"_PROJECT_CONFIG_HASH\",\"type\":\"PLAINTEXT\",\"value\":\"9846e726ec481ed25679c0170187f40b4920586fd0e7314d24f56620d9f53f5b\"}]"},"runOrder":1,"roleArn":{"Fn::GetAtt":["PipelineCodeBuildActionRole226DB0CB","Arn"]}}]},{"name":"UpdatePipeline","actions":[{"name":"SelfMutate","inputArtifacts":[{"name":"Synth_Output"}],"actionTypeId":{"category":"Build","version":"1","owner":"AWS","provider":"CodeBuild"},"configuration":{"ProjectName":{"Ref":"PipelineUpdatePipelineSelfMutationDAA41400"},"EnvironmentVariables":"[{\"name\":\"_PROJECT_CONFIG_HASH\",\"type\":\"PLAINTEXT\",\"value\":\"167eef1378d6e6ad8c4c8da3461f900d6e066cd0916052ee812a8d94b87ad38c\"}]"},"runOrder":1,"roleArn":{"Fn::GetAtt":["PipelineCodeBuildActionRole226DB0CB","Arn"]}}]},{"name":"Assets","actions":[{"name":"Asset","inputArtifacts":[{"name":"Synth_Output"}],"actionTypeId":{"category":"Build","version":"1","owner":"AWS","provider":"CodeBuild"},"configuration":{"ProjectName":{"Ref":"PipelineAssetsFileAsset185A67CB4"}},"runOrder":1,"roleArn":{"Fn::GetAtt":["PipelineCodeBuildActionRole226DB0CB","Arn"]}},{"name":"Asset2","inputArtifacts":[{"name":"Synth_Output"}],"actionTypeId":{"category":"Build","version":"1","owner":"AWS","provider":"CodeBuild"},"configuration":{"ProjectName":{"Ref":"PipelineAssetsFileAsset24D2D639B"}},"runOrder":1,"roleArn":{"Fn::GetAtt":["PipelineCodeBuildActionRole226DB0CB","Arn"]}}]},{"name":"Beta","actions":[{"name":"Prepare","inputArtifacts":[{"name":"Synth_Output"}],"actionTypeId":{"category":"Deploy","version":"1","owner":"AWS","provider":"CloudFormation"},"configuration":{"StackName":"Beta-Stack1","Capabilities":"CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND","RoleArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-cfn-exec-role-",{"Ref":"AWS::AccountId"},"-",{"Ref":"AWS::Region"}]]},"ActionMode":"CHANGE_SET_REPLACE","ChangeSetName":"PipelineChange","TemplatePath":"Synth_Output::assembly-PipelineStack-Beta/PipelineStackBetaStack1E6541489.template.json"},"runOrder":1,"roleArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-deploy-role-",{"Ref":"AWS::AccountId"},"-",{"Ref":"AWS::Region"}]]}},{"name":"Deploy","actionTypeId":{"category":"Deploy","version":"1","owner":"AWS","provider":"CloudFormation"},"configuration":{"StackName":"Beta-Stack1","ActionMode":"CHANGE_SET_EXECUTE","ChangeSetName":"PipelineChange"},"runOrder":2,"roleArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-deploy-role-",{"Ref":"AWS::AccountId"},"-",{"Ref":"AWS::Region"}]]}}]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_codepipeline.CfnPipeline","version":"0.0.0"}},"Source":{"id":"Source","path":"PipelineStack/Pipeline/Pipeline/Source","children":{"aws_aws-cdk":{"id":"aws_aws-cdk","path":"PipelineStack/Pipeline/Pipeline/Source/aws_aws-cdk","children":{"WebhookResource":{"id":"WebhookResource","path":"PipelineStack/Pipeline/Pipeline/Source/aws_aws-cdk/WebhookResource","attributes":{"aws:cdk:cloudformation:type":"AWS::CodePipeline::Webhook","aws:cdk:cloudformation:props":{"authentication":"GITHUB_HMAC","authenticationConfiguration":{"secretToken":"{{resolve:secretsmanager:github-token:SecretString:::}}"},"filters":[{"jsonPath":"$.ref","matchEquals":"refs/heads/{Branch}"}],"registerWithThirdParty":true,"targetAction":"aws_aws-cdk","targetPipeline":{"Ref":"Pipeline9850B417"},"targetPipelineVersion":1}},"constructInfo":{"fqn":"aws-cdk-lib.aws_codepipeline.CfnWebhook","version":"0.0.0"}}},"constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Build":{"id":"Build","path":"PipelineStack/Pipeline/Pipeline/Build","children":{"Synth":{"id":"Synth","path":"PipelineStack/Pipeline/Pipeline/Build/Synth","children":{"CdkBuildProject":{"id":"CdkBuildProject","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject","children":{"Role":{"id":"Role","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role","children":{"ImportRole":{"id":"ImportRole","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"}}],"Version":"2012-10-17"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"ec2:CreateNetworkInterfacePermission","Condition":{"StringEquals":{"ec2:Subnet":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":subnet/",{"Ref":"VpcPrivateSubnet1Subnet536B997A"}]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":subnet/",{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]]}],"ec2:AuthorizedService":"codebuild.amazonaws.com"}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":network-interface/*"]]}},{"Action":["logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":logs:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/",{"Ref":"PipelineBuildSynthCdkBuildProject6BEFA8E6"},":*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":logs:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/",{"Ref":"PipelineBuildSynthCdkBuildProject6BEFA8E6"}]]}]},{"Action":["codebuild:BatchPutCodeCoverages","codebuild:BatchPutTestCases","codebuild:CreateReport","codebuild:CreateReportGroup","codebuild:UpdateReport"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":codebuild:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":report-group/",{"Ref":"PipelineBuildSynthCdkBuildProject6BEFA8E6"},"-*"]]}},{"Action":["s3:Abort*","s3:DeleteObject*","s3:GetBucket*","s3:GetObject*","s3:List*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]}],"Version":"2012-10-17"},"policyName":"PipelineBuildSynthCdkBuildProjectRoleDefaultPolicyFB6C941C","roles":[{"Ref":"PipelineBuildSynthCdkBuildProjectRole231EEA2A"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]}},"SecurityGroup":{"id":"SecurityGroup","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/SecurityGroup","children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/SecurityGroup/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroup","aws:cdk:cloudformation:props":{"groupDescription":"Automatic generated security group for CodeBuild PipelineStackPipelineBuildSynthCdkBuildProject225CEB2C","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroup","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*","allowAllOutbound":"*"}]}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::CodeBuild::Project","aws:cdk:cloudformation:props":{"artifacts":{"type":"CODEPIPELINE"},"cache":{"type":"NO_CACHE"},"description":"Pipeline step PipelineStack/Pipeline/Build/Synth","encryptionKey":"alias/aws/s3","environment":{"type":"LINUX_CONTAINER","image":"aws/codebuild/standard:7.0","imagePullCredentialsType":"CODEBUILD","privilegedMode":false,"computeType":"BUILD_GENERAL1_SMALL"},"serviceRole":{"Fn::GetAtt":["PipelineBuildSynthCdkBuildProjectRole231EEA2A","Arn"]},"source":{"type":"CODEPIPELINE","buildSpec":"{\n \"version\": \"0.2\",\n \"phases\": {\n \"build\": {\n \"commands\": [\n \"npm ci\",\n \"npm run build\",\n \"npx cdk synth\"\n ]\n }\n },\n \"artifacts\": {\n \"base-directory\": \"cdk.out\",\n \"files\": \"**/*\"\n }\n}"},"vpcConfig":{"vpcId":{"Ref":"Vpc8378EB38"},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["PipelineBuildSynthCdkBuildProjectSecurityGroup84F92459","GroupId"]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.CfnProject","version":"0.0.0"}},"PolicyDocument":{"id":"PolicyDocument","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/PolicyDocument","children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/PolicyDocument/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["ec2:CreateNetworkInterface","ec2:DeleteNetworkInterface","ec2:DescribeDhcpOptions","ec2:DescribeNetworkInterfaces","ec2:DescribeSecurityGroups","ec2:DescribeSubnets","ec2:DescribeVpcs"],"Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"PipelineBuildSynthCdkBuildProjectPolicyDocument4D16371A","roles":[{"Ref":"PipelineBuildSynthCdkBuildProjectRole231EEA2A"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.PipelineProject","version":"0.0.0","metadata":[{},{},{}]}}},"constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"UpdatePipeline":{"id":"UpdatePipeline","path":"PipelineStack/Pipeline/Pipeline/UpdatePipeline","children":{"SelfMutate":{"id":"SelfMutate","path":"PipelineStack/Pipeline/Pipeline/UpdatePipeline/SelfMutate","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Assets":{"id":"Assets","path":"PipelineStack/Pipeline/Pipeline/Assets","children":{"Asset":{"id":"Asset","path":"PipelineStack/Pipeline/Pipeline/Assets/Asset","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Asset2":{"id":"Asset2","path":"PipelineStack/Pipeline/Pipeline/Assets/Asset2","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Beta":{"id":"Beta","path":"PipelineStack/Pipeline/Pipeline/Beta","children":{"Prepare":{"id":"Prepare","path":"PipelineStack/Pipeline/Pipeline/Beta/Prepare","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Deploy":{"id":"Deploy","path":"PipelineStack/Pipeline/Pipeline/Beta/Deploy","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}":{"id":"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}","path":"PipelineStack/Pipeline/Pipeline/MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*","*","*","*","*"]}},"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}":{"id":"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}","path":"PipelineStack/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}","children":{"8389e75f-0810-4838-bf64-d6f85a95cf83":{"id":"8389e75f-0810-4838-bf64-d6f85a95cf83","path":"PipelineStack/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}/8389e75f-0810-4838-bf64-d6f85a95cf83","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*","*","*","*","*","*","*","*","*","*"]}},"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}":{"id":"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}","path":"PipelineStack/Pipeline/Pipeline/MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}":{"id":"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}","path":"PipelineStack/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_codepipeline.Pipeline","version":"0.0.0","metadata":[{"pipelineName":"*","pipelineType":"V1","crossAccountKeys":false,"crossRegionReplicationBuckets":"*","reuseCrossRegionSupportStacks":"*","restartExecutionOnUpdate":true,"role":"*","enableKeyRotation":"*","artifactBucket":"*"},{"addStage":[{"stageName":"*"}]},{"addStage":[{"stageName":"*"}]},{"addStage":[{"stageName":"*"}]},{"addStage":[{"stageName":"*"}]},{"addStage":[{"stageName":"*"}]}]}},"CodeBuildActionRole":{"id":"CodeBuildActionRole","path":"PipelineStack/Pipeline/CodeBuildActionRole","children":{"ImportCodeBuildActionRole":{"id":"ImportCodeBuildActionRole","path":"PipelineStack/Pipeline/CodeBuildActionRole/ImportCodeBuildActionRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/CodeBuildActionRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"AWS":{"Fn::GetAtt":["PipelineRoleB27FAA37","Arn"]}}}],"Version":"2012-10-17"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"PipelineStack/Pipeline/CodeBuildActionRole/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/CodeBuildActionRole/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["codebuild:BatchGetBuilds","codebuild:StartBuild","codebuild:StopBuild"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineAssetsFileAsset185A67CB4","Arn"]},{"Fn::GetAtt":["PipelineAssetsFileAsset24D2D639B","Arn"]},{"Fn::GetAtt":["PipelineBuildSynthCdkBuildProject6BEFA8E6","Arn"]},{"Fn::GetAtt":["PipelineUpdatePipelineSelfMutationDAA41400","Arn"]}]}],"Version":"2012-10-17"},"policyName":"PipelineCodeBuildActionRoleDefaultPolicy1D62A6FE","roles":[{"Ref":"PipelineCodeBuildActionRole226DB0CB"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":"*"},{"grantAssumeRole":["*"]},{"grant":["*","*"]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"grantAssumeRole":["*"]},{"grant":["*","*"]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"grantAssumeRole":["*"]},{"grant":["*","*"]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"grantAssumeRole":["*"]},{"grant":["*","*"]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]}},"UpdatePipeline":{"id":"UpdatePipeline","path":"PipelineStack/Pipeline/UpdatePipeline","children":{"SelfMutation":{"id":"SelfMutation","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation","children":{"Role":{"id":"Role","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/Role","children":{"ImportRole":{"id":"ImportRole","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"}}],"Version":"2012-10-17"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"ec2:CreateNetworkInterfacePermission","Condition":{"StringEquals":{"ec2:Subnet":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":subnet/",{"Ref":"VpcPrivateSubnet1Subnet536B997A"}]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":subnet/",{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]]}],"ec2:AuthorizedService":"codebuild.amazonaws.com"}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":network-interface/*"]]}},{"Action":["logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":logs:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/",{"Ref":"PipelineUpdatePipelineSelfMutationDAA41400"},":*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":logs:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/",{"Ref":"PipelineUpdatePipelineSelfMutationDAA41400"}]]}]},{"Action":["codebuild:BatchPutCodeCoverages","codebuild:BatchPutTestCases","codebuild:CreateReport","codebuild:CreateReportGroup","codebuild:UpdateReport"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":codebuild:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":report-group/",{"Ref":"PipelineUpdatePipelineSelfMutationDAA41400"},"-*"]]}},{"Action":"sts:AssumeRole","Condition":{"ForAnyValue:StringEquals":{"iam:ResourceTag/aws-cdk:bootstrap-role":["image-publishing","file-publishing","deploy"]}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:*:iam::",{"Ref":"AWS::AccountId"},":role/*"]]}},{"Action":["cloudformation:DescribeStacks","s3:ListBucket"],"Effect":"Allow","Resource":"*"},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]}],"Version":"2012-10-17"},"policyName":"PipelineUpdatePipelineSelfMutationRoleDefaultPolicyA225DA4E","roles":[{"Ref":"PipelineUpdatePipelineSelfMutationRole57E559E8"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]}},"SecurityGroup":{"id":"SecurityGroup","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/SecurityGroup","children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/SecurityGroup/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroup","aws:cdk:cloudformation:props":{"groupDescription":"Automatic generated security group for CodeBuild PipelineStackPipelineUpdatePipelineSelfMutationE51045FC","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroup","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*","allowAllOutbound":"*"}]}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::CodeBuild::Project","aws:cdk:cloudformation:props":{"artifacts":{"type":"CODEPIPELINE"},"cache":{"type":"NO_CACHE"},"description":"Pipeline step PipelineStack/Pipeline/UpdatePipeline/SelfMutate","encryptionKey":"alias/aws/s3","environment":{"type":"LINUX_CONTAINER","image":"aws/codebuild/standard:7.0","imagePullCredentialsType":"CODEBUILD","privilegedMode":false,"computeType":"BUILD_GENERAL1_SMALL"},"serviceRole":{"Fn::GetAtt":["PipelineUpdatePipelineSelfMutationRole57E559E8","Arn"]},"source":{"type":"CODEPIPELINE","buildSpec":"{\n \"version\": \"0.2\",\n \"phases\": {\n \"install\": {\n \"commands\": [\n \"npm install -g aws-cdk@2\"\n ]\n },\n \"build\": {\n \"commands\": [\n \"cdk -a . deploy PipelineStack --require-approval=never --verbose\"\n ]\n }\n }\n}"},"vpcConfig":{"vpcId":{"Ref":"Vpc8378EB38"},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["PipelineUpdatePipelineSelfMutationSecurityGroup94164EDC","GroupId"]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.CfnProject","version":"0.0.0"}},"PolicyDocument":{"id":"PolicyDocument","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/PolicyDocument","children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/PolicyDocument/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["ec2:CreateNetworkInterface","ec2:DeleteNetworkInterface","ec2:DescribeDhcpOptions","ec2:DescribeNetworkInterfaces","ec2:DescribeSecurityGroups","ec2:DescribeSubnets","ec2:DescribeVpcs"],"Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"PipelineUpdatePipelineSelfMutationPolicyDocumentD327DC74","roles":[{"Ref":"PipelineUpdatePipelineSelfMutationRole57E559E8"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.PipelineProject","version":"0.0.0","metadata":[{},{},{}]}}},"constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Assets":{"id":"Assets","path":"PipelineStack/Pipeline/Assets","children":{"FileRole":{"id":"FileRole","path":"PipelineStack/Pipeline/Assets/FileRole","children":{"ImportFileRole":{"id":"ImportFileRole","path":"PipelineStack/Pipeline/Assets/FileRole/ImportFileRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Assets/FileRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"AWS":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":root"]]},"Service":"codebuild.amazonaws.com"}}],"Version":"2012-10-17"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"PipelineStack/Pipeline/Assets/FileRole/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Assets/FileRole/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":logs:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/*"]]}},{"Action":["codebuild:BatchPutCodeCoverages","codebuild:BatchPutTestCases","codebuild:CreateReport","codebuild:CreateReportGroup","codebuild:UpdateReport"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":codebuild:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":report-group/*"]]}},{"Action":["codebuild:BatchGetBuilds","codebuild:StartBuild","codebuild:StopBuild"],"Effect":"Allow","Resource":"*"},{"Action":"sts:AssumeRole","Effect":"Allow","Resource":{"Fn::Sub":"arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"}},{"Action":"ec2:CreateNetworkInterfacePermission","Condition":{"StringEquals":{"ec2:Subnet":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":subnet/",{"Ref":"VpcPrivateSubnet1Subnet536B997A"}]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":subnet/",{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]]}],"ec2:AuthorizedService":"codebuild.amazonaws.com"}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":network-interface/*"]]}},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]}],"Version":"2012-10-17"},"policyName":"PipelineAssetsFileRoleDefaultPolicy14DB8755","roles":[{"Ref":"PipelineAssetsFileRole59943A77"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]}},"FileAsset1":{"id":"FileAsset1","path":"PipelineStack/Pipeline/Assets/FileAsset1","children":{"SecurityGroup":{"id":"SecurityGroup","path":"PipelineStack/Pipeline/Assets/FileAsset1/SecurityGroup","children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Assets/FileAsset1/SecurityGroup/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroup","aws:cdk:cloudformation:props":{"groupDescription":"Automatic generated security group for CodeBuild PipelineStackPipelineAssetsFileAsset10191BEFB","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroup","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*","allowAllOutbound":"*"}]}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Assets/FileAsset1/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::CodeBuild::Project","aws:cdk:cloudformation:props":{"artifacts":{"type":"CODEPIPELINE"},"cache":{"type":"NO_CACHE"},"description":"Pipeline step PipelineStack/Pipeline/Assets/Asset","encryptionKey":"alias/aws/s3","environment":{"type":"LINUX_CONTAINER","image":"aws/codebuild/standard:7.0","imagePullCredentialsType":"CODEBUILD","privilegedMode":false,"computeType":"BUILD_GENERAL1_SMALL"},"serviceRole":{"Fn::GetAtt":["PipelineAssetsFileRole59943A77","Arn"]},"source":{"type":"CODEPIPELINE","buildSpec":"{\n \"version\": \"0.2\",\n \"phases\": {\n \"install\": {\n \"commands\": [\n \"npm install -g cdk-assets@latest\"\n ]\n },\n \"build\": {\n \"commands\": [\n \"cdk-assets --path \\\"assembly-PipelineStack-Beta/PipelineStackBetaStack1E6541489.assets.json\\\" --verbose publish \\\"8289faf53c7da377bb2b90615999171adef5e1d8f6b88810e5fef75e6ca09ba5:current_account-current_region\\\"\"\n ]\n }\n }\n}"},"vpcConfig":{"vpcId":{"Ref":"Vpc8378EB38"},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["PipelineAssetsFileAsset1SecurityGroupF04F1AD4","GroupId"]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.CfnProject","version":"0.0.0"}},"PolicyDocument":{"id":"PolicyDocument","path":"PipelineStack/Pipeline/Assets/FileAsset1/PolicyDocument","children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Assets/FileAsset1/PolicyDocument/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["ec2:CreateNetworkInterface","ec2:DeleteNetworkInterface","ec2:DescribeDhcpOptions","ec2:DescribeNetworkInterfaces","ec2:DescribeSecurityGroups","ec2:DescribeSubnets","ec2:DescribeVpcs"],"Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"PipelineAssetsFileAsset1PolicyDocument4681543E","roles":[{"Ref":"PipelineAssetsFileRole59943A77"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.PipelineProject","version":"0.0.0","metadata":[{},{},{}]}},"FileAsset2":{"id":"FileAsset2","path":"PipelineStack/Pipeline/Assets/FileAsset2","children":{"SecurityGroup":{"id":"SecurityGroup","path":"PipelineStack/Pipeline/Assets/FileAsset2/SecurityGroup","children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Assets/FileAsset2/SecurityGroup/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroup","aws:cdk:cloudformation:props":{"groupDescription":"Automatic generated security group for CodeBuild PipelineStackPipelineAssetsFileAsset24DB856A2","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroup","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*","allowAllOutbound":"*"}]}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Assets/FileAsset2/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::CodeBuild::Project","aws:cdk:cloudformation:props":{"artifacts":{"type":"CODEPIPELINE"},"cache":{"type":"NO_CACHE"},"description":"Pipeline step PipelineStack/Pipeline/Assets/Asset2","encryptionKey":"alias/aws/s3","environment":{"type":"LINUX_CONTAINER","image":"aws/codebuild/standard:7.0","imagePullCredentialsType":"CODEBUILD","privilegedMode":false,"computeType":"BUILD_GENERAL1_SMALL"},"serviceRole":{"Fn::GetAtt":["PipelineAssetsFileRole59943A77","Arn"]},"source":{"type":"CODEPIPELINE","buildSpec":"{\n \"version\": \"0.2\",\n \"phases\": {\n \"install\": {\n \"commands\": [\n \"npm install -g cdk-assets@latest\"\n ]\n },\n \"build\": {\n \"commands\": [\n \"cdk-assets --path \\\"assembly-PipelineStack-Beta/PipelineStackBetaStack1E6541489.assets.json\\\" --verbose publish \\\"ac76997971c3f6ddf37120660003f1ced72b4fc58c498dfd99c78fa77e721e0e:current_account-current_region\\\"\"\n ]\n }\n }\n}"},"vpcConfig":{"vpcId":{"Ref":"Vpc8378EB38"},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["PipelineAssetsFileAsset2SecurityGroupA400C1A5","GroupId"]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.CfnProject","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.PipelineProject","version":"0.0.0","metadata":[{},{},{}]}}},"constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.pipelines.CodePipeline","version":"0.0.0"}},"Beta":{"id":"Beta","path":"PipelineStack/Beta","children":{"Stack1":{"id":"Stack1","path":"PipelineStack/Beta/Stack1","children":{"Asset":{"id":"Asset","path":"PipelineStack/Beta/Stack1/Asset","children":{"Stage":{"id":"Stage","path":"PipelineStack/Beta/Stack1/Asset/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"PipelineStack/Beta/Stack1/Asset/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"}},"Asset2":{"id":"Asset2","path":"PipelineStack/Beta/Stack1/Asset2","children":{"Stage":{"id":"Stage","path":"PipelineStack/Beta/Stack1/Asset2/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"PipelineStack/Beta/Stack1/Asset2/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"}},"OtherQueue":{"id":"OtherQueue","path":"PipelineStack/Beta/Stack1/OtherQueue","children":{"Resource":{"id":"Resource","path":"PipelineStack/Beta/Stack1/OtherQueue/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::SQS::Queue","aws:cdk:cloudformation:props":{}},"constructInfo":{"fqn":"aws-cdk-lib.aws_sqs.CfnQueue","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_sqs.Queue","version":"0.0.0","metadata":["*"]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"PipelineStack/Beta/Stack1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"PipelineStack/Beta/Stack1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stage","version":"0.0.0"}},"BootstrapVersion":{"id":"BootstrapVersion","path":"PipelineStack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"PipelineStack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"PipelineStack":{"id":"PipelineStack","path":"PipelineStack","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Vpc":{"id":"Vpc","path":"PipelineStack/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"PipelineStack/Vpc/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnVPC","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::VPC","aws:cdk:cloudformation:props":{"cidrBlock":"10.0.0.0/16","enableDnsHostnames":true,"enableDnsSupport":true,"instanceTenancy":"default","tags":[{"key":"Name","value":"PipelineStack/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"PipelineStack/Vpc/PublicSubnet1","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PublicSubnet","version":"0.0.0","metadata":[{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":true,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":true,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{},{"addNatGateway":["*"]}]},"children":{"Subnet":{"id":"Subnet","path":"PipelineStack/Vpc/PublicSubnet1/Subnet","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:props":{"availabilityZone":{"Fn::Select":[0,{"Fn::GetAZs":""}]},"cidrBlock":"10.0.0.0/18","mapPublicIpOnLaunch":true,"tags":[{"key":"aws-cdk:subnet-name","value":"Public"},{"key":"aws-cdk:subnet-type","value":"Public"},{"key":"Name","value":"PipelineStack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"PipelineStack/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"PipelineStack/Vpc/PublicSubnet1/RouteTable","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"PipelineStack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"PipelineStack/Vpc/PublicSubnet1/RouteTableAssociation","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"VpcPublicSubnet1RouteTable6C95E38E"},"subnetId":{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"PipelineStack/Vpc/PublicSubnet1/DefaultRoute","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","gatewayId":{"Ref":"VpcIGWD7BA715C"},"routeTableId":{"Ref":"VpcPublicSubnet1RouteTable6C95E38E"}}}},"EIP":{"id":"EIP","path":"PipelineStack/Vpc/PublicSubnet1/EIP","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnEIP","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::EIP","aws:cdk:cloudformation:props":{"domain":"vpc","tags":[{"key":"Name","value":"PipelineStack/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"PipelineStack/Vpc/PublicSubnet1/NATGateway","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnNatGateway","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::NatGateway","aws:cdk:cloudformation:props":{"allocationId":{"Fn::GetAtt":["VpcPublicSubnet1EIPD7E02669","AllocationId"]},"subnetId":{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},"tags":[{"key":"Name","value":"PipelineStack/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"PipelineStack/Vpc/PublicSubnet2","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PublicSubnet","version":"0.0.0","metadata":[{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":true,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":true,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{},{"addNatGateway":["*"]}]},"children":{"Subnet":{"id":"Subnet","path":"PipelineStack/Vpc/PublicSubnet2/Subnet","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:props":{"availabilityZone":{"Fn::Select":[1,{"Fn::GetAZs":""}]},"cidrBlock":"10.0.64.0/18","mapPublicIpOnLaunch":true,"tags":[{"key":"aws-cdk:subnet-name","value":"Public"},{"key":"aws-cdk:subnet-type","value":"Public"},{"key":"Name","value":"PipelineStack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"PipelineStack/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"PipelineStack/Vpc/PublicSubnet2/RouteTable","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"PipelineStack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"PipelineStack/Vpc/PublicSubnet2/RouteTableAssociation","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"VpcPublicSubnet2RouteTable94F7E489"},"subnetId":{"Ref":"VpcPublicSubnet2Subnet691E08A3"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"PipelineStack/Vpc/PublicSubnet2/DefaultRoute","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","gatewayId":{"Ref":"VpcIGWD7BA715C"},"routeTableId":{"Ref":"VpcPublicSubnet2RouteTable94F7E489"}}}},"EIP":{"id":"EIP","path":"PipelineStack/Vpc/PublicSubnet2/EIP","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnEIP","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::EIP","aws:cdk:cloudformation:props":{"domain":"vpc","tags":[{"key":"Name","value":"PipelineStack/Vpc/PublicSubnet2"}]}}},"NATGateway":{"id":"NATGateway","path":"PipelineStack/Vpc/PublicSubnet2/NATGateway","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnNatGateway","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::NatGateway","aws:cdk:cloudformation:props":{"allocationId":{"Fn::GetAtt":["VpcPublicSubnet2EIP3C605A87","AllocationId"]},"subnetId":{"Ref":"VpcPublicSubnet2Subnet691E08A3"},"tags":[{"key":"Name","value":"PipelineStack/Vpc/PublicSubnet2"}]}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"PipelineStack/Vpc/PrivateSubnet1","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PrivateSubnet","version":"0.0.0","metadata":[{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":false,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":false,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"PipelineStack/Vpc/PrivateSubnet1/Subnet","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:props":{"availabilityZone":{"Fn::Select":[0,{"Fn::GetAZs":""}]},"cidrBlock":"10.0.128.0/18","mapPublicIpOnLaunch":false,"tags":[{"key":"aws-cdk:subnet-name","value":"Private"},{"key":"aws-cdk:subnet-type","value":"Private"},{"key":"Name","value":"PipelineStack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"PipelineStack/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"PipelineStack/Vpc/PrivateSubnet1/RouteTable","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"PipelineStack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"PipelineStack/Vpc/PrivateSubnet1/RouteTableAssociation","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"VpcPrivateSubnet1RouteTableB2C5B500"},"subnetId":{"Ref":"VpcPrivateSubnet1Subnet536B997A"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"PipelineStack/Vpc/PrivateSubnet1/DefaultRoute","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","natGatewayId":{"Ref":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet1RouteTableB2C5B500"}}}}}},"PrivateSubnet2":{"id":"PrivateSubnet2","path":"PipelineStack/Vpc/PrivateSubnet2","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PrivateSubnet","version":"0.0.0","metadata":[{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":false,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{"availabilityZone":"*","vpcId":"*","cidrBlock":"*","mapPublicIpOnLaunch":false,"ipv6CidrBlock":"*","assignIpv6AddressOnCreation":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"PipelineStack/Vpc/PrivateSubnet2/Subnet","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnet","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Subnet","aws:cdk:cloudformation:props":{"availabilityZone":{"Fn::Select":[1,{"Fn::GetAZs":""}]},"cidrBlock":"10.0.192.0/18","mapPublicIpOnLaunch":false,"tags":[{"key":"aws-cdk:subnet-name","value":"Private"},{"key":"aws-cdk:subnet-type","value":"Private"},{"key":"Name","value":"PipelineStack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"PipelineStack/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"PipelineStack/Vpc/PrivateSubnet2/RouteTable","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRouteTable","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::RouteTable","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"PipelineStack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"PipelineStack/Vpc/PrivateSubnet2/RouteTableAssociation","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SubnetRouteTableAssociation","aws:cdk:cloudformation:props":{"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"},"subnetId":{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"PipelineStack/Vpc/PrivateSubnet2/DefaultRoute","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnRoute","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::Route","aws:cdk:cloudformation:props":{"destinationCidrBlock":"0.0.0.0/0","natGatewayId":{"Ref":"VpcPublicSubnet2NATGateway9182C01D"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"PipelineStack/Vpc/IGW","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnInternetGateway","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::InternetGateway","aws:cdk:cloudformation:props":{"tags":[{"key":"Name","value":"PipelineStack/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"PipelineStack/Vpc/VPCGW","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnVPCGatewayAttachment","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::VPCGatewayAttachment","aws:cdk:cloudformation:props":{"internetGatewayId":{"Ref":"VpcIGWD7BA715C"},"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Pipeline":{"id":"Pipeline","path":"PipelineStack/Pipeline","constructInfo":{"fqn":"aws-cdk-lib.pipelines.CodePipeline","version":"0.0.0"},"children":{"Pipeline":{"id":"Pipeline","path":"PipelineStack/Pipeline/Pipeline","constructInfo":{"fqn":"aws-cdk-lib.aws_codepipeline.Pipeline","version":"0.0.0","metadata":[{"pipelineName":"*","pipelineType":"V1","crossAccountKeys":false,"crossRegionReplicationBuckets":"*","reuseCrossRegionSupportStacks":"*","restartExecutionOnUpdate":true,"role":"*","enableKeyRotation":"*","artifactBucket":"*","usePipelineRoleForActions":false},{"addStage":[{"stageName":"*"}]},{"addStage":[{"stageName":"*"}]},{"addStage":[{"stageName":"*"}]},{"addStage":[{"stageName":"*"}]},{"addStage":[{"stageName":"*"}]}]},"children":{"ArtifactsBucket":{"id":"ArtifactsBucket","path":"PipelineStack/Pipeline/Pipeline/ArtifactsBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"bucketName":"*","encryptionKey":"*","encryption":"KMS_MANAGED","enforceSSL":true,"blockPublicAccess":"*","removalPolicy":"retain"}]},"children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/ArtifactsBucket/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"bucketEncryption":{"serverSideEncryptionConfiguration":[{"serverSideEncryptionByDefault":{"sseAlgorithm":"aws:kms"}}]},"publicAccessBlockConfiguration":{"blockPublicAcls":true,"blockPublicPolicy":true,"ignorePublicAcls":true,"restrictPublicBuckets":true}}}},"Policy":{"id":"Policy","path":"PipelineStack/Pipeline/Pipeline/ArtifactsBucket/Policy","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"0.0.0","metadata":[{"bucket":"*"}]},"children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/ArtifactsBucket/Policy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:props":{"bucket":{"Ref":"PipelineArtifactsBucketAEA9A052"},"policyDocument":{"Statement":[{"Action":"s3:*","Condition":{"Bool":{"aws:SecureTransport":"false"}},"Effect":"Deny","Principal":{"AWS":"*"},"Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Principal":{"AWS":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-deploy-role-",{"Ref":"AWS::AccountId"},"-",{"Ref":"AWS::Region"}]]}},"Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]}],"Version":"2012-10-17"}}}}}}}},"Role":{"id":"Role","path":"PipelineStack/Pipeline/Pipeline/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"roleName":"*"},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"PipelineStack/Pipeline/Pipeline/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"codepipeline.amazonaws.com"}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"PipelineStack/Pipeline/Pipeline/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["s3:Abort*","s3:DeleteObject*","s3:GetBucket*","s3:GetObject*","s3:List*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]},{"Action":"sts:AssumeRole","Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineCodeBuildActionRole226DB0CB","Arn"]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-deploy-role-",{"Ref":"AWS::AccountId"},"-",{"Ref":"AWS::Region"}]]}]}],"Version":"2012-10-17"},"policyName":"PipelineRoleDefaultPolicy7BDC1ABB","roles":[{"Ref":"PipelineRoleB27FAA37"}]}}}}}}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_codepipeline.CfnPipeline","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::CodePipeline::Pipeline","aws:cdk:cloudformation:props":{"artifactStore":{"type":"S3","location":{"Ref":"PipelineArtifactsBucketAEA9A052"}},"pipelineType":"V1","restartExecutionOnUpdate":true,"roleArn":{"Fn::GetAtt":["PipelineRoleB27FAA37","Arn"]},"stages":[{"name":"Source","actions":[{"name":"aws_aws-cdk","outputArtifacts":[{"name":"aws_aws_cdk_Source"}],"actionTypeId":{"category":"Source","version":"1","owner":"ThirdParty","provider":"GitHub"},"configuration":{"Owner":"aws","Repo":"aws-cdk","Branch":"v2-main","OAuthToken":"{{resolve:secretsmanager:github-token:SecretString:::}}","PollForSourceChanges":false},"runOrder":1}]},{"name":"Build","actions":[{"name":"Synth","inputArtifacts":[{"name":"aws_aws_cdk_Source"}],"outputArtifacts":[{"name":"Synth_Output"}],"actionTypeId":{"category":"Build","version":"1","owner":"AWS","provider":"CodeBuild"},"configuration":{"ProjectName":{"Ref":"PipelineBuildSynthCdkBuildProject6BEFA8E6"},"EnvironmentVariables":"[{\"name\":\"_PROJECT_CONFIG_HASH\",\"type\":\"PLAINTEXT\",\"value\":\"9846e726ec481ed25679c0170187f40b4920586fd0e7314d24f56620d9f53f5b\"}]"},"runOrder":1,"roleArn":{"Fn::GetAtt":["PipelineCodeBuildActionRole226DB0CB","Arn"]}}]},{"name":"UpdatePipeline","actions":[{"name":"SelfMutate","inputArtifacts":[{"name":"Synth_Output"}],"actionTypeId":{"category":"Build","version":"1","owner":"AWS","provider":"CodeBuild"},"configuration":{"ProjectName":{"Ref":"PipelineUpdatePipelineSelfMutationDAA41400"},"EnvironmentVariables":"[{\"name\":\"_PROJECT_CONFIG_HASH\",\"type\":\"PLAINTEXT\",\"value\":\"167eef1378d6e6ad8c4c8da3461f900d6e066cd0916052ee812a8d94b87ad38c\"}]"},"runOrder":1,"roleArn":{"Fn::GetAtt":["PipelineCodeBuildActionRole226DB0CB","Arn"]}}]},{"name":"Assets","actions":[{"name":"Asset","inputArtifacts":[{"name":"Synth_Output"}],"actionTypeId":{"category":"Build","version":"1","owner":"AWS","provider":"CodeBuild"},"configuration":{"ProjectName":{"Ref":"PipelineAssetsFileAsset185A67CB4"}},"runOrder":1,"roleArn":{"Fn::GetAtt":["PipelineCodeBuildActionRole226DB0CB","Arn"]}},{"name":"Asset2","inputArtifacts":[{"name":"Synth_Output"}],"actionTypeId":{"category":"Build","version":"1","owner":"AWS","provider":"CodeBuild"},"configuration":{"ProjectName":{"Ref":"PipelineAssetsFileAsset24D2D639B"}},"runOrder":1,"roleArn":{"Fn::GetAtt":["PipelineCodeBuildActionRole226DB0CB","Arn"]}}]},{"name":"Beta","actions":[{"name":"Prepare","inputArtifacts":[{"name":"Synth_Output"}],"actionTypeId":{"category":"Deploy","version":"1","owner":"AWS","provider":"CloudFormation"},"configuration":{"StackName":"Beta-Stack1","Capabilities":"CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND","RoleArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-cfn-exec-role-",{"Ref":"AWS::AccountId"},"-",{"Ref":"AWS::Region"}]]},"ActionMode":"CHANGE_SET_REPLACE","ChangeSetName":"PipelineChange","TemplatePath":"Synth_Output::assembly-PipelineStack-Beta/PipelineStackBetaStack1E6541489.template.json"},"runOrder":1,"roleArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-deploy-role-",{"Ref":"AWS::AccountId"},"-",{"Ref":"AWS::Region"}]]}},{"name":"Deploy","actionTypeId":{"category":"Deploy","version":"1","owner":"AWS","provider":"CloudFormation"},"configuration":{"StackName":"Beta-Stack1","ActionMode":"CHANGE_SET_EXECUTE","ChangeSetName":"PipelineChange"},"runOrder":2,"roleArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-deploy-role-",{"Ref":"AWS::AccountId"},"-",{"Ref":"AWS::Region"}]]}}]}]}}},"Source":{"id":"Source","path":"PipelineStack/Pipeline/Pipeline/Source","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"aws_aws-cdk":{"id":"aws_aws-cdk","path":"PipelineStack/Pipeline/Pipeline/Source/aws_aws-cdk","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"WebhookResource":{"id":"WebhookResource","path":"PipelineStack/Pipeline/Pipeline/Source/aws_aws-cdk/WebhookResource","constructInfo":{"fqn":"aws-cdk-lib.aws_codepipeline.CfnWebhook","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::CodePipeline::Webhook","aws:cdk:cloudformation:props":{"authentication":"GITHUB_HMAC","authenticationConfiguration":{"secretToken":"{{resolve:secretsmanager:github-token:SecretString:::}}"},"filters":[{"jsonPath":"$.ref","matchEquals":"refs/heads/{Branch}"}],"registerWithThirdParty":true,"targetAction":"aws_aws-cdk","targetPipeline":{"Ref":"Pipeline9850B417"},"targetPipelineVersion":1}}}}}}},"Build":{"id":"Build","path":"PipelineStack/Pipeline/Pipeline/Build","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"Synth":{"id":"Synth","path":"PipelineStack/Pipeline/Pipeline/Build/Synth","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"CdkBuildProject":{"id":"CdkBuildProject","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.PipelineProject","version":"0.0.0","metadata":[{},{},{}]},"children":{"Role":{"id":"Role","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"ec2:CreateNetworkInterfacePermission","Condition":{"StringEquals":{"ec2:Subnet":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":subnet/",{"Ref":"VpcPrivateSubnet1Subnet536B997A"}]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":subnet/",{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]]}],"ec2:AuthorizedService":"codebuild.amazonaws.com"}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":network-interface/*"]]}},{"Action":["logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":logs:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/",{"Ref":"PipelineBuildSynthCdkBuildProject6BEFA8E6"},":*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":logs:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/",{"Ref":"PipelineBuildSynthCdkBuildProject6BEFA8E6"}]]}]},{"Action":["codebuild:BatchPutCodeCoverages","codebuild:BatchPutTestCases","codebuild:CreateReport","codebuild:CreateReportGroup","codebuild:UpdateReport"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":codebuild:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":report-group/",{"Ref":"PipelineBuildSynthCdkBuildProject6BEFA8E6"},"-*"]]}},{"Action":["s3:Abort*","s3:DeleteObject*","s3:GetBucket*","s3:GetObject*","s3:List*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]}],"Version":"2012-10-17"},"policyName":"PipelineBuildSynthCdkBuildProjectRoleDefaultPolicyFB6C941C","roles":[{"Ref":"PipelineBuildSynthCdkBuildProjectRole231EEA2A"}]}}}}}}},"SecurityGroup":{"id":"SecurityGroup","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*","allowAllOutbound":"*"}]},"children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/SecurityGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroup","aws:cdk:cloudformation:props":{"groupDescription":"Automatic generated security group for CodeBuild PipelineStackPipelineBuildSynthCdkBuildProject225CEB2C","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.CfnProject","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::CodeBuild::Project","aws:cdk:cloudformation:props":{"artifacts":{"type":"CODEPIPELINE"},"cache":{"type":"NO_CACHE"},"description":"Pipeline step PipelineStack/Pipeline/Build/Synth","encryptionKey":"alias/aws/s3","environment":{"type":"LINUX_CONTAINER","image":"aws/codebuild/standard:7.0","imagePullCredentialsType":"CODEBUILD","privilegedMode":false,"computeType":"BUILD_GENERAL1_SMALL"},"serviceRole":{"Fn::GetAtt":["PipelineBuildSynthCdkBuildProjectRole231EEA2A","Arn"]},"source":{"type":"CODEPIPELINE","buildSpec":"{\n \"version\": \"0.2\",\n \"phases\": {\n \"build\": {\n \"commands\": [\n \"npm ci\",\n \"npm run build\",\n \"npx cdk synth\"\n ]\n }\n },\n \"artifacts\": {\n \"base-directory\": \"cdk.out\",\n \"files\": \"**/*\"\n }\n}"},"vpcConfig":{"vpcId":{"Ref":"Vpc8378EB38"},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["PipelineBuildSynthCdkBuildProjectSecurityGroup84F92459","GroupId"]}]}}}},"PolicyDocument":{"id":"PolicyDocument","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/PolicyDocument","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/PolicyDocument/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["ec2:CreateNetworkInterface","ec2:DeleteNetworkInterface","ec2:DescribeDhcpOptions","ec2:DescribeNetworkInterfaces","ec2:DescribeSecurityGroups","ec2:DescribeSubnets","ec2:DescribeVpcs"],"Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"PipelineBuildSynthCdkBuildProjectPolicyDocument4D16371A","roles":[{"Ref":"PipelineBuildSynthCdkBuildProjectRole231EEA2A"}]}}}}}}}}}}},"UpdatePipeline":{"id":"UpdatePipeline","path":"PipelineStack/Pipeline/Pipeline/UpdatePipeline","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"SelfMutate":{"id":"SelfMutate","path":"PipelineStack/Pipeline/Pipeline/UpdatePipeline/SelfMutate","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Assets":{"id":"Assets","path":"PipelineStack/Pipeline/Pipeline/Assets","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"Asset":{"id":"Asset","path":"PipelineStack/Pipeline/Pipeline/Assets/Asset","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Asset2":{"id":"Asset2","path":"PipelineStack/Pipeline/Pipeline/Assets/Asset2","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Beta":{"id":"Beta","path":"PipelineStack/Pipeline/Pipeline/Beta","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"Prepare":{"id":"Prepare","path":"PipelineStack/Pipeline/Pipeline/Beta/Prepare","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Deploy":{"id":"Deploy","path":"PipelineStack/Pipeline/Pipeline/Beta/Deploy","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}":{"id":"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}","path":"PipelineStack/Pipeline/Pipeline/MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*","*","*","*","*"]}},"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}":{"id":"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}","path":"PipelineStack/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*","*","*","*","*","*","*","*","*","*"]},"children":{"8389e75f-0810-4838-bf64-d6f85a95cf83":{"id":"8389e75f-0810-4838-bf64-d6f85a95cf83","path":"PipelineStack/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}/8389e75f-0810-4838-bf64-d6f85a95cf83","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}":{"id":"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}","path":"PipelineStack/Pipeline/Pipeline/MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}":{"id":"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}","path":"PipelineStack/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}}}},"CodeBuildActionRole":{"id":"CodeBuildActionRole","path":"PipelineStack/Pipeline/CodeBuildActionRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":"*"},{"grantAssumeRole":["*"]},{"grant":["*","*"]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"grantAssumeRole":["*"]},{"grant":["*","*"]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"grantAssumeRole":["*"]},{"grant":["*","*"]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"grantAssumeRole":["*"]},{"grant":["*","*"]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportCodeBuildActionRole":{"id":"ImportCodeBuildActionRole","path":"PipelineStack/Pipeline/CodeBuildActionRole/ImportCodeBuildActionRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/CodeBuildActionRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"AWS":{"Fn::GetAtt":["PipelineRoleB27FAA37","Arn"]}}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"PipelineStack/Pipeline/CodeBuildActionRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/CodeBuildActionRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["codebuild:BatchGetBuilds","codebuild:StartBuild","codebuild:StopBuild"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineAssetsFileAsset185A67CB4","Arn"]},{"Fn::GetAtt":["PipelineAssetsFileAsset24D2D639B","Arn"]},{"Fn::GetAtt":["PipelineBuildSynthCdkBuildProject6BEFA8E6","Arn"]},{"Fn::GetAtt":["PipelineUpdatePipelineSelfMutationDAA41400","Arn"]}]}],"Version":"2012-10-17"},"policyName":"PipelineCodeBuildActionRoleDefaultPolicy1D62A6FE","roles":[{"Ref":"PipelineCodeBuildActionRole226DB0CB"}]}}}}}}},"UpdatePipeline":{"id":"UpdatePipeline","path":"PipelineStack/Pipeline/UpdatePipeline","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"SelfMutation":{"id":"SelfMutation","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.PipelineProject","version":"0.0.0","metadata":[{},{},{}]},"children":{"Role":{"id":"Role","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"ec2:CreateNetworkInterfacePermission","Condition":{"StringEquals":{"ec2:Subnet":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":subnet/",{"Ref":"VpcPrivateSubnet1Subnet536B997A"}]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":subnet/",{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]]}],"ec2:AuthorizedService":"codebuild.amazonaws.com"}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":network-interface/*"]]}},{"Action":["logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":logs:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/",{"Ref":"PipelineUpdatePipelineSelfMutationDAA41400"},":*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":logs:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/",{"Ref":"PipelineUpdatePipelineSelfMutationDAA41400"}]]}]},{"Action":["codebuild:BatchPutCodeCoverages","codebuild:BatchPutTestCases","codebuild:CreateReport","codebuild:CreateReportGroup","codebuild:UpdateReport"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":codebuild:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":report-group/",{"Ref":"PipelineUpdatePipelineSelfMutationDAA41400"},"-*"]]}},{"Action":"sts:AssumeRole","Condition":{"ForAnyValue:StringEquals":{"iam:ResourceTag/aws-cdk:bootstrap-role":["image-publishing","file-publishing","deploy"]}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:*:iam::",{"Ref":"AWS::AccountId"},":role/*"]]}},{"Action":["cloudformation:DescribeStacks","s3:ListBucket"],"Effect":"Allow","Resource":"*"},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]}],"Version":"2012-10-17"},"policyName":"PipelineUpdatePipelineSelfMutationRoleDefaultPolicyA225DA4E","roles":[{"Ref":"PipelineUpdatePipelineSelfMutationRole57E559E8"}]}}}}}}},"SecurityGroup":{"id":"SecurityGroup","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*","allowAllOutbound":"*"}]},"children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/SecurityGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroup","aws:cdk:cloudformation:props":{"groupDescription":"Automatic generated security group for CodeBuild PipelineStackPipelineUpdatePipelineSelfMutationE51045FC","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.CfnProject","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::CodeBuild::Project","aws:cdk:cloudformation:props":{"artifacts":{"type":"CODEPIPELINE"},"cache":{"type":"NO_CACHE"},"description":"Pipeline step PipelineStack/Pipeline/UpdatePipeline/SelfMutate","encryptionKey":"alias/aws/s3","environment":{"type":"LINUX_CONTAINER","image":"aws/codebuild/standard:7.0","imagePullCredentialsType":"CODEBUILD","privilegedMode":false,"computeType":"BUILD_GENERAL1_SMALL"},"serviceRole":{"Fn::GetAtt":["PipelineUpdatePipelineSelfMutationRole57E559E8","Arn"]},"source":{"type":"CODEPIPELINE","buildSpec":"{\n \"version\": \"0.2\",\n \"phases\": {\n \"install\": {\n \"commands\": [\n \"npm install -g aws-cdk@2\"\n ]\n },\n \"build\": {\n \"commands\": [\n \"cdk -a . deploy PipelineStack --require-approval=never --verbose\"\n ]\n }\n }\n}"},"vpcConfig":{"vpcId":{"Ref":"Vpc8378EB38"},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["PipelineUpdatePipelineSelfMutationSecurityGroup94164EDC","GroupId"]}]}}}},"PolicyDocument":{"id":"PolicyDocument","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/PolicyDocument","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/UpdatePipeline/SelfMutation/PolicyDocument/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["ec2:CreateNetworkInterface","ec2:DeleteNetworkInterface","ec2:DescribeDhcpOptions","ec2:DescribeNetworkInterfaces","ec2:DescribeSecurityGroups","ec2:DescribeSubnets","ec2:DescribeVpcs"],"Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"PipelineUpdatePipelineSelfMutationPolicyDocumentD327DC74","roles":[{"Ref":"PipelineUpdatePipelineSelfMutationRole57E559E8"}]}}}}}}}}},"Assets":{"id":"Assets","path":"PipelineStack/Pipeline/Assets","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"FileRole":{"id":"FileRole","path":"PipelineStack/Pipeline/Assets/FileRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportFileRole":{"id":"ImportFileRole","path":"PipelineStack/Pipeline/Assets/FileRole/ImportFileRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Assets/FileRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"AWS":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":root"]]},"Service":"codebuild.amazonaws.com"}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"PipelineStack/Pipeline/Assets/FileRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Assets/FileRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":logs:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/*"]]}},{"Action":["codebuild:BatchPutCodeCoverages","codebuild:BatchPutTestCases","codebuild:CreateReport","codebuild:CreateReportGroup","codebuild:UpdateReport"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":codebuild:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":report-group/*"]]}},{"Action":["codebuild:BatchGetBuilds","codebuild:StartBuild","codebuild:StopBuild"],"Effect":"Allow","Resource":"*"},{"Action":"sts:AssumeRole","Effect":"Allow","Resource":{"Fn::Sub":"arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"}},{"Action":"ec2:CreateNetworkInterfacePermission","Condition":{"StringEquals":{"ec2:Subnet":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":subnet/",{"Ref":"VpcPrivateSubnet1Subnet536B997A"}]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":subnet/",{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]]}],"ec2:AuthorizedService":"codebuild.amazonaws.com"}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":network-interface/*"]]}},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]}],"Version":"2012-10-17"},"policyName":"PipelineAssetsFileRoleDefaultPolicy14DB8755","roles":[{"Ref":"PipelineAssetsFileRole59943A77"}]}}}}}}},"FileAsset1":{"id":"FileAsset1","path":"PipelineStack/Pipeline/Assets/FileAsset1","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.PipelineProject","version":"0.0.0","metadata":[{},{},{}]},"children":{"SecurityGroup":{"id":"SecurityGroup","path":"PipelineStack/Pipeline/Assets/FileAsset1/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*","allowAllOutbound":"*"}]},"children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Assets/FileAsset1/SecurityGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroup","aws:cdk:cloudformation:props":{"groupDescription":"Automatic generated security group for CodeBuild PipelineStackPipelineAssetsFileAsset10191BEFB","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Assets/FileAsset1/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.CfnProject","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::CodeBuild::Project","aws:cdk:cloudformation:props":{"artifacts":{"type":"CODEPIPELINE"},"cache":{"type":"NO_CACHE"},"description":"Pipeline step PipelineStack/Pipeline/Assets/Asset","encryptionKey":"alias/aws/s3","environment":{"type":"LINUX_CONTAINER","image":"aws/codebuild/standard:7.0","imagePullCredentialsType":"CODEBUILD","privilegedMode":false,"computeType":"BUILD_GENERAL1_SMALL"},"serviceRole":{"Fn::GetAtt":["PipelineAssetsFileRole59943A77","Arn"]},"source":{"type":"CODEPIPELINE","buildSpec":"{\n \"version\": \"0.2\",\n \"phases\": {\n \"install\": {\n \"commands\": [\n \"npm install -g cdk-assets@latest\"\n ]\n },\n \"build\": {\n \"commands\": [\n \"cdk-assets --path \\\"assembly-PipelineStack-Beta/PipelineStackBetaStack1E6541489.assets.json\\\" --verbose publish \\\"8289faf53c7da377bb2b90615999171adef5e1d8f6b88810e5fef75e6ca09ba5:current_account-current_region-3d50c90e\\\"\"\n ]\n }\n }\n}"},"vpcConfig":{"vpcId":{"Ref":"Vpc8378EB38"},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["PipelineAssetsFileAsset1SecurityGroupF04F1AD4","GroupId"]}]}}}},"PolicyDocument":{"id":"PolicyDocument","path":"PipelineStack/Pipeline/Assets/FileAsset1/PolicyDocument","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Assets/FileAsset1/PolicyDocument/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["ec2:CreateNetworkInterface","ec2:DeleteNetworkInterface","ec2:DescribeDhcpOptions","ec2:DescribeNetworkInterfaces","ec2:DescribeSecurityGroups","ec2:DescribeSubnets","ec2:DescribeVpcs"],"Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"PipelineAssetsFileAsset1PolicyDocument4681543E","roles":[{"Ref":"PipelineAssetsFileRole59943A77"}]}}}}}}},"FileAsset2":{"id":"FileAsset2","path":"PipelineStack/Pipeline/Assets/FileAsset2","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.PipelineProject","version":"0.0.0","metadata":[{},{},{}]},"children":{"SecurityGroup":{"id":"SecurityGroup","path":"PipelineStack/Pipeline/Assets/FileAsset2/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*","allowAllOutbound":"*"}]},"children":{"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Assets/FileAsset2/SecurityGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroup","aws:cdk:cloudformation:props":{"groupDescription":"Automatic generated security group for CodeBuild PipelineStackPipelineAssetsFileAsset24DB856A2","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"PipelineStack/Pipeline/Assets/FileAsset2/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.CfnProject","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::CodeBuild::Project","aws:cdk:cloudformation:props":{"artifacts":{"type":"CODEPIPELINE"},"cache":{"type":"NO_CACHE"},"description":"Pipeline step PipelineStack/Pipeline/Assets/Asset2","encryptionKey":"alias/aws/s3","environment":{"type":"LINUX_CONTAINER","image":"aws/codebuild/standard:7.0","imagePullCredentialsType":"CODEBUILD","privilegedMode":false,"computeType":"BUILD_GENERAL1_SMALL"},"serviceRole":{"Fn::GetAtt":["PipelineAssetsFileRole59943A77","Arn"]},"source":{"type":"CODEPIPELINE","buildSpec":"{\n \"version\": \"0.2\",\n \"phases\": {\n \"install\": {\n \"commands\": [\n \"npm install -g cdk-assets@latest\"\n ]\n },\n \"build\": {\n \"commands\": [\n \"cdk-assets --path \\\"assembly-PipelineStack-Beta/PipelineStackBetaStack1E6541489.assets.json\\\" --verbose publish \\\"ac76997971c3f6ddf37120660003f1ced72b4fc58c498dfd99c78fa77e721e0e:current_account-current_region-8b0ef02d\\\"\"\n ]\n }\n }\n}"},"vpcConfig":{"vpcId":{"Ref":"Vpc8378EB38"},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["PipelineAssetsFileAsset2SecurityGroupA400C1A5","GroupId"]}]}}}}}}}}}},"Beta":{"id":"Beta","path":"PipelineStack/Beta","constructInfo":{"fqn":"aws-cdk-lib.Stage","version":"0.0.0"},"children":{"Stack1":{"id":"Stack1","path":"PipelineStack/Beta/Stack1","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Asset":{"id":"Asset","path":"PipelineStack/Beta/Stack1/Asset","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"PipelineStack/Beta/Stack1/Asset/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"PipelineStack/Beta/Stack1/Asset/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Asset2":{"id":"Asset2","path":"PipelineStack/Beta/Stack1/Asset2","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"PipelineStack/Beta/Stack1/Asset2/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"PipelineStack/Beta/Stack1/Asset2/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"OtherQueue":{"id":"OtherQueue","path":"PipelineStack/Beta/Stack1/OtherQueue","constructInfo":{"fqn":"aws-cdk-lib.aws_sqs.Queue","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"PipelineStack/Beta/Stack1/OtherQueue/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_sqs.CfnQueue","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::SQS::Queue","aws:cdk:cloudformation:props":{}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"PipelineStack/Beta/Stack1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"PipelineStack/Beta/Stack1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"PipelineStack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"PipelineStack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/PipelineAssetsTestDefaultTestDeployAssert9AFEBA62.assets.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/PipelineAssetsTestDefaultTestDeployAssert9AFEBA62.assets.json new file mode 100644 index 0000000000000..b388d955feab0 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/PipelineAssetsTestDefaultTestDeployAssert9AFEBA62.assets.json @@ -0,0 +1,20 @@ +{ + "version": "44.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "PipelineAssetsTestDefaultTestDeployAssert9AFEBA62 Template", + "source": { + "path": "PipelineAssetsTestDefaultTestDeployAssert9AFEBA62.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region-d8d86b35": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/PipelineAssetsTestDefaultTestDeployAssert9AFEBA62.template.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/PipelineAssetsTestDefaultTestDeployAssert9AFEBA62.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/PipelineAssetsTestDefaultTestDeployAssert9AFEBA62.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Production/cdk.out b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Production/cdk.out new file mode 100644 index 0000000000000..b3a26d44a5f73 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Production/cdk.out @@ -0,0 +1 @@ +{"version":"44.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Production/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Production/manifest.json new file mode 100644 index 0000000000000..c9f71e271f8ea --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Production/manifest.json @@ -0,0 +1,99 @@ +{ + "version": "44.0.0", + "artifacts": { + "pipelineassetstackProductionprdlambdastack4E5ABBC0.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "pipelineassetstackProductionprdlambdastack4E5ABBC0.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "pipelineassetstackProductionprdlambdastack4E5ABBC0": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/us-east-1", + "properties": { + "templateFile": "pipelineassetstackProductionprdlambdastack4E5ABBC0.template.json", + "terminationProtection": false, + "validateOnSynth": true, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-us-east-1", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-us-east-1", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1/cfbb99b20a27c1cbddf6bb393ab973d5a6a294d79e63f7423009366292536cbf.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "pipelineassetstackProductionprdlambdastack4E5ABBC0.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-us-east-1", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + }, + "stackName": "Production-prd-lambda-stack" + }, + "dependencies": [ + "pipelineassetstackProductionprdlambdastack4E5ABBC0.assets" + ], + "metadata": { + "/pipeline-asset-stack/Production/prd-lambda-stack/LambdaFN": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/pipeline-asset-stack/Production/prd-lambda-stack/LambdaFN/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/pipeline-asset-stack/Production/prd-lambda-stack/LambdaFN/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/pipeline-asset-stack/Production/prd-lambda-stack/LambdaFN/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "LambdaFNServiceRole1CCEDDD9" + } + ], + "/pipeline-asset-stack/Production/prd-lambda-stack/LambdaFN/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "LambdaFNC3761C8C" + } + ], + "/pipeline-asset-stack/Production/prd-lambda-stack/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/pipeline-asset-stack/Production/prd-lambda-stack/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "pipeline-asset-stack/Production/prd-lambda-stack" + } + }, + "minimumCliVersion": "2.1018.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Production/pipelineassetstackProductionprdlambdastack4E5ABBC0.assets.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Production/pipelineassetstackProductionprdlambdastack4E5ABBC0.assets.json new file mode 100644 index 0000000000000..b7c53c42a4a6f --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Production/pipelineassetstackProductionprdlambdastack4E5ABBC0.assets.json @@ -0,0 +1,36 @@ +{ + "version": "44.0.0", + "files": { + "a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e": { + "displayName": "LambdaFN/Code", + "source": { + "path": "../asset.a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e", + "packaging": "zip" + }, + "destinations": { + "current_account-us-east-1-65520044": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1", + "objectKey": "a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e.zip", + "region": "us-east-1", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-us-east-1" + } + } + }, + "cfbb99b20a27c1cbddf6bb393ab973d5a6a294d79e63f7423009366292536cbf": { + "displayName": "Production-prd-lambda-stack Template", + "source": { + "path": "pipelineassetstackProductionprdlambdastack4E5ABBC0.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-us-east-1-3305ce3d": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1", + "objectKey": "cfbb99b20a27c1cbddf6bb393ab973d5a6a294d79e63f7423009366292536cbf.json", + "region": "us-east-1", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-us-east-1" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Production/pipelineassetstackProductionprdlambdastack4E5ABBC0.template.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Production/pipelineassetstackProductionprdlambdastack4E5ABBC0.template.json new file mode 100644 index 0000000000000..75f5de8f8cd83 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Production/pipelineassetstackProductionprdlambdastack4E5ABBC0.template.json @@ -0,0 +1,91 @@ +{ + "Resources": { + "LambdaFNServiceRole1CCEDDD9": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "LambdaFNC3761C8C": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1" + }, + "S3Key": "a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e.zip" + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "LambdaFNServiceRole1CCEDDD9", + "Arn" + ] + }, + "Runtime": "python3.10" + }, + "DependsOn": [ + "LambdaFNServiceRole1CCEDDD9" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Staging/cdk.out b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Staging/cdk.out new file mode 100644 index 0000000000000..b3a26d44a5f73 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Staging/cdk.out @@ -0,0 +1 @@ +{"version":"44.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Staging/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Staging/manifest.json new file mode 100644 index 0000000000000..10960d9c53510 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Staging/manifest.json @@ -0,0 +1,99 @@ +{ + "version": "44.0.0", + "artifacts": { + "pipelineassetstackStagingdevlambdastackEC748226.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "pipelineassetstackStagingdevlambdastackEC748226.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/dev/version" + } + }, + "pipelineassetstackStagingdevlambdastackEC748226": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/us-east-1", + "properties": { + "templateFile": "pipelineassetstackStagingdevlambdastackEC748226.template.json", + "terminationProtection": false, + "validateOnSynth": true, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-dev-deploy-role-${AWS::AccountId}-us-east-1", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-dev-cfn-exec-role-${AWS::AccountId}-us-east-1", + "stackTemplateAssetObjectUrl": "s3://cdk-dev-assets-${AWS::AccountId}-us-east-1/f87183bd8d7344e30c0b6220b9124aa12ca1a31e6660c3ec7fb303650913f59c.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/dev/version", + "additionalDependencies": [ + "pipelineassetstackStagingdevlambdastackEC748226.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-dev-lookup-role-${AWS::AccountId}-us-east-1", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/dev/version" + }, + "stackName": "Staging-dev-lambda-stack" + }, + "dependencies": [ + "pipelineassetstackStagingdevlambdastackEC748226.assets" + ], + "metadata": { + "/pipeline-asset-stack/Staging/dev-lambda-stack/LambdaFN": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/pipeline-asset-stack/Staging/dev-lambda-stack/LambdaFN/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/pipeline-asset-stack/Staging/dev-lambda-stack/LambdaFN/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/pipeline-asset-stack/Staging/dev-lambda-stack/LambdaFN/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "LambdaFNServiceRole1CCEDDD9" + } + ], + "/pipeline-asset-stack/Staging/dev-lambda-stack/LambdaFN/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "LambdaFNC3761C8C" + } + ], + "/pipeline-asset-stack/Staging/dev-lambda-stack/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/pipeline-asset-stack/Staging/dev-lambda-stack/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "pipeline-asset-stack/Staging/dev-lambda-stack" + } + }, + "minimumCliVersion": "2.1018.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Staging/pipelineassetstackStagingdevlambdastackEC748226.assets.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Staging/pipelineassetstackStagingdevlambdastackEC748226.assets.json new file mode 100644 index 0000000000000..c442420955cb7 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Staging/pipelineassetstackStagingdevlambdastackEC748226.assets.json @@ -0,0 +1,36 @@ +{ + "version": "44.0.0", + "files": { + "a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e": { + "displayName": "LambdaFN/Code", + "source": { + "path": "../asset.a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e", + "packaging": "zip" + }, + "destinations": { + "current_account-us-east-1-dd2b480a": { + "bucketName": "cdk-dev-assets-${AWS::AccountId}-us-east-1", + "objectKey": "a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e.zip", + "region": "us-east-1", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-dev-file-publishing-role-${AWS::AccountId}-us-east-1" + } + } + }, + "f87183bd8d7344e30c0b6220b9124aa12ca1a31e6660c3ec7fb303650913f59c": { + "displayName": "Staging-dev-lambda-stack Template", + "source": { + "path": "pipelineassetstackStagingdevlambdastackEC748226.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-us-east-1-2daa58d8": { + "bucketName": "cdk-dev-assets-${AWS::AccountId}-us-east-1", + "objectKey": "f87183bd8d7344e30c0b6220b9124aa12ca1a31e6660c3ec7fb303650913f59c.json", + "region": "us-east-1", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-dev-file-publishing-role-${AWS::AccountId}-us-east-1" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Staging/pipelineassetstackStagingdevlambdastackEC748226.template.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Staging/pipelineassetstackStagingdevlambdastackEC748226.template.json new file mode 100644 index 0000000000000..dd53e3b3fa22e --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/assembly-pipeline-asset-stack-Staging/pipelineassetstackStagingdevlambdastackEC748226.template.json @@ -0,0 +1,91 @@ +{ + "Resources": { + "LambdaFNServiceRole1CCEDDD9": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "LambdaFNC3761C8C": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-dev-assets-${AWS::AccountId}-us-east-1" + }, + "S3Key": "a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e.zip" + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "LambdaFNServiceRole1CCEDDD9", + "Arn" + ] + }, + "Runtime": "python3.10" + }, + "DependsOn": [ + "LambdaFNServiceRole1CCEDDD9" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/dev/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js new file mode 100644 index 0000000000000..1002ba018e9fb --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js @@ -0,0 +1 @@ +"use strict";var f=Object.create;var i=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var A=(t,e)=>{for(var o in e)i(t,o,{get:e[o],enumerable:!0})},d=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of C(e))!P.call(t,s)&&s!==o&&i(t,s,{get:()=>e[s],enumerable:!(r=I(e,s))||r.enumerable});return t};var l=(t,e,o)=>(o=t!=null?f(w(t)):{},d(e||!t||!t.__esModule?i(o,"default",{value:t,enumerable:!0}):o,t)),B=t=>d(i({},"__esModule",{value:!0}),t);var q={};A(q,{autoDeleteHandler:()=>S,handler:()=>H});module.exports=B(q);var h=require("@aws-sdk/client-s3");var y=l(require("https")),m=l(require("url")),a={sendHttpRequest:D,log:T,includeStackTraces:!0,userHandlerIndex:"./index"},p="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",L="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";function R(t){return async(e,o)=>{let r={...e,ResponseURL:"..."};if(a.log(JSON.stringify(r,void 0,2)),e.RequestType==="Delete"&&e.PhysicalResourceId===p){a.log("ignoring DELETE event caused by a failed CREATE event"),await u("SUCCESS",e);return}try{let s=await t(r,o),n=k(e,s);await u("SUCCESS",n)}catch(s){let n={...e,Reason:a.includeStackTraces?s.stack:s.message};n.PhysicalResourceId||(e.RequestType==="Create"?(a.log("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),n.PhysicalResourceId=p):a.log(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(e)}`)),await u("FAILED",n)}}}function k(t,e={}){let o=e.PhysicalResourceId??t.PhysicalResourceId??t.RequestId;if(t.RequestType==="Delete"&&o!==t.PhysicalResourceId)throw new Error(`DELETE: cannot change the physical resource ID from "${t.PhysicalResourceId}" to "${e.PhysicalResourceId}" during deletion`);return{...t,...e,PhysicalResourceId:o}}async function u(t,e){let o={Status:t,Reason:e.Reason??t,StackId:e.StackId,RequestId:e.RequestId,PhysicalResourceId:e.PhysicalResourceId||L,LogicalResourceId:e.LogicalResourceId,NoEcho:e.NoEcho,Data:e.Data},r=m.parse(e.ResponseURL),s=`${r.protocol}//${r.hostname}/${r.pathname}?***`;a.log("submit response to cloudformation",s,o);let n=JSON.stringify(o),E={hostname:r.hostname,path:r.path,method:"PUT",headers:{"content-type":"","content-length":Buffer.byteLength(n,"utf8")}};await O({attempts:5,sleep:1e3},a.sendHttpRequest)(E,n)}async function D(t,e){return new Promise((o,r)=>{try{let s=y.request(t,n=>{n.resume(),!n.statusCode||n.statusCode>=400?r(new Error(`Unsuccessful HTTP response: ${n.statusCode}`)):o()});s.on("error",r),s.write(e),s.end()}catch(s){r(s)}})}function T(t,...e){console.log(t,...e)}function O(t,e){return async(...o)=>{let r=t.attempts,s=t.sleep;for(;;)try{return await e(...o)}catch(n){if(r--<=0)throw n;await b(Math.floor(Math.random()*s)),s*=2}}}async function b(t){return new Promise(e=>setTimeout(e,t))}var g="aws-cdk:auto-delete-objects",x=JSON.stringify({Version:"2012-10-17",Statement:[]}),c=new h.S3({}),H=R(S);async function S(t){switch(t.RequestType){case"Create":return;case"Update":return{PhysicalResourceId:(await F(t)).PhysicalResourceId};case"Delete":return N(t.ResourceProperties?.BucketName)}}async function F(t){let e=t,o=e.OldResourceProperties?.BucketName;return{PhysicalResourceId:e.ResourceProperties?.BucketName??o}}async function _(t){try{let e=(await c.getBucketPolicy({Bucket:t}))?.Policy??x,o=JSON.parse(e);o.Statement.push({Principal:"*",Effect:"Deny",Action:["s3:PutObject"],Resource:[`arn:aws:s3:::${t}/*`]}),await c.putBucketPolicy({Bucket:t,Policy:JSON.stringify(o)})}catch(e){if(e.name==="NoSuchBucket")throw e;console.log(`Could not set new object deny policy on bucket '${t}' prior to deletion.`)}}async function U(t){let e;do{e=await c.listObjectVersions({Bucket:t});let o=[...e.Versions??[],...e.DeleteMarkers??[]];if(o.length===0)return;let r=o.map(s=>({Key:s.Key,VersionId:s.VersionId}));await c.deleteObjects({Bucket:t,Delete:{Objects:r}})}while(e?.IsTruncated)}async function N(t){if(!t)throw new Error("No BucketName was provided.");try{if(!await W(t)){console.log(`Bucket does not have '${g}' tag, skipping cleaning.`);return}await _(t),await U(t)}catch(e){if(e.name==="NoSuchBucket"){console.log(`Bucket '${t}' does not exist.`);return}throw e}}async function W(t){return(await c.getBucketTagging({Bucket:t})).TagSet?.some(o=>o.Key===g&&o.Value==="true")}0&&(module.exports={autoDeleteHandler,handler}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/asset.a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e/test-docker-asset/Dockerfile b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/asset.a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e/test-docker-asset/Dockerfile new file mode 100644 index 0000000000000..d67ab4b1cc12c --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/asset.a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e/test-docker-asset/Dockerfile @@ -0,0 +1,2 @@ +FROM scratch +RUN touch built.txt \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/asset.a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e/test-file-asset-two.txt b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/asset.a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e/test-file-asset-two.txt new file mode 100644 index 0000000000000..8b1c7231bf2f4 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/asset.a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e/test-file-asset-two.txt @@ -0,0 +1 @@ +Here's a second file asset. \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/asset.a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e/test-file-asset.txt b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/asset.a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e/test-file-asset.txt new file mode 100644 index 0000000000000..95e9dcd2e3bf0 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/asset.a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e/test-file-asset.txt @@ -0,0 +1 @@ +This is a file asset that's just here for kicks. \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/cdk.out b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/cdk.out new file mode 100644 index 0000000000000..b3a26d44a5f73 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"44.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/integ.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/integ.json new file mode 100644 index 0000000000000..a43edd5e51530 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/integ.json @@ -0,0 +1,14 @@ +{ + "version": "44.0.0", + "testCases": { + "PipelineAssetsTest/DefaultTest": { + "stacks": [ + "pipeline-asset-stack" + ], + "diffAssets": true, + "assertionStack": "PipelineAssetsTest/DefaultTest/DeployAssert", + "assertionStackName": "PipelineAssetsTestDefaultTestDeployAssert9AFEBA62" + } + }, + "minimumCliVersion": "2.1018.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/manifest.json new file mode 100644 index 0000000000000..fcaf405db3cdb --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/manifest.json @@ -0,0 +1,1717 @@ +{ + "version": "44.0.0", + "artifacts": { + "assembly-pipeline-asset-stack-Staging": { + "type": "cdk:cloud-assembly", + "properties": { + "directoryName": "assembly-pipeline-asset-stack-Staging", + "displayName": "pipeline-asset-stack/Staging" + } + }, + "assembly-pipeline-asset-stack-Production": { + "type": "cdk:cloud-assembly", + "properties": { + "directoryName": "assembly-pipeline-asset-stack-Production", + "displayName": "pipeline-asset-stack/Production" + } + }, + "pipeline-asset-stack.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "pipeline-asset-stack.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "pipeline-asset-stack": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/us-east-1", + "properties": { + "templateFile": "pipeline-asset-stack.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-us-east-1", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-us-east-1", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1/eb1d94126980e4b8ca707820a84c2bbee011d53608c2556f5b797afc1faac560.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "pipeline-asset-stack.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-us-east-1", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "pipeline-asset-stack.assets" + ], + "metadata": { + "/pipeline-asset-stack/assetsBucket": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "removalPolicy": "destroy", + "autoDeleteObjects": true + } + } + ], + "/pipeline-asset-stack/assetsBucket/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "assetsBucket3AE688CB" + } + ], + "/pipeline-asset-stack/assetsBucket/Policy": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "bucket": "*" + } + } + ], + "/pipeline-asset-stack/assetsBucket/Policy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "assetsBucketPolicyEF38D45C" + } + ], + "/pipeline-asset-stack/assetsBucket/AutoDeleteObjectsCustomResource": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/pipeline-asset-stack/assetsBucket/AutoDeleteObjectsCustomResource/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "assetsBucketAutoDeleteObjectsCustomResource4D7357CF" + } + ], + "/pipeline-asset-stack/Custom::S3AutoDeleteObjectsCustomResourceProvider": [ + { + "type": "aws:cdk:is-custom-resource-handler-customResourceProvider", + "data": true + } + ], + "/pipeline-asset-stack/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" + } + ], + "/pipeline-asset-stack/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "pipelineName": "*", + "pipelineType": "V2", + "crossAccountKeys": true, + "crossRegionReplicationBuckets": "*", + "reuseCrossRegionSupportStacks": "*", + "restartExecutionOnUpdate": true, + "role": "*", + "enableKeyRotation": "*", + "artifactBucket": "*", + "usePipelineRoleForActions": false + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStage": [ + { + "stageName": "*" + } + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStage": [ + { + "stageName": "*" + } + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStage": [ + { + "stageName": "*" + } + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStage": [ + { + "stageName": "*" + } + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStage": [ + { + "stageName": "*" + } + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStage": [ + { + "stageName": "*" + } + ] + } + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/ArtifactsBucketEncryptionKey": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "removalPolicy": "destroy", + "enableKeyRotation": "*" + } + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/ArtifactsBucketEncryptionKey/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineArtifactsBucketEncryptionKeyF5BF0670" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/ArtifactsBucketEncryptionKeyAlias": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "aliasName": "*", + "targetKey": "*", + "removalPolicy": "destroy" + } + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/ArtifactsBucketEncryptionKeyAlias/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineArtifactsBucketEncryptionKeyAlias94A07392" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/ArtifactsBucket": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "bucketName": "*", + "encryptionKey": "*", + "encryption": "KMS", + "enforceSSL": true, + "blockPublicAccess": "*", + "removalPolicy": "retain" + } + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/ArtifactsBucket/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineArtifactsBucketAEA9A052" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/ArtifactsBucket/Policy": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "bucket": "*" + } + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/ArtifactsBucket/Policy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineArtifactsBucketPolicyF53CCC52" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "roleName": "*" + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineRoleB27FAA37" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineRoleDefaultPolicy7BDC1ABB" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "Pipeline9850B417" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/Source/S3/CodePipelineActionRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "grantAssumeRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "grant": [ + "*", + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/Source/S3/CodePipelineActionRole/ImportCodePipelineActionRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/Source/S3/CodePipelineActionRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineSourceS3CodePipelineActionRole83895A58" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/Source/S3/CodePipelineActionRole/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/Source/S3/CodePipelineActionRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineSourceS3CodePipelineActionRoleDefaultPolicyB176A07F" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/Build/Synth/CdkBuildProject": [ + { + "type": "aws:cdk:analytics:construct", + "data": {} + }, + { + "type": "aws:cdk:analytics:construct", + "data": {} + }, + { + "type": "aws:cdk:analytics:method", + "data": {} + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineBuildSynthCdkBuildProjectRole231EEA2A" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineBuildSynthCdkBuildProjectRoleDefaultPolicyFB6C941C" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineBuildSynthCdkBuildProject6BEFA8E6" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-dev-deploy-role-${AWS::AccountId}-us-east-1": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-dev-deploy-role-${AWS::AccountId}-us-east-1": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-dev-cfn-exec-role-${AWS::AccountId}-us-east-1": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-dev-cfn-exec-role-${AWS::AccountId}-us-east-1": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-us-east-1": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-us-east-1": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": "*" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-us-east-1": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/pipeline-asset-stack/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-us-east-1": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/pipeline-asset-stack/Pipeline/CodeBuildActionRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": "*" + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "grantAssumeRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "grant": [ + "*", + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "grantAssumeRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "grant": [ + "*", + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "grantAssumeRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "grant": [ + "*", + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/pipeline-asset-stack/Pipeline/CodeBuildActionRole/ImportCodeBuildActionRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/pipeline-asset-stack/Pipeline/CodeBuildActionRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineCodeBuildActionRole226DB0CB" + } + ], + "/pipeline-asset-stack/Pipeline/CodeBuildActionRole/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/pipeline-asset-stack/Pipeline/CodeBuildActionRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineCodeBuildActionRoleDefaultPolicy1D62A6FE" + } + ], + "/pipeline-asset-stack/Pipeline/UpdatePipeline/SelfMutation": [ + { + "type": "aws:cdk:analytics:construct", + "data": {} + }, + { + "type": "aws:cdk:analytics:construct", + "data": {} + }, + { + "type": "aws:cdk:analytics:method", + "data": {} + } + ], + "/pipeline-asset-stack/Pipeline/UpdatePipeline/SelfMutation/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/pipeline-asset-stack/Pipeline/UpdatePipeline/SelfMutation/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/pipeline-asset-stack/Pipeline/UpdatePipeline/SelfMutation/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineUpdatePipelineSelfMutationRole57E559E8" + } + ], + "/pipeline-asset-stack/Pipeline/UpdatePipeline/SelfMutation/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/pipeline-asset-stack/Pipeline/UpdatePipeline/SelfMutation/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineUpdatePipelineSelfMutationRoleDefaultPolicyA225DA4E" + } + ], + "/pipeline-asset-stack/Pipeline/UpdatePipeline/SelfMutation/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineUpdatePipelineSelfMutationDAA41400" + } + ], + "/pipeline-asset-stack/Pipeline/Assets/FileRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": {} + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": {} + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/pipeline-asset-stack/Pipeline/Assets/FileRole/ImportFileRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/pipeline-asset-stack/Pipeline/Assets/FileRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineAssetsFileRole59943A77" + } + ], + "/pipeline-asset-stack/Pipeline/Assets/FileRole/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/pipeline-asset-stack/Pipeline/Assets/FileRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineAssetsFileRoleDefaultPolicy14DB8755" + } + ], + "/pipeline-asset-stack/Pipeline/Assets/FileAsset1": [ + { + "type": "aws:cdk:analytics:construct", + "data": {} + }, + { + "type": "aws:cdk:analytics:construct", + "data": {} + }, + { + "type": "aws:cdk:analytics:method", + "data": {} + } + ], + "/pipeline-asset-stack/Pipeline/Assets/FileAsset1/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PipelineAssetsFileAsset185A67CB4" + } + ], + "/pipeline-asset-stack/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/pipeline-asset-stack/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "pipeline-asset-stack" + }, + "PipelineAssetsTestDefaultTestDeployAssert9AFEBA62.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "PipelineAssetsTestDefaultTestDeployAssert9AFEBA62.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "PipelineAssetsTestDefaultTestDeployAssert9AFEBA62": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "PipelineAssetsTestDefaultTestDeployAssert9AFEBA62.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "PipelineAssetsTestDefaultTestDeployAssert9AFEBA62.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "PipelineAssetsTestDefaultTestDeployAssert9AFEBA62.assets" + ], + "metadata": { + "/PipelineAssetsTest/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/PipelineAssetsTest/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "PipelineAssetsTest/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1018.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/pipeline-asset-stack.assets.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/pipeline-asset-stack.assets.json new file mode 100644 index 0000000000000..10560a074b8d7 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/pipeline-asset-stack.assets.json @@ -0,0 +1,36 @@ +{ + "version": "44.0.0", + "files": { + "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61": { + "displayName": "pipeline-asset-stack/Custom::S3AutoDeleteObjectsCustomResourceProvider Code", + "source": { + "path": "asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61", + "packaging": "zip" + }, + "destinations": { + "current_account-us-east-1-07615106": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1", + "objectKey": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip", + "region": "us-east-1", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-us-east-1" + } + } + }, + "eb1d94126980e4b8ca707820a84c2bbee011d53608c2556f5b797afc1faac560": { + "displayName": "pipeline-asset-stack Template", + "source": { + "path": "pipeline-asset-stack.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-us-east-1-af40a802": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1", + "objectKey": "eb1d94126980e4b8ca707820a84c2bbee011d53608c2556f5b797afc1faac560.json", + "region": "us-east-1", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-us-east-1" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/pipeline-asset-stack.template.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/pipeline-asset-stack.template.json new file mode 100644 index 0000000000000..2117f97193362 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/pipeline-asset-stack.template.json @@ -0,0 +1,1701 @@ +{ + "Resources": { + "assetsBucket3AE688CB": { + "Type": "AWS::S3::Bucket", + "Properties": { + "Tags": [ + { + "Key": "aws-cdk:auto-delete-objects", + "Value": "true" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "assetsBucketPolicyEF38D45C": { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "assetsBucket3AE688CB" + }, + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "s3:DeleteObject*", + "s3:GetBucket*", + "s3:List*", + "s3:PutBucketPolicy" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + "Arn" + ] + } + }, + "Resource": [ + { + "Fn::GetAtt": [ + "assetsBucket3AE688CB", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "assetsBucket3AE688CB", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + } + } + }, + "assetsBucketAutoDeleteObjectsCustomResource4D7357CF": { + "Type": "Custom::S3AutoDeleteObjects", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", + "Arn" + ] + }, + "BucketName": { + "Ref": "assetsBucket3AE688CB" + } + }, + "DependsOn": [ + "assetsBucketPolicyEF38D45C" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ] + }, + "ManagedPolicyArns": [ + { + "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + } + ] + } + }, + "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1" + }, + "S3Key": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip" + }, + "Timeout": 900, + "MemorySize": 128, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + "Arn" + ] + }, + "Runtime": "nodejs22.x", + "Description": { + "Fn::Join": [ + "", + [ + "Lambda function for auto-deleting objects in ", + { + "Ref": "assetsBucket3AE688CB" + }, + " S3 bucket." + ] + ] + } + }, + "DependsOn": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" + ] + }, + "PipelineArtifactsBucketEncryptionKeyF5BF0670": { + "Type": "AWS::KMS::Key", + "Properties": { + "KeyPolicy": { + "Statement": [ + { + "Action": "kms:*", + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Decrypt", + "kms:DescribeKey" + ], + "Effect": "Allow", + "Principal": { + "AWS": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/cdk-dev-deploy-role-", + { + "Ref": "AWS::AccountId" + }, + "-us-east-1" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/cdk-hnb659fds-deploy-role-", + { + "Ref": "AWS::AccountId" + }, + "-us-east-1" + ] + ] + } + ] + }, + "Resource": "*" + } + ], + "Version": "2012-10-17" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "PipelineArtifactsBucketEncryptionKeyAlias94A07392": { + "Type": "AWS::KMS::Alias", + "Properties": { + "AliasName": "alias/codepipeline-pipeline-asset-stack-pipeline-ee324443", + "TargetKeyId": { + "Fn::GetAtt": [ + "PipelineArtifactsBucketEncryptionKeyF5BF0670", + "Arn" + ] + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "PipelineArtifactsBucketAEA9A052": { + "Type": "AWS::S3::Bucket", + "Properties": { + "BucketEncryption": { + "ServerSideEncryptionConfiguration": [ + { + "ServerSideEncryptionByDefault": { + "KMSMasterKeyID": { + "Fn::GetAtt": [ + "PipelineArtifactsBucketEncryptionKeyF5BF0670", + "Arn" + ] + }, + "SSEAlgorithm": "aws:kms" + } + } + ] + }, + "PublicAccessBlockConfiguration": { + "BlockPublicAcls": true, + "BlockPublicPolicy": true, + "IgnorePublicAcls": true, + "RestrictPublicBuckets": true + } + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "PipelineArtifactsBucketPolicyF53CCC52": { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "PipelineArtifactsBucketAEA9A052" + }, + "PolicyDocument": { + "Statement": [ + { + "Action": "s3:*", + "Condition": { + "Bool": { + "aws:SecureTransport": "false" + } + }, + "Effect": "Deny", + "Principal": { + "AWS": "*" + }, + "Resource": [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + }, + { + "Action": [ + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*" + ], + "Effect": "Allow", + "Principal": { + "AWS": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/cdk-dev-deploy-role-", + { + "Ref": "AWS::AccountId" + }, + "-us-east-1" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/cdk-hnb659fds-deploy-role-", + { + "Ref": "AWS::AccountId" + }, + "-us-east-1" + ] + ] + } + ] + }, + "Resource": [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + } + } + }, + "PipelineRoleB27FAA37": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "codepipeline.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "PipelineRoleDefaultPolicy7BDC1ABB": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "s3:Abort*", + "s3:DeleteObject*", + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*", + "s3:PutObject", + "s3:PutObjectLegalHold", + "s3:PutObjectRetention", + "s3:PutObjectTagging", + "s3:PutObjectVersionTagging" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + }, + { + "Action": [ + "kms:Decrypt", + "kms:DescribeKey", + "kms:Encrypt", + "kms:GenerateDataKey*", + "kms:ReEncrypt*" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "PipelineArtifactsBucketEncryptionKeyF5BF0670", + "Arn" + ] + } + }, + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "PipelineCodeBuildActionRole226DB0CB", + "Arn" + ] + }, + { + "Fn::GetAtt": [ + "PipelineSourceS3CodePipelineActionRole83895A58", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/cdk-dev-deploy-role-", + { + "Ref": "AWS::AccountId" + }, + "-us-east-1" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/cdk-hnb659fds-deploy-role-", + { + "Ref": "AWS::AccountId" + }, + "-us-east-1" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "PipelineRoleDefaultPolicy7BDC1ABB", + "Roles": [ + { + "Ref": "PipelineRoleB27FAA37" + } + ] + } + }, + "Pipeline9850B417": { + "Type": "AWS::CodePipeline::Pipeline", + "Properties": { + "ArtifactStore": { + "EncryptionKey": { + "Id": { + "Fn::GetAtt": [ + "PipelineArtifactsBucketEncryptionKeyF5BF0670", + "Arn" + ] + }, + "Type": "KMS" + }, + "Location": { + "Ref": "PipelineArtifactsBucketAEA9A052" + }, + "Type": "S3" + }, + "PipelineType": "V2", + "RestartExecutionOnUpdate": true, + "RoleArn": { + "Fn::GetAtt": [ + "PipelineRoleB27FAA37", + "Arn" + ] + }, + "Stages": [ + { + "Actions": [ + { + "ActionTypeId": { + "Category": "Source", + "Owner": "AWS", + "Provider": "S3", + "Version": "1" + }, + "Configuration": { + "S3Bucket": { + "Ref": "assetsBucket3AE688CB" + }, + "S3ObjectKey": "cdk-sample.zip" + }, + "Name": { + "Ref": "assetsBucket3AE688CB" + }, + "OutputArtifacts": [ + { + "Name": "c8245d2d6fb6250e68154d4e0009378253e99ba6e2_Source" + } + ], + "RoleArn": { + "Fn::GetAtt": [ + "PipelineSourceS3CodePipelineActionRole83895A58", + "Arn" + ] + }, + "RunOrder": 1 + } + ], + "Name": "Source" + }, + { + "Actions": [ + { + "ActionTypeId": { + "Category": "Build", + "Owner": "AWS", + "Provider": "CodeBuild", + "Version": "1" + }, + "Configuration": { + "ProjectName": { + "Ref": "PipelineBuildSynthCdkBuildProject6BEFA8E6" + }, + "EnvironmentVariables": "[{\"name\":\"_PROJECT_CONFIG_HASH\",\"type\":\"PLAINTEXT\",\"value\":\"9846e726ec481ed25679c0170187f40b4920586fd0e7314d24f56620d9f53f5b\"}]" + }, + "InputArtifacts": [ + { + "Name": "c8245d2d6fb6250e68154d4e0009378253e99ba6e2_Source" + } + ], + "Name": "Synth", + "OutputArtifacts": [ + { + "Name": "Synth_Output" + } + ], + "RoleArn": { + "Fn::GetAtt": [ + "PipelineCodeBuildActionRole226DB0CB", + "Arn" + ] + }, + "RunOrder": 1 + } + ], + "Name": "Build" + }, + { + "Actions": [ + { + "ActionTypeId": { + "Category": "Build", + "Owner": "AWS", + "Provider": "CodeBuild", + "Version": "1" + }, + "Configuration": { + "ProjectName": { + "Ref": "PipelineUpdatePipelineSelfMutationDAA41400" + }, + "EnvironmentVariables": "[{\"name\":\"_PROJECT_CONFIG_HASH\",\"type\":\"PLAINTEXT\",\"value\":\"fdaa7ca4160d5fecc8894c4ead7b2237a65cbbeba49379d6071823bfe10ecd88\"}]" + }, + "InputArtifacts": [ + { + "Name": "Synth_Output" + } + ], + "Name": "SelfMutate", + "RoleArn": { + "Fn::GetAtt": [ + "PipelineCodeBuildActionRole226DB0CB", + "Arn" + ] + }, + "RunOrder": 1 + } + ], + "Name": "UpdatePipeline" + }, + { + "Actions": [ + { + "ActionTypeId": { + "Category": "Build", + "Owner": "AWS", + "Provider": "CodeBuild", + "Version": "1" + }, + "Configuration": { + "ProjectName": { + "Ref": "PipelineAssetsFileAsset185A67CB4" + } + }, + "InputArtifacts": [ + { + "Name": "Synth_Output" + } + ], + "Name": "LambdaFN_Code", + "RoleArn": { + "Fn::GetAtt": [ + "PipelineCodeBuildActionRole226DB0CB", + "Arn" + ] + }, + "RunOrder": 1 + } + ], + "Name": "Assets" + }, + { + "Actions": [ + { + "ActionTypeId": { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1" + }, + "Configuration": { + "StackName": "Staging-dev-lambda-stack", + "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND", + "RoleArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/cdk-dev-cfn-exec-role-", + { + "Ref": "AWS::AccountId" + }, + "-us-east-1" + ] + ] + }, + "ActionMode": "CHANGE_SET_REPLACE", + "ChangeSetName": "PipelineChange", + "TemplatePath": "Synth_Output::assembly-pipeline-asset-stack-Staging/pipelineassetstackStagingdevlambdastackEC748226.template.json" + }, + "InputArtifacts": [ + { + "Name": "Synth_Output" + } + ], + "Name": "Prepare", + "RoleArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/cdk-dev-deploy-role-", + { + "Ref": "AWS::AccountId" + }, + "-us-east-1" + ] + ] + }, + "RunOrder": 1 + }, + { + "ActionTypeId": { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1" + }, + "Configuration": { + "StackName": "Staging-dev-lambda-stack", + "ActionMode": "CHANGE_SET_EXECUTE", + "ChangeSetName": "PipelineChange" + }, + "Name": "Deploy", + "RoleArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/cdk-dev-deploy-role-", + { + "Ref": "AWS::AccountId" + }, + "-us-east-1" + ] + ] + }, + "RunOrder": 2 + } + ], + "Name": "Staging" + }, + { + "Actions": [ + { + "ActionTypeId": { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1" + }, + "Configuration": { + "StackName": "Production-prd-lambda-stack", + "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND", + "RoleArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/cdk-hnb659fds-cfn-exec-role-", + { + "Ref": "AWS::AccountId" + }, + "-us-east-1" + ] + ] + }, + "ActionMode": "CHANGE_SET_REPLACE", + "ChangeSetName": "PipelineChange", + "TemplatePath": "Synth_Output::assembly-pipeline-asset-stack-Production/pipelineassetstackProductionprdlambdastack4E5ABBC0.template.json" + }, + "InputArtifacts": [ + { + "Name": "Synth_Output" + } + ], + "Name": "Prepare", + "RoleArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/cdk-hnb659fds-deploy-role-", + { + "Ref": "AWS::AccountId" + }, + "-us-east-1" + ] + ] + }, + "RunOrder": 1 + }, + { + "ActionTypeId": { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1" + }, + "Configuration": { + "StackName": "Production-prd-lambda-stack", + "ActionMode": "CHANGE_SET_EXECUTE", + "ChangeSetName": "PipelineChange" + }, + "Name": "Deploy", + "RoleArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/cdk-hnb659fds-deploy-role-", + { + "Ref": "AWS::AccountId" + }, + "-us-east-1" + ] + ] + }, + "RunOrder": 2 + } + ], + "Name": "Production" + } + ] + }, + "DependsOn": [ + "PipelineRoleDefaultPolicy7BDC1ABB", + "PipelineRoleB27FAA37" + ] + }, + "PipelineSourceS3CodePipelineActionRole83895A58": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "PipelineRoleB27FAA37", + "Arn" + ] + } + } + } + ], + "Version": "2012-10-17" + } + } + }, + "PipelineSourceS3CodePipelineActionRoleDefaultPolicyB176A07F": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "assetsBucket3AE688CB", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "assetsBucket3AE688CB", + "Arn" + ] + }, + "/cdk-sample.zip" + ] + ] + } + ] + }, + { + "Action": [ + "s3:Abort*", + "s3:DeleteObject*", + "s3:PutObject", + "s3:PutObjectLegalHold", + "s3:PutObjectRetention", + "s3:PutObjectTagging", + "s3:PutObjectVersionTagging" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + }, + { + "Action": [ + "kms:Decrypt", + "kms:Encrypt", + "kms:GenerateDataKey*", + "kms:ReEncrypt*" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "PipelineArtifactsBucketEncryptionKeyF5BF0670", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "PipelineSourceS3CodePipelineActionRoleDefaultPolicyB176A07F", + "Roles": [ + { + "Ref": "PipelineSourceS3CodePipelineActionRole83895A58" + } + ] + } + }, + "PipelineBuildSynthCdkBuildProjectRole231EEA2A": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "codebuild.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "PipelineBuildSynthCdkBuildProjectRoleDefaultPolicyFB6C941C": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::Join": [ + "", + [ + "arn:aws:logs:us-east-1:", + { + "Ref": "AWS::AccountId" + }, + ":log-group:/aws/codebuild/", + { + "Ref": "PipelineBuildSynthCdkBuildProject6BEFA8E6" + }, + ":*" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:aws:logs:us-east-1:", + { + "Ref": "AWS::AccountId" + }, + ":log-group:/aws/codebuild/", + { + "Ref": "PipelineBuildSynthCdkBuildProject6BEFA8E6" + } + ] + ] + } + ] + }, + { + "Action": [ + "codebuild:BatchPutCodeCoverages", + "codebuild:BatchPutTestCases", + "codebuild:CreateReport", + "codebuild:CreateReportGroup", + "codebuild:UpdateReport" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:aws:codebuild:us-east-1:", + { + "Ref": "AWS::AccountId" + }, + ":report-group/", + { + "Ref": "PipelineBuildSynthCdkBuildProject6BEFA8E6" + }, + "-*" + ] + ] + } + }, + { + "Action": [ + "s3:Abort*", + "s3:DeleteObject*", + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*", + "s3:PutObject", + "s3:PutObjectLegalHold", + "s3:PutObjectRetention", + "s3:PutObjectTagging", + "s3:PutObjectVersionTagging" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + }, + { + "Action": [ + "kms:Decrypt", + "kms:DescribeKey", + "kms:Encrypt", + "kms:GenerateDataKey*", + "kms:ReEncrypt*" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "PipelineArtifactsBucketEncryptionKeyF5BF0670", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "PipelineBuildSynthCdkBuildProjectRoleDefaultPolicyFB6C941C", + "Roles": [ + { + "Ref": "PipelineBuildSynthCdkBuildProjectRole231EEA2A" + } + ] + } + }, + "PipelineBuildSynthCdkBuildProject6BEFA8E6": { + "Type": "AWS::CodeBuild::Project", + "Properties": { + "Artifacts": { + "Type": "CODEPIPELINE" + }, + "Cache": { + "Type": "NO_CACHE" + }, + "Description": "Pipeline step pipeline-asset-stack/Pipeline/Build/Synth", + "EncryptionKey": { + "Fn::GetAtt": [ + "PipelineArtifactsBucketEncryptionKeyF5BF0670", + "Arn" + ] + }, + "Environment": { + "ComputeType": "BUILD_GENERAL1_SMALL", + "Image": "aws/codebuild/standard:7.0", + "ImagePullCredentialsType": "CODEBUILD", + "PrivilegedMode": false, + "Type": "LINUX_CONTAINER" + }, + "ServiceRole": { + "Fn::GetAtt": [ + "PipelineBuildSynthCdkBuildProjectRole231EEA2A", + "Arn" + ] + }, + "Source": { + "BuildSpec": "{\n \"version\": \"0.2\",\n \"phases\": {\n \"build\": {\n \"commands\": [\n \"npm ci\",\n \"npm run build\",\n \"npx cdk synth\"\n ]\n }\n },\n \"artifacts\": {\n \"base-directory\": \"cdk.out\",\n \"files\": \"**/*\"\n }\n}", + "Type": "CODEPIPELINE" + } + } + }, + "PipelineCodeBuildActionRole226DB0CB": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "PipelineRoleB27FAA37", + "Arn" + ] + } + } + } + ], + "Version": "2012-10-17" + } + } + }, + "PipelineCodeBuildActionRoleDefaultPolicy1D62A6FE": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "codebuild:BatchGetBuilds", + "codebuild:StartBuild", + "codebuild:StopBuild" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "PipelineAssetsFileAsset185A67CB4", + "Arn" + ] + }, + { + "Fn::GetAtt": [ + "PipelineBuildSynthCdkBuildProject6BEFA8E6", + "Arn" + ] + }, + { + "Fn::GetAtt": [ + "PipelineUpdatePipelineSelfMutationDAA41400", + "Arn" + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "PipelineCodeBuildActionRoleDefaultPolicy1D62A6FE", + "Roles": [ + { + "Ref": "PipelineCodeBuildActionRole226DB0CB" + } + ] + } + }, + "PipelineUpdatePipelineSelfMutationRole57E559E8": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "codebuild.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "PipelineUpdatePipelineSelfMutationRoleDefaultPolicyA225DA4E": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::Join": [ + "", + [ + "arn:aws:logs:us-east-1:", + { + "Ref": "AWS::AccountId" + }, + ":log-group:/aws/codebuild/", + { + "Ref": "PipelineUpdatePipelineSelfMutationDAA41400" + }, + ":*" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:aws:logs:us-east-1:", + { + "Ref": "AWS::AccountId" + }, + ":log-group:/aws/codebuild/", + { + "Ref": "PipelineUpdatePipelineSelfMutationDAA41400" + } + ] + ] + } + ] + }, + { + "Action": [ + "codebuild:BatchPutCodeCoverages", + "codebuild:BatchPutTestCases", + "codebuild:CreateReport", + "codebuild:CreateReportGroup", + "codebuild:UpdateReport" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:aws:codebuild:us-east-1:", + { + "Ref": "AWS::AccountId" + }, + ":report-group/", + { + "Ref": "PipelineUpdatePipelineSelfMutationDAA41400" + }, + "-*" + ] + ] + } + }, + { + "Action": "sts:AssumeRole", + "Condition": { + "ForAnyValue:StringEquals": { + "iam:ResourceTag/aws-cdk:bootstrap-role": [ + "image-publishing", + "file-publishing", + "deploy" + ] + } + }, + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:*:iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/*" + ] + ] + } + }, + { + "Action": [ + "cloudformation:DescribeStacks", + "s3:ListBucket" + ], + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + }, + { + "Action": [ + "kms:Decrypt", + "kms:DescribeKey", + "kms:Encrypt", + "kms:GenerateDataKey*", + "kms:ReEncrypt*" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "PipelineArtifactsBucketEncryptionKeyF5BF0670", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "PipelineUpdatePipelineSelfMutationRoleDefaultPolicyA225DA4E", + "Roles": [ + { + "Ref": "PipelineUpdatePipelineSelfMutationRole57E559E8" + } + ] + } + }, + "PipelineUpdatePipelineSelfMutationDAA41400": { + "Type": "AWS::CodeBuild::Project", + "Properties": { + "Artifacts": { + "Type": "CODEPIPELINE" + }, + "Cache": { + "Type": "NO_CACHE" + }, + "Description": "Pipeline step pipeline-asset-stack/Pipeline/UpdatePipeline/SelfMutate", + "EncryptionKey": { + "Fn::GetAtt": [ + "PipelineArtifactsBucketEncryptionKeyF5BF0670", + "Arn" + ] + }, + "Environment": { + "ComputeType": "BUILD_GENERAL1_SMALL", + "Image": "aws/codebuild/standard:7.0", + "ImagePullCredentialsType": "CODEBUILD", + "PrivilegedMode": false, + "Type": "LINUX_CONTAINER" + }, + "ServiceRole": { + "Fn::GetAtt": [ + "PipelineUpdatePipelineSelfMutationRole57E559E8", + "Arn" + ] + }, + "Source": { + "BuildSpec": "{\n \"version\": \"0.2\",\n \"phases\": {\n \"install\": {\n \"commands\": [\n \"npm install -g aws-cdk@2\"\n ]\n },\n \"build\": {\n \"commands\": [\n \"cdk -a . deploy pipeline-asset-stack --require-approval=never --verbose\"\n ]\n }\n }\n}", + "Type": "CODEPIPELINE" + } + } + }, + "PipelineAssetsFileRole59943A77": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "codebuild.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "PipelineAssetsFileRoleDefaultPolicy14DB8755": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:aws:logs:us-east-1:", + { + "Ref": "AWS::AccountId" + }, + ":log-group:/aws/codebuild/*" + ] + ] + } + }, + { + "Action": [ + "codebuild:BatchPutCodeCoverages", + "codebuild:BatchPutTestCases", + "codebuild:CreateReport", + "codebuild:CreateReportGroup", + "codebuild:UpdateReport" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:aws:codebuild:us-east-1:", + { + "Ref": "AWS::AccountId" + }, + ":report-group/*" + ] + ] + } + }, + { + "Action": [ + "codebuild:BatchGetBuilds", + "codebuild:StartBuild", + "codebuild:StopBuild" + ], + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Resource": [ + { + "Fn::Sub": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-dev-file-publishing-role-${AWS::AccountId}-us-east-1" + }, + { + "Fn::Sub": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-us-east-1" + } + ] + }, + { + "Action": [ + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "PipelineArtifactsBucketAEA9A052", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + }, + { + "Action": [ + "kms:Decrypt", + "kms:DescribeKey" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "PipelineArtifactsBucketEncryptionKeyF5BF0670", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "PipelineAssetsFileRoleDefaultPolicy14DB8755", + "Roles": [ + { + "Ref": "PipelineAssetsFileRole59943A77" + } + ] + } + }, + "PipelineAssetsFileAsset185A67CB4": { + "Type": "AWS::CodeBuild::Project", + "Properties": { + "Artifacts": { + "Type": "CODEPIPELINE" + }, + "Cache": { + "Type": "NO_CACHE" + }, + "Description": "Pipeline step pipeline-asset-stack/Pipeline/Assets/LambdaFN_Code", + "EncryptionKey": { + "Fn::GetAtt": [ + "PipelineArtifactsBucketEncryptionKeyF5BF0670", + "Arn" + ] + }, + "Environment": { + "ComputeType": "BUILD_GENERAL1_SMALL", + "Image": "aws/codebuild/standard:7.0", + "ImagePullCredentialsType": "CODEBUILD", + "PrivilegedMode": false, + "Type": "LINUX_CONTAINER" + }, + "ServiceRole": { + "Fn::GetAtt": [ + "PipelineAssetsFileRole59943A77", + "Arn" + ] + }, + "Source": { + "BuildSpec": "{\n \"version\": \"0.2\",\n \"phases\": {\n \"install\": {\n \"commands\": [\n \"npm install -g cdk-assets@latest\"\n ]\n },\n \"build\": {\n \"commands\": [\n \"cdk-assets --path \\\"assembly-pipeline-asset-stack-Staging/pipelineassetstackStagingdevlambdastackEC748226.assets.json\\\" --verbose publish \\\"a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e:current_account-us-east-1-dd2b480a\\\"\",\n \"cdk-assets --path \\\"assembly-pipeline-asset-stack-Production/pipelineassetstackProductionprdlambdastack4E5ABBC0.assets.json\\\" --verbose publish \\\"a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e:current_account-us-east-1-65520044\\\"\"\n ]\n }\n }\n}", + "Type": "CODEPIPELINE" + } + } + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/pipelineassetstackPipeline4182259A.dot b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/pipelineassetstackPipeline4182259A.dot new file mode 100644 index 0000000000000..e83b503425cb4 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/pipelineassetstackPipeline4182259A.dot @@ -0,0 +1,59 @@ +digraph G { + # Arrows represent an "unlocks" relationship (opposite of dependency). So chosen + # because the layout looks more natural that way. + # To represent subgraph dependencies, subgraphs are represented by BEGIN/END nodes. + # To render: `dot -Tsvg pipelineassetstackPipeline4182259A.dot > graph.svg`, open in a browser. + node [shape="box"]; +"BEGIN Build" [shape="cds", style="filled", fillcolor="#b7deff"]; +"END Build" [shape="cds", style="filled", fillcolor="#b7deff"]; +"Build.Synth"; +"Source.c8245d2d6fb6250e68154d4e0009378253e99ba6e2" -> "Build.Synth"; +"BEGIN Build" -> "Build.Synth"; +"Build.Synth" -> "END Build"; +"BEGIN UpdatePipeline" [shape="cds", style="filled", fillcolor="#b7deff"]; +"END UpdatePipeline" [shape="cds", style="filled", fillcolor="#b7deff"]; +"UpdatePipeline.SelfMutate"; +"Build.Synth" -> "UpdatePipeline.SelfMutate"; +"BEGIN UpdatePipeline" -> "UpdatePipeline.SelfMutate"; +"UpdatePipeline.SelfMutate" -> "END UpdatePipeline"; +"BEGIN Assets" [shape="cds", style="filled", fillcolor="#b7deff"]; +"END Assets" [shape="cds", style="filled", fillcolor="#b7deff"]; +"Assets.FileAsset1"; +"UpdatePipeline.SelfMutate" -> "Assets.FileAsset1"; +"BEGIN Assets" -> "Assets.FileAsset1"; +"Assets.FileAsset1" -> "END Assets"; +"BEGIN Staging" [shape="cds", style="filled", fillcolor="#b7deff"]; +"END Staging" [shape="cds", style="filled", fillcolor="#b7deff"]; +"UpdatePipeline.SelfMutate" -> "BEGIN Staging"; +"BEGIN Staging.dev-lambda-stack" [shape="cds", style="filled", fillcolor="#b7deff"]; +"END Staging.dev-lambda-stack" [shape="cds", style="filled", fillcolor="#b7deff"]; +"Staging.dev-lambda-stack.Deploy"; +"Staging.dev-lambda-stack.Prepare" -> "Staging.dev-lambda-stack.Deploy"; +"Staging.dev-lambda-stack.Prepare"; +"Build.Synth" -> "Staging.dev-lambda-stack.Prepare"; +"Assets.FileAsset1" -> "Staging.dev-lambda-stack.Prepare"; +"BEGIN Staging.dev-lambda-stack" -> "Staging.dev-lambda-stack.Prepare"; +"Staging.dev-lambda-stack.Deploy" -> "END Staging.dev-lambda-stack"; +"BEGIN Staging" -> "BEGIN Staging.dev-lambda-stack"; +"END Staging.dev-lambda-stack" -> "END Staging"; +"BEGIN Production" [shape="cds", style="filled", fillcolor="#b7deff"]; +"END Production" [shape="cds", style="filled", fillcolor="#b7deff"]; +"UpdatePipeline.SelfMutate" -> "BEGIN Production"; +"END Staging" -> "BEGIN Production"; +"BEGIN Production.prd-lambda-stack" [shape="cds", style="filled", fillcolor="#b7deff"]; +"END Production.prd-lambda-stack" [shape="cds", style="filled", fillcolor="#b7deff"]; +"Production.prd-lambda-stack.Deploy"; +"Production.prd-lambda-stack.Prepare" -> "Production.prd-lambda-stack.Deploy"; +"Production.prd-lambda-stack.Prepare"; +"Build.Synth" -> "Production.prd-lambda-stack.Prepare"; +"Assets.FileAsset1" -> "Production.prd-lambda-stack.Prepare"; +"BEGIN Production.prd-lambda-stack" -> "Production.prd-lambda-stack.Prepare"; +"Production.prd-lambda-stack.Deploy" -> "END Production.prd-lambda-stack"; +"BEGIN Production" -> "BEGIN Production.prd-lambda-stack"; +"END Production.prd-lambda-stack" -> "END Production"; +"BEGIN Source" [shape="cds", style="filled", fillcolor="#b7deff"]; +"END Source" [shape="cds", style="filled", fillcolor="#b7deff"]; +"Source.c8245d2d6fb6250e68154d4e0009378253e99ba6e2"; +"BEGIN Source" -> "Source.c8245d2d6fb6250e68154d4e0009378253e99ba6e2"; +"Source.c8245d2d6fb6250e68154d4e0009378253e99ba6e2" -> "END Source"; +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/tree.json new file mode 100644 index 0000000000000..31e5d13cec32e --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"pipeline-asset-stack":{"id":"pipeline-asset-stack","path":"pipeline-asset-stack","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"assetsBucket":{"id":"assetsBucket","path":"pipeline-asset-stack/assetsBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"removalPolicy":"destroy","autoDeleteObjects":true}]},"children":{"Resource":{"id":"Resource","path":"pipeline-asset-stack/assetsBucket/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"tags":[{"key":"aws-cdk:auto-delete-objects","value":"true"}]}}},"Policy":{"id":"Policy","path":"pipeline-asset-stack/assetsBucket/Policy","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"0.0.0","metadata":[{"bucket":"*"}]},"children":{"Resource":{"id":"Resource","path":"pipeline-asset-stack/assetsBucket/Policy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:props":{"bucket":{"Ref":"assetsBucket3AE688CB"},"policyDocument":{"Statement":[{"Action":["s3:DeleteObject*","s3:GetBucket*","s3:List*","s3:PutBucketPolicy"],"Effect":"Allow","Principal":{"AWS":{"Fn::GetAtt":["CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092","Arn"]}},"Resource":[{"Fn::GetAtt":["assetsBucket3AE688CB","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["assetsBucket3AE688CB","Arn"]},"/*"]]}]}],"Version":"2012-10-17"}}}}}},"AutoDeleteObjectsCustomResource":{"id":"AutoDeleteObjectsCustomResource","path":"pipeline-asset-stack/assetsBucket/AutoDeleteObjectsCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"pipeline-asset-stack/assetsBucket/AutoDeleteObjectsCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Custom::S3AutoDeleteObjectsCustomResourceProvider":{"id":"Custom::S3AutoDeleteObjectsCustomResourceProvider","path":"pipeline-asset-stack/Custom::S3AutoDeleteObjectsCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"pipeline-asset-stack/Custom::S3AutoDeleteObjectsCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"pipeline-asset-stack/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"pipeline-asset-stack/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"Pipeline":{"id":"Pipeline","path":"pipeline-asset-stack/Pipeline","constructInfo":{"fqn":"aws-cdk-lib.pipelines.CodePipeline","version":"0.0.0"},"children":{"Pipeline":{"id":"Pipeline","path":"pipeline-asset-stack/Pipeline/Pipeline","constructInfo":{"fqn":"aws-cdk-lib.aws_codepipeline.Pipeline","version":"0.0.0","metadata":[{"pipelineName":"*","pipelineType":"V2","crossAccountKeys":true,"crossRegionReplicationBuckets":"*","reuseCrossRegionSupportStacks":"*","restartExecutionOnUpdate":true,"role":"*","enableKeyRotation":"*","artifactBucket":"*","usePipelineRoleForActions":false},{"addStage":[{"stageName":"*"}]},{"addStage":[{"stageName":"*"}]},{"addStage":[{"stageName":"*"}]},{"addStage":[{"stageName":"*"}]},{"addStage":[{"stageName":"*"}]},{"addStage":[{"stageName":"*"}]}]},"children":{"ArtifactsBucketEncryptionKey":{"id":"ArtifactsBucketEncryptionKey","path":"pipeline-asset-stack/Pipeline/Pipeline/ArtifactsBucketEncryptionKey","constructInfo":{"fqn":"aws-cdk-lib.aws_kms.Key","version":"0.0.0","metadata":[{"removalPolicy":"destroy","enableKeyRotation":"*"}]},"children":{"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/Pipeline/ArtifactsBucketEncryptionKey/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_kms.CfnKey","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::KMS::Key","aws:cdk:cloudformation:props":{"keyPolicy":{"Statement":[{"Action":"kms:*","Effect":"Allow","Principal":{"AWS":{"Fn::Join":["",["arn:aws:iam::",{"Ref":"AWS::AccountId"},":root"]]}},"Resource":"*"},{"Action":["kms:Decrypt","kms:DescribeKey"],"Effect":"Allow","Principal":{"AWS":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-dev-deploy-role-",{"Ref":"AWS::AccountId"},"-us-east-1"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-deploy-role-",{"Ref":"AWS::AccountId"},"-us-east-1"]]}]},"Resource":"*"}],"Version":"2012-10-17"}}}}}},"ArtifactsBucketEncryptionKeyAlias":{"id":"ArtifactsBucketEncryptionKeyAlias","path":"pipeline-asset-stack/Pipeline/Pipeline/ArtifactsBucketEncryptionKeyAlias","constructInfo":{"fqn":"aws-cdk-lib.aws_kms.Alias","version":"0.0.0","metadata":[{"aliasName":"*","targetKey":"*","removalPolicy":"destroy"}]},"children":{"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/Pipeline/ArtifactsBucketEncryptionKeyAlias/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_kms.CfnAlias","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::KMS::Alias","aws:cdk:cloudformation:props":{"aliasName":"alias/codepipeline-pipeline-asset-stack-pipeline-ee324443","targetKeyId":{"Fn::GetAtt":["PipelineArtifactsBucketEncryptionKeyF5BF0670","Arn"]}}}}}},"ArtifactsBucket":{"id":"ArtifactsBucket","path":"pipeline-asset-stack/Pipeline/Pipeline/ArtifactsBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"bucketName":"*","encryptionKey":"*","encryption":"KMS","enforceSSL":true,"blockPublicAccess":"*","removalPolicy":"retain"}]},"children":{"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/Pipeline/ArtifactsBucket/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"bucketEncryption":{"serverSideEncryptionConfiguration":[{"serverSideEncryptionByDefault":{"sseAlgorithm":"aws:kms","kmsMasterKeyId":{"Fn::GetAtt":["PipelineArtifactsBucketEncryptionKeyF5BF0670","Arn"]}}}]},"publicAccessBlockConfiguration":{"blockPublicAcls":true,"blockPublicPolicy":true,"ignorePublicAcls":true,"restrictPublicBuckets":true}}}},"Policy":{"id":"Policy","path":"pipeline-asset-stack/Pipeline/Pipeline/ArtifactsBucket/Policy","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"0.0.0","metadata":[{"bucket":"*"}]},"children":{"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/Pipeline/ArtifactsBucket/Policy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:props":{"bucket":{"Ref":"PipelineArtifactsBucketAEA9A052"},"policyDocument":{"Statement":[{"Action":"s3:*","Condition":{"Bool":{"aws:SecureTransport":"false"}},"Effect":"Deny","Principal":{"AWS":"*"},"Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Principal":{"AWS":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-dev-deploy-role-",{"Ref":"AWS::AccountId"},"-us-east-1"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-deploy-role-",{"Ref":"AWS::AccountId"},"-us-east-1"]]}]},"Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]}],"Version":"2012-10-17"}}}}}}}},"Role":{"id":"Role","path":"pipeline-asset-stack/Pipeline/Pipeline/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"roleName":"*"},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"pipeline-asset-stack/Pipeline/Pipeline/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/Pipeline/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"codepipeline.amazonaws.com"}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"pipeline-asset-stack/Pipeline/Pipeline/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/Pipeline/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["s3:Abort*","s3:DeleteObject*","s3:GetBucket*","s3:GetObject*","s3:List*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]},{"Action":["kms:Decrypt","kms:DescribeKey","kms:Encrypt","kms:GenerateDataKey*","kms:ReEncrypt*"],"Effect":"Allow","Resource":{"Fn::GetAtt":["PipelineArtifactsBucketEncryptionKeyF5BF0670","Arn"]}},{"Action":"sts:AssumeRole","Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineCodeBuildActionRole226DB0CB","Arn"]},{"Fn::GetAtt":["PipelineSourceS3CodePipelineActionRole83895A58","Arn"]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-dev-deploy-role-",{"Ref":"AWS::AccountId"},"-us-east-1"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-deploy-role-",{"Ref":"AWS::AccountId"},"-us-east-1"]]}]}],"Version":"2012-10-17"},"policyName":"PipelineRoleDefaultPolicy7BDC1ABB","roles":[{"Ref":"PipelineRoleB27FAA37"}]}}}}}}},"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/Pipeline/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_codepipeline.CfnPipeline","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::CodePipeline::Pipeline","aws:cdk:cloudformation:props":{"artifactStore":{"type":"S3","location":{"Ref":"PipelineArtifactsBucketAEA9A052"},"encryptionKey":{"type":"KMS","id":{"Fn::GetAtt":["PipelineArtifactsBucketEncryptionKeyF5BF0670","Arn"]}}},"pipelineType":"V2","restartExecutionOnUpdate":true,"roleArn":{"Fn::GetAtt":["PipelineRoleB27FAA37","Arn"]},"stages":[{"name":"Source","actions":[{"name":{"Ref":"assetsBucket3AE688CB"},"outputArtifacts":[{"name":"c8245d2d6fb6250e68154d4e0009378253e99ba6e2_Source"}],"actionTypeId":{"category":"Source","version":"1","owner":"AWS","provider":"S3"},"configuration":{"S3Bucket":{"Ref":"assetsBucket3AE688CB"},"S3ObjectKey":"cdk-sample.zip"},"runOrder":1,"roleArn":{"Fn::GetAtt":["PipelineSourceS3CodePipelineActionRole83895A58","Arn"]}}]},{"name":"Build","actions":[{"name":"Synth","inputArtifacts":[{"name":"c8245d2d6fb6250e68154d4e0009378253e99ba6e2_Source"}],"outputArtifacts":[{"name":"Synth_Output"}],"actionTypeId":{"category":"Build","version":"1","owner":"AWS","provider":"CodeBuild"},"configuration":{"ProjectName":{"Ref":"PipelineBuildSynthCdkBuildProject6BEFA8E6"},"EnvironmentVariables":"[{\"name\":\"_PROJECT_CONFIG_HASH\",\"type\":\"PLAINTEXT\",\"value\":\"9846e726ec481ed25679c0170187f40b4920586fd0e7314d24f56620d9f53f5b\"}]"},"runOrder":1,"roleArn":{"Fn::GetAtt":["PipelineCodeBuildActionRole226DB0CB","Arn"]}}]},{"name":"UpdatePipeline","actions":[{"name":"SelfMutate","inputArtifacts":[{"name":"Synth_Output"}],"actionTypeId":{"category":"Build","version":"1","owner":"AWS","provider":"CodeBuild"},"configuration":{"ProjectName":{"Ref":"PipelineUpdatePipelineSelfMutationDAA41400"},"EnvironmentVariables":"[{\"name\":\"_PROJECT_CONFIG_HASH\",\"type\":\"PLAINTEXT\",\"value\":\"fdaa7ca4160d5fecc8894c4ead7b2237a65cbbeba49379d6071823bfe10ecd88\"}]"},"runOrder":1,"roleArn":{"Fn::GetAtt":["PipelineCodeBuildActionRole226DB0CB","Arn"]}}]},{"name":"Assets","actions":[{"name":"LambdaFN_Code","inputArtifacts":[{"name":"Synth_Output"}],"actionTypeId":{"category":"Build","version":"1","owner":"AWS","provider":"CodeBuild"},"configuration":{"ProjectName":{"Ref":"PipelineAssetsFileAsset185A67CB4"}},"runOrder":1,"roleArn":{"Fn::GetAtt":["PipelineCodeBuildActionRole226DB0CB","Arn"]}}]},{"name":"Staging","actions":[{"name":"Prepare","inputArtifacts":[{"name":"Synth_Output"}],"actionTypeId":{"category":"Deploy","version":"1","owner":"AWS","provider":"CloudFormation"},"configuration":{"StackName":"Staging-dev-lambda-stack","Capabilities":"CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND","RoleArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-dev-cfn-exec-role-",{"Ref":"AWS::AccountId"},"-us-east-1"]]},"ActionMode":"CHANGE_SET_REPLACE","ChangeSetName":"PipelineChange","TemplatePath":"Synth_Output::assembly-pipeline-asset-stack-Staging/pipelineassetstackStagingdevlambdastackEC748226.template.json"},"runOrder":1,"roleArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-dev-deploy-role-",{"Ref":"AWS::AccountId"},"-us-east-1"]]}},{"name":"Deploy","actionTypeId":{"category":"Deploy","version":"1","owner":"AWS","provider":"CloudFormation"},"configuration":{"StackName":"Staging-dev-lambda-stack","ActionMode":"CHANGE_SET_EXECUTE","ChangeSetName":"PipelineChange"},"runOrder":2,"roleArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-dev-deploy-role-",{"Ref":"AWS::AccountId"},"-us-east-1"]]}}]},{"name":"Production","actions":[{"name":"Prepare","inputArtifacts":[{"name":"Synth_Output"}],"actionTypeId":{"category":"Deploy","version":"1","owner":"AWS","provider":"CloudFormation"},"configuration":{"StackName":"Production-prd-lambda-stack","Capabilities":"CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND","RoleArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-cfn-exec-role-",{"Ref":"AWS::AccountId"},"-us-east-1"]]},"ActionMode":"CHANGE_SET_REPLACE","ChangeSetName":"PipelineChange","TemplatePath":"Synth_Output::assembly-pipeline-asset-stack-Production/pipelineassetstackProductionprdlambdastack4E5ABBC0.template.json"},"runOrder":1,"roleArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-deploy-role-",{"Ref":"AWS::AccountId"},"-us-east-1"]]}},{"name":"Deploy","actionTypeId":{"category":"Deploy","version":"1","owner":"AWS","provider":"CloudFormation"},"configuration":{"StackName":"Production-prd-lambda-stack","ActionMode":"CHANGE_SET_EXECUTE","ChangeSetName":"PipelineChange"},"runOrder":2,"roleArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::",{"Ref":"AWS::AccountId"},":role/cdk-hnb659fds-deploy-role-",{"Ref":"AWS::AccountId"},"-us-east-1"]]}}]}]}}},"Source":{"id":"Source","path":"pipeline-asset-stack/Pipeline/Pipeline/Source","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"S3":{"id":"S3","path":"pipeline-asset-stack/Pipeline/Pipeline/Source/S3","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"CodePipelineActionRole":{"id":"CodePipelineActionRole","path":"pipeline-asset-stack/Pipeline/Pipeline/Source/S3/CodePipelineActionRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"grantAssumeRole":["*"]},{"grant":["*","*"]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportCodePipelineActionRole":{"id":"ImportCodePipelineActionRole","path":"pipeline-asset-stack/Pipeline/Pipeline/Source/S3/CodePipelineActionRole/ImportCodePipelineActionRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/Pipeline/Source/S3/CodePipelineActionRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"AWS":{"Fn::GetAtt":["PipelineRoleB27FAA37","Arn"]}}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"pipeline-asset-stack/Pipeline/Pipeline/Source/S3/CodePipelineActionRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/Pipeline/Source/S3/CodePipelineActionRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["assetsBucket3AE688CB","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["assetsBucket3AE688CB","Arn"]},"/cdk-sample.zip"]]}]},{"Action":["s3:Abort*","s3:DeleteObject*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]},{"Action":["kms:Decrypt","kms:Encrypt","kms:GenerateDataKey*","kms:ReEncrypt*"],"Effect":"Allow","Resource":{"Fn::GetAtt":["PipelineArtifactsBucketEncryptionKeyF5BF0670","Arn"]}}],"Version":"2012-10-17"},"policyName":"PipelineSourceS3CodePipelineActionRoleDefaultPolicyB176A07F","roles":[{"Ref":"PipelineSourceS3CodePipelineActionRole83895A58"}]}}}}}}}}}}},"Build":{"id":"Build","path":"pipeline-asset-stack/Pipeline/Pipeline/Build","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"Synth":{"id":"Synth","path":"pipeline-asset-stack/Pipeline/Pipeline/Build/Synth","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"CdkBuildProject":{"id":"CdkBuildProject","path":"pipeline-asset-stack/Pipeline/Pipeline/Build/Synth/CdkBuildProject","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.PipelineProject","version":"0.0.0","metadata":[{},{},{}]},"children":{"Role":{"id":"Role","path":"pipeline-asset-stack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"pipeline-asset-stack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"pipeline-asset-stack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:aws:logs:us-east-1:",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/",{"Ref":"PipelineBuildSynthCdkBuildProject6BEFA8E6"},":*"]]},{"Fn::Join":["",["arn:aws:logs:us-east-1:",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/",{"Ref":"PipelineBuildSynthCdkBuildProject6BEFA8E6"}]]}]},{"Action":["codebuild:BatchPutCodeCoverages","codebuild:BatchPutTestCases","codebuild:CreateReport","codebuild:CreateReportGroup","codebuild:UpdateReport"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:aws:codebuild:us-east-1:",{"Ref":"AWS::AccountId"},":report-group/",{"Ref":"PipelineBuildSynthCdkBuildProject6BEFA8E6"},"-*"]]}},{"Action":["s3:Abort*","s3:DeleteObject*","s3:GetBucket*","s3:GetObject*","s3:List*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]},{"Action":["kms:Decrypt","kms:DescribeKey","kms:Encrypt","kms:GenerateDataKey*","kms:ReEncrypt*"],"Effect":"Allow","Resource":{"Fn::GetAtt":["PipelineArtifactsBucketEncryptionKeyF5BF0670","Arn"]}}],"Version":"2012-10-17"},"policyName":"PipelineBuildSynthCdkBuildProjectRoleDefaultPolicyFB6C941C","roles":[{"Ref":"PipelineBuildSynthCdkBuildProjectRole231EEA2A"}]}}}}}}},"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/Pipeline/Build/Synth/CdkBuildProject/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.CfnProject","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::CodeBuild::Project","aws:cdk:cloudformation:props":{"artifacts":{"type":"CODEPIPELINE"},"cache":{"type":"NO_CACHE"},"description":"Pipeline step pipeline-asset-stack/Pipeline/Build/Synth","encryptionKey":{"Fn::GetAtt":["PipelineArtifactsBucketEncryptionKeyF5BF0670","Arn"]},"environment":{"type":"LINUX_CONTAINER","image":"aws/codebuild/standard:7.0","imagePullCredentialsType":"CODEBUILD","privilegedMode":false,"computeType":"BUILD_GENERAL1_SMALL"},"serviceRole":{"Fn::GetAtt":["PipelineBuildSynthCdkBuildProjectRole231EEA2A","Arn"]},"source":{"type":"CODEPIPELINE","buildSpec":"{\n \"version\": \"0.2\",\n \"phases\": {\n \"build\": {\n \"commands\": [\n \"npm ci\",\n \"npm run build\",\n \"npx cdk synth\"\n ]\n }\n },\n \"artifacts\": {\n \"base-directory\": \"cdk.out\",\n \"files\": \"**/*\"\n }\n}"}}}}}}}}}},"UpdatePipeline":{"id":"UpdatePipeline","path":"pipeline-asset-stack/Pipeline/Pipeline/UpdatePipeline","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"SelfMutate":{"id":"SelfMutate","path":"pipeline-asset-stack/Pipeline/Pipeline/UpdatePipeline/SelfMutate","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Assets":{"id":"Assets","path":"pipeline-asset-stack/Pipeline/Pipeline/Assets","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"LambdaFN_Code":{"id":"LambdaFN_Code","path":"pipeline-asset-stack/Pipeline/Pipeline/Assets/LambdaFN_Code","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Staging":{"id":"Staging","path":"pipeline-asset-stack/Pipeline/Pipeline/Staging","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"Prepare":{"id":"Prepare","path":"pipeline-asset-stack/Pipeline/Pipeline/Staging/Prepare","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Deploy":{"id":"Deploy","path":"pipeline-asset-stack/Pipeline/Pipeline/Staging/Deploy","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-dev-deploy-role-${AWS::AccountId}-us-east-1":{"id":"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-dev-deploy-role-${AWS::AccountId}-us-east-1","path":"pipeline-asset-stack/Pipeline/Pipeline/MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-dev-deploy-role-${AWS::AccountId}-us-east-1","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*","*","*","*","*"]}},"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-dev-deploy-role-${AWS::AccountId}-us-east-1":{"id":"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-dev-deploy-role-${AWS::AccountId}-us-east-1","path":"pipeline-asset-stack/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-dev-deploy-role-${AWS::AccountId}-us-east-1","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*","*","*","*","*","*","*","*","*","*","*"]},"children":{"8389e75f-0810-4838-bf64-d6f85a95cf83":{"id":"8389e75f-0810-4838-bf64-d6f85a95cf83","path":"pipeline-asset-stack/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-dev-deploy-role-${AWS::AccountId}-us-east-1/8389e75f-0810-4838-bf64-d6f85a95cf83","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-dev-cfn-exec-role-${AWS::AccountId}-us-east-1":{"id":"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-dev-cfn-exec-role-${AWS::AccountId}-us-east-1","path":"pipeline-asset-stack/Pipeline/Pipeline/MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-dev-cfn-exec-role-${AWS::AccountId}-us-east-1","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-dev-cfn-exec-role-${AWS::AccountId}-us-east-1":{"id":"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-dev-cfn-exec-role-${AWS::AccountId}-us-east-1","path":"pipeline-asset-stack/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-dev-cfn-exec-role-${AWS::AccountId}-us-east-1","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Production":{"id":"Production","path":"pipeline-asset-stack/Pipeline/Pipeline/Production","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"Prepare":{"id":"Prepare","path":"pipeline-asset-stack/Pipeline/Pipeline/Production/Prepare","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Deploy":{"id":"Deploy","path":"pipeline-asset-stack/Pipeline/Pipeline/Production/Deploy","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-us-east-1":{"id":"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-us-east-1","path":"pipeline-asset-stack/Pipeline/Pipeline/MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-us-east-1","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*","*","*","*","*"]}},"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-us-east-1":{"id":"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-us-east-1","path":"pipeline-asset-stack/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-us-east-1","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*","*","*","*","*","*","*","*","*","*","*"]},"children":{"8389e75f-0810-4838-bf64-d6f85a95cf83":{"id":"8389e75f-0810-4838-bf64-d6f85a95cf83","path":"pipeline-asset-stack/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-deploy-role-${AWS::AccountId}-us-east-1/8389e75f-0810-4838-bf64-d6f85a95cf83","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-us-east-1":{"id":"MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-us-east-1","path":"pipeline-asset-stack/Pipeline/Pipeline/MutableRolearn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-us-east-1","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-us-east-1":{"id":"arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-us-east-1","path":"pipeline-asset-stack/Pipeline/Pipeline/arn:${AWS::Partition}:iam::${AWS::AccountId}:role--cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-us-east-1","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}}}},"CodeBuildActionRole":{"id":"CodeBuildActionRole","path":"pipeline-asset-stack/Pipeline/CodeBuildActionRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":"*"},{"grantAssumeRole":["*"]},{"grant":["*","*"]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"grantAssumeRole":["*"]},{"grant":["*","*"]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"grantAssumeRole":["*"]},{"grant":["*","*"]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportCodeBuildActionRole":{"id":"ImportCodeBuildActionRole","path":"pipeline-asset-stack/Pipeline/CodeBuildActionRole/ImportCodeBuildActionRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/CodeBuildActionRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"AWS":{"Fn::GetAtt":["PipelineRoleB27FAA37","Arn"]}}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"pipeline-asset-stack/Pipeline/CodeBuildActionRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/CodeBuildActionRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["codebuild:BatchGetBuilds","codebuild:StartBuild","codebuild:StopBuild"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineAssetsFileAsset185A67CB4","Arn"]},{"Fn::GetAtt":["PipelineBuildSynthCdkBuildProject6BEFA8E6","Arn"]},{"Fn::GetAtt":["PipelineUpdatePipelineSelfMutationDAA41400","Arn"]}]}],"Version":"2012-10-17"},"policyName":"PipelineCodeBuildActionRoleDefaultPolicy1D62A6FE","roles":[{"Ref":"PipelineCodeBuildActionRole226DB0CB"}]}}}}}}},"UpdatePipeline":{"id":"UpdatePipeline","path":"pipeline-asset-stack/Pipeline/UpdatePipeline","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"SelfMutation":{"id":"SelfMutation","path":"pipeline-asset-stack/Pipeline/UpdatePipeline/SelfMutation","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.PipelineProject","version":"0.0.0","metadata":[{},{},{}]},"children":{"Role":{"id":"Role","path":"pipeline-asset-stack/Pipeline/UpdatePipeline/SelfMutation/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"pipeline-asset-stack/Pipeline/UpdatePipeline/SelfMutation/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/UpdatePipeline/SelfMutation/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"pipeline-asset-stack/Pipeline/UpdatePipeline/SelfMutation/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/UpdatePipeline/SelfMutation/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:aws:logs:us-east-1:",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/",{"Ref":"PipelineUpdatePipelineSelfMutationDAA41400"},":*"]]},{"Fn::Join":["",["arn:aws:logs:us-east-1:",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/",{"Ref":"PipelineUpdatePipelineSelfMutationDAA41400"}]]}]},{"Action":["codebuild:BatchPutCodeCoverages","codebuild:BatchPutTestCases","codebuild:CreateReport","codebuild:CreateReportGroup","codebuild:UpdateReport"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:aws:codebuild:us-east-1:",{"Ref":"AWS::AccountId"},":report-group/",{"Ref":"PipelineUpdatePipelineSelfMutationDAA41400"},"-*"]]}},{"Action":"sts:AssumeRole","Condition":{"ForAnyValue:StringEquals":{"iam:ResourceTag/aws-cdk:bootstrap-role":["image-publishing","file-publishing","deploy"]}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:*:iam::",{"Ref":"AWS::AccountId"},":role/*"]]}},{"Action":["cloudformation:DescribeStacks","s3:ListBucket"],"Effect":"Allow","Resource":"*"},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]},{"Action":["kms:Decrypt","kms:DescribeKey","kms:Encrypt","kms:GenerateDataKey*","kms:ReEncrypt*"],"Effect":"Allow","Resource":{"Fn::GetAtt":["PipelineArtifactsBucketEncryptionKeyF5BF0670","Arn"]}}],"Version":"2012-10-17"},"policyName":"PipelineUpdatePipelineSelfMutationRoleDefaultPolicyA225DA4E","roles":[{"Ref":"PipelineUpdatePipelineSelfMutationRole57E559E8"}]}}}}}}},"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/UpdatePipeline/SelfMutation/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.CfnProject","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::CodeBuild::Project","aws:cdk:cloudformation:props":{"artifacts":{"type":"CODEPIPELINE"},"cache":{"type":"NO_CACHE"},"description":"Pipeline step pipeline-asset-stack/Pipeline/UpdatePipeline/SelfMutate","encryptionKey":{"Fn::GetAtt":["PipelineArtifactsBucketEncryptionKeyF5BF0670","Arn"]},"environment":{"type":"LINUX_CONTAINER","image":"aws/codebuild/standard:7.0","imagePullCredentialsType":"CODEBUILD","privilegedMode":false,"computeType":"BUILD_GENERAL1_SMALL"},"serviceRole":{"Fn::GetAtt":["PipelineUpdatePipelineSelfMutationRole57E559E8","Arn"]},"source":{"type":"CODEPIPELINE","buildSpec":"{\n \"version\": \"0.2\",\n \"phases\": {\n \"install\": {\n \"commands\": [\n \"npm install -g aws-cdk@2\"\n ]\n },\n \"build\": {\n \"commands\": [\n \"cdk -a . deploy pipeline-asset-stack --require-approval=never --verbose\"\n ]\n }\n }\n}"}}}}}}}},"Assets":{"id":"Assets","path":"pipeline-asset-stack/Pipeline/Assets","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"FileRole":{"id":"FileRole","path":"pipeline-asset-stack/Pipeline/Assets/FileRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportFileRole":{"id":"ImportFileRole","path":"pipeline-asset-stack/Pipeline/Assets/FileRole/ImportFileRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/Assets/FileRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"pipeline-asset-stack/Pipeline/Assets/FileRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/Assets/FileRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:aws:logs:us-east-1:",{"Ref":"AWS::AccountId"},":log-group:/aws/codebuild/*"]]}},{"Action":["codebuild:BatchPutCodeCoverages","codebuild:BatchPutTestCases","codebuild:CreateReport","codebuild:CreateReportGroup","codebuild:UpdateReport"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:aws:codebuild:us-east-1:",{"Ref":"AWS::AccountId"},":report-group/*"]]}},{"Action":["codebuild:BatchGetBuilds","codebuild:StartBuild","codebuild:StopBuild"],"Effect":"Allow","Resource":"*"},{"Action":"sts:AssumeRole","Effect":"Allow","Resource":[{"Fn::Sub":"arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-dev-file-publishing-role-${AWS::AccountId}-us-east-1"},{"Fn::Sub":"arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-us-east-1"}]},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PipelineArtifactsBucketAEA9A052","Arn"]},"/*"]]}]},{"Action":["kms:Decrypt","kms:DescribeKey"],"Effect":"Allow","Resource":{"Fn::GetAtt":["PipelineArtifactsBucketEncryptionKeyF5BF0670","Arn"]}}],"Version":"2012-10-17"},"policyName":"PipelineAssetsFileRoleDefaultPolicy14DB8755","roles":[{"Ref":"PipelineAssetsFileRole59943A77"}]}}}}}}},"FileAsset1":{"id":"FileAsset1","path":"pipeline-asset-stack/Pipeline/Assets/FileAsset1","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.PipelineProject","version":"0.0.0","metadata":[{},{},{}]},"children":{"Resource":{"id":"Resource","path":"pipeline-asset-stack/Pipeline/Assets/FileAsset1/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_codebuild.CfnProject","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::CodeBuild::Project","aws:cdk:cloudformation:props":{"artifacts":{"type":"CODEPIPELINE"},"cache":{"type":"NO_CACHE"},"description":"Pipeline step pipeline-asset-stack/Pipeline/Assets/LambdaFN_Code","encryptionKey":{"Fn::GetAtt":["PipelineArtifactsBucketEncryptionKeyF5BF0670","Arn"]},"environment":{"type":"LINUX_CONTAINER","image":"aws/codebuild/standard:7.0","imagePullCredentialsType":"CODEBUILD","privilegedMode":false,"computeType":"BUILD_GENERAL1_SMALL"},"serviceRole":{"Fn::GetAtt":["PipelineAssetsFileRole59943A77","Arn"]},"source":{"type":"CODEPIPELINE","buildSpec":"{\n \"version\": \"0.2\",\n \"phases\": {\n \"install\": {\n \"commands\": [\n \"npm install -g cdk-assets@latest\"\n ]\n },\n \"build\": {\n \"commands\": [\n \"cdk-assets --path \\\"assembly-pipeline-asset-stack-Staging/pipelineassetstackStagingdevlambdastackEC748226.assets.json\\\" --verbose publish \\\"a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e:current_account-us-east-1-dd2b480a\\\"\",\n \"cdk-assets --path \\\"assembly-pipeline-asset-stack-Production/pipelineassetstackProductionprdlambdastack4E5ABBC0.assets.json\\\" --verbose publish \\\"a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e:current_account-us-east-1-65520044\\\"\"\n ]\n }\n }\n}"}}}}}}}}}},"Staging":{"id":"Staging","path":"pipeline-asset-stack/Staging","constructInfo":{"fqn":"aws-cdk-lib.Stage","version":"0.0.0"},"children":{"dev-lambda-stack":{"id":"dev-lambda-stack","path":"pipeline-asset-stack/Staging/dev-lambda-stack","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"LambdaFN":{"id":"LambdaFN","path":"pipeline-asset-stack/Staging/dev-lambda-stack/LambdaFN","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"pipeline-asset-stack/Staging/dev-lambda-stack/LambdaFN/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"pipeline-asset-stack/Staging/dev-lambda-stack/LambdaFN/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"pipeline-asset-stack/Staging/dev-lambda-stack/LambdaFN/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Code":{"id":"Code","path":"pipeline-asset-stack/Staging/dev-lambda-stack/LambdaFN/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"pipeline-asset-stack/Staging/dev-lambda-stack/LambdaFN/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"pipeline-asset-stack/Staging/dev-lambda-stack/LambdaFN/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"pipeline-asset-stack/Staging/dev-lambda-stack/LambdaFN/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-dev-assets-${AWS::AccountId}-us-east-1"},"s3Key":"a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e.zip"},"handler":"index.handler","role":{"Fn::GetAtt":["LambdaFNServiceRole1CCEDDD9","Arn"]},"runtime":"python3.10"}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"pipeline-asset-stack/Staging/dev-lambda-stack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"pipeline-asset-stack/Staging/dev-lambda-stack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}},"Production":{"id":"Production","path":"pipeline-asset-stack/Production","constructInfo":{"fqn":"aws-cdk-lib.Stage","version":"0.0.0"},"children":{"prd-lambda-stack":{"id":"prd-lambda-stack","path":"pipeline-asset-stack/Production/prd-lambda-stack","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"LambdaFN":{"id":"LambdaFN","path":"pipeline-asset-stack/Production/prd-lambda-stack/LambdaFN","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"pipeline-asset-stack/Production/prd-lambda-stack/LambdaFN/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"pipeline-asset-stack/Production/prd-lambda-stack/LambdaFN/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"pipeline-asset-stack/Production/prd-lambda-stack/LambdaFN/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Code":{"id":"Code","path":"pipeline-asset-stack/Production/prd-lambda-stack/LambdaFN/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"pipeline-asset-stack/Production/prd-lambda-stack/LambdaFN/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"pipeline-asset-stack/Production/prd-lambda-stack/LambdaFN/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"pipeline-asset-stack/Production/prd-lambda-stack/LambdaFN/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1"},"s3Key":"a26bd817a0dac44954b5caf83f5880a96f831e43b56157224e073b49f236eb4e.zip"},"handler":"index.handler","role":{"Fn::GetAtt":["LambdaFNServiceRole1CCEDDD9","Arn"]},"runtime":"python3.10"}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"pipeline-asset-stack/Production/prd-lambda-stack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"pipeline-asset-stack/Production/prd-lambda-stack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"pipeline-asset-stack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"pipeline-asset-stack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"PipelineAssetsTest":{"id":"PipelineAssetsTest","path":"PipelineAssetsTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"PipelineAssetsTest/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"PipelineAssetsTest/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"PipelineAssetsTest/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"PipelineAssetsTest/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"PipelineAssetsTest/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.ts b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.ts new file mode 100644 index 0000000000000..708ff97857ec9 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/pipelines/test/integ.pipeline-with-customsynthesizer.ts @@ -0,0 +1,105 @@ +import { App, Stack, StackProps, DefaultStackSynthesizer, Stage, StageProps, RemovalPolicy } from 'aws-cdk-lib'; +import { Construct } from 'constructs'; +import * as path from 'path'; +import * as s3 from 'aws-cdk-lib/aws-s3'; +import * as pipelines from 'aws-cdk-lib/pipelines'; +import * as lambda from 'aws-cdk-lib/aws-lambda'; +import { IntegTest } from '@aws-cdk/integ-tests-alpha'; + +/** + * Notes on how to run this integ test + * Replace 123456789012 with your own account number + * Your account should be bootstrapped for us-east-1 with a custom qualifier 'dev' + * cdk bootstrap aws://123456789012/us-east-1 --qualifier dev --toolkit-stack-name CDKToolkitDev + **/ + +export class PipelineStack extends Stack { + constructor(scope: Construct, id: string, props: StackProps) { + super(scope, id, props); + + const bucket = new s3.Bucket(this, 'assetsBucket', { + removalPolicy: RemovalPolicy.DESTROY, + autoDeleteObjects: true, + }); + + const pipeline = new pipelines.CodePipeline( + this, + 'Pipeline', { + synth: new pipelines.ShellStep('Synth', { + input: pipelines.CodePipelineSource.s3( + bucket, + 'cdk-sample.zip', + ), + commands: ['npm ci', 'npm run build', 'npx cdk synth'], + }), + crossAccountKeys: true, + }); + + const stagingStage = new DeploymentStage( + this, 'Staging', { + environmentAbbreviation: 'dev', + region: 'us-east-1', + }); + pipeline.addStage(stagingStage); + + const productionStage = new DeploymentStage( + this, 'Production', { + environmentAbbreviation: 'prd', + region: 'us-east-1', + }); + pipeline.addStage(productionStage); + } +} + +export class LambdaStack extends Stack { + constructor(scope: Construct, id: string, props?: StackProps) { + super(scope, id, props); + new lambda.Function(this, 'LambdaFN', { + runtime: lambda.Runtime.PYTHON_3_10, + handler: 'index.handler', + code: lambda.Code.fromAsset(path.join(__dirname, 'testhelpers', 'assets')), + }); + } +} + +export interface DeploymentStageProps extends StageProps { + environmentAbbreviation: string; + region: string; +} + +export class DeploymentStage extends Stage { + constructor(scope: Construct, id: string, props: DeploymentStageProps) { + super(scope, id, props); + + var synth = new DefaultStackSynthesizer(); + if (props.environmentAbbreviation == 'dev') { + synth = new DefaultStackSynthesizer({ + qualifier: 'dev', + }); + } + new LambdaStack( + this, `${props.environmentAbbreviation}-lambda-stack`, { + env: { + region: props.region, + }, + synthesizer: synth, + }, + ); + } +} + +const app = new App({ + postCliContext: { + '@aws-cdk/core:newStyleStackSynthesis': '1', + '@aws-cdk/aws-codepipeline:defaultPipelineTypeToV2': true, + '@aws-cdk/pipelines:reduceStageRoleTrustScope': true, + }, +}); +const env = { region: 'us-east-1' }; +const stack = new PipelineStack(app, 'pipeline-asset-stack', { env }); +new IntegTest(app, 'PipelineAssetsTest', { + testCases: [stack], + diffAssets: true, +}); + +app.synth(); diff --git a/packages/@aws-cdk/app-staging-synthesizer-alpha/test/app-staging-synthesizer.test.ts b/packages/@aws-cdk/app-staging-synthesizer-alpha/test/app-staging-synthesizer.test.ts index ae280ad9051bc..96288707c6da2 100644 --- a/packages/@aws-cdk/app-staging-synthesizer-alpha/test/app-staging-synthesizer.test.ts +++ b/packages/@aws-cdk/app-staging-synthesizer-alpha/test/app-staging-synthesizer.test.ts @@ -52,7 +52,7 @@ describe(AppStagingSynthesizer, () => { source: { path: 'Stack.template.json', packaging: 'file' }, displayName: 'Stack Template', destinations: { - '000000000000-us-east-1': { + '000000000000-us-east-1-73879080': { bucketName: `cdk-${APP_ID}-staging-000000000000-us-east-1`, objectKey: templateObjectKey, region: 'us-east-1', @@ -100,7 +100,7 @@ describe(AppStagingSynthesizer, () => { source: { path: 'Stack2.template.json', packaging: 'file' }, displayName: 'Stack2 Template', destinations: { - '111111111111-us-east-2': { + '111111111111-us-east-2-d91bfa77': { bucketName: `cdk-${APP_ID}-staging-111111111111-us-east-2`, objectKey: templateObjectKey, region: 'us-east-2', @@ -219,7 +219,7 @@ describe(AppStagingSynthesizer, () => { path: `asset.${assetHash}`, }, destinations: { - '000000000000-us-east-1': { + '000000000000-us-east-1-daac07d9': { bucketName: `cdk-${APP_ID}-staging-000000000000-us-east-1`, objectKey: `${DEPLOY_TIME_PREFIX}${assetHash}.zip`, region: 'us-east-1', diff --git a/packages/@aws-cdk/app-staging-synthesizer-alpha/test/bootstrap-roles.test.ts b/packages/@aws-cdk/app-staging-synthesizer-alpha/test/bootstrap-roles.test.ts index 022e4a2cb603a..e77418b367224 100644 --- a/packages/@aws-cdk/app-staging-synthesizer-alpha/test/bootstrap-roles.test.ts +++ b/packages/@aws-cdk/app-staging-synthesizer-alpha/test/bootstrap-roles.test.ts @@ -36,7 +36,7 @@ describe('Boostrap Roles', () => { expect(manifestArtifact).toBeDefined(); const manifest: cxschema.AssetManifest = JSON.parse(fs.readFileSync(manifestArtifact.file, { encoding: 'utf-8' })); const firstFile: any = (manifest.files ? manifest.files[Object.keys(manifest.files)[0]] : undefined) ?? {}; - expect(firstFile.destinations['000000000000-us-east-1'].assumeRoleArn).toEqual('arn:${AWS::Partition}:iam::000000000000:role/cdk-super-long-app-id-th-file-role-us-east-1'); + expect(firstFile.destinations['000000000000-us-east-1-bf9ba784'].assumeRoleArn).toEqual('arn:${AWS::Partition}:iam::000000000000:role/cdk-super-long-app-id-th-file-role-us-east-1'); }); test('can supply existing arns for bootstrapped roles', () => { @@ -145,7 +145,7 @@ describe('Boostrap Roles', () => { expect(manifestArtifact).toBeDefined(); const manifest: cxschema.AssetManifest = JSON.parse(fs.readFileSync(manifestArtifact.file, { encoding: 'utf-8' })); const firstFile: any = (manifest.files ? manifest.files[Object.keys(manifest.files)[0]] : undefined) ?? {}; - expect(firstFile.destinations['000000000000-us-east-1'].assumeRoleArn).toEqual('arn:aws:iam::123456789012:role/S3Access'); + expect(firstFile.destinations['000000000000-us-east-1-90d2544a'].assumeRoleArn).toEqual('arn:aws:iam::123456789012:role/S3Access'); }); test('can provide existing arn for image staging role', () => { @@ -178,7 +178,7 @@ describe('Boostrap Roles', () => { expect(manifestArtifact).toBeDefined(); const manifest: cxschema.AssetManifest = JSON.parse(fs.readFileSync(manifestArtifact.file, { encoding: 'utf-8' })); const firstFile: any = (manifest.dockerImages ? manifest.dockerImages[Object.keys(manifest.dockerImages)[0]] : undefined) ?? {}; - expect(firstFile.destinations['000000000000-us-east-1'].assumeRoleArn).toEqual('arn:aws:iam::123456789012:role/ECRAccess'); + expect(firstFile.destinations['000000000000-us-east-1-240619a2'].assumeRoleArn).toEqual('arn:aws:iam::123456789012:role/ECRAccess'); }); test('bootstrap roles can be specified as current cli credentials instead', () => { diff --git a/packages/aws-cdk-lib/aws-ecr-assets/test/custom-synthesis.test.ts b/packages/aws-cdk-lib/aws-ecr-assets/test/custom-synthesis.test.ts index a1f06f2e30a97..3c556ba9c2791 100644 --- a/packages/aws-cdk-lib/aws-ecr-assets/test/custom-synthesis.test.ts +++ b/packages/aws-cdk-lib/aws-ecr-assets/test/custom-synthesis.test.ts @@ -44,7 +44,7 @@ test('use custom synthesizer', () => { dockerImages: expect.objectContaining({ '0a3355be12051c9984bf2b0b2bba4e6ea535968e5b6e7396449701732fe5ed14': { destinations: { - 'current_account-current_region': { + 'current_account-current_region-2db33560': { repositoryName: 'write-repo', imageTag: '0a3355be12051c9984bf2b0b2bba4e6ea535968e5b6e7396449701732fe5ed14', }, diff --git a/packages/aws-cdk-lib/aws-ecr-assets/test/tarball-asset.test.ts b/packages/aws-cdk-lib/aws-ecr-assets/test/tarball-asset.test.ts index ce53ec5dc1634..ae04e53afefee 100644 --- a/packages/aws-cdk-lib/aws-ecr-assets/test/tarball-asset.test.ts +++ b/packages/aws-cdk-lib/aws-ecr-assets/test/tarball-asset.test.ts @@ -29,8 +29,7 @@ describe('image asset', () => { expect(Object.keys(manifest.files ?? {}).length).toBe(1); expect(Object.keys(manifest.dockerImages ?? {}).length).toBe(1); - - expect(manifest.dockerImages?.[asset.assetHash]?.destinations?.['current_account-current_region']).toStrictEqual( + expect(manifest.dockerImages?.[asset.assetHash]?.destinations?.['current_account-current_region-bdbba1c5']).toStrictEqual( { assumeRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-image-publishing-role-${AWS::AccountId}-${AWS::Region}', imageTag: asset.assetHash, diff --git a/packages/aws-cdk-lib/aws-s3-assets/test/custom-synthesis.test.ts b/packages/aws-cdk-lib/aws-s3-assets/test/custom-synthesis.test.ts index 6592ac766572d..768f9b1fda042 100644 --- a/packages/aws-cdk-lib/aws-s3-assets/test/custom-synthesis.test.ts +++ b/packages/aws-cdk-lib/aws-s3-assets/test/custom-synthesis.test.ts @@ -49,7 +49,7 @@ test('use custom synthesizer', () => { files: expect.objectContaining({ '78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197': { destinations: { - 'current_account-current_region': { + 'current_account-current_region-6191c755': { bucketName: 'write-bucket', objectKey: '78add9eaf468dfa2191da44a7da92a21baba4c686cf6053d772556768ef21197.txt', }, diff --git a/packages/aws-cdk-lib/core/lib/stack-synthesizers/asset-manifest-builder.ts b/packages/aws-cdk-lib/core/lib/stack-synthesizers/asset-manifest-builder.ts index 3a92ed005499b..1b8bcc9a23649 100644 --- a/packages/aws-cdk-lib/core/lib/stack-synthesizers/asset-manifest-builder.ts +++ b/packages/aws-cdk-lib/core/lib/stack-synthesizers/asset-manifest-builder.ts @@ -7,6 +7,7 @@ import { UnscopedValidationError } from '../errors'; import { resolvedOr } from '../helpers-internal/string-specializer'; import { Stack } from '../stack'; import { Token } from '../token'; +import { contentHash } from './_shared'; /** * Build an asset manifest from assets added to a stack @@ -103,7 +104,14 @@ export class AssetManifestBuilder { destinations: {}, }; } - this.files[sourceHash].destinations[this.manifestEnvName(stack)] = dest; + + // Create destination key by appending hash of destination properties to manifestEnvName + // This ensures assets with same content but different destinations are published separately + const baseEnvName = this.manifestEnvName(stack); + const destHash = contentHash(JSON.stringify(dest)).slice(0, 8); + const destinationKey = `${baseEnvName}-${destHash}`; + + this.files[sourceHash].destinations[destinationKey] = dest; return dest; } @@ -126,7 +134,14 @@ export class AssetManifestBuilder { destinations: {}, }; } - this.dockerImages[sourceHash].destinations[this.manifestEnvName(stack)] = dest; + + // Create destination key by appending hash of destination properties to manifestEnvName + // This ensures assets with same content but different destinations are published separately + const baseEnvName = this.manifestEnvName(stack); + const destHash = contentHash(JSON.stringify(dest)).slice(0, 8); + const destinationKey = `${baseEnvName}-${destHash}`; + + this.dockerImages[sourceHash].destinations[destinationKey] = dest; return dest; } diff --git a/packages/aws-cdk-lib/core/test/stack-synthesis/clicreds-synthesis.test.ts b/packages/aws-cdk-lib/core/test/stack-synthesis/clicreds-synthesis.test.ts index 00625398d0204..c7771dc5060c9 100644 --- a/packages/aws-cdk-lib/core/test/stack-synthesis/clicreds-synthesis.test.ts +++ b/packages/aws-cdk-lib/core/test/stack-synthesis/clicreds-synthesis.test.ts @@ -47,7 +47,7 @@ describe('CLI creds synthesis', () => { displayName: 'Stack Template', source: { path: 'Stack.template.json', packaging: 'file' }, destinations: { - 'current_account-current_region': { + 'current_account-current_region-bfe35b61': { bucketName: 'cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}', objectKey: templateObjectKey, }, @@ -134,13 +134,12 @@ describe('CLI creds synthesis', () => { // THEN const asm = myapp.synth(); const manifest = readAssetManifest(getAssetManifest(asm)); - - expect(manifest.files?.['file-asset-hash']?.destinations?.['current_account-current_region']).toEqual({ + expect(manifest.files?.['file-asset-hash']?.destinations?.['current_account-current_region-aec82aca']).toEqual({ bucketName: 'file-asset-bucket', objectKey: `file-asset-hash.${ext}`, }); - expect(manifest.dockerImages?.['docker-asset-hash']?.destinations?.['current_account-current_region']).toEqual({ + expect(manifest.dockerImages?.['docker-asset-hash']?.destinations?.['current_account-current_region-ea1af612']).toEqual({ repositoryName: 'image-ecr-repository', imageTag: 'docker-asset-hash', }); @@ -175,7 +174,7 @@ describe('CLI creds synthesis', () => { const manifest = readAssetManifest(getAssetManifest(asm)); // THEN - expect(manifest.files?.['file-asset-hash-with-prefix']?.destinations?.['current_account-current_region']).toEqual({ + expect(manifest.files?.['file-asset-hash-with-prefix']?.destinations?.['current_account-current_region-c48d5465']).toEqual({ bucketName: 'file-asset-bucket', objectKey: `000000000000/file-asset-hash-with-prefix.${ext}`, }); @@ -205,7 +204,7 @@ describe('CLI creds synthesis', () => { // THEN const manifest = readAssetManifest(getAssetManifest(asm)); - const imageTag = manifest.dockerImages?.['docker-asset-hash']?.destinations?.['current_account-current_region'].imageTag; + const imageTag = manifest.dockerImages?.['docker-asset-hash']?.destinations?.['current_account-current_region-f8ff7181'].imageTag; expect(imageTag).toEqual('test-prefix-docker-asset-hash'); }); diff --git a/packages/aws-cdk-lib/core/test/stack-synthesis/new-style-synthesis.test.ts b/packages/aws-cdk-lib/core/test/stack-synthesis/new-style-synthesis.test.ts index a5a1cf412b232..5cd3e5fff30fe 100644 --- a/packages/aws-cdk-lib/core/test/stack-synthesis/new-style-synthesis.test.ts +++ b/packages/aws-cdk-lib/core/test/stack-synthesis/new-style-synthesis.test.ts @@ -6,6 +6,7 @@ import { App, Aws, CfnResource, ContextProvider, DefaultStackSynthesizer, FileAs import { ISynthesisSession } from '../../lib/stack-synthesizers/types'; import { evaluateCFN } from '../evaluate-cfn'; import { getAssetManifest, isAssetManifest, readAssetManifest } from './_helpers'; +import { AssetManifestBuilder } from '../../lib/stack-synthesizers/asset-manifest-builder'; const CFN_CONTEXT = { 'AWS::Region': 'the_region', @@ -54,7 +55,7 @@ describe('new style synthesis', () => { displayName: 'Stack Template', source: { path: 'Stack.template.json', packaging: 'file' }, destinations: { - 'current_account-current_region': { + 'current_account-current_region-f0fc1134': { bucketName: 'cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}', objectKey: templateObjectKey, assumeRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}', @@ -154,8 +155,8 @@ describe('new style synthesis', () => { const assetManifestJSON = readAssetManifest(assetManifest); // Validates that the image and file asset session tags were set in the asset manifest: - expect(assetManifestJSON.dockerImages?.dockerHash.destinations['111111111111-us-east-1'].assumeRoleAdditionalOptions?.Tags).toEqual([{ Key: 'Department', Value: 'Engineering-ImageAssetTag' }]); - expect(assetManifestJSON.files?.fileHash.destinations['111111111111-us-east-1'].assumeRoleAdditionalOptions?.Tags).toEqual([{ Key: 'Department', Value: 'Engineering-FileAssetTag' }]); + expect(assetManifestJSON.dockerImages?.dockerHash.destinations['111111111111-us-east-1-6d937654'].assumeRoleAdditionalOptions?.Tags).toEqual([{ Key: 'Department', Value: 'Engineering-ImageAssetTag' }]); + expect(assetManifestJSON.files?.fileHash.destinations['111111111111-us-east-1-f2de4538'].assumeRoleAdditionalOptions?.Tags).toEqual([{ Key: 'Department', Value: 'Engineering-FileAssetTag' }]); // assert that lookup role options are added to the missing lookup context expect(asm.manifest.missing![0].props.assumeRoleAdditionalOptions).toEqual({ @@ -404,15 +405,14 @@ describe('new style synthesis', () => { // THEN const asm = myapp.synth(); const manifest = readAssetManifest(getAssetManifest(asm)); - - expect(manifest.files?.['file-asset-hash']?.destinations?.['current_account-current_region']).toEqual({ + expect(manifest.files?.['file-asset-hash']?.destinations?.['current_account-current_region-a00114d0']).toEqual({ bucketName: 'file-asset-bucket', objectKey: `file-asset-hash.${ext}`, assumeRoleArn: 'file:role:arn', assumeRoleExternalId: 'file-external-id', }); - expect(manifest.dockerImages?.['docker-asset-hash']?.destinations?.['current_account-current_region']).toEqual({ + expect(manifest.dockerImages?.['docker-asset-hash']?.destinations?.['current_account-current_region-83ab3b50']).toEqual({ repositoryName: 'image-ecr-repository', imageTag: 'docker-asset-hash', assumeRoleArn: 'image:role:arn', @@ -468,7 +468,7 @@ describe('new style synthesis', () => { const manifest = readAssetManifest(getAssetManifest(asm)); // THEN - expect(manifest.files?.['file-asset-hash-with-prefix']?.destinations?.['current_account-current_region']).toEqual({ + expect(manifest.files?.['file-asset-hash-with-prefix']?.destinations?.['current_account-current_region-c16fe948']).toEqual({ bucketName: 'file-asset-bucket', objectKey: '000000000000/file-asset-hash-with-prefix.ts', assumeRoleArn: 'file:role:arn', @@ -500,7 +500,7 @@ describe('new style synthesis', () => { // THEN const manifest = readAssetManifest(getAssetManifest(asm)); - const imageTag = manifest.dockerImages?.['docker-asset-hash']?.destinations?.['current_account-current_region'].imageTag; + const imageTag = manifest.dockerImages?.['docker-asset-hash']?.destinations?.['current_account-current_region-5b87a5bf'].imageTag; expect(imageTag).toEqual('test-prefix-docker-asset-hash'); }); @@ -573,6 +573,128 @@ test('get an exception when using tokens for parameters', () => { }).toThrow(/cannot contain tokens/); }); +describe('assets with different destinations', () => { + let app: App; + beforeEach(() => { + app = new App({ + context: { + [cxapi.NEW_STYLE_STACK_SYNTHESIS_CONTEXT]: 'true', + }, + }); + }); + + test('assets with different destinations get unique destination keys', () => { + // GIVEN - Direct test of AssetManifestBuilder + const builder = new AssetManifestBuilder(); + const stack1 = new Stack(app, 'Stack1', { + env: { account: '111111111111', region: 'us-east-1' }, + }); + + // WHEN - Add the same asset with different destinations + builder.addFileAsset(stack1, 'same-file-hash', + { path: __filename, packaging: FileAssetPackaging.FILE }, + { + bucketName: 'bucket-1', + objectKey: 'same-file-hash.js', + assumeRoleArn: 'arn:aws:iam::111111111111:role/publish-role-1', + }, + ); + + builder.addFileAsset(stack1, 'same-file-hash', + { path: __filename, packaging: FileAssetPackaging.FILE }, + { + bucketName: 'bucket-2', + objectKey: 'same-file-hash.js', + assumeRoleArn: 'arn:aws:iam::111111111111:role/publish-role-2', + }, + ); + + // THEN - Check the internal state of the builder + const files = (builder as any).files; + const fileAsset = files['same-file-hash']; + expect(fileAsset).toBeDefined(); + + // Should have two different destination keys + const destinationKeys = Object.keys(fileAsset.destinations); + expect(destinationKeys).toHaveLength(2); + expect(destinationKeys[0]).not.toEqual(destinationKeys[1]); + }); + + test('assets with same destinations does not get duplicated', () => { + // GIVEN - Direct test of AssetManifestBuilder + const builder = new AssetManifestBuilder(); + const stack1 = new Stack(app, 'Stack1', { + env: { account: '111111111111', region: 'us-east-1' }, + }); + + // WHEN - Add the same asset with different destinations + builder.addFileAsset(stack1, 'same-file-hash', + { path: __filename, packaging: FileAssetPackaging.FILE }, + { + bucketName: 'bucket-1', + objectKey: 'same-file-hash.js', + assumeRoleArn: 'arn:aws:iam::111111111111:role/publish-role-1', + }, + ); + + builder.addFileAsset(stack1, 'same-file-hash', + { path: __filename, packaging: FileAssetPackaging.FILE }, + { + bucketName: 'bucket-1', + objectKey: 'same-file-hash.js', + assumeRoleArn: 'arn:aws:iam::111111111111:role/publish-role-1', + }, + ); + + // THEN - Check the internal state of the builder + const files = (builder as any).files; + const fileAsset = files['same-file-hash']; + expect(fileAsset).toBeDefined(); + + // Should have same destination keys + const destinationKeys = Object.keys(fileAsset.destinations); + expect(destinationKeys).toHaveLength(1); + }); + test('assets with same destinations does not get duplicated across stack', () => { + // GIVEN - Direct test of AssetManifestBuilder + const builder = new AssetManifestBuilder(); + const stack1 = new Stack(app, 'Stack1', { + env: { account: '111111111111', region: 'us-east-1' }, + }); + const stack2 = new Stack(app, 'Stack2', { + env: { account: '111111111111', region: 'us-east-1' }, + }); + + // WHEN - Add the same asset with different destinations + builder.addFileAsset(stack1, 'same-file-hash', + { path: __filename, packaging: FileAssetPackaging.FILE }, + { + bucketName: 'bucket-1', + objectKey: 'same-file-hash.js', + assumeRoleArn: 'arn:aws:iam::111111111111:role/publish-role-1', + }, + ); + + builder.addFileAsset(stack2, 'same-file-hash', + { path: __filename, packaging: FileAssetPackaging.FILE }, + { + bucketName: 'bucket-1', + objectKey: 'same-file-hash.js', + assumeRoleArn: 'arn:aws:iam::111111111111:role/publish-role-1', + }, + ); + + // THEN - Check the internal state of the builder + const files = (builder as any).files; + const fileAsset = files['same-file-hash']; + expect(fileAsset).toBeDefined(); + + // Should have same destination keys + const destinationKeys = Object.keys(fileAsset.destinations); + expect(destinationKeys).toHaveLength(1); + }); +}); + function last(xs?: A[]): A | undefined { return xs ? xs[xs.length - 1] : undefined; } diff --git a/packages/aws-cdk-lib/pipelines/test/compliance/assets.test.ts b/packages/aws-cdk-lib/pipelines/test/compliance/assets.test.ts index 0873f1e198fc1..f2c776d7dfe3c 100644 --- a/packages/aws-cdk-lib/pipelines/test/compliance/assets.test.ts +++ b/packages/aws-cdk-lib/pipelines/test/compliance/assets.test.ts @@ -173,7 +173,7 @@ describe('basic pipeline', () => { BuildSpec: Match.serializedJson(Match.objectLike({ phases: { build: { - commands: Match.arrayWith([`cdk-assets --path "assembly-FileAssetApp/FileAssetAppStackEADD68C5.assets.json" --verbose publish "${FILE_ASSET_SOURCE_HASH}:current_account-current_region"`]), + commands: Match.arrayWith([`cdk-assets --path "assembly-FileAssetApp/FileAssetAppStackEADD68C5.assets.json" --verbose publish "${FILE_ASSET_SOURCE_HASH}:current_account-current_region-3d50c90e"`]), }, }, })), @@ -611,8 +611,8 @@ describe('pipeline with single asset publisher', () => { const actualFileName = buildSpecName.asString(); const buildSpec = JSON.parse(fs.readFileSync(path.join(assembly.directory, actualFileName), { encoding: 'utf-8' })); - expect(buildSpec.phases.build.commands).toContain(`cdk-assets --path "assembly-FileAssetApp/FileAssetAppStackEADD68C5.assets.json" --verbose publish "${FILE_ASSET_SOURCE_HASH}:current_account-current_region"`); - expect(buildSpec.phases.build.commands).toContain(`cdk-assets --path "assembly-FileAssetApp/FileAssetAppStackEADD68C5.assets.json" --verbose publish "${FILE_ASSET_SOURCE_HASH2}:current_account-current_region"`); + expect(buildSpec.phases.build.commands).toContain(`cdk-assets --path "assembly-FileAssetApp/FileAssetAppStackEADD68C5.assets.json" --verbose publish "${FILE_ASSET_SOURCE_HASH}:current_account-current_region-3d50c90e"`); + expect(buildSpec.phases.build.commands).toContain(`cdk-assets --path "assembly-FileAssetApp/FileAssetAppStackEADD68C5.assets.json" --verbose publish "${FILE_ASSET_SOURCE_HASH2}:current_account-current_region-8b0ef02d"`); }); }); @@ -658,8 +658,8 @@ describe('pipeline with custom asset publisher BuildSpec', () => { const assembly = synthesize(pipelineStack); const buildSpec = JSON.parse(fs.readFileSync(path.join(assembly.directory, buildSpecName.asString())).toString()); - expect(buildSpec.phases.build.commands).toContain(`cdk-assets --path "assembly-FileAssetApp/FileAssetAppStackEADD68C5.assets.json" --verbose publish "${FILE_ASSET_SOURCE_HASH}:current_account-current_region"`); - expect(buildSpec.phases.build.commands).toContain(`cdk-assets --path "assembly-FileAssetApp/FileAssetAppStackEADD68C5.assets.json" --verbose publish "${FILE_ASSET_SOURCE_HASH2}:current_account-current_region"`); + expect(buildSpec.phases.build.commands).toContain(`cdk-assets --path "assembly-FileAssetApp/FileAssetAppStackEADD68C5.assets.json" --verbose publish "${FILE_ASSET_SOURCE_HASH}:current_account-current_region-3d50c90e"`); + expect(buildSpec.phases.build.commands).toContain(`cdk-assets --path "assembly-FileAssetApp/FileAssetAppStackEADD68C5.assets.json" --verbose publish "${FILE_ASSET_SOURCE_HASH2}:current_account-current_region-8b0ef02d"`); expect(buildSpec.phases.pre_install.commands).toContain('preinstall'); expect(buildSpec.cache.paths).toContain('node_modules'); });