diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/lib/kubectl-handler/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/lib/kubectl-handler/helm/__init__.py index 6c7838f182a45..6664adf77090d 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/lib/kubectl-handler/helm/__init__.py +++ b/packages/@aws-cdk/aws-eks-v2-alpha/lib/kubectl-handler/helm/__init__.py @@ -112,7 +112,7 @@ def get_oci_cmd(repository, version): logger.info("Found AWS private repository") ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] - return {'ecr_login': ecr_login, 'registry_login': helm_registry_login, 'helm': helm_cmd} + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} elif public_registry['registry'] is not None: logger.info("Found AWS public repository, will use default region as deployment") region = os.environ.get('AWS_REGION', 'us-east-1') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py similarity index 99% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py index 6c7838f182a45..6664adf77090d 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py @@ -112,7 +112,7 @@ def get_oci_cmd(repository, version): logger.info("Found AWS private repository") ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] - return {'ecr_login': ecr_login, 'registry_login': helm_registry_login, 'helm': helm_cmd} + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} elif public_registry['registry'] is not None: logger.info("Found AWS public repository, will use default region as deployment") region = os.environ.get('AWS_REGION', 'us-east-1') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/aws-cdk-eks-cluster-alb-controller.assets.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/aws-cdk-eks-cluster-alb-controller.assets.json index 9d2f28adebdc2..7f1f36fca49ad 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/aws-cdk-eks-cluster-alb-controller.assets.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/aws-cdk-eks-cluster-alb-controller.assets.json @@ -15,16 +15,16 @@ } } }, - "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a": { + "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9": { "displayName": "Cluster/KubectlProvider/Handler/Code", "source": { - "path": "asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a", + "path": "asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9", "packaging": "zip" }, "destinations": { - "current_account-current_region-5b09798b": { + "current_account-current_region-b8d33bdb": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip", + "objectKey": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } @@ -99,16 +99,16 @@ } } }, - "efb5391f8153defcb8dbea91f75c5103ec03e589ed61b7a2b52d3eae630d201d": { + "f23f3c8f96abfb67c9b73ae3839793eb1381e026dfd487d7110d4ea90dcdfb73": { "displayName": "aws-cdk-eks-cluster-alb-controller Template", "source": { "path": "aws-cdk-eks-cluster-alb-controller.template.json", "packaging": "file" }, "destinations": { - "current_account-current_region-9ac704e2": { + "current_account-current_region-d94b98bb": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "efb5391f8153defcb8dbea91f75c5103ec03e589ed61b7a2b52d3eae630d201d.json", + "objectKey": "f23f3c8f96abfb67c9b73ae3839793eb1381e026dfd487d7110d4ea90dcdfb73.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/aws-cdk-eks-cluster-alb-controller.template.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/aws-cdk-eks-cluster-alb-controller.template.json index 585d289799847..5bf740bea73e9 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/aws-cdk-eks-cluster-alb-controller.template.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/aws-cdk-eks-cluster-alb-controller.template.json @@ -767,7 +767,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip" + "S3Key": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip" }, "Description": "onEvent handler for EKS kubectl resource provider", "Environment": { diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/manifest.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/manifest.json index 82db85f0d1392..be6770c548445 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/manifest.json @@ -18,7 +18,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}/efb5391f8153defcb8dbea91f75c5103ec03e589ed61b7a2b52d3eae630d201d.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/f23f3c8f96abfb67c9b73ae3839793eb1381e026dfd487d7110d4ea90dcdfb73.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/tree.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/tree.json index 86be76aeb877b..d378c4772ea21 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.alb-controller.js.snapshot/tree.json @@ -1 +1 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-cluster-alb-controller":{"id":"aws-cdk-eks-cluster-alb-controller","path":"aws-cdk-eks-cluster-alb-controller","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Vpc":{"id":"Vpc","path":"aws-cdk-eks-cluster-alb-controller/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"maxAzs":"*","natGateways":"*","restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-alb-controller/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-cluster-alb-controller/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-alb-controller/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-alb-controller/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-alb-controller/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-cluster-alb-controller/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"}}}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-cluster-alb-controller/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-alb-controller/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-alb-controller/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-alb-controller/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-cluster-alb-controller/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-cluster-alb-controller/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster-alb-controller/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/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","sts:TagSession"],"Effect":"Allow","Principal":{"Service":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSComputePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSBlockStoragePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSLoadBalancingPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSNetworkingPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-cluster-alb-controller/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"ClusternodePoolRole":{"id":"ClusternodePoolRole","path":"aws-cdk-eks-cluster-alb-controller/Cluster/ClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]}]},"children":{"ImportClusternodePoolRole":{"id":"ImportClusternodePoolRole","path":"aws-cdk-eks-cluster-alb-controller/Cluster/ClusternodePoolRole/ImportClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/ClusternodePoolRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":true,"nodePools":["system","general-purpose"],"nodeRoleArn":{"Fn::GetAtt":["ClusterClusternodePoolRole69276141","Arn"]}},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":true}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":true}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-cluster-alb-controller/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-cluster-alb-controller/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}},"OpenIdConnectProvider":{"id":"OpenIdConnectProvider","path":"aws-cdk-eks-cluster-alb-controller/Cluster/OpenIdConnectProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.OpenIdConnectProvider","version":"0.0.0","metadata":["*","*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/OpenIdConnectProvider/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-alb-controller/Cluster/OpenIdConnectProvider/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"echo-server":{"id":"echo-server","path":"aws-cdk-eks-cluster-alb-controller/Cluster/echo-server","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/echo-server/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-alb-controller/Cluster/echo-server/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"hello-server-deployment-service-ingress-c896bd7eLoadBalancerAddress":{"id":"hello-server-deployment-service-ingress-c896bd7eLoadBalancerAddress","path":"aws-cdk-eks-cluster-alb-controller/Cluster/hello-server-deployment-service-ingress-c896bd7eLoadBalancerAddress","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesObjectValue","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/hello-server-deployment-service-ingress-c896bd7eLoadBalancerAddress/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-alb-controller/Cluster/hello-server-deployment-service-ingress-c896bd7eLoadBalancerAddress/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-eks-cluster-alb-controller/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"awscdkeksclusteralbcontrollerCluster0686D58B-AlbController":{"id":"awscdkeksclusteralbcontrollerCluster0686D58B-AlbController","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AlbController","version":"0.0.0"},"children":{"alb-sa":{"id":"alb-sa","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.ServiceAccount","version":"0.0.0"},"children":{"ConditionJson":{"id":"ConditionJson","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/ConditionJson","constructInfo":{"fqn":"aws-cdk-lib.CfnJson","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/ConditionJson/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/ConditionJson/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/Role","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":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/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:AssumeRoleWithWebIdentity","Condition":{"StringEquals":{"Fn::GetAtt":["awscdkeksclusteralbcontrollerCluster0686D58BAlbControlleralbsaConditionJson853930C0","Value"]}},"Effect":"Allow","Principal":{"Federated":{"Ref":"ClusterOpenIdConnectProviderE7EB0530"}}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/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":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/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":"iam:CreateServiceLinkedRole","Condition":{"StringEquals":{"iam:AWSServiceName":"elasticloadbalancing.amazonaws.com"}},"Effect":"Allow","Resource":"*"},{"Action":["acm:DescribeCertificate","acm:ListCertificates","cognito-idp:DescribeUserPoolClient","ec2:AuthorizeSecurityGroupIngress","ec2:CreateSecurityGroup","ec2:DescribeAccountAttributes","ec2:DescribeAddresses","ec2:DescribeAvailabilityZones","ec2:DescribeCoipPools","ec2:DescribeInstances","ec2:DescribeInternetGateways","ec2:DescribeNetworkInterfaces","ec2:DescribeSecurityGroups","ec2:DescribeSubnets","ec2:DescribeTags","ec2:DescribeVpcPeeringConnections","ec2:DescribeVpcs","ec2:GetCoipPoolUsage","ec2:RevokeSecurityGroupIngress","elasticloadbalancing:AddListenerCertificates","elasticloadbalancing:CreateListener","elasticloadbalancing:CreateRule","elasticloadbalancing:DeleteListener","elasticloadbalancing:DeleteRule","elasticloadbalancing:DescribeListenerCertificates","elasticloadbalancing:DescribeListeners","elasticloadbalancing:DescribeLoadBalancerAttributes","elasticloadbalancing:DescribeLoadBalancers","elasticloadbalancing:DescribeRules","elasticloadbalancing:DescribeSSLPolicies","elasticloadbalancing:DescribeTags","elasticloadbalancing:DescribeTargetGroupAttributes","elasticloadbalancing:DescribeTargetGroups","elasticloadbalancing:DescribeTargetHealth","elasticloadbalancing:DescribeTrustStores","elasticloadbalancing:ModifyListener","elasticloadbalancing:ModifyRule","elasticloadbalancing:RemoveListenerCertificates","elasticloadbalancing:SetWebAcl","iam:GetServerCertificate","iam:ListServerCertificates","shield:CreateProtection","shield:DeleteProtection","shield:DescribeProtection","shield:GetSubscriptionState","waf-regional:AssociateWebACL","waf-regional:DisassociateWebACL","waf-regional:GetWebACL","waf-regional:GetWebACLForResource","wafv2:AssociateWebACL","wafv2:DisassociateWebACL","wafv2:GetWebACL","wafv2:GetWebACLForResource"],"Effect":"Allow","Resource":"*"},{"Action":"ec2:CreateTags","Condition":{"StringEquals":{"ec2:CreateAction":"CreateSecurityGroup"},"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:*:*:security-group/*"]]}},{"Action":["ec2:CreateTags","ec2:DeleteTags"],"Condition":{"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"true","aws:ResourceTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:*:*:security-group/*"]]}},{"Action":["ec2:AuthorizeSecurityGroupIngress","ec2:DeleteSecurityGroup","ec2:RevokeSecurityGroupIngress","elasticloadbalancing:DeleteLoadBalancer","elasticloadbalancing:DeleteTargetGroup","elasticloadbalancing:ModifyLoadBalancerAttributes","elasticloadbalancing:ModifyTargetGroup","elasticloadbalancing:ModifyTargetGroupAttributes","elasticloadbalancing:SetIpAddressType","elasticloadbalancing:SetSecurityGroups","elasticloadbalancing:SetSubnets"],"Condition":{"Null":{"aws:ResourceTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":"*"},{"Action":["elasticloadbalancing:CreateLoadBalancer","elasticloadbalancing:CreateTargetGroup"],"Condition":{"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":"*"},{"Action":["elasticloadbalancing:AddTags","elasticloadbalancing:RemoveTags"],"Condition":{"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"true","aws:ResourceTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:loadbalancer/app/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:loadbalancer/net/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:targetgroup/*/*"]]}]},{"Action":["elasticloadbalancing:AddTags","elasticloadbalancing:RemoveTags"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:listener-rule/app/*/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:listener-rule/net/*/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:listener/app/*/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:listener/net/*/*/*"]]}]},{"Action":"elasticloadbalancing:AddTags","Condition":{"StringEquals":{"elasticloadbalancing:CreateAction":["CreateTargetGroup","CreateLoadBalancer"]},"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:loadbalancer/app/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:loadbalancer/net/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:targetgroup/*/*"]]}]},{"Action":["elasticloadbalancing:DeregisterTargets","elasticloadbalancing:RegisterTargets"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:targetgroup/*/*"]]}}],"Version":"2012-10-17"},"policyName":"awscdkeksclusteralbcontrollerCluster0686D58BAlbControlleralbsaRoleDefaultPolicy0BB22F48","roles":[{"Ref":"awscdkeksclusteralbcontrollerCluster0686D58BAlbControlleralbsaRoleE08C7B02"}]}}}}}}},"manifest-alb-saServiceAccountResource":{"id":"manifest-alb-saServiceAccountResource","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/manifest-alb-saServiceAccountResource","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/manifest-alb-saServiceAccountResource/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/manifest-alb-saServiceAccountResource/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/Resource","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/Resource/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/Resource/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider":{"id":"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","path":"aws-cdk-eks-cluster-alb-controller/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-cluster-alb-controller/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster-alb-controller/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-alb-controller/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"AWSCDKCfnUtilsProviderCustomResourceProvider":{"id":"AWSCDKCfnUtilsProviderCustomResourceProvider","path":"aws-cdk-eks-cluster-alb-controller/AWSCDKCfnUtilsProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-cluster-alb-controller/AWSCDKCfnUtilsProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster-alb-controller/AWSCDKCfnUtilsProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-alb-controller/AWSCDKCfnUtilsProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"IngressPinger":{"id":"IngressPinger","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"Function":{"id":"Function","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","handler":"*","runtime":"*","vpc":"*","vpcSubnets":"*","securityGroups":"*","timeout":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"SecurityGroup":{"id":"SecurityGroup","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*","allowAllOutbound":"*","allowAllIpv6Outbound":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function/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 security group for Lambda Function awscdkeksclusteralbcontrollerIngressPingerFunctionCB8DD6F2","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function/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}-${AWS::Region}"},"s3Key":"5f49893093e1ad14831626016699156d48da5f0890f19eb930bc3c46cf5f636d.zip"},"handler":"index.handler","role":{"Fn::GetAtt":["IngressPingerFunctionServiceRoleD01E9C19","Arn"]},"runtime":"python3.9","timeout":600,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["IngressPingerFunctionSecurityGroup77C60B1A","GroupId"]}]}}}}}},"Provider":{"id":"Provider","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":"*","securityGroups":"*","role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/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"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["IngressPingerFunction54746D9B","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["IngressPingerFunction54746D9B","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"IngressPingerProviderframeworkonEventServiceRoleDefaultPolicy7CC73E26","roles":[{"Ref":"IngressPingerProviderframeworkonEventServiceRole89300FAD"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["IngressPingerFunction54746D9B","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["IngressPingerProviderframeworkonEventServiceRole89300FAD","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["IngressPingerFunction54746D9B","Arn"]}}],"Version":"2012-10-17"},"policyName":"IngressPingerProviderframeworkonEventinlinePolicyAddedToExecutionRole097789944","roles":[{"Ref":"IngressPingerProviderframeworkonEventServiceRole89300FAD"}]}}}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"IngressPingerResponse":{"id":"IngressPingerResponse","path":"aws-cdk-eks-cluster-alb-controller/IngressPingerResponse","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-alb-controller/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-alb-controller/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-cluster-alb-controller-integ":{"id":"aws-cdk-cluster-alb-controller-integ","path":"aws-cdk-cluster-alb-controller-integ","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-cluster-alb-controller-integ/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-cluster-alb-controller-integ/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-cluster-alb-controller-integ/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-cluster-alb-controller-integ/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-cluster-alb-controller-integ/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 +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-cluster-alb-controller":{"id":"aws-cdk-eks-cluster-alb-controller","path":"aws-cdk-eks-cluster-alb-controller","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Vpc":{"id":"Vpc","path":"aws-cdk-eks-cluster-alb-controller/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"maxAzs":"*","natGateways":"*","restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-alb-controller/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-cluster-alb-controller/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-alb-controller/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-alb-controller/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-alb-controller/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-alb-controller/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-alb-controller/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-cluster-alb-controller/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":"aws-cdk-eks-cluster-alb-controller/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-cluster-alb-controller/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"}}}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-cluster-alb-controller/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-alb-controller/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-alb-controller/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-alb-controller/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-cluster-alb-controller/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-cluster-alb-controller/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster-alb-controller/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/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","sts:TagSession"],"Effect":"Allow","Principal":{"Service":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSComputePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSBlockStoragePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSLoadBalancingPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSNetworkingPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-cluster-alb-controller/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"ClusternodePoolRole":{"id":"ClusternodePoolRole","path":"aws-cdk-eks-cluster-alb-controller/Cluster/ClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]}]},"children":{"ImportClusternodePoolRole":{"id":"ImportClusternodePoolRole","path":"aws-cdk-eks-cluster-alb-controller/Cluster/ClusternodePoolRole/ImportClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/ClusternodePoolRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":true,"nodePools":["system","general-purpose"],"nodeRoleArn":{"Fn::GetAtt":["ClusterClusternodePoolRole69276141","Arn"]}},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":true}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":true}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-cluster-alb-controller/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-cluster-alb-controller/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}},"OpenIdConnectProvider":{"id":"OpenIdConnectProvider","path":"aws-cdk-eks-cluster-alb-controller/Cluster/OpenIdConnectProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.OpenIdConnectProvider","version":"0.0.0","metadata":["*","*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/OpenIdConnectProvider/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-alb-controller/Cluster/OpenIdConnectProvider/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"echo-server":{"id":"echo-server","path":"aws-cdk-eks-cluster-alb-controller/Cluster/echo-server","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/echo-server/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-alb-controller/Cluster/echo-server/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"hello-server-deployment-service-ingress-c896bd7eLoadBalancerAddress":{"id":"hello-server-deployment-service-ingress-c896bd7eLoadBalancerAddress","path":"aws-cdk-eks-cluster-alb-controller/Cluster/hello-server-deployment-service-ingress-c896bd7eLoadBalancerAddress","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesObjectValue","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/Cluster/hello-server-deployment-service-ingress-c896bd7eLoadBalancerAddress/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-alb-controller/Cluster/hello-server-deployment-service-ingress-c896bd7eLoadBalancerAddress/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-eks-cluster-alb-controller/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"awscdkeksclusteralbcontrollerCluster0686D58B-AlbController":{"id":"awscdkeksclusteralbcontrollerCluster0686D58B-AlbController","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AlbController","version":"0.0.0"},"children":{"alb-sa":{"id":"alb-sa","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.ServiceAccount","version":"0.0.0"},"children":{"ConditionJson":{"id":"ConditionJson","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/ConditionJson","constructInfo":{"fqn":"aws-cdk-lib.CfnJson","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/ConditionJson/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/ConditionJson/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/Role","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":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/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:AssumeRoleWithWebIdentity","Condition":{"StringEquals":{"Fn::GetAtt":["awscdkeksclusteralbcontrollerCluster0686D58BAlbControlleralbsaConditionJson853930C0","Value"]}},"Effect":"Allow","Principal":{"Federated":{"Ref":"ClusterOpenIdConnectProviderE7EB0530"}}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/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":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/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":"iam:CreateServiceLinkedRole","Condition":{"StringEquals":{"iam:AWSServiceName":"elasticloadbalancing.amazonaws.com"}},"Effect":"Allow","Resource":"*"},{"Action":["acm:DescribeCertificate","acm:ListCertificates","cognito-idp:DescribeUserPoolClient","ec2:AuthorizeSecurityGroupIngress","ec2:CreateSecurityGroup","ec2:DescribeAccountAttributes","ec2:DescribeAddresses","ec2:DescribeAvailabilityZones","ec2:DescribeCoipPools","ec2:DescribeInstances","ec2:DescribeInternetGateways","ec2:DescribeNetworkInterfaces","ec2:DescribeSecurityGroups","ec2:DescribeSubnets","ec2:DescribeTags","ec2:DescribeVpcPeeringConnections","ec2:DescribeVpcs","ec2:GetCoipPoolUsage","ec2:RevokeSecurityGroupIngress","elasticloadbalancing:AddListenerCertificates","elasticloadbalancing:CreateListener","elasticloadbalancing:CreateRule","elasticloadbalancing:DeleteListener","elasticloadbalancing:DeleteRule","elasticloadbalancing:DescribeListenerCertificates","elasticloadbalancing:DescribeListeners","elasticloadbalancing:DescribeLoadBalancerAttributes","elasticloadbalancing:DescribeLoadBalancers","elasticloadbalancing:DescribeRules","elasticloadbalancing:DescribeSSLPolicies","elasticloadbalancing:DescribeTags","elasticloadbalancing:DescribeTargetGroupAttributes","elasticloadbalancing:DescribeTargetGroups","elasticloadbalancing:DescribeTargetHealth","elasticloadbalancing:DescribeTrustStores","elasticloadbalancing:ModifyListener","elasticloadbalancing:ModifyRule","elasticloadbalancing:RemoveListenerCertificates","elasticloadbalancing:SetWebAcl","iam:GetServerCertificate","iam:ListServerCertificates","shield:CreateProtection","shield:DeleteProtection","shield:DescribeProtection","shield:GetSubscriptionState","waf-regional:AssociateWebACL","waf-regional:DisassociateWebACL","waf-regional:GetWebACL","waf-regional:GetWebACLForResource","wafv2:AssociateWebACL","wafv2:DisassociateWebACL","wafv2:GetWebACL","wafv2:GetWebACLForResource"],"Effect":"Allow","Resource":"*"},{"Action":"ec2:CreateTags","Condition":{"StringEquals":{"ec2:CreateAction":"CreateSecurityGroup"},"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:*:*:security-group/*"]]}},{"Action":["ec2:CreateTags","ec2:DeleteTags"],"Condition":{"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"true","aws:ResourceTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:*:*:security-group/*"]]}},{"Action":["ec2:AuthorizeSecurityGroupIngress","ec2:DeleteSecurityGroup","ec2:RevokeSecurityGroupIngress","elasticloadbalancing:DeleteLoadBalancer","elasticloadbalancing:DeleteTargetGroup","elasticloadbalancing:ModifyLoadBalancerAttributes","elasticloadbalancing:ModifyTargetGroup","elasticloadbalancing:ModifyTargetGroupAttributes","elasticloadbalancing:SetIpAddressType","elasticloadbalancing:SetSecurityGroups","elasticloadbalancing:SetSubnets"],"Condition":{"Null":{"aws:ResourceTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":"*"},{"Action":["elasticloadbalancing:CreateLoadBalancer","elasticloadbalancing:CreateTargetGroup"],"Condition":{"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":"*"},{"Action":["elasticloadbalancing:AddTags","elasticloadbalancing:RemoveTags"],"Condition":{"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"true","aws:ResourceTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:loadbalancer/app/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:loadbalancer/net/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:targetgroup/*/*"]]}]},{"Action":["elasticloadbalancing:AddTags","elasticloadbalancing:RemoveTags"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:listener-rule/app/*/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:listener-rule/net/*/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:listener/app/*/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:listener/net/*/*/*"]]}]},{"Action":"elasticloadbalancing:AddTags","Condition":{"StringEquals":{"elasticloadbalancing:CreateAction":["CreateTargetGroup","CreateLoadBalancer"]},"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:loadbalancer/app/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:loadbalancer/net/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:targetgroup/*/*"]]}]},{"Action":["elasticloadbalancing:DeregisterTargets","elasticloadbalancing:RegisterTargets"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:targetgroup/*/*"]]}}],"Version":"2012-10-17"},"policyName":"awscdkeksclusteralbcontrollerCluster0686D58BAlbControlleralbsaRoleDefaultPolicy0BB22F48","roles":[{"Ref":"awscdkeksclusteralbcontrollerCluster0686D58BAlbControlleralbsaRoleE08C7B02"}]}}}}}}},"manifest-alb-saServiceAccountResource":{"id":"manifest-alb-saServiceAccountResource","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/manifest-alb-saServiceAccountResource","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/manifest-alb-saServiceAccountResource/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/alb-sa/manifest-alb-saServiceAccountResource/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/Resource","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/Resource/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-alb-controller/awscdkeksclusteralbcontrollerCluster0686D58B-AlbController/Resource/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider":{"id":"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","path":"aws-cdk-eks-cluster-alb-controller/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-cluster-alb-controller/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster-alb-controller/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-alb-controller/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"AWSCDKCfnUtilsProviderCustomResourceProvider":{"id":"AWSCDKCfnUtilsProviderCustomResourceProvider","path":"aws-cdk-eks-cluster-alb-controller/AWSCDKCfnUtilsProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-cluster-alb-controller/AWSCDKCfnUtilsProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster-alb-controller/AWSCDKCfnUtilsProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-alb-controller/AWSCDKCfnUtilsProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"IngressPinger":{"id":"IngressPinger","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"Function":{"id":"Function","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","handler":"*","runtime":"*","vpc":"*","vpcSubnets":"*","securityGroups":"*","timeout":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"SecurityGroup":{"id":"SecurityGroup","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*","allowAllOutbound":"*","allowAllIpv6Outbound":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function/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 security group for Lambda Function awscdkeksclusteralbcontrollerIngressPingerFunctionCB8DD6F2","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Function/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}-${AWS::Region}"},"s3Key":"5f49893093e1ad14831626016699156d48da5f0890f19eb930bc3c46cf5f636d.zip"},"handler":"index.handler","role":{"Fn::GetAtt":["IngressPingerFunctionServiceRoleD01E9C19","Arn"]},"runtime":"python3.9","timeout":600,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["IngressPingerFunctionSecurityGroup77C60B1A","GroupId"]}]}}}}}},"Provider":{"id":"Provider","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":"*","securityGroups":"*","role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/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"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["IngressPingerFunction54746D9B","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["IngressPingerFunction54746D9B","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"IngressPingerProviderframeworkonEventServiceRoleDefaultPolicy7CC73E26","roles":[{"Ref":"IngressPingerProviderframeworkonEventServiceRole89300FAD"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["IngressPingerFunction54746D9B","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["IngressPingerProviderframeworkonEventServiceRole89300FAD","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["IngressPingerFunction54746D9B","Arn"]}}],"Version":"2012-10-17"},"policyName":"IngressPingerProviderframeworkonEventinlinePolicyAddedToExecutionRole097789944","roles":[{"Ref":"IngressPingerProviderframeworkonEventServiceRole89300FAD"}]}}}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-alb-controller/IngressPinger/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"IngressPingerResponse":{"id":"IngressPingerResponse","path":"aws-cdk-eks-cluster-alb-controller/IngressPingerResponse","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-alb-controller/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-alb-controller/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-cluster-alb-controller-integ":{"id":"aws-cdk-cluster-alb-controller-integ","path":"aws-cdk-cluster-alb-controller-integ","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-cluster-alb-controller-integ/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-cluster-alb-controller-integ/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-cluster-alb-controller-integ/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-cluster-alb-controller-integ/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-cluster-alb-controller-integ/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/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/EksClusterWithAddonStack.assets.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/EksClusterWithAddonStack.assets.json index ff167481f8513..8fa37bd379517 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/EksClusterWithAddonStack.assets.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/EksClusterWithAddonStack.assets.json @@ -29,16 +29,16 @@ } } }, - "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a": { + "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9": { "displayName": "Cluster/KubectlProvider/Handler/Code", "source": { - "path": "asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a", + "path": "asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9", "packaging": "zip" }, "destinations": { - "current_account-current_region-5b09798b": { + "current_account-current_region-b8d33bdb": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip", + "objectKey": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } @@ -71,16 +71,16 @@ } } }, - "7a413f04f8d5185b4902084ac2722a057f25c203c07d2afe63eb82a95386aa7b": { + "4f932964a0dc3f2a53ac65c780a18837cf8ca563574ba268c5b4df92e3ed8988": { "displayName": "EksClusterWithAddonStack Template", "source": { "path": "EksClusterWithAddonStack.template.json", "packaging": "file" }, "destinations": { - "current_account-current_region-ba6a1612": { + "current_account-current_region-a54b799f": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "7a413f04f8d5185b4902084ac2722a057f25c203c07d2afe63eb82a95386aa7b.json", + "objectKey": "4f932964a0dc3f2a53ac65c780a18837cf8ca563574ba268c5b4df92e3ed8988.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/EksClusterWithAddonStack.template.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/EksClusterWithAddonStack.template.json index c167707a39280..fa93e307b4769 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/EksClusterWithAddonStack.template.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/EksClusterWithAddonStack.template.json @@ -892,7 +892,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip" + "S3Key": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip" }, "Description": "onEvent handler for EKS kubectl resource provider", "Environment": { diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py similarity index 99% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py index 6c7838f182a45..6664adf77090d 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py @@ -112,7 +112,7 @@ def get_oci_cmd(repository, version): logger.info("Found AWS private repository") ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] - return {'ecr_login': ecr_login, 'registry_login': helm_registry_login, 'helm': helm_cmd} + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} elif public_registry['registry'] is not None: logger.info("Found AWS public repository, will use default region as deployment") region = os.environ.get('AWS_REGION', 'us-east-1') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/manifest.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/manifest.json index a55aad1ccd585..e17bd147d7d82 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/manifest.json @@ -18,7 +18,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}/7a413f04f8d5185b4902084ac2722a057f25c203c07d2afe63eb82a95386aa7b.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/4f932964a0dc3f2a53ac65c780a18837cf8ca563574ba268c5b4df92e3ed8988.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/tree.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/tree.json index 74bc7a0636189..db30961691708 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-addon.js.snapshot/tree.json @@ -1 +1 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"EksClusterWithAddonStack":{"id":"EksClusterWithAddonStack","path":"EksClusterWithAddonStack","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Vpc":{"id":"Vpc","path":"EksClusterWithAddonStack/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"natGateways":"*"}]},"children":{"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"EksClusterWithAddonStack/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"EksClusterWithAddonStack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"EksClusterWithAddonStack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"EksClusterWithAddonStack/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"EksClusterWithAddonStack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"EksClusterWithAddonStack/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"EksClusterWithAddonStack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"EksClusterWithAddonStack/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"EksClusterWithAddonStack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"EksClusterWithAddonStack/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"EksClusterWithAddonStack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"EksClusterWithAddonStack/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"}}}},"RestrictDefaultSecurityGroupCustomResource":{"id":"RestrictDefaultSecurityGroupCustomResource","path":"EksClusterWithAddonStack/Vpc/RestrictDefaultSecurityGroupCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"EksClusterWithAddonStack/Vpc/RestrictDefaultSecurityGroupCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"EksClusterWithAddonStack/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"Custom::VpcRestrictDefaultSGCustomResourceProvider":{"id":"Custom::VpcRestrictDefaultSGCustomResourceProvider","path":"EksClusterWithAddonStack/Custom::VpcRestrictDefaultSGCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"EksClusterWithAddonStack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"EksClusterWithAddonStack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"EksClusterWithAddonStack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"kubectlLayer":{"id":"kubectlLayer","path":"EksClusterWithAddonStack/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"EksClusterWithAddonStack/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"EksClusterWithAddonStack/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"EksClusterWithAddonStack/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"EksClusterWithAddonStack/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*"]},"children":{"Role":{"id":"Role","path":"EksClusterWithAddonStack/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"EksClusterWithAddonStack/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/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","sts:TagSession"],"Effect":"Allow","Principal":{"Service":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSComputePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSBlockStoragePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSLoadBalancingPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSNetworkingPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"EksClusterWithAddonStack/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"ClusternodePoolRole":{"id":"ClusternodePoolRole","path":"EksClusterWithAddonStack/Cluster/ClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]}]},"children":{"ImportClusternodePoolRole":{"id":"ImportClusternodePoolRole","path":"EksClusterWithAddonStack/Cluster/ClusternodePoolRole/ImportClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/ClusternodePoolRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":true,"nodePools":["system","general-purpose"],"nodeRoleArn":{"Fn::GetAtt":["ClusterClusternodePoolRole69276141","Arn"]}},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":true}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":true}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"EksClusterWithAddonStack/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"EksClusterWithAddonStack/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"EksClusterWithAddonStack/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (EksClusterWithAddonStack/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"EksClusterWithAddonStack/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}}}},"Addon":{"id":"Addon","path":"EksClusterWithAddonStack/Addon","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Addon","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Addon/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAddon","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Addon","aws:cdk:cloudformation:props":{"addonName":"coredns","clusterName":{"Ref":"ClusterEB0386A7"},"configurationValues":"{\"replicaCount\":2}","preserveOnDelete":true}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"EksClusterWithAddonStack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"EksClusterWithAddonStack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"EksClusterwithAddon":{"id":"EksClusterwithAddon","path":"EksClusterwithAddon","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"EksClusterwithAddon/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"EksClusterwithAddon/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"EksClusterwithAddon/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"EksClusterwithAddon/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"EksClusterwithAddon/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 +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"EksClusterWithAddonStack":{"id":"EksClusterWithAddonStack","path":"EksClusterWithAddonStack","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Vpc":{"id":"Vpc","path":"EksClusterWithAddonStack/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"natGateways":"*"}]},"children":{"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"EksClusterWithAddonStack/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"EksClusterWithAddonStack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"EksClusterWithAddonStack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"EksClusterWithAddonStack/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"EksClusterWithAddonStack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"EksClusterWithAddonStack/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"EksClusterWithAddonStack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"EksClusterWithAddonStack/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"EksClusterWithAddonStack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"EksClusterWithAddonStack/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"EksClusterWithAddonStack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"EksClusterWithAddonStack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"EksClusterWithAddonStack/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":"EksClusterWithAddonStack/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"EksClusterWithAddonStack/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"}}}},"RestrictDefaultSecurityGroupCustomResource":{"id":"RestrictDefaultSecurityGroupCustomResource","path":"EksClusterWithAddonStack/Vpc/RestrictDefaultSecurityGroupCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"EksClusterWithAddonStack/Vpc/RestrictDefaultSecurityGroupCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"EksClusterWithAddonStack/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"Custom::VpcRestrictDefaultSGCustomResourceProvider":{"id":"Custom::VpcRestrictDefaultSGCustomResourceProvider","path":"EksClusterWithAddonStack/Custom::VpcRestrictDefaultSGCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"EksClusterWithAddonStack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"EksClusterWithAddonStack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"EksClusterWithAddonStack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"kubectlLayer":{"id":"kubectlLayer","path":"EksClusterWithAddonStack/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"EksClusterWithAddonStack/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"EksClusterWithAddonStack/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"EksClusterWithAddonStack/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"EksClusterWithAddonStack/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*"]},"children":{"Role":{"id":"Role","path":"EksClusterWithAddonStack/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"EksClusterWithAddonStack/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/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","sts:TagSession"],"Effect":"Allow","Principal":{"Service":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSComputePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSBlockStoragePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSLoadBalancingPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSNetworkingPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"EksClusterWithAddonStack/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"ClusternodePoolRole":{"id":"ClusternodePoolRole","path":"EksClusterWithAddonStack/Cluster/ClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]}]},"children":{"ImportClusternodePoolRole":{"id":"ImportClusternodePoolRole","path":"EksClusterWithAddonStack/Cluster/ClusternodePoolRole/ImportClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/ClusternodePoolRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":true,"nodePools":["system","general-purpose"],"nodeRoleArn":{"Fn::GetAtt":["ClusterClusternodePoolRole69276141","Arn"]}},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":true}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":true}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"EksClusterWithAddonStack/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"EksClusterWithAddonStack/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"EksClusterWithAddonStack/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (EksClusterWithAddonStack/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"EksClusterWithAddonStack/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}}}},"Addon":{"id":"Addon","path":"EksClusterWithAddonStack/Addon","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Addon","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"EksClusterWithAddonStack/Addon/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAddon","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Addon","aws:cdk:cloudformation:props":{"addonName":"coredns","clusterName":{"Ref":"ClusterEB0386A7"},"configurationValues":"{\"replicaCount\":2}","preserveOnDelete":true}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"EksClusterWithAddonStack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"EksClusterWithAddonStack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"EksClusterwithAddon":{"id":"EksClusterwithAddon","path":"EksClusterwithAddon","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"EksClusterwithAddon/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"EksClusterwithAddon/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"EksClusterwithAddon/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"EksClusterwithAddon/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"EksClusterwithAddon/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/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py similarity index 99% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py index 6c7838f182a45..6664adf77090d 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py @@ -112,7 +112,7 @@ def get_oci_cmd(repository, version): logger.info("Found AWS private repository") ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] - return {'ecr_login': ecr_login, 'registry_login': helm_registry_login, 'helm': helm_cmd} + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} elif public_registry['registry'] is not None: logger.info("Found AWS public repository, will use default region as deployment") region = os.environ.get('AWS_REGION', 'us-east-1') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/aws-cdk-eks-cluster-al2023-nodegroup-test.assets.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/aws-cdk-eks-cluster-al2023-nodegroup-test.assets.json index 7762aea20b1c9..fde0cbf2cd1a1 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/aws-cdk-eks-cluster-al2023-nodegroup-test.assets.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/aws-cdk-eks-cluster-al2023-nodegroup-test.assets.json @@ -15,16 +15,16 @@ } } }, - "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a": { + "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9": { "displayName": "Cluster/KubectlProvider/Handler/Code", "source": { - "path": "asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a", + "path": "asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9", "packaging": "zip" }, "destinations": { - "current_account-current_region-5b09798b": { + "current_account-current_region-b8d33bdb": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip", + "objectKey": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } @@ -57,16 +57,16 @@ } } }, - "e1c2701ce3cf6d669554de8849af20110830a5eea8cff874aab27c5f97997c95": { + "3c94d97a2357438d652a9ecc51285167f269b8b2dcff82aa257646d05df7789f": { "displayName": "aws-cdk-eks-cluster-al2023-nodegroup-test Template", "source": { "path": "aws-cdk-eks-cluster-al2023-nodegroup-test.template.json", "packaging": "file" }, "destinations": { - "current_account-current_region-fff3171e": { + "current_account-current_region-0b3ba3d2": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "e1c2701ce3cf6d669554de8849af20110830a5eea8cff874aab27c5f97997c95.json", + "objectKey": "3c94d97a2357438d652a9ecc51285167f269b8b2dcff82aa257646d05df7789f.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/aws-cdk-eks-cluster-al2023-nodegroup-test.template.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/aws-cdk-eks-cluster-al2023-nodegroup-test.template.json index 7e3ea2251c379..82a0a44541cb0 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/aws-cdk-eks-cluster-al2023-nodegroup-test.template.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/aws-cdk-eks-cluster-al2023-nodegroup-test.template.json @@ -695,7 +695,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip" + "S3Key": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip" }, "Description": "onEvent handler for EKS kubectl resource provider", "Environment": { diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/manifest.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/manifest.json index 16876866936dd..21bc8d8bce3ee 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/manifest.json @@ -18,7 +18,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}/e1c2701ce3cf6d669554de8849af20110830a5eea8cff874aab27c5f97997c95.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/3c94d97a2357438d652a9ecc51285167f269b8b2dcff82aa257646d05df7789f.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/tree.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/tree.json index 844cfd4e1926e..63ab624a95966 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-al2023-nodegroup.js.snapshot/tree.json @@ -1 +1 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-cluster-al2023-nodegroup-test":{"id":"aws-cdk-eks-cluster-al2023-nodegroup-test","path":"aws-cdk-eks-cluster-al2023-nodegroup-test","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"AdminRole":{"id":"AdminRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/AdminRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportAdminRole":{"id":"ImportAdminRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/AdminRole/ImportAdminRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/AdminRole/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"]]}}}],"Version":"2012-10-17"}}}}}},"Vpc":{"id":"Vpc","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"natGateways":"*","restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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"}}}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*","*","*","*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/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":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":false},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":false}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":false}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}},"mastersRoleAccess":{"id":"mastersRoleAccess","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/mastersRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/mastersRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["AdminRole38563C57","Arn"]}}}}}},"ConfigCommand":{"id":"ConfigCommand","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/ConfigCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"GetTokenCommand":{"id":"GetTokenCommand","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/GetTokenCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"NodegroupMNG_AL2023_X86_64_STANDARD":{"id":"NodegroupMNG_AL2023_X86_64_STANDARD","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_STANDARD","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_STANDARD/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_STANDARD/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_STANDARD/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_STANDARD/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2023_x86_64_STANDARD","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"nodeRole":{"Fn::GetAtt":["ClusterNodegroupMNGAL2023X8664STANDARDNodeGroupRole5CB41DCB","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"NodegroupMNG_AL2023_ARM_64_STANDARD":{"id":"NodegroupMNG_AL2023_ARM_64_STANDARD","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_ARM_64_STANDARD","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_ARM_64_STANDARD/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_ARM_64_STANDARD/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_ARM_64_STANDARD/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_ARM_64_STANDARD/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2023_ARM_64_STANDARD","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"nodeRole":{"Fn::GetAtt":["ClusterNodegroupMNGAL2023ARM64STANDARDNodeGroupRole40E4A124","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"NodegroupMNG_AL2023_X86_64_NEURON":{"id":"NodegroupMNG_AL2023_X86_64_NEURON","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NEURON","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NEURON/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NEURON/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NEURON/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NEURON/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2023_x86_64_NEURON","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"nodeRole":{"Fn::GetAtt":["ClusterNodegroupMNGAL2023X8664NEURONNodeGroupRoleC0707AE1","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"NodegroupMNG_AL2023_X86_64_NVIDIA":{"id":"NodegroupMNG_AL2023_X86_64_NVIDIA","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NVIDIA","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NVIDIA/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NVIDIA/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NVIDIA/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NVIDIA/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2023_x86_64_NVIDIA","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"nodeRole":{"Fn::GetAtt":["ClusterNodegroupMNGAL2023X8664NVIDIANodeGroupRole611D278C","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-cluster-al2023-nodegroup":{"id":"aws-cdk-eks-cluster-al2023-nodegroup","path":"aws-cdk-eks-cluster-al2023-nodegroup","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-cluster-al2023-nodegroup/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-al2023-nodegroup/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-cluster-al2023-nodegroup/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-al2023-nodegroup/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-al2023-nodegroup/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 +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-cluster-al2023-nodegroup-test":{"id":"aws-cdk-eks-cluster-al2023-nodegroup-test","path":"aws-cdk-eks-cluster-al2023-nodegroup-test","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"AdminRole":{"id":"AdminRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/AdminRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportAdminRole":{"id":"ImportAdminRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/AdminRole/ImportAdminRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/AdminRole/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"]]}}}],"Version":"2012-10-17"}}}}}},"Vpc":{"id":"Vpc","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"natGateways":"*","restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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":"aws-cdk-eks-cluster-al2023-nodegroup-test/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/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"}}}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*","*","*","*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/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":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":false},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":false}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":false}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}},"mastersRoleAccess":{"id":"mastersRoleAccess","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/mastersRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/mastersRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["AdminRole38563C57","Arn"]}}}}}},"ConfigCommand":{"id":"ConfigCommand","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/ConfigCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"GetTokenCommand":{"id":"GetTokenCommand","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/GetTokenCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"NodegroupMNG_AL2023_X86_64_STANDARD":{"id":"NodegroupMNG_AL2023_X86_64_STANDARD","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_STANDARD","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_STANDARD/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_STANDARD/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_STANDARD/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_STANDARD/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2023_x86_64_STANDARD","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"nodeRole":{"Fn::GetAtt":["ClusterNodegroupMNGAL2023X8664STANDARDNodeGroupRole5CB41DCB","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"NodegroupMNG_AL2023_ARM_64_STANDARD":{"id":"NodegroupMNG_AL2023_ARM_64_STANDARD","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_ARM_64_STANDARD","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_ARM_64_STANDARD/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_ARM_64_STANDARD/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_ARM_64_STANDARD/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_ARM_64_STANDARD/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2023_ARM_64_STANDARD","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"nodeRole":{"Fn::GetAtt":["ClusterNodegroupMNGAL2023ARM64STANDARDNodeGroupRole40E4A124","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"NodegroupMNG_AL2023_X86_64_NEURON":{"id":"NodegroupMNG_AL2023_X86_64_NEURON","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NEURON","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NEURON/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NEURON/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NEURON/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NEURON/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2023_x86_64_NEURON","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"nodeRole":{"Fn::GetAtt":["ClusterNodegroupMNGAL2023X8664NEURONNodeGroupRoleC0707AE1","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"NodegroupMNG_AL2023_X86_64_NVIDIA":{"id":"NodegroupMNG_AL2023_X86_64_NVIDIA","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NVIDIA","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NVIDIA/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NVIDIA/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NVIDIA/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/Cluster/NodegroupMNG_AL2023_X86_64_NVIDIA/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2023_x86_64_NVIDIA","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"nodeRole":{"Fn::GetAtt":["ClusterNodegroupMNGAL2023X8664NVIDIANodeGroupRole611D278C","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-al2023-nodegroup-test/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-cluster-al2023-nodegroup":{"id":"aws-cdk-eks-cluster-al2023-nodegroup","path":"aws-cdk-eks-cluster-al2023-nodegroup","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-cluster-al2023-nodegroup/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-al2023-nodegroup/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-cluster-al2023-nodegroup/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-al2023-nodegroup/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-al2023-nodegroup/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/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py similarity index 99% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py index 6c7838f182a45..6664adf77090d 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py @@ -112,7 +112,7 @@ def get_oci_cmd(repository, version): logger.info("Found AWS private repository") ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] - return {'ecr_login': ecr_login, 'registry_login': helm_registry_login, 'helm': helm_cmd} + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} elif public_registry['registry'] is not None: logger.info("Found AWS public repository, will use default region as deployment") region = os.environ.get('AWS_REGION', 'us-east-1') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/eks-auto-mode-empty-nodepools-stack.assets.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/eks-auto-mode-empty-nodepools-stack.assets.json index a830b29a5fcea..72ca6c3c025eb 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/eks-auto-mode-empty-nodepools-stack.assets.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/eks-auto-mode-empty-nodepools-stack.assets.json @@ -31,16 +31,16 @@ } } }, - "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a": { + "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9": { "displayName": "hello-eks/cluster/KubectlProvider/Handler/Code", "source": { - "path": "asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a", + "path": "asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9", "packaging": "zip" }, "destinations": { - "current_account-us-east-1-e98e539f": { + "current_account-us-east-1-cacf59d8": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1", - "objectKey": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip", + "objectKey": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip", "region": "us-east-1", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-us-east-1" } @@ -76,16 +76,16 @@ } } }, - "b14399101f6b1ebe12dc37133166741277c3d49ba002b81a3a2760b27bc0b497": { + "b55707609dcebbea0dd0cdbc325206551c968e7c8037079de2a91802a4f3cc0f": { "displayName": "eks-auto-mode-empty-nodepools-stack Template", "source": { "path": "eks-auto-mode-empty-nodepools-stack.template.json", "packaging": "file" }, "destinations": { - "current_account-us-east-1-ead04358": { + "current_account-us-east-1-43cf8b2d": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1", - "objectKey": "b14399101f6b1ebe12dc37133166741277c3d49ba002b81a3a2760b27bc0b497.json", + "objectKey": "b55707609dcebbea0dd0cdbc325206551c968e7c8037079de2a91802a4f3cc0f.json", "region": "us-east-1", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-us-east-1" } diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/eks-auto-mode-empty-nodepools-stack.template.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/eks-auto-mode-empty-nodepools-stack.template.json index 9be7fdd2d752d..ed178de6621b0 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/eks-auto-mode-empty-nodepools-stack.template.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/eks-auto-mode-empty-nodepools-stack.template.json @@ -852,7 +852,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1" }, - "S3Key": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip" + "S3Key": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip" }, "Description": "onEvent handler for EKS kubectl resource provider", "Environment": { diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/eks-auto-mode-stack.assets.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/eks-auto-mode-stack.assets.json index 1576ce211c964..3f5c68d86d3a7 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/eks-auto-mode-stack.assets.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/eks-auto-mode-stack.assets.json @@ -31,16 +31,16 @@ } } }, - "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a": { + "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9": { "displayName": "hello-eks/cluster/KubectlProvider/Handler/Code", "source": { - "path": "asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a", + "path": "asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9", "packaging": "zip" }, "destinations": { - "current_account-us-east-1-e98e539f": { + "current_account-us-east-1-cacf59d8": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1", - "objectKey": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip", + "objectKey": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip", "region": "us-east-1", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-us-east-1" } @@ -76,16 +76,16 @@ } } }, - "6ded5d62718c3c4d7784ebb5399a768db00996d50ad9f3df6583addd51c8a5a2": { + "67cb32009cd973599e03bc2ff84f7724ed8be49aa512681e730aaf01c400b778": { "displayName": "eks-auto-mode-stack Template", "source": { "path": "eks-auto-mode-stack.template.json", "packaging": "file" }, "destinations": { - "current_account-us-east-1-cc7ae81b": { + "current_account-us-east-1-32ab3907": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1", - "objectKey": "6ded5d62718c3c4d7784ebb5399a768db00996d50ad9f3df6583addd51c8a5a2.json", + "objectKey": "67cb32009cd973599e03bc2ff84f7724ed8be49aa512681e730aaf01c400b778.json", "region": "us-east-1", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-us-east-1" } diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/eks-auto-mode-stack.template.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/eks-auto-mode-stack.template.json index bc7ccffc2707e..4ebbb65ffe3da 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/eks-auto-mode-stack.template.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/eks-auto-mode-stack.template.json @@ -904,7 +904,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1" }, - "S3Key": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip" + "S3Key": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip" }, "Description": "onEvent handler for EKS kubectl resource provider", "Environment": { diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/manifest.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/manifest.json index 2e3cd4fe20e67..6d61becf4986a 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/manifest.json @@ -18,7 +18,7 @@ "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/6ded5d62718c3c4d7784ebb5399a768db00996d50ad9f3df6583addd51c8a5a2.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1/67cb32009cd973599e03bc2ff84f7724ed8be49aa512681e730aaf01c400b778.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -904,7 +904,7 @@ "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/b14399101f6b1ebe12dc37133166741277c3d49ba002b81a3a2760b27bc0b497.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1/b55707609dcebbea0dd0cdbc325206551c968e7c8037079de2a91802a4f3cc0f.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/tree.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/tree.json index 792e6b90589ed..24432799d117d 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-auto.js.snapshot/tree.json @@ -1 +1 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"eks-auto-mode-stack":{"id":"eks-auto-mode-stack","path":"eks-auto-mode-stack","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Vpc":{"id":"Vpc","path":"eks-auto-mode-stack/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"natGateways":"*"}]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-stack/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":"eks-auto-mode-stack/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"eks-auto-mode-stack/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":"eks-auto-mode-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"eks-auto-mode-stack/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-auto-mode-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-auto-mode-stack/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":"eks-auto-mode-stack/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":"eks-auto-mode-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"eks-auto-mode-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"eks-auto-mode-stack/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"eks-auto-mode-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"eks-auto-mode-stack/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-auto-mode-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-auto-mode-stack/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":"eks-auto-mode-stack/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"eks-auto-mode-stack/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":"eks-auto-mode-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"eks-auto-mode-stack/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-auto-mode-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-auto-mode-stack/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":"eks-auto-mode-stack/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":"eks-auto-mode-stack/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":"eks-auto-mode-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"eks-auto-mode-stack/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-auto-mode-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-auto-mode-stack/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":"eks-auto-mode-stack/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"eks-auto-mode-stack/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":"eks-auto-mode-stack/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"eks-auto-mode-stack/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"}}}},"RestrictDefaultSecurityGroupCustomResource":{"id":"RestrictDefaultSecurityGroupCustomResource","path":"eks-auto-mode-stack/Vpc/RestrictDefaultSecurityGroupCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"eks-auto-mode-stack/Vpc/RestrictDefaultSecurityGroupCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Custom::VpcRestrictDefaultSGCustomResourceProvider":{"id":"Custom::VpcRestrictDefaultSGCustomResourceProvider","path":"eks-auto-mode-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"eks-auto-mode-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"eks-auto-mode-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"eks-auto-mode-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"Role":{"id":"Role","path":"eks-auto-mode-stack/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportRole":{"id":"ImportRole","path":"eks-auto-mode-stack/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/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":{"AWS":{"Fn::Join":["",["arn:aws:iam::",{"Ref":"AWS::AccountId"},":root"]]}}}],"Version":"2012-10-17"}}}}}},"hello-eks":{"id":"hello-eks","path":"eks-auto-mode-stack/hello-eks","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"kubectl":{"id":"kubectl","path":"eks-auto-mode-stack/hello-eks/kubectl","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"eks-auto-mode-stack/hello-eks/kubectl/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-auto-mode-stack/hello-eks/kubectl/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-auto-mode-stack/hello-eks/kubectl/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/kubectl/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"cluster":{"id":"cluster","path":"eks-auto-mode-stack/hello-eks/cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*"]},"children":{"Role":{"id":"Role","path":"eks-auto-mode-stack/hello-eks/cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"eks-auto-mode-stack/hello-eks/cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/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","sts:TagSession"],"Effect":"Allow","Principal":{"Service":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSComputePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSBlockStoragePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSLoadBalancingPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSNetworkingPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"eks-auto-mode-stack/hello-eks/cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"clusternodePoolRole":{"id":"clusternodePoolRole","path":"eks-auto-mode-stack/hello-eks/cluster/clusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]}]},"children":{"ImportclusternodePoolRole":{"id":"ImportclusternodePoolRole","path":"eks-auto-mode-stack/hello-eks/cluster/clusternodePoolRole/ImportclusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/clusternodePoolRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":true,"nodePools":["system","general-purpose"],"nodeRoleArn":{"Fn::GetAtt":["helloeksclusterclusternodePoolRoleC0692507","Arn"]}},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":true}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["helloeksclusterControlPlaneSecurityGroupEAAB451B","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["helloeksclusterRoleBED770F6","Arn"]},"storageConfig":{"blockStorage":{"enabled":true}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"eks-auto-mode-stack/hello-eks/cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["helloeksclusterKubectlProviderHandlerHasEcrPublic8E4E12CC",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["helloeksclusterA526EE63","Arn"]}}],"Version":"2012-10-17"},"policyName":"helloeksclusterKubectlProviderHandlerServiceRoleDefaultPolicyFE993B49","roles":[{"Ref":"helloeksclusterKubectlProviderHandlerServiceRoleAA5EA2F4"}]}}}}}}},"Code":{"id":"Code","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/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":"94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"helloeksclusterKubectlProviderAwsCliLayer6B0085A5"},{"Ref":"helloekskubectl90D845D3"}],"memorySize":1024,"role":{"Fn::GetAtt":["helloeksclusterKubectlProviderHandlerServiceRoleAA5EA2F4","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["helloeksclusterA526EE63","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["helloeksclusterKubectlProviderHandler87F7258C","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["helloeksclusterKubectlProviderHandler87F7258C","Arn"]},":*"]]}]},{"Action":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["helloeksclusterKubectlProviderHandler87F7258C","Arn"]}}],"Version":"2012-10-17"},"policyName":"helloeksclusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyF8C6BB77","roles":[{"Ref":"helloeksclusterKubectlProviderframeworkonEventServiceRole7DA17438"}]}}}}}}},"Code":{"id":"Code","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/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":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["helloeksclusterKubectlProviderHandler87F7258C","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["helloeksclusterKubectlProviderframeworkonEventServiceRole7DA17438","Arn"]},"runtime":"nodejs22.x","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["helloeksclusterA526EE63","ClusterSecurityGroupId"]}]}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"eks-auto-mode-stack/hello-eks/cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"helloeksclusterA526EE63"},"principalArn":{"Fn::GetAtt":["helloeksclusterKubectlProviderHandlerServiceRoleAA5EA2F4","Arn"]}}}}}},"mastersRoleAccess":{"id":"mastersRoleAccess","path":"eks-auto-mode-stack/hello-eks/cluster/mastersRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/mastersRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"helloeksclusterA526EE63"},"principalArn":{"Fn::GetAtt":["Role1ABCC5F0","Arn"]}}}}}},"ConfigCommand":{"id":"ConfigCommand","path":"eks-auto-mode-stack/hello-eks/cluster/ConfigCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"GetTokenCommand":{"id":"GetTokenCommand","path":"eks-auto-mode-stack/hello-eks/cluster/GetTokenCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"eks-auto-mode-stack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"eks-auto-mode-stack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"eks-auto-mode-empty-nodepools-stack":{"id":"eks-auto-mode-empty-nodepools-stack","path":"eks-auto-mode-empty-nodepools-stack","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Vpc":{"id":"Vpc","path":"eks-auto-mode-empty-nodepools-stack/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"natGateways":"*"}]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"eks-auto-mode-empty-nodepools-stack/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"eks-auto-mode-empty-nodepools-stack/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"eks-auto-mode-empty-nodepools-stack/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"eks-auto-mode-empty-nodepools-stack/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"eks-auto-mode-empty-nodepools-stack/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"eks-auto-mode-empty-nodepools-stack/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"}}}},"RestrictDefaultSecurityGroupCustomResource":{"id":"RestrictDefaultSecurityGroupCustomResource","path":"eks-auto-mode-empty-nodepools-stack/Vpc/RestrictDefaultSecurityGroupCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"eks-auto-mode-empty-nodepools-stack/Vpc/RestrictDefaultSecurityGroupCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Custom::VpcRestrictDefaultSGCustomResourceProvider":{"id":"Custom::VpcRestrictDefaultSGCustomResourceProvider","path":"eks-auto-mode-empty-nodepools-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"eks-auto-mode-empty-nodepools-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"eks-auto-mode-empty-nodepools-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"eks-auto-mode-empty-nodepools-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"Role":{"id":"Role","path":"eks-auto-mode-empty-nodepools-stack/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportRole":{"id":"ImportRole","path":"eks-auto-mode-empty-nodepools-stack/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/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":{"AWS":{"Fn::Join":["",["arn:aws:iam::",{"Ref":"AWS::AccountId"},":root"]]}}}],"Version":"2012-10-17"}}}}}},"hello-eks":{"id":"hello-eks","path":"eks-auto-mode-empty-nodepools-stack/hello-eks","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"kubectl":{"id":"kubectl","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/kubectl","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/kubectl/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/kubectl/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/kubectl/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/kubectl/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"cluster":{"id":"cluster","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*"]},"children":{"Role":{"id":"Role","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/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","sts:TagSession"],"Effect":"Allow","Principal":{"Service":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSComputePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSBlockStoragePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSLoadBalancingPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSNetworkingPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":true,"nodePools":[]},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":true}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["helloeksclusterControlPlaneSecurityGroupEAAB451B","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["helloeksclusterRoleBED770F6","Arn"]},"storageConfig":{"blockStorage":{"enabled":true}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["helloeksclusterKubectlProviderHandlerHasEcrPublic8E4E12CC",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["helloeksclusterA526EE63","Arn"]}}],"Version":"2012-10-17"},"policyName":"helloeksclusterKubectlProviderHandlerServiceRoleDefaultPolicyFE993B49","roles":[{"Ref":"helloeksclusterKubectlProviderHandlerServiceRoleAA5EA2F4"}]}}}}}}},"Code":{"id":"Code","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/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":"94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"helloeksclusterKubectlProviderAwsCliLayer6B0085A5"},{"Ref":"helloekskubectl90D845D3"}],"memorySize":1024,"role":{"Fn::GetAtt":["helloeksclusterKubectlProviderHandlerServiceRoleAA5EA2F4","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["helloeksclusterA526EE63","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["helloeksclusterKubectlProviderHandler87F7258C","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["helloeksclusterKubectlProviderHandler87F7258C","Arn"]},":*"]]}]},{"Action":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["helloeksclusterKubectlProviderHandler87F7258C","Arn"]}}],"Version":"2012-10-17"},"policyName":"helloeksclusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyF8C6BB77","roles":[{"Ref":"helloeksclusterKubectlProviderframeworkonEventServiceRole7DA17438"}]}}}}}}},"Code":{"id":"Code","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/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":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["helloeksclusterKubectlProviderHandler87F7258C","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["helloeksclusterKubectlProviderframeworkonEventServiceRole7DA17438","Arn"]},"runtime":"nodejs22.x","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["helloeksclusterA526EE63","ClusterSecurityGroupId"]}]}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"helloeksclusterA526EE63"},"principalArn":{"Fn::GetAtt":["helloeksclusterKubectlProviderHandlerServiceRoleAA5EA2F4","Arn"]}}}}}},"mastersRoleAccess":{"id":"mastersRoleAccess","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/mastersRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/mastersRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"helloeksclusterA526EE63"},"principalArn":{"Fn::GetAtt":["Role1ABCC5F0","Arn"]}}}}}},"ConfigCommand":{"id":"ConfigCommand","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/ConfigCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"GetTokenCommand":{"id":"GetTokenCommand","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/GetTokenCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"eks-auto-mode-empty-nodepools-stack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"eks-auto-mode-empty-nodepools-stack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-cluster-integ":{"id":"aws-cdk-eks-cluster-integ","path":"aws-cdk-eks-cluster-integ","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-cluster-integ/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-integ/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-cluster-integ/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-integ/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-integ/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 +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"eks-auto-mode-stack":{"id":"eks-auto-mode-stack","path":"eks-auto-mode-stack","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Vpc":{"id":"Vpc","path":"eks-auto-mode-stack/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"natGateways":"*"}]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-stack/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":"eks-auto-mode-stack/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"eks-auto-mode-stack/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":"eks-auto-mode-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"eks-auto-mode-stack/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-auto-mode-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-auto-mode-stack/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":"eks-auto-mode-stack/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":"eks-auto-mode-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"eks-auto-mode-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"eks-auto-mode-stack/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"eks-auto-mode-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"eks-auto-mode-stack/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-auto-mode-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-auto-mode-stack/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":"eks-auto-mode-stack/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"eks-auto-mode-stack/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":"eks-auto-mode-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"eks-auto-mode-stack/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-auto-mode-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-auto-mode-stack/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":"eks-auto-mode-stack/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":"eks-auto-mode-stack/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":"eks-auto-mode-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"eks-auto-mode-stack/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-auto-mode-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-auto-mode-stack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-auto-mode-stack/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":"eks-auto-mode-stack/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"eks-auto-mode-stack/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":"eks-auto-mode-stack/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"eks-auto-mode-stack/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"}}}},"RestrictDefaultSecurityGroupCustomResource":{"id":"RestrictDefaultSecurityGroupCustomResource","path":"eks-auto-mode-stack/Vpc/RestrictDefaultSecurityGroupCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"eks-auto-mode-stack/Vpc/RestrictDefaultSecurityGroupCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Custom::VpcRestrictDefaultSGCustomResourceProvider":{"id":"Custom::VpcRestrictDefaultSGCustomResourceProvider","path":"eks-auto-mode-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"eks-auto-mode-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"eks-auto-mode-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"eks-auto-mode-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"Role":{"id":"Role","path":"eks-auto-mode-stack/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportRole":{"id":"ImportRole","path":"eks-auto-mode-stack/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/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":{"AWS":{"Fn::Join":["",["arn:aws:iam::",{"Ref":"AWS::AccountId"},":root"]]}}}],"Version":"2012-10-17"}}}}}},"hello-eks":{"id":"hello-eks","path":"eks-auto-mode-stack/hello-eks","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"kubectl":{"id":"kubectl","path":"eks-auto-mode-stack/hello-eks/kubectl","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"eks-auto-mode-stack/hello-eks/kubectl/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-auto-mode-stack/hello-eks/kubectl/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-auto-mode-stack/hello-eks/kubectl/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/kubectl/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"cluster":{"id":"cluster","path":"eks-auto-mode-stack/hello-eks/cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*"]},"children":{"Role":{"id":"Role","path":"eks-auto-mode-stack/hello-eks/cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"eks-auto-mode-stack/hello-eks/cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/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","sts:TagSession"],"Effect":"Allow","Principal":{"Service":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSComputePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSBlockStoragePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSLoadBalancingPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSNetworkingPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"eks-auto-mode-stack/hello-eks/cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"clusternodePoolRole":{"id":"clusternodePoolRole","path":"eks-auto-mode-stack/hello-eks/cluster/clusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]}]},"children":{"ImportclusternodePoolRole":{"id":"ImportclusternodePoolRole","path":"eks-auto-mode-stack/hello-eks/cluster/clusternodePoolRole/ImportclusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/clusternodePoolRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":true,"nodePools":["system","general-purpose"],"nodeRoleArn":{"Fn::GetAtt":["helloeksclusterclusternodePoolRoleC0692507","Arn"]}},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":true}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["helloeksclusterControlPlaneSecurityGroupEAAB451B","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["helloeksclusterRoleBED770F6","Arn"]},"storageConfig":{"blockStorage":{"enabled":true}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"eks-auto-mode-stack/hello-eks/cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["helloeksclusterKubectlProviderHandlerHasEcrPublic8E4E12CC",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["helloeksclusterA526EE63","Arn"]}}],"Version":"2012-10-17"},"policyName":"helloeksclusterKubectlProviderHandlerServiceRoleDefaultPolicyFE993B49","roles":[{"Ref":"helloeksclusterKubectlProviderHandlerServiceRoleAA5EA2F4"}]}}}}}}},"Code":{"id":"Code","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/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":"379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"helloeksclusterKubectlProviderAwsCliLayer6B0085A5"},{"Ref":"helloekskubectl90D845D3"}],"memorySize":1024,"role":{"Fn::GetAtt":["helloeksclusterKubectlProviderHandlerServiceRoleAA5EA2F4","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["helloeksclusterA526EE63","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["helloeksclusterKubectlProviderHandler87F7258C","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["helloeksclusterKubectlProviderHandler87F7258C","Arn"]},":*"]]}]},{"Action":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["helloeksclusterKubectlProviderHandler87F7258C","Arn"]}}],"Version":"2012-10-17"},"policyName":"helloeksclusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyF8C6BB77","roles":[{"Ref":"helloeksclusterKubectlProviderframeworkonEventServiceRole7DA17438"}]}}}}}}},"Code":{"id":"Code","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/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":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (eks-auto-mode-stack/hello-eks/cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["helloeksclusterKubectlProviderHandler87F7258C","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["helloeksclusterKubectlProviderframeworkonEventServiceRole7DA17438","Arn"]},"runtime":"nodejs22.x","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["helloeksclusterA526EE63","ClusterSecurityGroupId"]}]}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"eks-auto-mode-stack/hello-eks/cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"helloeksclusterA526EE63"},"principalArn":{"Fn::GetAtt":["helloeksclusterKubectlProviderHandlerServiceRoleAA5EA2F4","Arn"]}}}}}},"mastersRoleAccess":{"id":"mastersRoleAccess","path":"eks-auto-mode-stack/hello-eks/cluster/mastersRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-stack/hello-eks/cluster/mastersRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"helloeksclusterA526EE63"},"principalArn":{"Fn::GetAtt":["Role1ABCC5F0","Arn"]}}}}}},"ConfigCommand":{"id":"ConfigCommand","path":"eks-auto-mode-stack/hello-eks/cluster/ConfigCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"GetTokenCommand":{"id":"GetTokenCommand","path":"eks-auto-mode-stack/hello-eks/cluster/GetTokenCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"eks-auto-mode-stack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"eks-auto-mode-stack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"eks-auto-mode-empty-nodepools-stack":{"id":"eks-auto-mode-empty-nodepools-stack","path":"eks-auto-mode-empty-nodepools-stack","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Vpc":{"id":"Vpc","path":"eks-auto-mode-empty-nodepools-stack/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"natGateways":"*"}]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"eks-auto-mode-empty-nodepools-stack/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"eks-auto-mode-empty-nodepools-stack/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"eks-auto-mode-empty-nodepools-stack/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"eks-auto-mode-empty-nodepools-stack/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"eks-auto-mode-empty-nodepools-stack/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-auto-mode-empty-nodepools-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-auto-mode-empty-nodepools-stack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"eks-auto-mode-empty-nodepools-stack/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":"eks-auto-mode-empty-nodepools-stack/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"eks-auto-mode-empty-nodepools-stack/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"}}}},"RestrictDefaultSecurityGroupCustomResource":{"id":"RestrictDefaultSecurityGroupCustomResource","path":"eks-auto-mode-empty-nodepools-stack/Vpc/RestrictDefaultSecurityGroupCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"eks-auto-mode-empty-nodepools-stack/Vpc/RestrictDefaultSecurityGroupCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Custom::VpcRestrictDefaultSGCustomResourceProvider":{"id":"Custom::VpcRestrictDefaultSGCustomResourceProvider","path":"eks-auto-mode-empty-nodepools-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"eks-auto-mode-empty-nodepools-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"eks-auto-mode-empty-nodepools-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"eks-auto-mode-empty-nodepools-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"Role":{"id":"Role","path":"eks-auto-mode-empty-nodepools-stack/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportRole":{"id":"ImportRole","path":"eks-auto-mode-empty-nodepools-stack/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/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":{"AWS":{"Fn::Join":["",["arn:aws:iam::",{"Ref":"AWS::AccountId"},":root"]]}}}],"Version":"2012-10-17"}}}}}},"hello-eks":{"id":"hello-eks","path":"eks-auto-mode-empty-nodepools-stack/hello-eks","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"kubectl":{"id":"kubectl","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/kubectl","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/kubectl/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/kubectl/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/kubectl/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/kubectl/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"cluster":{"id":"cluster","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*"]},"children":{"Role":{"id":"Role","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/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","sts:TagSession"],"Effect":"Allow","Principal":{"Service":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSComputePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSBlockStoragePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSLoadBalancingPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSNetworkingPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":true,"nodePools":[]},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":true}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["helloeksclusterControlPlaneSecurityGroupEAAB451B","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["helloeksclusterRoleBED770F6","Arn"]},"storageConfig":{"blockStorage":{"enabled":true}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["helloeksclusterKubectlProviderHandlerHasEcrPublic8E4E12CC",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["helloeksclusterA526EE63","Arn"]}}],"Version":"2012-10-17"},"policyName":"helloeksclusterKubectlProviderHandlerServiceRoleDefaultPolicyFE993B49","roles":[{"Ref":"helloeksclusterKubectlProviderHandlerServiceRoleAA5EA2F4"}]}}}}}}},"Code":{"id":"Code","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/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":"379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"helloeksclusterKubectlProviderAwsCliLayer6B0085A5"},{"Ref":"helloekskubectl90D845D3"}],"memorySize":1024,"role":{"Fn::GetAtt":["helloeksclusterKubectlProviderHandlerServiceRoleAA5EA2F4","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["helloeksclusterA526EE63","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["helloeksclusterKubectlProviderHandler87F7258C","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["helloeksclusterKubectlProviderHandler87F7258C","Arn"]},":*"]]}]},{"Action":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["helloeksclusterKubectlProviderHandler87F7258C","Arn"]}}],"Version":"2012-10-17"},"policyName":"helloeksclusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyF8C6BB77","roles":[{"Ref":"helloeksclusterKubectlProviderframeworkonEventServiceRole7DA17438"}]}}}}}}},"Code":{"id":"Code","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider/framework-onEvent/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":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["helloeksclusterKubectlProviderHandler87F7258C","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["helloeksclusterKubectlProviderframeworkonEventServiceRole7DA17438","Arn"]},"runtime":"nodejs22.x","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["helloeksclusterA526EE63","ClusterSecurityGroupId"]}]}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"helloeksclusterA526EE63"},"principalArn":{"Fn::GetAtt":["helloeksclusterKubectlProviderHandlerServiceRoleAA5EA2F4","Arn"]}}}}}},"mastersRoleAccess":{"id":"mastersRoleAccess","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/mastersRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/mastersRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"helloeksclusterA526EE63"},"principalArn":{"Fn::GetAtt":["Role1ABCC5F0","Arn"]}}}}}},"ConfigCommand":{"id":"ConfigCommand","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/ConfigCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"GetTokenCommand":{"id":"GetTokenCommand","path":"eks-auto-mode-empty-nodepools-stack/hello-eks/cluster/GetTokenCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"eks-auto-mode-empty-nodepools-stack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"eks-auto-mode-empty-nodepools-stack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-cluster-integ":{"id":"aws-cdk-eks-cluster-integ","path":"aws-cdk-eks-cluster-integ","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-cluster-integ/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-integ/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-cluster-integ/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-integ/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-integ/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/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py new file mode 100644 index 0000000000000..6664adf77090d --- /dev/null +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py @@ -0,0 +1,250 @@ +import json +import logging +import os +import re +import subprocess +import shutil +import tempfile +import zipfile +import boto3 + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + +# these are coming from the kubectl layer +os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] + +outdir = os.environ.get('TEST_OUTDIR', '/tmp') +kubeconfig = os.path.join(outdir, 'kubeconfig') + +def get_chart_asset_from_url(chart_asset_url): + chart_zip = os.path.join(outdir, 'chart.zip') + shutil.rmtree(chart_zip, ignore_errors=True) + subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) + chart_dir = os.path.join(outdir, 'chart') + shutil.rmtree(chart_dir, ignore_errors=True) + os.mkdir(chart_dir) + with zipfile.ZipFile(chart_zip, 'r') as zip_ref: + zip_ref.extractall(chart_dir) + return chart_dir + +def is_ecr_public_available(region): + s = boto3.Session() + return s.get_partition_for_region(region) == 'aws' + +def helm_handler(event, context): + logger.info(json.dumps(dict(event, ResponseURL='...'))) + + request_type = event['RequestType'] + props = event['ResourceProperties'] + + # resource properties + cluster_name = props['ClusterName'] + release = props['Release'] + chart = props.get('Chart', None) + chart_asset_url = props.get('ChartAssetURL', None) + version = props.get('Version', None) + wait = props.get('Wait', False) + atomic = props.get('Atomic', False) + timeout = props.get('Timeout', None) + namespace = props.get('Namespace', None) + create_namespace = props.get('CreateNamespace', None) + repository = props.get('Repository', None) + values_text = props.get('Values', None) + skip_crds = props.get('SkipCrds', False) + + # "log in" to the cluster + subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', + '--name', cluster_name, + '--kubeconfig', kubeconfig + ]) + + if os.path.isfile(kubeconfig): + os.chmod(kubeconfig, 0o600) + + # Write out the values to a file and include them with the install and upgrade + values_file = None + if not request_type == "Delete" and not values_text is None: + values = json.loads(values_text) + values_file = os.path.join(outdir, 'values.yaml') + with open(values_file, "w") as f: + f.write(json.dumps(values, indent=2)) + + if request_type == 'Create' or request_type == 'Update': + # Ensure chart or chart_asset_url are set + if chart == None and chart_asset_url == None: + raise RuntimeError(f'chart or chartAsset must be specified') + + if chart_asset_url != None: + assert(chart==None) + assert(repository==None) + assert(version==None) + if not chart_asset_url.startswith('s3://'): + raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') + # future work: support versions from s3 assets + chart = get_chart_asset_from_url(chart_asset_url) + + if repository is not None and repository.startswith('oci://'): + tmpdir = tempfile.TemporaryDirectory() + chart_dir = get_chart_from_oci(tmpdir.name, repository, version) + chart = chart_dir + + helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) + elif request_type == "Delete": + try: + helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) + except Exception as e: + logger.info("delete error: %s" % e) + + +def get_oci_cmd(repository, version): + # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. + private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' + public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' + + private_registry = re.match(private_ecr_pattern, repository).groupdict() + public_registry = re.match(public_ecr_pattern, repository).groupdict() + + # Build helm pull command as array + helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] + + if private_registry['registry'] is not None: + logger.info("Found AWS private repository") + ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + elif public_registry['registry'] is not None: + logger.info("Found AWS public repository, will use default region as deployment") + region = os.environ.get('AWS_REGION', 'us-east-1') + + if is_ecr_public_available(region): + # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html + ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + else: + # No login required for public ECR in non-aws regions + # see https://helm.sh/docs/helm/helm_registry_login/ + return {'helm': helm_cmd} + else: + logger.error("OCI repository format not recognized, falling back to helm pull") + return {'helm': helm_cmd} + + +def get_chart_from_oci(tmpdir, repository=None, version=None): + from subprocess import Popen, PIPE + + commands = get_oci_cmd(repository, version) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + # Execute login commands if needed + if 'ecr_login' in commands and 'helm_registry_login' in commands: + logger.info("Running login command: %s", commands['ecr_login']) + logger.info("Running registry login command: %s", commands['helm_registry_login']) + + # Start first process: aws ecr get-login-password + # NOTE: We do NOT call p1.wait() here before starting p2. + # Doing so could deadlock if p1's output fills the pipe buffer + # before p2 starts reading. Instead, start p2 immediately so it + # can consume p1's stdout as it's produced. + p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) + + # Start second process: helm registry login + p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) + p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early + + # Wait for p2 to finish first (ensures full pipeline completes) + _, p2_err = p2.communicate() + + # Now wait for p1 so we have a complete stderr and an exit code + p1.wait() + + # Handle p1 failure + if p1.returncode != 0: + p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' + logger.error( + "ECR get-login-password failed for repository %s. Error: %s", + repository, + p1_err or "No error details" + ) + raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) + + # Handle p2 failure + if p2.returncode != 0: + logger.error( + "Helm registry authentication failed for repository %s. Error: %s", + repository, + p2_err.decode('utf-8', errors='replace') or "No error details" + ) + raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) + + # Execute helm pull command + logger.info("Running helm command: %s", commands['helm']) + output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) + logger.info(output) + + # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. + # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service + return os.path.join(tmpdir, repository.rpartition('/')[-1]) + + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + raise Exception(output) + + raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') + + +def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): + cmnd = ['helm', verb, release] + if not chart is None: + cmnd.append(chart) + if verb == 'upgrade': + cmnd.append('--install') + if create_namespace: + cmnd.append('--create-namespace') + if not repo is None: + cmnd.extend(['--repo', repo]) + if not file is None: + cmnd.extend(['--values', file]) + if not version is None: + cmnd.extend(['--version', version]) + if not namespace is None: + cmnd.extend(['--namespace', namespace]) + if wait: + cmnd.append('--wait') + if skip_crds: + cmnd.append('--skip-crds') + if not timeout is None: + cmnd.extend(['--timeout', timeout]) + if atomic: + cmnd.append('--atomic') + cmnd.extend(['--kubeconfig', kubeconfig]) + + # Log the full helm command for better troubleshooting + logger.info("Running command: %s", cmnd) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) + logger.info(output.decode('utf-8', errors='replace')) + return + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + error_message = output.decode('utf-8', errors='replace') + logger.error("Command failed: %s", cmnd) + logger.error("Error output: %s", error_message) + raise Exception(output) + raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py deleted file mode 100644 index 6c7838f182a45..0000000000000 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py +++ /dev/null @@ -1,250 +0,0 @@ -import json -import logging -import os -import re -import subprocess -import shutil -import tempfile -import zipfile -import boto3 - -logger = logging.getLogger() -logger.setLevel(logging.INFO) - -# these are coming from the kubectl layer -os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] - -outdir = os.environ.get('TEST_OUTDIR', '/tmp') -kubeconfig = os.path.join(outdir, 'kubeconfig') - -def get_chart_asset_from_url(chart_asset_url): - chart_zip = os.path.join(outdir, 'chart.zip') - shutil.rmtree(chart_zip, ignore_errors=True) - subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) - chart_dir = os.path.join(outdir, 'chart') - shutil.rmtree(chart_dir, ignore_errors=True) - os.mkdir(chart_dir) - with zipfile.ZipFile(chart_zip, 'r') as zip_ref: - zip_ref.extractall(chart_dir) - return chart_dir - -def is_ecr_public_available(region): - s = boto3.Session() - return s.get_partition_for_region(region) == 'aws' - -def helm_handler(event, context): - logger.info(json.dumps(dict(event, ResponseURL='...'))) - - request_type = event['RequestType'] - props = event['ResourceProperties'] - - # resource properties - cluster_name = props['ClusterName'] - release = props['Release'] - chart = props.get('Chart', None) - chart_asset_url = props.get('ChartAssetURL', None) - version = props.get('Version', None) - wait = props.get('Wait', False) - atomic = props.get('Atomic', False) - timeout = props.get('Timeout', None) - namespace = props.get('Namespace', None) - create_namespace = props.get('CreateNamespace', None) - repository = props.get('Repository', None) - values_text = props.get('Values', None) - skip_crds = props.get('SkipCrds', False) - - # "log in" to the cluster - subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', - '--name', cluster_name, - '--kubeconfig', kubeconfig - ]) - - if os.path.isfile(kubeconfig): - os.chmod(kubeconfig, 0o600) - - # Write out the values to a file and include them with the install and upgrade - values_file = None - if not request_type == "Delete" and not values_text is None: - values = json.loads(values_text) - values_file = os.path.join(outdir, 'values.yaml') - with open(values_file, "w") as f: - f.write(json.dumps(values, indent=2)) - - if request_type == 'Create' or request_type == 'Update': - # Ensure chart or chart_asset_url are set - if chart == None and chart_asset_url == None: - raise RuntimeError(f'chart or chartAsset must be specified') - - if chart_asset_url != None: - assert(chart==None) - assert(repository==None) - assert(version==None) - if not chart_asset_url.startswith('s3://'): - raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') - # future work: support versions from s3 assets - chart = get_chart_asset_from_url(chart_asset_url) - - if repository is not None and repository.startswith('oci://'): - tmpdir = tempfile.TemporaryDirectory() - chart_dir = get_chart_from_oci(tmpdir.name, repository, version) - chart = chart_dir - - helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) - elif request_type == "Delete": - try: - helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) - except Exception as e: - logger.info("delete error: %s" % e) - - -def get_oci_cmd(repository, version): - # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. - private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' - public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' - - private_registry = re.match(private_ecr_pattern, repository).groupdict() - public_registry = re.match(public_ecr_pattern, repository).groupdict() - - # Build helm pull command as array - helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] - - if private_registry['registry'] is not None: - logger.info("Found AWS private repository") - ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] - return {'ecr_login': ecr_login, 'registry_login': helm_registry_login, 'helm': helm_cmd} - elif public_registry['registry'] is not None: - logger.info("Found AWS public repository, will use default region as deployment") - region = os.environ.get('AWS_REGION', 'us-east-1') - - if is_ecr_public_available(region): - # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html - ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] - return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} - else: - # No login required for public ECR in non-aws regions - # see https://helm.sh/docs/helm/helm_registry_login/ - return {'helm': helm_cmd} - else: - logger.error("OCI repository format not recognized, falling back to helm pull") - return {'helm': helm_cmd} - - -def get_chart_from_oci(tmpdir, repository=None, version=None): - from subprocess import Popen, PIPE - - commands = get_oci_cmd(repository, version) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - # Execute login commands if needed - if 'ecr_login' in commands and 'helm_registry_login' in commands: - logger.info("Running login command: %s", commands['ecr_login']) - logger.info("Running registry login command: %s", commands['helm_registry_login']) - - # Start first process: aws ecr get-login-password - # NOTE: We do NOT call p1.wait() here before starting p2. - # Doing so could deadlock if p1's output fills the pipe buffer - # before p2 starts reading. Instead, start p2 immediately so it - # can consume p1's stdout as it's produced. - p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) - - # Start second process: helm registry login - p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) - p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early - - # Wait for p2 to finish first (ensures full pipeline completes) - _, p2_err = p2.communicate() - - # Now wait for p1 so we have a complete stderr and an exit code - p1.wait() - - # Handle p1 failure - if p1.returncode != 0: - p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' - logger.error( - "ECR get-login-password failed for repository %s. Error: %s", - repository, - p1_err or "No error details" - ) - raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) - - # Handle p2 failure - if p2.returncode != 0: - logger.error( - "Helm registry authentication failed for repository %s. Error: %s", - repository, - p2_err.decode('utf-8', errors='replace') or "No error details" - ) - raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) - - # Execute helm pull command - logger.info("Running helm command: %s", commands['helm']) - output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) - logger.info(output) - - # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. - # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service - return os.path.join(tmpdir, repository.rpartition('/')[-1]) - - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - raise Exception(output) - - raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') - - -def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): - cmnd = ['helm', verb, release] - if not chart is None: - cmnd.append(chart) - if verb == 'upgrade': - cmnd.append('--install') - if create_namespace: - cmnd.append('--create-namespace') - if not repo is None: - cmnd.extend(['--repo', repo]) - if not file is None: - cmnd.extend(['--values', file]) - if not version is None: - cmnd.extend(['--version', version]) - if not namespace is None: - cmnd.extend(['--namespace', namespace]) - if wait: - cmnd.append('--wait') - if skip_crds: - cmnd.append('--skip-crds') - if not timeout is None: - cmnd.extend(['--timeout', timeout]) - if atomic: - cmnd.append('--atomic') - cmnd.extend(['--kubeconfig', kubeconfig]) - - # Log the full helm command for better troubleshooting - logger.info("Running command: %s", cmnd) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) - logger.info(output.decode('utf-8', errors='replace')) - return - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - error_message = output.decode('utf-8', errors='replace') - logger.error("Command failed: %s", cmnd) - logger.error("Error output: %s", error_message) - raise Exception(output) - raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/aws-cdk-eks-import-cluster-test.assets.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/aws-cdk-eks-import-cluster-test.assets.json index 8fd0482c11c80..7b6fb724f14d7 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/aws-cdk-eks-import-cluster-test.assets.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/aws-cdk-eks-import-cluster-test.assets.json @@ -15,16 +15,16 @@ } } }, - "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a": { + "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9": { "displayName": "Cluster/KubectlProvider/Handler/Code", "source": { - "path": "asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a", + "path": "asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9", "packaging": "zip" }, "destinations": { - "current_account-current_region-5b09798b": { + "current_account-current_region-b8d33bdb": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip", + "objectKey": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } @@ -99,16 +99,16 @@ } } }, - "b1f12ac3ea9a5f954babd5d1709d727de192a9b6960521dd4f410c2ae2a5f833": { + "77be48c25f43ee7f168e4e87523711e7bcd91393385b4fd8f13a6917b64bd240": { "displayName": "aws-cdk-eks-import-cluster-test Template", "source": { "path": "aws-cdk-eks-import-cluster-test.template.json", "packaging": "file" }, "destinations": { - "current_account-current_region-bda273fe": { + "current_account-current_region-d2e67263": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "b1f12ac3ea9a5f954babd5d1709d727de192a9b6960521dd4f410c2ae2a5f833.json", + "objectKey": "77be48c25f43ee7f168e4e87523711e7bcd91393385b4fd8f13a6917b64bd240.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/aws-cdk-eks-import-cluster-test.template.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/aws-cdk-eks-import-cluster-test.template.json index 49fa384cdbaef..c0812fa395ceb 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/aws-cdk-eks-import-cluster-test.template.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/aws-cdk-eks-import-cluster-test.template.json @@ -737,7 +737,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip" + "S3Key": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip" }, "Description": "onEvent handler for EKS kubectl resource provider", "Environment": { diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/manifest.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/manifest.json index 76eb6285d0d56..ddcbff6d6bac5 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/manifest.json @@ -18,7 +18,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}/b1f12ac3ea9a5f954babd5d1709d727de192a9b6960521dd4f410c2ae2a5f833.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/77be48c25f43ee7f168e4e87523711e7bcd91393385b4fd8f13a6917b64bd240.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/tree.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/tree.json index 8f80b19a00bcd..dc2efd3233562 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-imported.js.snapshot/tree.json @@ -1 +1 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-import-cluster-test":{"id":"aws-cdk-eks-import-cluster-test","path":"aws-cdk-eks-import-cluster-test","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Vpc":{"id":"Vpc","path":"aws-cdk-eks-import-cluster-test/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"maxAzs":"*","natGateways":"*","restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-import-cluster-test/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-import-cluster-test/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-import-cluster-test/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-import-cluster-test/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-import-cluster-test/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-import-cluster-test/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"}}}}}},"EksAdminRole":{"id":"EksAdminRole","path":"aws-cdk-eks-import-cluster-test/EksAdminRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportEksAdminRole":{"id":"ImportEksAdminRole","path":"aws-cdk-eks-import-cluster-test/EksAdminRole/ImportEksAdminRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/EksAdminRole/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"]]}}}],"Version":"2012-10-17"},"roleName":"eksAdminrole-aws-cdk-eks-import-cluster-test"}}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-import-cluster-test/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-import-cluster-test/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-import-cluster-test/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-import-cluster-test/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-import-cluster-test/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-import-cluster-test/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-import-cluster-test/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/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":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-import-cluster-test/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":false},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":false}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":false}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-import-cluster-test/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-import-cluster-test/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}},"mastersRoleAccess":{"id":"mastersRoleAccess","path":"aws-cdk-eks-import-cluster-test/Cluster/mastersRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/mastersRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["EksAdminRole1C96C514","Arn"]}}}}}},"NodegroupDefaultCapacity":{"id":"NodegroupDefaultCapacity","path":"aws-cdk-eks-import-cluster-test/Cluster/NodegroupDefaultCapacity","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-import-cluster-test/Cluster/NodegroupDefaultCapacity/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-import-cluster-test/Cluster/NodegroupDefaultCapacity/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/NodegroupDefaultCapacity/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/NodegroupDefaultCapacity/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_x86_64","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["m5.large"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupDefaultCapacityNodeGroupRole55953B04","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":2},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"ConfigCommand":{"id":"ConfigCommand","path":"aws-cdk-eks-import-cluster-test/Cluster/ConfigCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"GetTokenCommand":{"id":"GetTokenCommand","path":"aws-cdk-eks-import-cluster-test/Cluster/GetTokenCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"OpenIdConnectProvider":{"id":"OpenIdConnectProvider","path":"aws-cdk-eks-import-cluster-test/Cluster/OpenIdConnectProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.OpenIdConnectProvider","version":"0.0.0","metadata":["*","*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/OpenIdConnectProvider/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/Cluster/OpenIdConnectProvider/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-eks-import-cluster-test/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-import-cluster-test/KubectlProvider","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider":{"id":"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","path":"aws-cdk-eks-import-cluster-test/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-import-cluster-test/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-import-cluster-test/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-import-cluster-test/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"ImportedCluster":{"id":"ImportedCluster","path":"aws-cdk-eks-import-cluster-test/ImportedCluster","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]},"children":{"manifest-HelloApp":{"id":"manifest-HelloApp","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/manifest-HelloApp","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/manifest-HelloApp/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/manifest-HelloApp/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-dashboard":{"id":"chart-dashboard","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/chart-dashboard","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/chart-dashboard/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/chart-dashboard/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-test-chart":{"id":"chart-test-chart","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/chart-test-chart","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/chart-test-chart/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/chart-test-chart/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"cdk8s-chart":{"id":"cdk8s-chart","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/cdk8s-chart","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/cdk8s-chart/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/cdk8s-chart/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"manifest-nginx-namespace":{"id":"manifest-nginx-namespace","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/manifest-nginx-namespace","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/manifest-nginx-namespace/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/manifest-nginx-namespace/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-nginx-ingress":{"id":"chart-nginx-ingress","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/chart-nginx-ingress","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/chart-nginx-ingress/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/chart-nginx-ingress/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"MyServiceAccount":{"id":"MyServiceAccount","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.ServiceAccount","version":"0.0.0"},"children":{"ConditionJson":{"id":"ConditionJson","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount/ConditionJson","constructInfo":{"fqn":"aws-cdk-lib.CfnJson","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount/ConditionJson/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount/ConditionJson/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Role":{"id":"Role","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount/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:AssumeRoleWithWebIdentity","Condition":{"StringEquals":{"Fn::GetAtt":["ImportedClusterMyServiceAccountConditionJsonA074D166","Value"]}},"Effect":"Allow","Principal":{"Federated":{"Ref":"ClusterOpenIdConnectProviderE7EB0530"}}}],"Version":"2012-10-17"}}}}}},"manifest-MyServiceAccountServiceAccountResource":{"id":"manifest-MyServiceAccountServiceAccountResource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount/manifest-MyServiceAccountServiceAccountResource","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount/manifest-MyServiceAccountServiceAccountResource/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount/manifest-MyServiceAccountServiceAccountResource/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"MyExtendedServiceAccount":{"id":"MyExtendedServiceAccount","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.ServiceAccount","version":"0.0.0"},"children":{"ConditionJson":{"id":"ConditionJson","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount/ConditionJson","constructInfo":{"fqn":"aws-cdk-lib.CfnJson","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount/ConditionJson/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount/ConditionJson/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Role":{"id":"Role","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount/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:AssumeRoleWithWebIdentity","Condition":{"StringEquals":{"Fn::GetAtt":["ImportedClusterMyExtendedServiceAccountConditionJson1D9B1957","Value"]}},"Effect":"Allow","Principal":{"Federated":{"Ref":"ClusterOpenIdConnectProviderE7EB0530"}}}],"Version":"2012-10-17"}}}}}},"manifest-MyExtendedServiceAccountServiceAccountResource":{"id":"manifest-MyExtendedServiceAccountServiceAccountResource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount/manifest-MyExtendedServiceAccountServiceAccountResource","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount/manifest-MyExtendedServiceAccountServiceAccountResource/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount/manifest-MyExtendedServiceAccountServiceAccountResource/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}}}},"HelloAppWithoutValidation":{"id":"HelloAppWithoutValidation","path":"aws-cdk-eks-import-cluster-test/HelloAppWithoutValidation","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/HelloAppWithoutValidation/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/HelloAppWithoutValidation/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"ChartAsset":{"id":"ChartAsset","path":"aws-cdk-eks-import-cluster-test/ChartAsset","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-import-cluster-test/ChartAsset/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-import-cluster-test/ChartAsset/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"AWSCDKCfnUtilsProviderCustomResourceProvider":{"id":"AWSCDKCfnUtilsProviderCustomResourceProvider","path":"aws-cdk-eks-import-cluster-test/AWSCDKCfnUtilsProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-import-cluster-test/AWSCDKCfnUtilsProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-import-cluster-test/AWSCDKCfnUtilsProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-import-cluster-test/AWSCDKCfnUtilsProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"ClusterRole":{"id":"ClusterRole","path":"aws-cdk-eks-import-cluster-test/ClusterRole","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"EksMastersRoleOutput":{"id":"EksMastersRoleOutput","path":"aws-cdk-eks-import-cluster-test/EksMastersRoleOutput","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-import-cluster-test/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-import-cluster-test/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-import-cluster":{"id":"aws-cdk-eks-import-cluster","path":"aws-cdk-eks-import-cluster","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-import-cluster/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-import-cluster/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-import-cluster/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-import-cluster/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 +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-import-cluster-test":{"id":"aws-cdk-eks-import-cluster-test","path":"aws-cdk-eks-import-cluster-test","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Vpc":{"id":"Vpc","path":"aws-cdk-eks-import-cluster-test/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"maxAzs":"*","natGateways":"*","restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-import-cluster-test/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-import-cluster-test/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-import-cluster-test/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-import-cluster-test/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-import-cluster-test/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-import-cluster-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-import-cluster-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-import-cluster-test/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":"aws-cdk-eks-import-cluster-test/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-import-cluster-test/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"}}}}}},"EksAdminRole":{"id":"EksAdminRole","path":"aws-cdk-eks-import-cluster-test/EksAdminRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportEksAdminRole":{"id":"ImportEksAdminRole","path":"aws-cdk-eks-import-cluster-test/EksAdminRole/ImportEksAdminRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/EksAdminRole/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"]]}}}],"Version":"2012-10-17"},"roleName":"eksAdminrole-aws-cdk-eks-import-cluster-test"}}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-import-cluster-test/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-import-cluster-test/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-import-cluster-test/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-import-cluster-test/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-import-cluster-test/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-import-cluster-test/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-import-cluster-test/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/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":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-import-cluster-test/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":false},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":false}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":false}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-import-cluster-test/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-import-cluster-test/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}},"mastersRoleAccess":{"id":"mastersRoleAccess","path":"aws-cdk-eks-import-cluster-test/Cluster/mastersRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/mastersRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["EksAdminRole1C96C514","Arn"]}}}}}},"NodegroupDefaultCapacity":{"id":"NodegroupDefaultCapacity","path":"aws-cdk-eks-import-cluster-test/Cluster/NodegroupDefaultCapacity","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-import-cluster-test/Cluster/NodegroupDefaultCapacity/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-import-cluster-test/Cluster/NodegroupDefaultCapacity/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/NodegroupDefaultCapacity/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/NodegroupDefaultCapacity/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_x86_64","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["m5.large"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupDefaultCapacityNodeGroupRole55953B04","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":2},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"ConfigCommand":{"id":"ConfigCommand","path":"aws-cdk-eks-import-cluster-test/Cluster/ConfigCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"GetTokenCommand":{"id":"GetTokenCommand","path":"aws-cdk-eks-import-cluster-test/Cluster/GetTokenCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"OpenIdConnectProvider":{"id":"OpenIdConnectProvider","path":"aws-cdk-eks-import-cluster-test/Cluster/OpenIdConnectProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.OpenIdConnectProvider","version":"0.0.0","metadata":["*","*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/Cluster/OpenIdConnectProvider/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/Cluster/OpenIdConnectProvider/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-eks-import-cluster-test/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-import-cluster-test/KubectlProvider","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider":{"id":"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","path":"aws-cdk-eks-import-cluster-test/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-import-cluster-test/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-import-cluster-test/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-import-cluster-test/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"ImportedCluster":{"id":"ImportedCluster","path":"aws-cdk-eks-import-cluster-test/ImportedCluster","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]},"children":{"manifest-HelloApp":{"id":"manifest-HelloApp","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/manifest-HelloApp","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/manifest-HelloApp/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/manifest-HelloApp/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-dashboard":{"id":"chart-dashboard","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/chart-dashboard","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/chart-dashboard/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/chart-dashboard/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-test-chart":{"id":"chart-test-chart","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/chart-test-chart","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/chart-test-chart/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/chart-test-chart/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"cdk8s-chart":{"id":"cdk8s-chart","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/cdk8s-chart","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/cdk8s-chart/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/cdk8s-chart/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"manifest-nginx-namespace":{"id":"manifest-nginx-namespace","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/manifest-nginx-namespace","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/manifest-nginx-namespace/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/manifest-nginx-namespace/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-nginx-ingress":{"id":"chart-nginx-ingress","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/chart-nginx-ingress","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/chart-nginx-ingress/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/chart-nginx-ingress/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"MyServiceAccount":{"id":"MyServiceAccount","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.ServiceAccount","version":"0.0.0"},"children":{"ConditionJson":{"id":"ConditionJson","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount/ConditionJson","constructInfo":{"fqn":"aws-cdk-lib.CfnJson","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount/ConditionJson/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount/ConditionJson/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Role":{"id":"Role","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount/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:AssumeRoleWithWebIdentity","Condition":{"StringEquals":{"Fn::GetAtt":["ImportedClusterMyServiceAccountConditionJsonA074D166","Value"]}},"Effect":"Allow","Principal":{"Federated":{"Ref":"ClusterOpenIdConnectProviderE7EB0530"}}}],"Version":"2012-10-17"}}}}}},"manifest-MyServiceAccountServiceAccountResource":{"id":"manifest-MyServiceAccountServiceAccountResource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount/manifest-MyServiceAccountServiceAccountResource","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount/manifest-MyServiceAccountServiceAccountResource/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyServiceAccount/manifest-MyServiceAccountServiceAccountResource/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"MyExtendedServiceAccount":{"id":"MyExtendedServiceAccount","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.ServiceAccount","version":"0.0.0"},"children":{"ConditionJson":{"id":"ConditionJson","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount/ConditionJson","constructInfo":{"fqn":"aws-cdk-lib.CfnJson","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount/ConditionJson/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount/ConditionJson/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Role":{"id":"Role","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount/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:AssumeRoleWithWebIdentity","Condition":{"StringEquals":{"Fn::GetAtt":["ImportedClusterMyExtendedServiceAccountConditionJson1D9B1957","Value"]}},"Effect":"Allow","Principal":{"Federated":{"Ref":"ClusterOpenIdConnectProviderE7EB0530"}}}],"Version":"2012-10-17"}}}}}},"manifest-MyExtendedServiceAccountServiceAccountResource":{"id":"manifest-MyExtendedServiceAccountServiceAccountResource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount/manifest-MyExtendedServiceAccountServiceAccountResource","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount/manifest-MyExtendedServiceAccountServiceAccountResource/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/ImportedCluster/MyExtendedServiceAccount/manifest-MyExtendedServiceAccountServiceAccountResource/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}}}},"HelloAppWithoutValidation":{"id":"HelloAppWithoutValidation","path":"aws-cdk-eks-import-cluster-test/HelloAppWithoutValidation","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-import-cluster-test/HelloAppWithoutValidation/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster-test/HelloAppWithoutValidation/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"ChartAsset":{"id":"ChartAsset","path":"aws-cdk-eks-import-cluster-test/ChartAsset","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-import-cluster-test/ChartAsset/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-import-cluster-test/ChartAsset/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"AWSCDKCfnUtilsProviderCustomResourceProvider":{"id":"AWSCDKCfnUtilsProviderCustomResourceProvider","path":"aws-cdk-eks-import-cluster-test/AWSCDKCfnUtilsProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-import-cluster-test/AWSCDKCfnUtilsProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-import-cluster-test/AWSCDKCfnUtilsProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-import-cluster-test/AWSCDKCfnUtilsProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"ClusterRole":{"id":"ClusterRole","path":"aws-cdk-eks-import-cluster-test/ClusterRole","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"EksMastersRoleOutput":{"id":"EksMastersRoleOutput","path":"aws-cdk-eks-import-cluster-test/EksMastersRoleOutput","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-import-cluster-test/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-import-cluster-test/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-import-cluster":{"id":"aws-cdk-eks-import-cluster","path":"aws-cdk-eks-import-cluster","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-import-cluster/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-import-cluster/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-import-cluster/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-import-cluster/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-import-cluster/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/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py new file mode 100644 index 0000000000000..6664adf77090d --- /dev/null +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py @@ -0,0 +1,250 @@ +import json +import logging +import os +import re +import subprocess +import shutil +import tempfile +import zipfile +import boto3 + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + +# these are coming from the kubectl layer +os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] + +outdir = os.environ.get('TEST_OUTDIR', '/tmp') +kubeconfig = os.path.join(outdir, 'kubeconfig') + +def get_chart_asset_from_url(chart_asset_url): + chart_zip = os.path.join(outdir, 'chart.zip') + shutil.rmtree(chart_zip, ignore_errors=True) + subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) + chart_dir = os.path.join(outdir, 'chart') + shutil.rmtree(chart_dir, ignore_errors=True) + os.mkdir(chart_dir) + with zipfile.ZipFile(chart_zip, 'r') as zip_ref: + zip_ref.extractall(chart_dir) + return chart_dir + +def is_ecr_public_available(region): + s = boto3.Session() + return s.get_partition_for_region(region) == 'aws' + +def helm_handler(event, context): + logger.info(json.dumps(dict(event, ResponseURL='...'))) + + request_type = event['RequestType'] + props = event['ResourceProperties'] + + # resource properties + cluster_name = props['ClusterName'] + release = props['Release'] + chart = props.get('Chart', None) + chart_asset_url = props.get('ChartAssetURL', None) + version = props.get('Version', None) + wait = props.get('Wait', False) + atomic = props.get('Atomic', False) + timeout = props.get('Timeout', None) + namespace = props.get('Namespace', None) + create_namespace = props.get('CreateNamespace', None) + repository = props.get('Repository', None) + values_text = props.get('Values', None) + skip_crds = props.get('SkipCrds', False) + + # "log in" to the cluster + subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', + '--name', cluster_name, + '--kubeconfig', kubeconfig + ]) + + if os.path.isfile(kubeconfig): + os.chmod(kubeconfig, 0o600) + + # Write out the values to a file and include them with the install and upgrade + values_file = None + if not request_type == "Delete" and not values_text is None: + values = json.loads(values_text) + values_file = os.path.join(outdir, 'values.yaml') + with open(values_file, "w") as f: + f.write(json.dumps(values, indent=2)) + + if request_type == 'Create' or request_type == 'Update': + # Ensure chart or chart_asset_url are set + if chart == None and chart_asset_url == None: + raise RuntimeError(f'chart or chartAsset must be specified') + + if chart_asset_url != None: + assert(chart==None) + assert(repository==None) + assert(version==None) + if not chart_asset_url.startswith('s3://'): + raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') + # future work: support versions from s3 assets + chart = get_chart_asset_from_url(chart_asset_url) + + if repository is not None and repository.startswith('oci://'): + tmpdir = tempfile.TemporaryDirectory() + chart_dir = get_chart_from_oci(tmpdir.name, repository, version) + chart = chart_dir + + helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) + elif request_type == "Delete": + try: + helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) + except Exception as e: + logger.info("delete error: %s" % e) + + +def get_oci_cmd(repository, version): + # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. + private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' + public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' + + private_registry = re.match(private_ecr_pattern, repository).groupdict() + public_registry = re.match(public_ecr_pattern, repository).groupdict() + + # Build helm pull command as array + helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] + + if private_registry['registry'] is not None: + logger.info("Found AWS private repository") + ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + elif public_registry['registry'] is not None: + logger.info("Found AWS public repository, will use default region as deployment") + region = os.environ.get('AWS_REGION', 'us-east-1') + + if is_ecr_public_available(region): + # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html + ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + else: + # No login required for public ECR in non-aws regions + # see https://helm.sh/docs/helm/helm_registry_login/ + return {'helm': helm_cmd} + else: + logger.error("OCI repository format not recognized, falling back to helm pull") + return {'helm': helm_cmd} + + +def get_chart_from_oci(tmpdir, repository=None, version=None): + from subprocess import Popen, PIPE + + commands = get_oci_cmd(repository, version) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + # Execute login commands if needed + if 'ecr_login' in commands and 'helm_registry_login' in commands: + logger.info("Running login command: %s", commands['ecr_login']) + logger.info("Running registry login command: %s", commands['helm_registry_login']) + + # Start first process: aws ecr get-login-password + # NOTE: We do NOT call p1.wait() here before starting p2. + # Doing so could deadlock if p1's output fills the pipe buffer + # before p2 starts reading. Instead, start p2 immediately so it + # can consume p1's stdout as it's produced. + p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) + + # Start second process: helm registry login + p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) + p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early + + # Wait for p2 to finish first (ensures full pipeline completes) + _, p2_err = p2.communicate() + + # Now wait for p1 so we have a complete stderr and an exit code + p1.wait() + + # Handle p1 failure + if p1.returncode != 0: + p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' + logger.error( + "ECR get-login-password failed for repository %s. Error: %s", + repository, + p1_err or "No error details" + ) + raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) + + # Handle p2 failure + if p2.returncode != 0: + logger.error( + "Helm registry authentication failed for repository %s. Error: %s", + repository, + p2_err.decode('utf-8', errors='replace') or "No error details" + ) + raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) + + # Execute helm pull command + logger.info("Running helm command: %s", commands['helm']) + output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) + logger.info(output) + + # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. + # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service + return os.path.join(tmpdir, repository.rpartition('/')[-1]) + + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + raise Exception(output) + + raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') + + +def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): + cmnd = ['helm', verb, release] + if not chart is None: + cmnd.append(chart) + if verb == 'upgrade': + cmnd.append('--install') + if create_namespace: + cmnd.append('--create-namespace') + if not repo is None: + cmnd.extend(['--repo', repo]) + if not file is None: + cmnd.extend(['--values', file]) + if not version is None: + cmnd.extend(['--version', version]) + if not namespace is None: + cmnd.extend(['--namespace', namespace]) + if wait: + cmnd.append('--wait') + if skip_crds: + cmnd.append('--skip-crds') + if not timeout is None: + cmnd.extend(['--timeout', timeout]) + if atomic: + cmnd.append('--atomic') + cmnd.extend(['--kubeconfig', kubeconfig]) + + # Log the full helm command for better troubleshooting + logger.info("Running command: %s", cmnd) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) + logger.info(output.decode('utf-8', errors='replace')) + return + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + error_message = output.decode('utf-8', errors='replace') + logger.error("Command failed: %s", cmnd) + logger.error("Error output: %s", error_message) + raise Exception(output) + raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py deleted file mode 100644 index 6c7838f182a45..0000000000000 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py +++ /dev/null @@ -1,250 +0,0 @@ -import json -import logging -import os -import re -import subprocess -import shutil -import tempfile -import zipfile -import boto3 - -logger = logging.getLogger() -logger.setLevel(logging.INFO) - -# these are coming from the kubectl layer -os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] - -outdir = os.environ.get('TEST_OUTDIR', '/tmp') -kubeconfig = os.path.join(outdir, 'kubeconfig') - -def get_chart_asset_from_url(chart_asset_url): - chart_zip = os.path.join(outdir, 'chart.zip') - shutil.rmtree(chart_zip, ignore_errors=True) - subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) - chart_dir = os.path.join(outdir, 'chart') - shutil.rmtree(chart_dir, ignore_errors=True) - os.mkdir(chart_dir) - with zipfile.ZipFile(chart_zip, 'r') as zip_ref: - zip_ref.extractall(chart_dir) - return chart_dir - -def is_ecr_public_available(region): - s = boto3.Session() - return s.get_partition_for_region(region) == 'aws' - -def helm_handler(event, context): - logger.info(json.dumps(dict(event, ResponseURL='...'))) - - request_type = event['RequestType'] - props = event['ResourceProperties'] - - # resource properties - cluster_name = props['ClusterName'] - release = props['Release'] - chart = props.get('Chart', None) - chart_asset_url = props.get('ChartAssetURL', None) - version = props.get('Version', None) - wait = props.get('Wait', False) - atomic = props.get('Atomic', False) - timeout = props.get('Timeout', None) - namespace = props.get('Namespace', None) - create_namespace = props.get('CreateNamespace', None) - repository = props.get('Repository', None) - values_text = props.get('Values', None) - skip_crds = props.get('SkipCrds', False) - - # "log in" to the cluster - subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', - '--name', cluster_name, - '--kubeconfig', kubeconfig - ]) - - if os.path.isfile(kubeconfig): - os.chmod(kubeconfig, 0o600) - - # Write out the values to a file and include them with the install and upgrade - values_file = None - if not request_type == "Delete" and not values_text is None: - values = json.loads(values_text) - values_file = os.path.join(outdir, 'values.yaml') - with open(values_file, "w") as f: - f.write(json.dumps(values, indent=2)) - - if request_type == 'Create' or request_type == 'Update': - # Ensure chart or chart_asset_url are set - if chart == None and chart_asset_url == None: - raise RuntimeError(f'chart or chartAsset must be specified') - - if chart_asset_url != None: - assert(chart==None) - assert(repository==None) - assert(version==None) - if not chart_asset_url.startswith('s3://'): - raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') - # future work: support versions from s3 assets - chart = get_chart_asset_from_url(chart_asset_url) - - if repository is not None and repository.startswith('oci://'): - tmpdir = tempfile.TemporaryDirectory() - chart_dir = get_chart_from_oci(tmpdir.name, repository, version) - chart = chart_dir - - helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) - elif request_type == "Delete": - try: - helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) - except Exception as e: - logger.info("delete error: %s" % e) - - -def get_oci_cmd(repository, version): - # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. - private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' - public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' - - private_registry = re.match(private_ecr_pattern, repository).groupdict() - public_registry = re.match(public_ecr_pattern, repository).groupdict() - - # Build helm pull command as array - helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] - - if private_registry['registry'] is not None: - logger.info("Found AWS private repository") - ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] - return {'ecr_login': ecr_login, 'registry_login': helm_registry_login, 'helm': helm_cmd} - elif public_registry['registry'] is not None: - logger.info("Found AWS public repository, will use default region as deployment") - region = os.environ.get('AWS_REGION', 'us-east-1') - - if is_ecr_public_available(region): - # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html - ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] - return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} - else: - # No login required for public ECR in non-aws regions - # see https://helm.sh/docs/helm/helm_registry_login/ - return {'helm': helm_cmd} - else: - logger.error("OCI repository format not recognized, falling back to helm pull") - return {'helm': helm_cmd} - - -def get_chart_from_oci(tmpdir, repository=None, version=None): - from subprocess import Popen, PIPE - - commands = get_oci_cmd(repository, version) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - # Execute login commands if needed - if 'ecr_login' in commands and 'helm_registry_login' in commands: - logger.info("Running login command: %s", commands['ecr_login']) - logger.info("Running registry login command: %s", commands['helm_registry_login']) - - # Start first process: aws ecr get-login-password - # NOTE: We do NOT call p1.wait() here before starting p2. - # Doing so could deadlock if p1's output fills the pipe buffer - # before p2 starts reading. Instead, start p2 immediately so it - # can consume p1's stdout as it's produced. - p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) - - # Start second process: helm registry login - p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) - p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early - - # Wait for p2 to finish first (ensures full pipeline completes) - _, p2_err = p2.communicate() - - # Now wait for p1 so we have a complete stderr and an exit code - p1.wait() - - # Handle p1 failure - if p1.returncode != 0: - p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' - logger.error( - "ECR get-login-password failed for repository %s. Error: %s", - repository, - p1_err or "No error details" - ) - raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) - - # Handle p2 failure - if p2.returncode != 0: - logger.error( - "Helm registry authentication failed for repository %s. Error: %s", - repository, - p2_err.decode('utf-8', errors='replace') or "No error details" - ) - raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) - - # Execute helm pull command - logger.info("Running helm command: %s", commands['helm']) - output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) - logger.info(output) - - # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. - # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service - return os.path.join(tmpdir, repository.rpartition('/')[-1]) - - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - raise Exception(output) - - raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') - - -def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): - cmnd = ['helm', verb, release] - if not chart is None: - cmnd.append(chart) - if verb == 'upgrade': - cmnd.append('--install') - if create_namespace: - cmnd.append('--create-namespace') - if not repo is None: - cmnd.extend(['--repo', repo]) - if not file is None: - cmnd.extend(['--values', file]) - if not version is None: - cmnd.extend(['--version', version]) - if not namespace is None: - cmnd.extend(['--namespace', namespace]) - if wait: - cmnd.append('--wait') - if skip_crds: - cmnd.append('--skip-crds') - if not timeout is None: - cmnd.extend(['--timeout', timeout]) - if atomic: - cmnd.append('--atomic') - cmnd.extend(['--kubeconfig', kubeconfig]) - - # Log the full helm command for better troubleshooting - logger.info("Running command: %s", cmnd) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) - logger.info(output.decode('utf-8', errors='replace')) - return - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - error_message = output.decode('utf-8', errors='replace') - logger.error("Command failed: %s", cmnd) - logger.error("Error output: %s", error_message) - raise Exception(output) - raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/aws-cdk-eks-cluster-private-endpoint-test.assets.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/aws-cdk-eks-cluster-private-endpoint-test.assets.json index db57a299f8fe2..1db1e7e9a104b 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/aws-cdk-eks-cluster-private-endpoint-test.assets.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/aws-cdk-eks-cluster-private-endpoint-test.assets.json @@ -15,16 +15,16 @@ } } }, - "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a": { + "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9": { "displayName": "Cluster/KubectlProvider/Handler/Code", "source": { - "path": "asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a", + "path": "asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9", "packaging": "zip" }, "destinations": { - "current_account-current_region-5b09798b": { + "current_account-current_region-b8d33bdb": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip", + "objectKey": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } @@ -57,16 +57,16 @@ } } }, - "7cf4184506330c0685b39a0fcb7e59188470b30b7778cffd371c11fa46088578": { + "9601b9e4f71261b8a98d42f80faf742929766efcca2ee137d8d108ac5741631e": { "displayName": "aws-cdk-eks-cluster-private-endpoint-test Template", "source": { "path": "aws-cdk-eks-cluster-private-endpoint-test.template.json", "packaging": "file" }, "destinations": { - "current_account-current_region-5c41da65": { + "current_account-current_region-1743c050": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "7cf4184506330c0685b39a0fcb7e59188470b30b7778cffd371c11fa46088578.json", + "objectKey": "9601b9e4f71261b8a98d42f80faf742929766efcca2ee137d8d108ac5741631e.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/aws-cdk-eks-cluster-private-endpoint-test.template.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/aws-cdk-eks-cluster-private-endpoint-test.template.json index 7e7e7f2016985..af5722bd48ea1 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/aws-cdk-eks-cluster-private-endpoint-test.template.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/aws-cdk-eks-cluster-private-endpoint-test.template.json @@ -799,7 +799,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip" + "S3Key": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip" }, "Description": "onEvent handler for EKS kubectl resource provider", "Environment": { diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/manifest.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/manifest.json index 3b1736898a97f..046d2b6af16d8 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/manifest.json @@ -18,7 +18,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}/7cf4184506330c0685b39a0fcb7e59188470b30b7778cffd371c11fa46088578.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/9601b9e4f71261b8a98d42f80faf742929766efcca2ee137d8d108ac5741631e.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/tree.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/tree.json index 2303fed97ecb3..b89e9d3175578 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster-private-endpoint.js.snapshot/tree.json @@ -1 +1 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-cluster-private-endpoint-test":{"id":"aws-cdk-eks-cluster-private-endpoint-test","path":"aws-cdk-eks-cluster-private-endpoint-test","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"AdminRole":{"id":"AdminRole","path":"aws-cdk-eks-cluster-private-endpoint-test/AdminRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportAdminRole":{"id":"ImportAdminRole","path":"aws-cdk-eks-cluster-private-endpoint-test/AdminRole/ImportAdminRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/AdminRole/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"]]}}}],"Version":"2012-10-17"}}}}}},"Vpc":{"id":"Vpc","path":"aws-cdk-eks-cluster-private-endpoint-test/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"maxAzs":"*","natGateways":"*","restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-cluster-private-endpoint-test/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"}}}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-cluster-private-endpoint-test/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-private-endpoint-test/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-private-endpoint-test/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-private-endpoint-test/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/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","sts:TagSession"],"Effect":"Allow","Principal":{"Service":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSComputePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSBlockStoragePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSLoadBalancingPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSNetworkingPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"ClusternodePoolRole":{"id":"ClusternodePoolRole","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/ClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]}]},"children":{"ImportClusternodePoolRole":{"id":"ImportClusternodePoolRole","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/ClusternodePoolRole/ImportClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/ClusternodePoolRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":true,"nodePools":["system","general-purpose"],"nodeRoleArn":{"Fn::GetAtt":["ClusterClusternodePoolRole69276141","Arn"]}},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":true}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":false},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":true}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}},"mastersRoleAccess":{"id":"mastersRoleAccess","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/mastersRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/mastersRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["AdminRole38563C57","Arn"]}}}}}},"ConfigCommand":{"id":"ConfigCommand","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/ConfigCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"GetTokenCommand":{"id":"GetTokenCommand","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/GetTokenCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"manifest-config-map":{"id":"manifest-config-map","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/manifest-config-map","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/manifest-config-map/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/manifest-config-map/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-eks-cluster-private-endpoint-test/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-private-endpoint-test/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-private-endpoint-test/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-cluster-private-endpoint":{"id":"aws-cdk-eks-cluster-private-endpoint","path":"aws-cdk-eks-cluster-private-endpoint","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-cluster-private-endpoint/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-private-endpoint/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-cluster-private-endpoint/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-private-endpoint/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-private-endpoint/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 +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-cluster-private-endpoint-test":{"id":"aws-cdk-eks-cluster-private-endpoint-test","path":"aws-cdk-eks-cluster-private-endpoint-test","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"AdminRole":{"id":"AdminRole","path":"aws-cdk-eks-cluster-private-endpoint-test/AdminRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportAdminRole":{"id":"ImportAdminRole","path":"aws-cdk-eks-cluster-private-endpoint-test/AdminRole/ImportAdminRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/AdminRole/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"]]}}}],"Version":"2012-10-17"}}}}}},"Vpc":{"id":"Vpc","path":"aws-cdk-eks-cluster-private-endpoint-test/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"maxAzs":"*","natGateways":"*","restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-private-endpoint-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-cluster-private-endpoint-test/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":"aws-cdk-eks-cluster-private-endpoint-test/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-cluster-private-endpoint-test/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"}}}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-cluster-private-endpoint-test/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-private-endpoint-test/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-private-endpoint-test/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-private-endpoint-test/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/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","sts:TagSession"],"Effect":"Allow","Principal":{"Service":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSComputePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSBlockStoragePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSLoadBalancingPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSNetworkingPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"ClusternodePoolRole":{"id":"ClusternodePoolRole","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/ClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]}]},"children":{"ImportClusternodePoolRole":{"id":"ImportClusternodePoolRole","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/ClusternodePoolRole/ImportClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/ClusternodePoolRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":true,"nodePools":["system","general-purpose"],"nodeRoleArn":{"Fn::GetAtt":["ClusterClusternodePoolRole69276141","Arn"]}},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":true}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":false},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":true}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}},"mastersRoleAccess":{"id":"mastersRoleAccess","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/mastersRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/mastersRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["AdminRole38563C57","Arn"]}}}}}},"ConfigCommand":{"id":"ConfigCommand","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/ConfigCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"GetTokenCommand":{"id":"GetTokenCommand","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/GetTokenCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"manifest-config-map":{"id":"manifest-config-map","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/manifest-config-map","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/manifest-config-map/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-private-endpoint-test/Cluster/manifest-config-map/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-eks-cluster-private-endpoint-test/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-private-endpoint-test/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-private-endpoint-test/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-cluster-private-endpoint":{"id":"aws-cdk-eks-cluster-private-endpoint","path":"aws-cdk-eks-cluster-private-endpoint","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-cluster-private-endpoint/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-private-endpoint/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-cluster-private-endpoint/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-private-endpoint/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-private-endpoint/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/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py new file mode 100644 index 0000000000000..6664adf77090d --- /dev/null +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py @@ -0,0 +1,250 @@ +import json +import logging +import os +import re +import subprocess +import shutil +import tempfile +import zipfile +import boto3 + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + +# these are coming from the kubectl layer +os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] + +outdir = os.environ.get('TEST_OUTDIR', '/tmp') +kubeconfig = os.path.join(outdir, 'kubeconfig') + +def get_chart_asset_from_url(chart_asset_url): + chart_zip = os.path.join(outdir, 'chart.zip') + shutil.rmtree(chart_zip, ignore_errors=True) + subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) + chart_dir = os.path.join(outdir, 'chart') + shutil.rmtree(chart_dir, ignore_errors=True) + os.mkdir(chart_dir) + with zipfile.ZipFile(chart_zip, 'r') as zip_ref: + zip_ref.extractall(chart_dir) + return chart_dir + +def is_ecr_public_available(region): + s = boto3.Session() + return s.get_partition_for_region(region) == 'aws' + +def helm_handler(event, context): + logger.info(json.dumps(dict(event, ResponseURL='...'))) + + request_type = event['RequestType'] + props = event['ResourceProperties'] + + # resource properties + cluster_name = props['ClusterName'] + release = props['Release'] + chart = props.get('Chart', None) + chart_asset_url = props.get('ChartAssetURL', None) + version = props.get('Version', None) + wait = props.get('Wait', False) + atomic = props.get('Atomic', False) + timeout = props.get('Timeout', None) + namespace = props.get('Namespace', None) + create_namespace = props.get('CreateNamespace', None) + repository = props.get('Repository', None) + values_text = props.get('Values', None) + skip_crds = props.get('SkipCrds', False) + + # "log in" to the cluster + subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', + '--name', cluster_name, + '--kubeconfig', kubeconfig + ]) + + if os.path.isfile(kubeconfig): + os.chmod(kubeconfig, 0o600) + + # Write out the values to a file and include them with the install and upgrade + values_file = None + if not request_type == "Delete" and not values_text is None: + values = json.loads(values_text) + values_file = os.path.join(outdir, 'values.yaml') + with open(values_file, "w") as f: + f.write(json.dumps(values, indent=2)) + + if request_type == 'Create' or request_type == 'Update': + # Ensure chart or chart_asset_url are set + if chart == None and chart_asset_url == None: + raise RuntimeError(f'chart or chartAsset must be specified') + + if chart_asset_url != None: + assert(chart==None) + assert(repository==None) + assert(version==None) + if not chart_asset_url.startswith('s3://'): + raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') + # future work: support versions from s3 assets + chart = get_chart_asset_from_url(chart_asset_url) + + if repository is not None and repository.startswith('oci://'): + tmpdir = tempfile.TemporaryDirectory() + chart_dir = get_chart_from_oci(tmpdir.name, repository, version) + chart = chart_dir + + helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) + elif request_type == "Delete": + try: + helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) + except Exception as e: + logger.info("delete error: %s" % e) + + +def get_oci_cmd(repository, version): + # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. + private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' + public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' + + private_registry = re.match(private_ecr_pattern, repository).groupdict() + public_registry = re.match(public_ecr_pattern, repository).groupdict() + + # Build helm pull command as array + helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] + + if private_registry['registry'] is not None: + logger.info("Found AWS private repository") + ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + elif public_registry['registry'] is not None: + logger.info("Found AWS public repository, will use default region as deployment") + region = os.environ.get('AWS_REGION', 'us-east-1') + + if is_ecr_public_available(region): + # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html + ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + else: + # No login required for public ECR in non-aws regions + # see https://helm.sh/docs/helm/helm_registry_login/ + return {'helm': helm_cmd} + else: + logger.error("OCI repository format not recognized, falling back to helm pull") + return {'helm': helm_cmd} + + +def get_chart_from_oci(tmpdir, repository=None, version=None): + from subprocess import Popen, PIPE + + commands = get_oci_cmd(repository, version) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + # Execute login commands if needed + if 'ecr_login' in commands and 'helm_registry_login' in commands: + logger.info("Running login command: %s", commands['ecr_login']) + logger.info("Running registry login command: %s", commands['helm_registry_login']) + + # Start first process: aws ecr get-login-password + # NOTE: We do NOT call p1.wait() here before starting p2. + # Doing so could deadlock if p1's output fills the pipe buffer + # before p2 starts reading. Instead, start p2 immediately so it + # can consume p1's stdout as it's produced. + p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) + + # Start second process: helm registry login + p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) + p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early + + # Wait for p2 to finish first (ensures full pipeline completes) + _, p2_err = p2.communicate() + + # Now wait for p1 so we have a complete stderr and an exit code + p1.wait() + + # Handle p1 failure + if p1.returncode != 0: + p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' + logger.error( + "ECR get-login-password failed for repository %s. Error: %s", + repository, + p1_err or "No error details" + ) + raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) + + # Handle p2 failure + if p2.returncode != 0: + logger.error( + "Helm registry authentication failed for repository %s. Error: %s", + repository, + p2_err.decode('utf-8', errors='replace') or "No error details" + ) + raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) + + # Execute helm pull command + logger.info("Running helm command: %s", commands['helm']) + output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) + logger.info(output) + + # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. + # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service + return os.path.join(tmpdir, repository.rpartition('/')[-1]) + + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + raise Exception(output) + + raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') + + +def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): + cmnd = ['helm', verb, release] + if not chart is None: + cmnd.append(chart) + if verb == 'upgrade': + cmnd.append('--install') + if create_namespace: + cmnd.append('--create-namespace') + if not repo is None: + cmnd.extend(['--repo', repo]) + if not file is None: + cmnd.extend(['--values', file]) + if not version is None: + cmnd.extend(['--version', version]) + if not namespace is None: + cmnd.extend(['--namespace', namespace]) + if wait: + cmnd.append('--wait') + if skip_crds: + cmnd.append('--skip-crds') + if not timeout is None: + cmnd.extend(['--timeout', timeout]) + if atomic: + cmnd.append('--atomic') + cmnd.extend(['--kubeconfig', kubeconfig]) + + # Log the full helm command for better troubleshooting + logger.info("Running command: %s", cmnd) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) + logger.info(output.decode('utf-8', errors='replace')) + return + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + error_message = output.decode('utf-8', errors='replace') + logger.error("Command failed: %s", cmnd) + logger.error("Error output: %s", error_message) + raise Exception(output) + raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py deleted file mode 100644 index 6c7838f182a45..0000000000000 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py +++ /dev/null @@ -1,250 +0,0 @@ -import json -import logging -import os -import re -import subprocess -import shutil -import tempfile -import zipfile -import boto3 - -logger = logging.getLogger() -logger.setLevel(logging.INFO) - -# these are coming from the kubectl layer -os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] - -outdir = os.environ.get('TEST_OUTDIR', '/tmp') -kubeconfig = os.path.join(outdir, 'kubeconfig') - -def get_chart_asset_from_url(chart_asset_url): - chart_zip = os.path.join(outdir, 'chart.zip') - shutil.rmtree(chart_zip, ignore_errors=True) - subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) - chart_dir = os.path.join(outdir, 'chart') - shutil.rmtree(chart_dir, ignore_errors=True) - os.mkdir(chart_dir) - with zipfile.ZipFile(chart_zip, 'r') as zip_ref: - zip_ref.extractall(chart_dir) - return chart_dir - -def is_ecr_public_available(region): - s = boto3.Session() - return s.get_partition_for_region(region) == 'aws' - -def helm_handler(event, context): - logger.info(json.dumps(dict(event, ResponseURL='...'))) - - request_type = event['RequestType'] - props = event['ResourceProperties'] - - # resource properties - cluster_name = props['ClusterName'] - release = props['Release'] - chart = props.get('Chart', None) - chart_asset_url = props.get('ChartAssetURL', None) - version = props.get('Version', None) - wait = props.get('Wait', False) - atomic = props.get('Atomic', False) - timeout = props.get('Timeout', None) - namespace = props.get('Namespace', None) - create_namespace = props.get('CreateNamespace', None) - repository = props.get('Repository', None) - values_text = props.get('Values', None) - skip_crds = props.get('SkipCrds', False) - - # "log in" to the cluster - subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', - '--name', cluster_name, - '--kubeconfig', kubeconfig - ]) - - if os.path.isfile(kubeconfig): - os.chmod(kubeconfig, 0o600) - - # Write out the values to a file and include them with the install and upgrade - values_file = None - if not request_type == "Delete" and not values_text is None: - values = json.loads(values_text) - values_file = os.path.join(outdir, 'values.yaml') - with open(values_file, "w") as f: - f.write(json.dumps(values, indent=2)) - - if request_type == 'Create' or request_type == 'Update': - # Ensure chart or chart_asset_url are set - if chart == None and chart_asset_url == None: - raise RuntimeError(f'chart or chartAsset must be specified') - - if chart_asset_url != None: - assert(chart==None) - assert(repository==None) - assert(version==None) - if not chart_asset_url.startswith('s3://'): - raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') - # future work: support versions from s3 assets - chart = get_chart_asset_from_url(chart_asset_url) - - if repository is not None and repository.startswith('oci://'): - tmpdir = tempfile.TemporaryDirectory() - chart_dir = get_chart_from_oci(tmpdir.name, repository, version) - chart = chart_dir - - helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) - elif request_type == "Delete": - try: - helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) - except Exception as e: - logger.info("delete error: %s" % e) - - -def get_oci_cmd(repository, version): - # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. - private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' - public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' - - private_registry = re.match(private_ecr_pattern, repository).groupdict() - public_registry = re.match(public_ecr_pattern, repository).groupdict() - - # Build helm pull command as array - helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] - - if private_registry['registry'] is not None: - logger.info("Found AWS private repository") - ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] - return {'ecr_login': ecr_login, 'registry_login': helm_registry_login, 'helm': helm_cmd} - elif public_registry['registry'] is not None: - logger.info("Found AWS public repository, will use default region as deployment") - region = os.environ.get('AWS_REGION', 'us-east-1') - - if is_ecr_public_available(region): - # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html - ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] - return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} - else: - # No login required for public ECR in non-aws regions - # see https://helm.sh/docs/helm/helm_registry_login/ - return {'helm': helm_cmd} - else: - logger.error("OCI repository format not recognized, falling back to helm pull") - return {'helm': helm_cmd} - - -def get_chart_from_oci(tmpdir, repository=None, version=None): - from subprocess import Popen, PIPE - - commands = get_oci_cmd(repository, version) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - # Execute login commands if needed - if 'ecr_login' in commands and 'helm_registry_login' in commands: - logger.info("Running login command: %s", commands['ecr_login']) - logger.info("Running registry login command: %s", commands['helm_registry_login']) - - # Start first process: aws ecr get-login-password - # NOTE: We do NOT call p1.wait() here before starting p2. - # Doing so could deadlock if p1's output fills the pipe buffer - # before p2 starts reading. Instead, start p2 immediately so it - # can consume p1's stdout as it's produced. - p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) - - # Start second process: helm registry login - p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) - p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early - - # Wait for p2 to finish first (ensures full pipeline completes) - _, p2_err = p2.communicate() - - # Now wait for p1 so we have a complete stderr and an exit code - p1.wait() - - # Handle p1 failure - if p1.returncode != 0: - p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' - logger.error( - "ECR get-login-password failed for repository %s. Error: %s", - repository, - p1_err or "No error details" - ) - raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) - - # Handle p2 failure - if p2.returncode != 0: - logger.error( - "Helm registry authentication failed for repository %s. Error: %s", - repository, - p2_err.decode('utf-8', errors='replace') or "No error details" - ) - raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) - - # Execute helm pull command - logger.info("Running helm command: %s", commands['helm']) - output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) - logger.info(output) - - # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. - # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service - return os.path.join(tmpdir, repository.rpartition('/')[-1]) - - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - raise Exception(output) - - raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') - - -def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): - cmnd = ['helm', verb, release] - if not chart is None: - cmnd.append(chart) - if verb == 'upgrade': - cmnd.append('--install') - if create_namespace: - cmnd.append('--create-namespace') - if not repo is None: - cmnd.extend(['--repo', repo]) - if not file is None: - cmnd.extend(['--values', file]) - if not version is None: - cmnd.extend(['--version', version]) - if not namespace is None: - cmnd.extend(['--namespace', namespace]) - if wait: - cmnd.append('--wait') - if skip_crds: - cmnd.append('--skip-crds') - if not timeout is None: - cmnd.extend(['--timeout', timeout]) - if atomic: - cmnd.append('--atomic') - cmnd.extend(['--kubeconfig', kubeconfig]) - - # Log the full helm command for better troubleshooting - logger.info("Running command: %s", cmnd) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) - logger.info(output.decode('utf-8', errors='replace')) - return - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - error_message = output.decode('utf-8', errors='replace') - logger.error("Command failed: %s", cmnd) - logger.error("Error output: %s", error_message) - raise Exception(output) - raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/aws-cdk-eks-cluster.assets.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/aws-cdk-eks-cluster.assets.json index 769a0bc4465c1..5c2b7e4d685e9 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/aws-cdk-eks-cluster.assets.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/aws-cdk-eks-cluster.assets.json @@ -16,16 +16,16 @@ } } }, - "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a": { + "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9": { "displayName": "Cluster/KubectlProvider/Handler/Code", "source": { - "path": "asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a", + "path": "asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9", "packaging": "zip" }, "destinations": { - "current_account-us-east-1-e98e539f": { + "current_account-us-east-1-cacf59d8": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1", - "objectKey": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip", + "objectKey": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip", "region": "us-east-1", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-us-east-1" } @@ -106,16 +106,16 @@ } } }, - "66e456af67a5015d7b27b7ab07058b1c0066928af10b611da7b276ba3d89094e": { + "f53d50175fa48ecf59138564d6539f461cdb5cb277430edc71452bd2757d1d4a": { "displayName": "aws-cdk-eks-cluster Template", "source": { "path": "aws-cdk-eks-cluster.template.json", "packaging": "file" }, "destinations": { - "current_account-us-east-1-e0f348ce": { + "current_account-us-east-1-6b8d3056": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1", - "objectKey": "66e456af67a5015d7b27b7ab07058b1c0066928af10b611da7b276ba3d89094e.json", + "objectKey": "f53d50175fa48ecf59138564d6539f461cdb5cb277430edc71452bd2757d1d4a.json", "region": "us-east-1", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-us-east-1" } diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/aws-cdk-eks-cluster.template.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/aws-cdk-eks-cluster.template.json index df47494c77e5a..7ccd3003b907d 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/aws-cdk-eks-cluster.template.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/aws-cdk-eks-cluster.template.json @@ -1161,7 +1161,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1" }, - "S3Key": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip" + "S3Key": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip" }, "Description": "onEvent handler for EKS kubectl resource provider", "Environment": { diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/manifest.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/manifest.json index 8014cb40ecfcf..d490e953c945a 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/manifest.json @@ -18,7 +18,7 @@ "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/66e456af67a5015d7b27b7ab07058b1c0066928af10b611da7b276ba3d89094e.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1/f53d50175fa48ecf59138564d6539f461cdb5cb277430edc71452bd2757d1d4a.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/tree.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/tree.json index 118ad66460b7b..c3333aac01e9c 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-cluster.js.snapshot/tree.json @@ -1 +1 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-cluster":{"id":"aws-cdk-eks-cluster","path":"aws-cdk-eks-cluster","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"AdminRole":{"id":"AdminRole","path":"aws-cdk-eks-cluster/AdminRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportAdminRole":{"id":"ImportAdminRole","path":"aws-cdk-eks-cluster/AdminRole/ImportAdminRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/AdminRole/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:aws:iam::",{"Ref":"AWS::AccountId"},":root"]]}}}],"Version":"2012-10-17"}}}}}},"SecretsKey":{"id":"SecretsKey","path":"aws-cdk-eks-cluster/SecretsKey","constructInfo":{"fqn":"aws-cdk-lib.aws_kms.Key","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/SecretsKey/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":"*"}],"Version":"2012-10-17"}}}}}},"Vpc":{"id":"Vpc","path":"aws-cdk-eks-cluster/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"maxAzs":"*","natGateways":"*","restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-cluster/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-cluster/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-cluster/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-cluster/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"}}}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-cluster/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-cluster/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*","*","*","*","*","*","*","*","*","*","*","*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-cluster/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/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":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-cluster/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"},{"addEgressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addIngressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addIngressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addIngressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addIngressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addIngressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addIngressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addIngressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addIngressRule":["*",{},"*",true]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:443":{"id":"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:443","path":"aws-cdk-eks-cluster/Cluster/ControlPlaneSecurityGroup/from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","path":"aws-cdk-eks-cluster/Cluster/ControlPlaneSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":443}}},"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:443":{"id":"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:443","path":"aws-cdk-eks-cluster/Cluster/ControlPlaneSecurityGroup/from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:443":{"id":"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:443","path":"aws-cdk-eks-cluster/Cluster/ControlPlaneSecurityGroup/from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:443":{"id":"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:443","path":"aws-cdk-eks-cluster/Cluster/ControlPlaneSecurityGroup/from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]},"toPort":443}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":false},"encryptionConfig":[{"provider":{"keyArn":{"Fn::GetAtt":["SecretsKey317DCF94","Arn"]}},"resources":["secrets"]}],"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":false}},"logging":{"clusterLogging":{"enabledTypes":[{"type":"api"},{"type":"authenticator"},{"type":"scheduler"}]}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"},{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":false}},"tags":[{"key":"foo","value":"bar"}],"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-cluster/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]},"children":{"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:443":{"id":"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:443","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]}}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":443}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}}}},"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:443":{"id":"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:443","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]}}}},"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:443":{"id":"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:443","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]}}}},"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:443":{"id":"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:443","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]}}}}}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:aws:s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1"},"/*"]]},{"Fn::Join":["",["arn:aws:s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1"}]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/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":"94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/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":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":"nodejs22.x","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-cluster/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}},"mastersRoleAccess":{"id":"mastersRoleAccess","path":"aws-cdk-eks-cluster/Cluster/mastersRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/mastersRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["AdminRole38563C57","Arn"]}}}}}},"NodegroupDefaultCapacity":{"id":"NodegroupDefaultCapacity","path":"aws-cdk-eks-cluster/Cluster/NodegroupDefaultCapacity","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/NodegroupDefaultCapacity/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/NodegroupDefaultCapacity/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/NodegroupDefaultCapacity/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/NodegroupDefaultCapacity/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_x86_64","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["m5.large"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupDefaultCapacityNodeGroupRole55953B04","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":2},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"ConfigCommand":{"id":"ConfigCommand","path":"aws-cdk-eks-cluster/Cluster/ConfigCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"GetTokenCommand":{"id":"GetTokenCommand","path":"aws-cdk-eks-cluster/Cluster/GetTokenCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"fargate-profile-default":{"id":"fargate-profile-default","path":"aws-cdk-eks-cluster/Cluster/fargate-profile-default","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.FargateProfile","version":"0.0.0"},"children":{"PodExecutionRole":{"id":"PodExecutionRole","path":"aws-cdk-eks-cluster/Cluster/fargate-profile-default/PodExecutionRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportPodExecutionRole":{"id":"ImportPodExecutionRole","path":"aws-cdk-eks-cluster/Cluster/fargate-profile-default/PodExecutionRole/ImportPodExecutionRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/fargate-profile-default/PodExecutionRole/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":"eks-fargate-pods.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/fargate-profile-default/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnFargateProfile","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::FargateProfile","aws:cdk:cloudformation:props":{"clusterName":{"Ref":"ClusterEB0386A7"},"podExecutionRoleArn":{"Fn::GetAtt":["ClusterfargateprofiledefaultPodExecutionRole09952CFF","Arn"]},"selectors":[{"namespace":"default","labels":[]}]}}}}},"Nodes":{"id":"Nodes","path":"aws-cdk-eks-cluster/Cluster/Nodes","constructInfo":{"fqn":"aws-cdk-lib.aws_autoscaling.AutoScalingGroup","version":"0.0.0","metadata":[{"instanceType":"*","minCapacity":"*","vpc":"*","machineImage":"*"},{"addSecurityGroup":["*"]},{"addUserData":["*","*","*"]}]},"children":{"InstanceSecurityGroup":{"id":"InstanceSecurityGroup","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","allowAllOutbound":true},{"addIngressRule":["*",{},"*"]},{"addEgressRule":["*",{},"*"]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addEgressRule":["*",{},"*",false]},{"addEgressRule":["*",{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addIngressRule":["*",{},"*"]},{"addEgressRule":["*",{},"*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceSecurityGroup/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":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceSecurityGroup","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"tags":[{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/Nodes"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceSecurityGroup/from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]}}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":443}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}}}}}},"InstanceRole":{"id":"InstanceRole","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportInstanceRole":{"id":"ImportInstanceRole","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceRole/ImportInstanceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}],"tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/Nodes"}]}}}}},"InstanceProfile":{"id":"InstanceProfile","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceProfile","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnInstanceProfile","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::InstanceProfile","aws:cdk:cloudformation:props":{"roles":[{"Ref":"ClusterNodesInstanceRoleC3C01328"}]}}},"ImportedInstanceProfile":{"id":"ImportedInstanceProfile","path":"aws-cdk-eks-cluster/Cluster/Nodes/ImportedInstanceProfile","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"LaunchTemplate":{"id":"LaunchTemplate","path":"aws-cdk-eks-cluster/Cluster/Nodes/LaunchTemplate","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.LaunchTemplate","version":"0.0.0","metadata":[{"machineImage":"*","instanceType":"*","detailedMonitoring":false,"securityGroup":"*","userData":"*","associatePublicIpAddress":"*","spotOptions":"*","blockDevices":"*","instanceProfile":"*","keyPair":"*"},{"addSecurityGroup":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodes/LaunchTemplate/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnLaunchTemplate","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::LaunchTemplate","aws:cdk:cloudformation:props":{"launchTemplateData":{"iamInstanceProfile":{"arn":{"Fn::GetAtt":["ClusterNodesInstanceProfileF2DD0E21","Arn"]}},"imageId":{"Ref":"SsmParameterValueawsserviceeksoptimizedami132amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"},"instanceType":"t2.medium","monitoring":{"enabled":false},"securityGroupIds":[{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]},{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}],"tagSpecifications":[{"resourceType":"instance","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/Nodes/LaunchTemplate"}]},{"resourceType":"volume","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/Nodes/LaunchTemplate"}]}],"userData":{"Fn::Base64":{"Fn::Join":["",["#!/bin/bash\nset -o xtrace\n/etc/eks/bootstrap.sh ",{"Ref":"ClusterEB0386A7"}," --kubelet-extra-args \"--node-labels lifecycle=OnDemand\" --apiserver-endpoint '",{"Fn::GetAtt":["ClusterEB0386A7","Endpoint"]},"' --b64-cluster-ca '",{"Fn::GetAtt":["ClusterEB0386A7","CertificateAuthorityData"]},"' --use-max-pods true\n/opt/aws/bin/cfn-signal --exit-code $? --stack aws-cdk-eks-cluster --resource ClusterNodesASGF172BD19 --region us-east-1"]]}}},"tagSpecifications":[{"resourceType":"launch-template","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/Nodes/LaunchTemplate"}]}]}}}}},"ASG":{"id":"ASG","path":"aws-cdk-eks-cluster/Cluster/Nodes/ASG","constructInfo":{"fqn":"aws-cdk-lib.aws_autoscaling.CfnAutoScalingGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::AutoScaling::AutoScalingGroup","aws:cdk:cloudformation:props":{"launchTemplate":{"launchTemplateId":{"Ref":"ClusterNodesLaunchTemplateD1028D0D"},"version":{"Fn::GetAtt":["ClusterNodesLaunchTemplateD1028D0D","LatestVersionNumber"]}},"maxSize":"3","minSize":"3","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned","propagateAtLaunch":true},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/Nodes","propagateAtLaunch":true}],"vpcZoneIdentifier":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}},"InstanceRoleARN":{"id":"InstanceRoleARN","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceRoleARN","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}}}},"NodesArm":{"id":"NodesArm","path":"aws-cdk-eks-cluster/Cluster/NodesArm","constructInfo":{"fqn":"aws-cdk-lib.aws_autoscaling.AutoScalingGroup","version":"0.0.0","metadata":[{"instanceType":"*","minCapacity":"*","vpc":"*","machineImage":"*"},{"addSecurityGroup":["*"]},{"addUserData":["*","*","*"]}]},"children":{"InstanceSecurityGroup":{"id":"InstanceSecurityGroup","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","allowAllOutbound":true},{"addIngressRule":["*",{},"*"]},{"addEgressRule":["*",{},"*"]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addEgressRule":["*",{},"*",false]},{"addEgressRule":["*",{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addIngressRule":["*",{},"*"]},{"addEgressRule":["*",{},"*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceSecurityGroup/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":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceSecurityGroup","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"tags":[{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/NodesArm"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceSecurityGroup/from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]}}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":443}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}}}}}},"InstanceRole":{"id":"InstanceRole","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportInstanceRole":{"id":"ImportInstanceRole","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceRole/ImportInstanceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}],"tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/NodesArm"}]}}}}},"InstanceProfile":{"id":"InstanceProfile","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceProfile","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnInstanceProfile","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::InstanceProfile","aws:cdk:cloudformation:props":{"roles":[{"Ref":"ClusterNodesArmInstanceRoleB93D3298"}]}}},"ImportedInstanceProfile":{"id":"ImportedInstanceProfile","path":"aws-cdk-eks-cluster/Cluster/NodesArm/ImportedInstanceProfile","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"LaunchTemplate":{"id":"LaunchTemplate","path":"aws-cdk-eks-cluster/Cluster/NodesArm/LaunchTemplate","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.LaunchTemplate","version":"0.0.0","metadata":[{"machineImage":"*","instanceType":"*","detailedMonitoring":false,"securityGroup":"*","userData":"*","associatePublicIpAddress":"*","spotOptions":"*","blockDevices":"*","instanceProfile":"*","keyPair":"*"},{"addSecurityGroup":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/NodesArm/LaunchTemplate/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnLaunchTemplate","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::LaunchTemplate","aws:cdk:cloudformation:props":{"launchTemplateData":{"iamInstanceProfile":{"arn":{"Fn::GetAtt":["ClusterNodesArmInstanceProfile158C5C9F","Arn"]}},"imageId":{"Ref":"SsmParameterValueawsserviceeksoptimizedami132amazonlinux2arm64recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"},"instanceType":"m6g.medium","monitoring":{"enabled":false},"securityGroupIds":[{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]},{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}],"tagSpecifications":[{"resourceType":"instance","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/NodesArm/LaunchTemplate"}]},{"resourceType":"volume","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/NodesArm/LaunchTemplate"}]}],"userData":{"Fn::Base64":{"Fn::Join":["",["#!/bin/bash\nset -o xtrace\n/etc/eks/bootstrap.sh ",{"Ref":"ClusterEB0386A7"}," --kubelet-extra-args \"--node-labels lifecycle=OnDemand\" --apiserver-endpoint '",{"Fn::GetAtt":["ClusterEB0386A7","Endpoint"]},"' --b64-cluster-ca '",{"Fn::GetAtt":["ClusterEB0386A7","CertificateAuthorityData"]},"' --use-max-pods true\n/opt/aws/bin/cfn-signal --exit-code $? --stack aws-cdk-eks-cluster --resource ClusterNodesArmASG40A593D0 --region us-east-1"]]}}},"tagSpecifications":[{"resourceType":"launch-template","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/NodesArm/LaunchTemplate"}]}]}}}}},"ASG":{"id":"ASG","path":"aws-cdk-eks-cluster/Cluster/NodesArm/ASG","constructInfo":{"fqn":"aws-cdk-lib.aws_autoscaling.CfnAutoScalingGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::AutoScaling::AutoScalingGroup","aws:cdk:cloudformation:props":{"launchTemplate":{"launchTemplateId":{"Ref":"ClusterNodesArmLaunchTemplateB6CFBA44"},"version":{"Fn::GetAtt":["ClusterNodesArmLaunchTemplateB6CFBA44","LatestVersionNumber"]}},"maxSize":"1","minSize":"1","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned","propagateAtLaunch":true},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/NodesArm","propagateAtLaunch":true}],"vpcZoneIdentifier":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}},"InstanceRoleARN":{"id":"InstanceRoleARN","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceRoleARN","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}}}},"BottlerocketNodes":{"id":"BottlerocketNodes","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes","constructInfo":{"fqn":"aws-cdk-lib.aws_autoscaling.AutoScalingGroup","version":"0.0.0","metadata":[{"instanceType":"*","minCapacity":"*","vpc":"*","machineImage":"*"},{"addSecurityGroup":["*"]},{"addUserData":["*","*","*","*"]}]},"children":{"InstanceSecurityGroup":{"id":"InstanceSecurityGroup","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","allowAllOutbound":true},{"addIngressRule":["*",{},"*"]},{"addEgressRule":["*",{},"*"]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addEgressRule":["*",{},"*",false]},{"addEgressRule":["*",{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addIngressRule":["*",{},"*"]},{"addEgressRule":["*",{},"*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceSecurityGroup/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":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceSecurityGroup","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"tags":[{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceSecurityGroup/from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]}}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":443}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}}}}}},"InstanceRole":{"id":"InstanceRole","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportInstanceRole":{"id":"ImportInstanceRole","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceRole/ImportInstanceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}],"tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes"}]}}}}},"InstanceProfile":{"id":"InstanceProfile","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceProfile","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnInstanceProfile","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::InstanceProfile","aws:cdk:cloudformation:props":{"roles":[{"Ref":"ClusterBottlerocketNodesInstanceRole68E4BCFB"}]}}},"ImportedInstanceProfile":{"id":"ImportedInstanceProfile","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/ImportedInstanceProfile","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"LaunchTemplate":{"id":"LaunchTemplate","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/LaunchTemplate","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.LaunchTemplate","version":"0.0.0","metadata":[{"machineImage":"*","instanceType":"*","detailedMonitoring":false,"securityGroup":"*","userData":"*","associatePublicIpAddress":"*","spotOptions":"*","blockDevices":"*","instanceProfile":"*","keyPair":"*"},{"addSecurityGroup":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/LaunchTemplate/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnLaunchTemplate","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::LaunchTemplate","aws:cdk:cloudformation:props":{"launchTemplateData":{"iamInstanceProfile":{"arn":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceProfileB6E2F25A","Arn"]}},"imageId":{"Ref":"SsmParameterValueawsservicebottlerocketawsk8s132x8664latestimageidC96584B6F00A464EAD1953AFF4B05118Parameter"},"instanceType":"t3.small","monitoring":{"enabled":false},"securityGroupIds":[{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]},{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}],"tagSpecifications":[{"resourceType":"instance","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/LaunchTemplate"}]},{"resourceType":"volume","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/LaunchTemplate"}]}],"userData":{"Fn::Base64":{"Fn::Join":["",["\n[settings.kubernetes]\napi-server=\"",{"Fn::GetAtt":["ClusterEB0386A7","Endpoint"]},"\"\ncluster-certificate=\"",{"Fn::GetAtt":["ClusterEB0386A7","CertificateAuthorityData"]},"\"\ncluster-name=\"",{"Ref":"ClusterEB0386A7"},"\""]]}}},"tagSpecifications":[{"resourceType":"launch-template","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/LaunchTemplate"}]}]}}}}},"ASG":{"id":"ASG","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/ASG","constructInfo":{"fqn":"aws-cdk-lib.aws_autoscaling.CfnAutoScalingGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::AutoScaling::AutoScalingGroup","aws:cdk:cloudformation:props":{"launchTemplate":{"launchTemplateId":{"Ref":"ClusterBottlerocketNodesLaunchTemplate54246C29"},"version":{"Fn::GetAtt":["ClusterBottlerocketNodesLaunchTemplate54246C29","LatestVersionNumber"]}},"maxSize":"2","minSize":"2","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned","propagateAtLaunch":true},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes","propagateAtLaunch":true}],"vpcZoneIdentifier":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}},"InstanceRoleARN":{"id":"InstanceRoleARN","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceRoleARN","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}}}},"spot":{"id":"spot","path":"aws-cdk-eks-cluster/Cluster/spot","constructInfo":{"fqn":"aws-cdk-lib.aws_autoscaling.AutoScalingGroup","version":"0.0.0","metadata":[{"spotPrice":"*","instanceType":"*","maxCapacity":"*","vpc":"*","machineImage":"*"},{"addSecurityGroup":["*"]},{"addUserData":["*","*","*"]}]},"children":{"InstanceSecurityGroup":{"id":"InstanceSecurityGroup","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","allowAllOutbound":true},{"addIngressRule":["*",{},"*"]},{"addEgressRule":["*",{},"*"]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addEgressRule":["*",{},"*",false]},{"addEgressRule":["*",{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addIngressRule":["*",{},"*"]},{"addEgressRule":["*",{},"*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceSecurityGroup/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":"aws-cdk-eks-cluster/Cluster/spot/InstanceSecurityGroup","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"tags":[{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/spot"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceSecurityGroup/from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]}}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":443}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}}}}}},"InstanceRole":{"id":"InstanceRole","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportInstanceRole":{"id":"ImportInstanceRole","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceRole/ImportInstanceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}],"tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/spot"}]}}}}},"InstanceProfile":{"id":"InstanceProfile","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceProfile","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnInstanceProfile","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::InstanceProfile","aws:cdk:cloudformation:props":{"roles":[{"Ref":"ClusterspotInstanceRole39043830"}]}}},"ImportedInstanceProfile":{"id":"ImportedInstanceProfile","path":"aws-cdk-eks-cluster/Cluster/spot/ImportedInstanceProfile","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"LaunchTemplate":{"id":"LaunchTemplate","path":"aws-cdk-eks-cluster/Cluster/spot/LaunchTemplate","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.LaunchTemplate","version":"0.0.0","metadata":[{"machineImage":"*","instanceType":"*","detailedMonitoring":false,"securityGroup":"*","userData":"*","associatePublicIpAddress":"*","spotOptions":{"maxPrice":"*"},"blockDevices":"*","instanceProfile":"*","keyPair":"*"},{"addSecurityGroup":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/spot/LaunchTemplate/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnLaunchTemplate","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::LaunchTemplate","aws:cdk:cloudformation:props":{"launchTemplateData":{"iamInstanceProfile":{"arn":{"Fn::GetAtt":["ClusterspotInstanceProfileAB88D077","Arn"]}},"imageId":{"Ref":"SsmParameterValueawsserviceeksoptimizedami132amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"},"instanceType":"t3.large","instanceMarketOptions":{"marketType":"spot","spotOptions":{"maxPrice":"0.1094"}},"monitoring":{"enabled":false},"securityGroupIds":[{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]},{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}],"tagSpecifications":[{"resourceType":"instance","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/spot/LaunchTemplate"}]},{"resourceType":"volume","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/spot/LaunchTemplate"}]}],"userData":{"Fn::Base64":{"Fn::Join":["",["#!/bin/bash\nset -o xtrace\n/etc/eks/bootstrap.sh ",{"Ref":"ClusterEB0386A7"}," --kubelet-extra-args \"--node-labels lifecycle=Ec2Spot --register-with-taints=spotInstance=true:PreferNoSchedule --node-labels foo=bar,goo=far\" --apiserver-endpoint '",{"Fn::GetAtt":["ClusterEB0386A7","Endpoint"]},"' --b64-cluster-ca '",{"Fn::GetAtt":["ClusterEB0386A7","CertificateAuthorityData"]},"' --use-max-pods true --aws-api-retry-attempts 5\n/opt/aws/bin/cfn-signal --exit-code $? --stack aws-cdk-eks-cluster --resource ClusterspotASG857494B6 --region us-east-1"]]}}},"tagSpecifications":[{"resourceType":"launch-template","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/spot/LaunchTemplate"}]}]}}}}},"ASG":{"id":"ASG","path":"aws-cdk-eks-cluster/Cluster/spot/ASG","constructInfo":{"fqn":"aws-cdk-lib.aws_autoscaling.CfnAutoScalingGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::AutoScaling::AutoScalingGroup","aws:cdk:cloudformation:props":{"launchTemplate":{"launchTemplateId":{"Ref":"ClusterspotLaunchTemplate5652F38D"},"version":{"Fn::GetAtt":["ClusterspotLaunchTemplate5652F38D","LatestVersionNumber"]}},"maxSize":"10","minSize":"1","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned","propagateAtLaunch":true},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/spot","propagateAtLaunch":true}],"vpcZoneIdentifier":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}},"InstanceRoleARN":{"id":"InstanceRoleARN","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceRoleARN","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}}}},"Nodegroupextra-ng":{"id":"Nodegroupextra-ng","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_x86_64","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["t3.small"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupextrangNodeGroupRole23AE23D0","Arn"]},"scalingConfig":{"desiredSize":1,"maxSize":4,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"updateConfig":{"maxUnavailable":3}}}}}},"Nodegroupextra-ng-spot":{"id":"Nodegroupextra-ng-spot","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-spot","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-spot/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-spot/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-spot/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-spot/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_x86_64","capacityType":"SPOT","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["c5.large","c5a.large","m7i-flex.large"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupextrangspotNodeGroupRoleB53B4857","Arn"]},"scalingConfig":{"desiredSize":3,"maxSize":3,"minSize":3},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"Nodegroupextra-ng-arm":{"id":"Nodegroupextra-ng-arm","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_ARM_64","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["m6g.medium"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupextrangarmNodeGroupRoleADF5749F","Arn"]},"scalingConfig":{"desiredSize":1,"maxSize":1,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"updateConfig":{"maxUnavailablePercentage":33}}}}}},"Nodegroupextra-ng-arm3":{"id":"Nodegroupextra-ng-arm3","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm3","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm3/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm3/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm3/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm3/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_ARM_64","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["c7g.large"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupextrangarm3NodeGroupRole3A6AB3EC","Arn"]},"scalingConfig":{"desiredSize":1,"maxSize":1,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"Nodegroupextra-ng2":{"id":"Nodegroupextra-ng2","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng2","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng2/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"launchTemplate":{"id":{"Ref":"LaunchTemplate"},"version":{"Fn::GetAtt":["LaunchTemplate","DefaultVersionNumber"]}},"nodeRole":{"Fn::GetAtt":["ClusterNodegroupDefaultCapacityNodeGroupRole55953B04","Arn"]},"scalingConfig":{"desiredSize":1,"maxSize":1,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"Nodegroupextra-ng-gpu":{"id":"Nodegroupextra-ng-gpu","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-gpu","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-gpu/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-gpu/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-gpu/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-gpu/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_x86_64_GPU","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["p2.xlarge","g5.xlarge","g6e.xlarge"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupextranggpuNodeGroupRoleBCDD4AB4","Arn"]},"scalingConfig":{"desiredSize":1,"maxSize":1,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"manifest-HelloApp":{"id":"manifest-HelloApp","path":"aws-cdk-eks-cluster/Cluster/manifest-HelloApp","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/manifest-HelloApp/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/manifest-HelloApp/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-dashboard":{"id":"chart-dashboard","path":"aws-cdk-eks-cluster/Cluster/chart-dashboard","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/chart-dashboard/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/chart-dashboard/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-test-chart":{"id":"chart-test-chart","path":"aws-cdk-eks-cluster/Cluster/chart-test-chart","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/chart-test-chart/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/chart-test-chart/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"cdk8s-chart":{"id":"cdk8s-chart","path":"aws-cdk-eks-cluster/Cluster/cdk8s-chart","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/cdk8s-chart/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/cdk8s-chart/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"manifest-nginx-namespace":{"id":"manifest-nginx-namespace","path":"aws-cdk-eks-cluster/Cluster/manifest-nginx-namespace","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/manifest-nginx-namespace/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/manifest-nginx-namespace/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-nginx-ingress":{"id":"chart-nginx-ingress","path":"aws-cdk-eks-cluster/Cluster/chart-nginx-ingress","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/chart-nginx-ingress/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/chart-nginx-ingress/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"MyServiceAccount":{"id":"MyServiceAccount","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.ServiceAccount","version":"0.0.0"},"children":{"ConditionJson":{"id":"ConditionJson","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount/ConditionJson","constructInfo":{"fqn":"aws-cdk-lib.CfnJson","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount/ConditionJson/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount/ConditionJson/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount/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:AssumeRoleWithWebIdentity","Condition":{"StringEquals":{"Fn::GetAtt":["ClusterMyServiceAccountConditionJson671C0633","Value"]}},"Effect":"Allow","Principal":{"Federated":{"Ref":"ClusterOpenIdConnectProviderE7EB0530"}}}],"Version":"2012-10-17"}}}}}},"manifest-MyServiceAccountServiceAccountResource":{"id":"manifest-MyServiceAccountServiceAccountResource","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount/manifest-MyServiceAccountServiceAccountResource","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount/manifest-MyServiceAccountServiceAccountResource/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount/manifest-MyServiceAccountServiceAccountResource/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"OpenIdConnectProvider":{"id":"OpenIdConnectProvider","path":"aws-cdk-eks-cluster/Cluster/OpenIdConnectProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.OpenIdConnectProvider","version":"0.0.0","metadata":["*","*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/OpenIdConnectProvider/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/OpenIdConnectProvider/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"MyExtendedServiceAccount":{"id":"MyExtendedServiceAccount","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.ServiceAccount","version":"0.0.0"},"children":{"ConditionJson":{"id":"ConditionJson","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount/ConditionJson","constructInfo":{"fqn":"aws-cdk-lib.CfnJson","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount/ConditionJson/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount/ConditionJson/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount/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:AssumeRoleWithWebIdentity","Condition":{"StringEquals":{"Fn::GetAtt":["ClusterMyExtendedServiceAccountConditionJsonF780F28A","Value"]}},"Effect":"Allow","Principal":{"Federated":{"Ref":"ClusterOpenIdConnectProviderE7EB0530"}}}],"Version":"2012-10-17"}}}}}},"manifest-MyExtendedServiceAccountServiceAccountResource":{"id":"manifest-MyExtendedServiceAccountServiceAccountResource","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount/manifest-MyExtendedServiceAccountServiceAccountResource","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount/manifest-MyExtendedServiceAccountServiceAccountResource/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount/manifest-MyExtendedServiceAccountServiceAccountResource/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}}}},"SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter":{"id":"SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","path":"aws-cdk-eks-cluster/SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118":{"id":"SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118","path":"aws-cdk-eks-cluster/SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2-arm64--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter":{"id":"SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2-arm64--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","path":"aws-cdk-eks-cluster/SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2-arm64--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2-arm64--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118":{"id":"SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2-arm64--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118","path":"aws-cdk-eks-cluster/SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2-arm64--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"SsmParameterValue:--aws--service--bottlerocket--aws-k8s-1.32--x86_64--latest--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter":{"id":"SsmParameterValue:--aws--service--bottlerocket--aws-k8s-1.32--x86_64--latest--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","path":"aws-cdk-eks-cluster/SsmParameterValue:--aws--service--bottlerocket--aws-k8s-1.32--x86_64--latest--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"SsmParameterValue:--aws--service--bottlerocket--aws-k8s-1.32--x86_64--latest--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118":{"id":"SsmParameterValue:--aws--service--bottlerocket--aws-k8s-1.32--x86_64--latest--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118","path":"aws-cdk-eks-cluster/SsmParameterValue:--aws--service--bottlerocket--aws-k8s-1.32--x86_64--latest--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"SsmParameterValue:--aws--service--eks--optimized-ami--1.25--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter":{"id":"SsmParameterValue:--aws--service--eks--optimized-ami--1.25--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","path":"aws-cdk-eks-cluster/SsmParameterValue:--aws--service--eks--optimized-ami--1.25--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"SsmParameterValue:--aws--service--eks--optimized-ami--1.25--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118":{"id":"SsmParameterValue:--aws--service--eks--optimized-ami--1.25--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118","path":"aws-cdk-eks-cluster/SsmParameterValue:--aws--service--eks--optimized-ami--1.25--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"LaunchTemplate":{"id":"LaunchTemplate","path":"aws-cdk-eks-cluster/LaunchTemplate","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnLaunchTemplate","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::LaunchTemplate","aws:cdk:cloudformation:props":{"launchTemplateData":{"imageId":{"Ref":"SsmParameterValueawsserviceeksoptimizedami125amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"},"instanceType":"t3.small","userData":{"Fn::Base64":{"Fn::Join":["",["#!/bin/bash\nset -o xtrace\n/etc/eks/bootstrap.sh ",{"Ref":"ClusterEB0386A7"}]]}}}}}},"HelloAppWithoutValidation":{"id":"HelloAppWithoutValidation","path":"aws-cdk-eks-cluster/HelloAppWithoutValidation","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/HelloAppWithoutValidation/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/HelloAppWithoutValidation/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"ChartAsset":{"id":"ChartAsset","path":"aws-cdk-eks-cluster/ChartAsset","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster/ChartAsset/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster/ChartAsset/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider":{"id":"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","path":"aws-cdk-eks-cluster/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-cluster/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"AWSCDKCfnUtilsProviderCustomResourceProvider":{"id":"AWSCDKCfnUtilsProviderCustomResourceProvider","path":"aws-cdk-eks-cluster/AWSCDKCfnUtilsProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-cluster/AWSCDKCfnUtilsProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster/AWSCDKCfnUtilsProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster/AWSCDKCfnUtilsProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"ClusterEndpoint":{"id":"ClusterEndpoint","path":"aws-cdk-eks-cluster/ClusterEndpoint","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"ClusterArn":{"id":"ClusterArn","path":"aws-cdk-eks-cluster/ClusterArn","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"ClusterCertificateAuthorityData":{"id":"ClusterCertificateAuthorityData","path":"aws-cdk-eks-cluster/ClusterCertificateAuthorityData","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"ClusterSecurityGroupId":{"id":"ClusterSecurityGroupId","path":"aws-cdk-eks-cluster/ClusterSecurityGroupId","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"ClusterEncryptionConfigKeyArn":{"id":"ClusterEncryptionConfigKeyArn","path":"aws-cdk-eks-cluster/ClusterEncryptionConfigKeyArn","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"ClusterName":{"id":"ClusterName","path":"aws-cdk-eks-cluster/ClusterName","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"NodegroupName":{"id":"NodegroupName","path":"aws-cdk-eks-cluster/NodegroupName","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-cluster-integ":{"id":"aws-cdk-eks-cluster-integ","path":"aws-cdk-eks-cluster-integ","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-cluster-integ/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-integ/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-cluster-integ/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-integ/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-integ/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 +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-cluster":{"id":"aws-cdk-eks-cluster","path":"aws-cdk-eks-cluster","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"AdminRole":{"id":"AdminRole","path":"aws-cdk-eks-cluster/AdminRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportAdminRole":{"id":"ImportAdminRole","path":"aws-cdk-eks-cluster/AdminRole/ImportAdminRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/AdminRole/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:aws:iam::",{"Ref":"AWS::AccountId"},":root"]]}}}],"Version":"2012-10-17"}}}}}},"SecretsKey":{"id":"SecretsKey","path":"aws-cdk-eks-cluster/SecretsKey","constructInfo":{"fqn":"aws-cdk-lib.aws_kms.Key","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/SecretsKey/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":"*"}],"Version":"2012-10-17"}}}}}},"Vpc":{"id":"Vpc","path":"aws-cdk-eks-cluster/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"maxAzs":"*","natGateways":"*","restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-cluster/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-cluster/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-cluster/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-cluster/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":"aws-cdk-eks-cluster/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-cluster/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"}}}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-cluster/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-cluster/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*","*","*","*","*","*","*","*","*","*","*","*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-cluster/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/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":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-cluster/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"},{"addEgressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addIngressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addIngressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addIngressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addIngressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addIngressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addIngressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addIngressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addEgressRule":["*",{},"*",true]},{"addIngressRule":["*",{},"*",true]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:443":{"id":"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:443","path":"aws-cdk-eks-cluster/Cluster/ControlPlaneSecurityGroup/from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","path":"aws-cdk-eks-cluster/Cluster/ControlPlaneSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":443}}},"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:443":{"id":"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:443","path":"aws-cdk-eks-cluster/Cluster/ControlPlaneSecurityGroup/from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:443":{"id":"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:443","path":"aws-cdk-eks-cluster/Cluster/ControlPlaneSecurityGroup/from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:443":{"id":"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:443","path":"aws-cdk-eks-cluster/Cluster/ControlPlaneSecurityGroup/from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]},"toPort":443}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":false},"encryptionConfig":[{"provider":{"keyArn":{"Fn::GetAtt":["SecretsKey317DCF94","Arn"]}},"resources":["secrets"]}],"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":false}},"logging":{"clusterLogging":{"enabledTypes":[{"type":"api"},{"type":"authenticator"},{"type":"scheduler"}]}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"},{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":false}},"tags":[{"key":"foo","value":"bar"}],"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-cluster/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]},"children":{"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:443":{"id":"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:443","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]}}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":443}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}}}},"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:443":{"id":"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:443","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]}}}},"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:443":{"id":"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:443","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]}}}},"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:443":{"id":"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:443","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/ClusterSecurityGroup/from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]}}}}}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:aws:s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1"},"/*"]]},{"Fn::Join":["",["arn:aws:s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1"}]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/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":"379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/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":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":"nodejs22.x","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-cluster/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}},"mastersRoleAccess":{"id":"mastersRoleAccess","path":"aws-cdk-eks-cluster/Cluster/mastersRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/mastersRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["AdminRole38563C57","Arn"]}}}}}},"NodegroupDefaultCapacity":{"id":"NodegroupDefaultCapacity","path":"aws-cdk-eks-cluster/Cluster/NodegroupDefaultCapacity","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/NodegroupDefaultCapacity/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/NodegroupDefaultCapacity/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/NodegroupDefaultCapacity/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/NodegroupDefaultCapacity/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_x86_64","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["m5.large"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupDefaultCapacityNodeGroupRole55953B04","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":2},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"ConfigCommand":{"id":"ConfigCommand","path":"aws-cdk-eks-cluster/Cluster/ConfigCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"GetTokenCommand":{"id":"GetTokenCommand","path":"aws-cdk-eks-cluster/Cluster/GetTokenCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"fargate-profile-default":{"id":"fargate-profile-default","path":"aws-cdk-eks-cluster/Cluster/fargate-profile-default","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.FargateProfile","version":"0.0.0"},"children":{"PodExecutionRole":{"id":"PodExecutionRole","path":"aws-cdk-eks-cluster/Cluster/fargate-profile-default/PodExecutionRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportPodExecutionRole":{"id":"ImportPodExecutionRole","path":"aws-cdk-eks-cluster/Cluster/fargate-profile-default/PodExecutionRole/ImportPodExecutionRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/fargate-profile-default/PodExecutionRole/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":"eks-fargate-pods.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/fargate-profile-default/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnFargateProfile","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::FargateProfile","aws:cdk:cloudformation:props":{"clusterName":{"Ref":"ClusterEB0386A7"},"podExecutionRoleArn":{"Fn::GetAtt":["ClusterfargateprofiledefaultPodExecutionRole09952CFF","Arn"]},"selectors":[{"namespace":"default","labels":[]}]}}}}},"Nodes":{"id":"Nodes","path":"aws-cdk-eks-cluster/Cluster/Nodes","constructInfo":{"fqn":"aws-cdk-lib.aws_autoscaling.AutoScalingGroup","version":"0.0.0","metadata":[{"instanceType":"*","minCapacity":"*","vpc":"*","machineImage":"*"},{"addSecurityGroup":["*"]},{"addUserData":["*","*","*"]}]},"children":{"InstanceSecurityGroup":{"id":"InstanceSecurityGroup","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","allowAllOutbound":true},{"addIngressRule":["*",{},"*"]},{"addEgressRule":["*",{},"*"]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addEgressRule":["*",{},"*",false]},{"addEgressRule":["*",{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addIngressRule":["*",{},"*"]},{"addEgressRule":["*",{},"*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceSecurityGroup/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":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceSecurityGroup","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"tags":[{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/Nodes"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceSecurityGroup/from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterNodesInstanceSecurityGroup06345DB9:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]}}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":443}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}}}}}},"InstanceRole":{"id":"InstanceRole","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportInstanceRole":{"id":"ImportInstanceRole","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceRole/ImportInstanceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}],"tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/Nodes"}]}}}}},"InstanceProfile":{"id":"InstanceProfile","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceProfile","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnInstanceProfile","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::InstanceProfile","aws:cdk:cloudformation:props":{"roles":[{"Ref":"ClusterNodesInstanceRoleC3C01328"}]}}},"ImportedInstanceProfile":{"id":"ImportedInstanceProfile","path":"aws-cdk-eks-cluster/Cluster/Nodes/ImportedInstanceProfile","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"LaunchTemplate":{"id":"LaunchTemplate","path":"aws-cdk-eks-cluster/Cluster/Nodes/LaunchTemplate","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.LaunchTemplate","version":"0.0.0","metadata":[{"machineImage":"*","instanceType":"*","detailedMonitoring":false,"securityGroup":"*","userData":"*","associatePublicIpAddress":"*","spotOptions":"*","blockDevices":"*","instanceProfile":"*","keyPair":"*"},{"addSecurityGroup":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodes/LaunchTemplate/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnLaunchTemplate","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::LaunchTemplate","aws:cdk:cloudformation:props":{"launchTemplateData":{"iamInstanceProfile":{"arn":{"Fn::GetAtt":["ClusterNodesInstanceProfileF2DD0E21","Arn"]}},"imageId":{"Ref":"SsmParameterValueawsserviceeksoptimizedami132amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"},"instanceType":"t2.medium","monitoring":{"enabled":false},"securityGroupIds":[{"Fn::GetAtt":["ClusterNodesInstanceSecurityGroup899246BD","GroupId"]},{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}],"tagSpecifications":[{"resourceType":"instance","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/Nodes/LaunchTemplate"}]},{"resourceType":"volume","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/Nodes/LaunchTemplate"}]}],"userData":{"Fn::Base64":{"Fn::Join":["",["#!/bin/bash\nset -o xtrace\n/etc/eks/bootstrap.sh ",{"Ref":"ClusterEB0386A7"}," --kubelet-extra-args \"--node-labels lifecycle=OnDemand\" --apiserver-endpoint '",{"Fn::GetAtt":["ClusterEB0386A7","Endpoint"]},"' --b64-cluster-ca '",{"Fn::GetAtt":["ClusterEB0386A7","CertificateAuthorityData"]},"' --use-max-pods true\n/opt/aws/bin/cfn-signal --exit-code $? --stack aws-cdk-eks-cluster --resource ClusterNodesASGF172BD19 --region us-east-1"]]}}},"tagSpecifications":[{"resourceType":"launch-template","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/Nodes/LaunchTemplate"}]}]}}}}},"ASG":{"id":"ASG","path":"aws-cdk-eks-cluster/Cluster/Nodes/ASG","constructInfo":{"fqn":"aws-cdk-lib.aws_autoscaling.CfnAutoScalingGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::AutoScaling::AutoScalingGroup","aws:cdk:cloudformation:props":{"launchTemplate":{"launchTemplateId":{"Ref":"ClusterNodesLaunchTemplateD1028D0D"},"version":{"Fn::GetAtt":["ClusterNodesLaunchTemplateD1028D0D","LatestVersionNumber"]}},"maxSize":"3","minSize":"3","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned","propagateAtLaunch":true},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/Nodes","propagateAtLaunch":true}],"vpcZoneIdentifier":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}},"InstanceRoleARN":{"id":"InstanceRoleARN","path":"aws-cdk-eks-cluster/Cluster/Nodes/InstanceRoleARN","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}}}},"NodesArm":{"id":"NodesArm","path":"aws-cdk-eks-cluster/Cluster/NodesArm","constructInfo":{"fqn":"aws-cdk-lib.aws_autoscaling.AutoScalingGroup","version":"0.0.0","metadata":[{"instanceType":"*","minCapacity":"*","vpc":"*","machineImage":"*"},{"addSecurityGroup":["*"]},{"addUserData":["*","*","*"]}]},"children":{"InstanceSecurityGroup":{"id":"InstanceSecurityGroup","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","allowAllOutbound":true},{"addIngressRule":["*",{},"*"]},{"addEgressRule":["*",{},"*"]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addEgressRule":["*",{},"*",false]},{"addEgressRule":["*",{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addIngressRule":["*",{},"*"]},{"addEgressRule":["*",{},"*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceSecurityGroup/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":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceSecurityGroup","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"tags":[{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/NodesArm"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceSecurityGroup/from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterNodesArmInstanceSecurityGroup37959CA0:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]}}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":443}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}}}}}},"InstanceRole":{"id":"InstanceRole","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportInstanceRole":{"id":"ImportInstanceRole","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceRole/ImportInstanceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}],"tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/NodesArm"}]}}}}},"InstanceProfile":{"id":"InstanceProfile","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceProfile","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnInstanceProfile","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::InstanceProfile","aws:cdk:cloudformation:props":{"roles":[{"Ref":"ClusterNodesArmInstanceRoleB93D3298"}]}}},"ImportedInstanceProfile":{"id":"ImportedInstanceProfile","path":"aws-cdk-eks-cluster/Cluster/NodesArm/ImportedInstanceProfile","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"LaunchTemplate":{"id":"LaunchTemplate","path":"aws-cdk-eks-cluster/Cluster/NodesArm/LaunchTemplate","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.LaunchTemplate","version":"0.0.0","metadata":[{"machineImage":"*","instanceType":"*","detailedMonitoring":false,"securityGroup":"*","userData":"*","associatePublicIpAddress":"*","spotOptions":"*","blockDevices":"*","instanceProfile":"*","keyPair":"*"},{"addSecurityGroup":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/NodesArm/LaunchTemplate/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnLaunchTemplate","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::LaunchTemplate","aws:cdk:cloudformation:props":{"launchTemplateData":{"iamInstanceProfile":{"arn":{"Fn::GetAtt":["ClusterNodesArmInstanceProfile158C5C9F","Arn"]}},"imageId":{"Ref":"SsmParameterValueawsserviceeksoptimizedami132amazonlinux2arm64recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"},"instanceType":"m6g.medium","monitoring":{"enabled":false},"securityGroupIds":[{"Fn::GetAtt":["ClusterNodesArmInstanceSecurityGroup599F388B","GroupId"]},{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}],"tagSpecifications":[{"resourceType":"instance","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/NodesArm/LaunchTemplate"}]},{"resourceType":"volume","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/NodesArm/LaunchTemplate"}]}],"userData":{"Fn::Base64":{"Fn::Join":["",["#!/bin/bash\nset -o xtrace\n/etc/eks/bootstrap.sh ",{"Ref":"ClusterEB0386A7"}," --kubelet-extra-args \"--node-labels lifecycle=OnDemand\" --apiserver-endpoint '",{"Fn::GetAtt":["ClusterEB0386A7","Endpoint"]},"' --b64-cluster-ca '",{"Fn::GetAtt":["ClusterEB0386A7","CertificateAuthorityData"]},"' --use-max-pods true\n/opt/aws/bin/cfn-signal --exit-code $? --stack aws-cdk-eks-cluster --resource ClusterNodesArmASG40A593D0 --region us-east-1"]]}}},"tagSpecifications":[{"resourceType":"launch-template","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/NodesArm/LaunchTemplate"}]}]}}}}},"ASG":{"id":"ASG","path":"aws-cdk-eks-cluster/Cluster/NodesArm/ASG","constructInfo":{"fqn":"aws-cdk-lib.aws_autoscaling.CfnAutoScalingGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::AutoScaling::AutoScalingGroup","aws:cdk:cloudformation:props":{"launchTemplate":{"launchTemplateId":{"Ref":"ClusterNodesArmLaunchTemplateB6CFBA44"},"version":{"Fn::GetAtt":["ClusterNodesArmLaunchTemplateB6CFBA44","LatestVersionNumber"]}},"maxSize":"1","minSize":"1","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned","propagateAtLaunch":true},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/NodesArm","propagateAtLaunch":true}],"vpcZoneIdentifier":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}},"InstanceRoleARN":{"id":"InstanceRoleARN","path":"aws-cdk-eks-cluster/Cluster/NodesArm/InstanceRoleARN","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}}}},"BottlerocketNodes":{"id":"BottlerocketNodes","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes","constructInfo":{"fqn":"aws-cdk-lib.aws_autoscaling.AutoScalingGroup","version":"0.0.0","metadata":[{"instanceType":"*","minCapacity":"*","vpc":"*","machineImage":"*"},{"addSecurityGroup":["*"]},{"addUserData":["*","*","*","*"]}]},"children":{"InstanceSecurityGroup":{"id":"InstanceSecurityGroup","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","allowAllOutbound":true},{"addIngressRule":["*",{},"*"]},{"addEgressRule":["*",{},"*"]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addEgressRule":["*",{},"*",false]},{"addEgressRule":["*",{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addIngressRule":["*",{},"*"]},{"addEgressRule":["*",{},"*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceSecurityGroup/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":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceSecurityGroup","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"tags":[{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceSecurityGroup/from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterBottlerocketNodesInstanceSecurityGroupCDA88166:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]}}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":443}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}}}}}},"InstanceRole":{"id":"InstanceRole","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportInstanceRole":{"id":"ImportInstanceRole","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceRole/ImportInstanceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}],"tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes"}]}}}}},"InstanceProfile":{"id":"InstanceProfile","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceProfile","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnInstanceProfile","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::InstanceProfile","aws:cdk:cloudformation:props":{"roles":[{"Ref":"ClusterBottlerocketNodesInstanceRole68E4BCFB"}]}}},"ImportedInstanceProfile":{"id":"ImportedInstanceProfile","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/ImportedInstanceProfile","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"LaunchTemplate":{"id":"LaunchTemplate","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/LaunchTemplate","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.LaunchTemplate","version":"0.0.0","metadata":[{"machineImage":"*","instanceType":"*","detailedMonitoring":false,"securityGroup":"*","userData":"*","associatePublicIpAddress":"*","spotOptions":"*","blockDevices":"*","instanceProfile":"*","keyPair":"*"},{"addSecurityGroup":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/LaunchTemplate/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnLaunchTemplate","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::LaunchTemplate","aws:cdk:cloudformation:props":{"launchTemplateData":{"iamInstanceProfile":{"arn":{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceProfileB6E2F25A","Arn"]}},"imageId":{"Ref":"SsmParameterValueawsservicebottlerocketawsk8s132x8664latestimageidC96584B6F00A464EAD1953AFF4B05118Parameter"},"instanceType":"t3.small","monitoring":{"enabled":false},"securityGroupIds":[{"Fn::GetAtt":["ClusterBottlerocketNodesInstanceSecurityGroup3794A94B","GroupId"]},{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}],"tagSpecifications":[{"resourceType":"instance","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/LaunchTemplate"}]},{"resourceType":"volume","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/LaunchTemplate"}]}],"userData":{"Fn::Base64":{"Fn::Join":["",["\n[settings.kubernetes]\napi-server=\"",{"Fn::GetAtt":["ClusterEB0386A7","Endpoint"]},"\"\ncluster-certificate=\"",{"Fn::GetAtt":["ClusterEB0386A7","CertificateAuthorityData"]},"\"\ncluster-name=\"",{"Ref":"ClusterEB0386A7"},"\""]]}}},"tagSpecifications":[{"resourceType":"launch-template","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/LaunchTemplate"}]}]}}}}},"ASG":{"id":"ASG","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/ASG","constructInfo":{"fqn":"aws-cdk-lib.aws_autoscaling.CfnAutoScalingGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::AutoScaling::AutoScalingGroup","aws:cdk:cloudformation:props":{"launchTemplate":{"launchTemplateId":{"Ref":"ClusterBottlerocketNodesLaunchTemplate54246C29"},"version":{"Fn::GetAtt":["ClusterBottlerocketNodesLaunchTemplate54246C29","LatestVersionNumber"]}},"maxSize":"2","minSize":"2","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned","propagateAtLaunch":true},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes","propagateAtLaunch":true}],"vpcZoneIdentifier":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}},"InstanceRoleARN":{"id":"InstanceRoleARN","path":"aws-cdk-eks-cluster/Cluster/BottlerocketNodes/InstanceRoleARN","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}}}},"spot":{"id":"spot","path":"aws-cdk-eks-cluster/Cluster/spot","constructInfo":{"fqn":"aws-cdk-lib.aws_autoscaling.AutoScalingGroup","version":"0.0.0","metadata":[{"spotPrice":"*","instanceType":"*","maxCapacity":"*","vpc":"*","machineImage":"*"},{"addSecurityGroup":["*"]},{"addUserData":["*","*","*"]}]},"children":{"InstanceSecurityGroup":{"id":"InstanceSecurityGroup","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","allowAllOutbound":true},{"addIngressRule":["*",{},"*"]},{"addEgressRule":["*",{},"*"]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addIngressRule":["*",{},"*",false]},{"addEgressRule":["*",{},"*",false]},{"addEgressRule":["*",{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addEgressRule":[{"canInlineRule":true,"connections":"*","uniqueId":"*"},{},"*",false]},{"addIngressRule":["*",{},"*"]},{"addEgressRule":["*",{},"*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceSecurityGroup/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":"aws-cdk-eks-cluster/Cluster/spot/InstanceSecurityGroup","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"tags":[{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/spot"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceSecurityGroup/from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterspotInstanceSecurityGroup888199F5:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]}}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":443}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:443","fromPort":443,"groupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":443}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535":{"id":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceSecurityGroup/from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterControlPlaneSecurityGroupA0FC1FC2:1025-65535","fromPort":1025,"groupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]},"ipProtocol":"tcp","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]},"toPort":65535}}},"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC":{"id":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceSecurityGroup/from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnSecurityGroupIngress","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::SecurityGroupIngress","aws:cdk:cloudformation:props":{"description":"from awscdkeksclusterClusterClusterSecurityGroup9876E2FB:ALL TRAFFIC","groupId":{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]},"ipProtocol":"-1","sourceSecurityGroupId":{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}}}}}},"InstanceRole":{"id":"InstanceRole","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportInstanceRole":{"id":"ImportInstanceRole","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceRole/ImportInstanceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}],"tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/spot"}]}}}}},"InstanceProfile":{"id":"InstanceProfile","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceProfile","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnInstanceProfile","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::InstanceProfile","aws:cdk:cloudformation:props":{"roles":[{"Ref":"ClusterspotInstanceRole39043830"}]}}},"ImportedInstanceProfile":{"id":"ImportedInstanceProfile","path":"aws-cdk-eks-cluster/Cluster/spot/ImportedInstanceProfile","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"LaunchTemplate":{"id":"LaunchTemplate","path":"aws-cdk-eks-cluster/Cluster/spot/LaunchTemplate","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.LaunchTemplate","version":"0.0.0","metadata":[{"machineImage":"*","instanceType":"*","detailedMonitoring":false,"securityGroup":"*","userData":"*","associatePublicIpAddress":"*","spotOptions":{"maxPrice":"*"},"blockDevices":"*","instanceProfile":"*","keyPair":"*"},{"addSecurityGroup":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/spot/LaunchTemplate/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnLaunchTemplate","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::LaunchTemplate","aws:cdk:cloudformation:props":{"launchTemplateData":{"iamInstanceProfile":{"arn":{"Fn::GetAtt":["ClusterspotInstanceProfileAB88D077","Arn"]}},"imageId":{"Ref":"SsmParameterValueawsserviceeksoptimizedami132amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"},"instanceType":"t3.large","instanceMarketOptions":{"marketType":"spot","spotOptions":{"maxPrice":"0.1094"}},"monitoring":{"enabled":false},"securityGroupIds":[{"Fn::GetAtt":["ClusterspotInstanceSecurityGroup01F7B1CE","GroupId"]},{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}],"tagSpecifications":[{"resourceType":"instance","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/spot/LaunchTemplate"}]},{"resourceType":"volume","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/spot/LaunchTemplate"}]}],"userData":{"Fn::Base64":{"Fn::Join":["",["#!/bin/bash\nset -o xtrace\n/etc/eks/bootstrap.sh ",{"Ref":"ClusterEB0386A7"}," --kubelet-extra-args \"--node-labels lifecycle=Ec2Spot --register-with-taints=spotInstance=true:PreferNoSchedule --node-labels foo=bar,goo=far\" --apiserver-endpoint '",{"Fn::GetAtt":["ClusterEB0386A7","Endpoint"]},"' --b64-cluster-ca '",{"Fn::GetAtt":["ClusterEB0386A7","CertificateAuthorityData"]},"' --use-max-pods true --aws-api-retry-attempts 5\n/opt/aws/bin/cfn-signal --exit-code $? --stack aws-cdk-eks-cluster --resource ClusterspotASG857494B6 --region us-east-1"]]}}},"tagSpecifications":[{"resourceType":"launch-template","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned"},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/spot/LaunchTemplate"}]}]}}}}},"ASG":{"id":"ASG","path":"aws-cdk-eks-cluster/Cluster/spot/ASG","constructInfo":{"fqn":"aws-cdk-lib.aws_autoscaling.CfnAutoScalingGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::AutoScaling::AutoScalingGroup","aws:cdk:cloudformation:props":{"launchTemplate":{"launchTemplateId":{"Ref":"ClusterspotLaunchTemplate5652F38D"},"version":{"Fn::GetAtt":["ClusterspotLaunchTemplate5652F38D","LatestVersionNumber"]}},"maxSize":"10","minSize":"1","tags":[{"key":{"Fn::Join":["",["kubernetes.io/cluster/",{"Ref":"ClusterEB0386A7"}]]},"value":"owned","propagateAtLaunch":true},{"key":"Name","value":"aws-cdk-eks-cluster/Cluster/spot","propagateAtLaunch":true}],"vpcZoneIdentifier":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}},"InstanceRoleARN":{"id":"InstanceRoleARN","path":"aws-cdk-eks-cluster/Cluster/spot/InstanceRoleARN","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}}}},"Nodegroupextra-ng":{"id":"Nodegroupextra-ng","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_x86_64","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["t3.small"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupextrangNodeGroupRole23AE23D0","Arn"]},"scalingConfig":{"desiredSize":1,"maxSize":4,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"updateConfig":{"maxUnavailable":3}}}}}},"Nodegroupextra-ng-spot":{"id":"Nodegroupextra-ng-spot","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-spot","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-spot/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-spot/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-spot/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-spot/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_x86_64","capacityType":"SPOT","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["c5.large","c5a.large","m7i-flex.large"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupextrangspotNodeGroupRoleB53B4857","Arn"]},"scalingConfig":{"desiredSize":3,"maxSize":3,"minSize":3},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"Nodegroupextra-ng-arm":{"id":"Nodegroupextra-ng-arm","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_ARM_64","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["m6g.medium"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupextrangarmNodeGroupRoleADF5749F","Arn"]},"scalingConfig":{"desiredSize":1,"maxSize":1,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"updateConfig":{"maxUnavailablePercentage":33}}}}}},"Nodegroupextra-ng-arm3":{"id":"Nodegroupextra-ng-arm3","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm3","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm3/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm3/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm3/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-arm3/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_ARM_64","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["c7g.large"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupextrangarm3NodeGroupRole3A6AB3EC","Arn"]},"scalingConfig":{"desiredSize":1,"maxSize":1,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"Nodegroupextra-ng2":{"id":"Nodegroupextra-ng2","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng2","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng2/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"launchTemplate":{"id":{"Ref":"LaunchTemplate"},"version":{"Fn::GetAtt":["LaunchTemplate","DefaultVersionNumber"]}},"nodeRole":{"Fn::GetAtt":["ClusterNodegroupDefaultCapacityNodeGroupRole55953B04","Arn"]},"scalingConfig":{"desiredSize":1,"maxSize":1,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"Nodegroupextra-ng-gpu":{"id":"Nodegroupextra-ng-gpu","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-gpu","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-gpu/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-gpu/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-gpu/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/Nodegroupextra-ng-gpu/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_x86_64_GPU","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["p2.xlarge","g5.xlarge","g6e.xlarge"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupextranggpuNodeGroupRoleBCDD4AB4","Arn"]},"scalingConfig":{"desiredSize":1,"maxSize":1,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"manifest-HelloApp":{"id":"manifest-HelloApp","path":"aws-cdk-eks-cluster/Cluster/manifest-HelloApp","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/manifest-HelloApp/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/manifest-HelloApp/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-dashboard":{"id":"chart-dashboard","path":"aws-cdk-eks-cluster/Cluster/chart-dashboard","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/chart-dashboard/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/chart-dashboard/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-test-chart":{"id":"chart-test-chart","path":"aws-cdk-eks-cluster/Cluster/chart-test-chart","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/chart-test-chart/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/chart-test-chart/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"cdk8s-chart":{"id":"cdk8s-chart","path":"aws-cdk-eks-cluster/Cluster/cdk8s-chart","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/cdk8s-chart/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/cdk8s-chart/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"manifest-nginx-namespace":{"id":"manifest-nginx-namespace","path":"aws-cdk-eks-cluster/Cluster/manifest-nginx-namespace","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/manifest-nginx-namespace/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/manifest-nginx-namespace/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-nginx-ingress":{"id":"chart-nginx-ingress","path":"aws-cdk-eks-cluster/Cluster/chart-nginx-ingress","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/chart-nginx-ingress/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/chart-nginx-ingress/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"MyServiceAccount":{"id":"MyServiceAccount","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.ServiceAccount","version":"0.0.0"},"children":{"ConditionJson":{"id":"ConditionJson","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount/ConditionJson","constructInfo":{"fqn":"aws-cdk-lib.CfnJson","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount/ConditionJson/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount/ConditionJson/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount/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:AssumeRoleWithWebIdentity","Condition":{"StringEquals":{"Fn::GetAtt":["ClusterMyServiceAccountConditionJson671C0633","Value"]}},"Effect":"Allow","Principal":{"Federated":{"Ref":"ClusterOpenIdConnectProviderE7EB0530"}}}],"Version":"2012-10-17"}}}}}},"manifest-MyServiceAccountServiceAccountResource":{"id":"manifest-MyServiceAccountServiceAccountResource","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount/manifest-MyServiceAccountServiceAccountResource","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount/manifest-MyServiceAccountServiceAccountResource/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/MyServiceAccount/manifest-MyServiceAccountServiceAccountResource/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"OpenIdConnectProvider":{"id":"OpenIdConnectProvider","path":"aws-cdk-eks-cluster/Cluster/OpenIdConnectProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.OpenIdConnectProvider","version":"0.0.0","metadata":["*","*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/OpenIdConnectProvider/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/OpenIdConnectProvider/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"MyExtendedServiceAccount":{"id":"MyExtendedServiceAccount","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.ServiceAccount","version":"0.0.0"},"children":{"ConditionJson":{"id":"ConditionJson","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount/ConditionJson","constructInfo":{"fqn":"aws-cdk-lib.CfnJson","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount/ConditionJson/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount/ConditionJson/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount/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:AssumeRoleWithWebIdentity","Condition":{"StringEquals":{"Fn::GetAtt":["ClusterMyExtendedServiceAccountConditionJsonF780F28A","Value"]}},"Effect":"Allow","Principal":{"Federated":{"Ref":"ClusterOpenIdConnectProviderE7EB0530"}}}],"Version":"2012-10-17"}}}}}},"manifest-MyExtendedServiceAccountServiceAccountResource":{"id":"manifest-MyExtendedServiceAccountServiceAccountResource","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount/manifest-MyExtendedServiceAccountServiceAccountResource","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount/manifest-MyExtendedServiceAccountServiceAccountResource/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/Cluster/MyExtendedServiceAccount/manifest-MyExtendedServiceAccountServiceAccountResource/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}}}},"SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter":{"id":"SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","path":"aws-cdk-eks-cluster/SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118":{"id":"SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118","path":"aws-cdk-eks-cluster/SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2-arm64--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter":{"id":"SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2-arm64--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","path":"aws-cdk-eks-cluster/SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2-arm64--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2-arm64--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118":{"id":"SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2-arm64--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118","path":"aws-cdk-eks-cluster/SsmParameterValue:--aws--service--eks--optimized-ami--1.32--amazon-linux-2-arm64--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"SsmParameterValue:--aws--service--bottlerocket--aws-k8s-1.32--x86_64--latest--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter":{"id":"SsmParameterValue:--aws--service--bottlerocket--aws-k8s-1.32--x86_64--latest--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","path":"aws-cdk-eks-cluster/SsmParameterValue:--aws--service--bottlerocket--aws-k8s-1.32--x86_64--latest--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"SsmParameterValue:--aws--service--bottlerocket--aws-k8s-1.32--x86_64--latest--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118":{"id":"SsmParameterValue:--aws--service--bottlerocket--aws-k8s-1.32--x86_64--latest--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118","path":"aws-cdk-eks-cluster/SsmParameterValue:--aws--service--bottlerocket--aws-k8s-1.32--x86_64--latest--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"SsmParameterValue:--aws--service--eks--optimized-ami--1.25--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter":{"id":"SsmParameterValue:--aws--service--eks--optimized-ami--1.25--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","path":"aws-cdk-eks-cluster/SsmParameterValue:--aws--service--eks--optimized-ami--1.25--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"SsmParameterValue:--aws--service--eks--optimized-ami--1.25--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118":{"id":"SsmParameterValue:--aws--service--eks--optimized-ami--1.25--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118","path":"aws-cdk-eks-cluster/SsmParameterValue:--aws--service--eks--optimized-ami--1.25--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"LaunchTemplate":{"id":"LaunchTemplate","path":"aws-cdk-eks-cluster/LaunchTemplate","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnLaunchTemplate","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::LaunchTemplate","aws:cdk:cloudformation:props":{"launchTemplateData":{"imageId":{"Ref":"SsmParameterValueawsserviceeksoptimizedami125amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"},"instanceType":"t3.small","userData":{"Fn::Base64":{"Fn::Join":["",["#!/bin/bash\nset -o xtrace\n/etc/eks/bootstrap.sh ",{"Ref":"ClusterEB0386A7"}]]}}}}}},"HelloAppWithoutValidation":{"id":"HelloAppWithoutValidation","path":"aws-cdk-eks-cluster/HelloAppWithoutValidation","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster/HelloAppWithoutValidation/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/HelloAppWithoutValidation/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"ChartAsset":{"id":"ChartAsset","path":"aws-cdk-eks-cluster/ChartAsset","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster/ChartAsset/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster/ChartAsset/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider":{"id":"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","path":"aws-cdk-eks-cluster/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-cluster/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"AWSCDKCfnUtilsProviderCustomResourceProvider":{"id":"AWSCDKCfnUtilsProviderCustomResourceProvider","path":"aws-cdk-eks-cluster/AWSCDKCfnUtilsProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-cluster/AWSCDKCfnUtilsProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster/AWSCDKCfnUtilsProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster/AWSCDKCfnUtilsProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"ClusterEndpoint":{"id":"ClusterEndpoint","path":"aws-cdk-eks-cluster/ClusterEndpoint","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"ClusterArn":{"id":"ClusterArn","path":"aws-cdk-eks-cluster/ClusterArn","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"ClusterCertificateAuthorityData":{"id":"ClusterCertificateAuthorityData","path":"aws-cdk-eks-cluster/ClusterCertificateAuthorityData","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"ClusterSecurityGroupId":{"id":"ClusterSecurityGroupId","path":"aws-cdk-eks-cluster/ClusterSecurityGroupId","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"ClusterEncryptionConfigKeyArn":{"id":"ClusterEncryptionConfigKeyArn","path":"aws-cdk-eks-cluster/ClusterEncryptionConfigKeyArn","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"ClusterName":{"id":"ClusterName","path":"aws-cdk-eks-cluster/ClusterName","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"NodegroupName":{"id":"NodegroupName","path":"aws-cdk-eks-cluster/NodegroupName","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-cluster-integ":{"id":"aws-cdk-eks-cluster-integ","path":"aws-cdk-eks-cluster-integ","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-cluster-integ/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-integ/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-cluster-integ/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-integ/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-integ/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/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py new file mode 100644 index 0000000000000..6664adf77090d --- /dev/null +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py @@ -0,0 +1,250 @@ +import json +import logging +import os +import re +import subprocess +import shutil +import tempfile +import zipfile +import boto3 + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + +# these are coming from the kubectl layer +os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] + +outdir = os.environ.get('TEST_OUTDIR', '/tmp') +kubeconfig = os.path.join(outdir, 'kubeconfig') + +def get_chart_asset_from_url(chart_asset_url): + chart_zip = os.path.join(outdir, 'chart.zip') + shutil.rmtree(chart_zip, ignore_errors=True) + subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) + chart_dir = os.path.join(outdir, 'chart') + shutil.rmtree(chart_dir, ignore_errors=True) + os.mkdir(chart_dir) + with zipfile.ZipFile(chart_zip, 'r') as zip_ref: + zip_ref.extractall(chart_dir) + return chart_dir + +def is_ecr_public_available(region): + s = boto3.Session() + return s.get_partition_for_region(region) == 'aws' + +def helm_handler(event, context): + logger.info(json.dumps(dict(event, ResponseURL='...'))) + + request_type = event['RequestType'] + props = event['ResourceProperties'] + + # resource properties + cluster_name = props['ClusterName'] + release = props['Release'] + chart = props.get('Chart', None) + chart_asset_url = props.get('ChartAssetURL', None) + version = props.get('Version', None) + wait = props.get('Wait', False) + atomic = props.get('Atomic', False) + timeout = props.get('Timeout', None) + namespace = props.get('Namespace', None) + create_namespace = props.get('CreateNamespace', None) + repository = props.get('Repository', None) + values_text = props.get('Values', None) + skip_crds = props.get('SkipCrds', False) + + # "log in" to the cluster + subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', + '--name', cluster_name, + '--kubeconfig', kubeconfig + ]) + + if os.path.isfile(kubeconfig): + os.chmod(kubeconfig, 0o600) + + # Write out the values to a file and include them with the install and upgrade + values_file = None + if not request_type == "Delete" and not values_text is None: + values = json.loads(values_text) + values_file = os.path.join(outdir, 'values.yaml') + with open(values_file, "w") as f: + f.write(json.dumps(values, indent=2)) + + if request_type == 'Create' or request_type == 'Update': + # Ensure chart or chart_asset_url are set + if chart == None and chart_asset_url == None: + raise RuntimeError(f'chart or chartAsset must be specified') + + if chart_asset_url != None: + assert(chart==None) + assert(repository==None) + assert(version==None) + if not chart_asset_url.startswith('s3://'): + raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') + # future work: support versions from s3 assets + chart = get_chart_asset_from_url(chart_asset_url) + + if repository is not None and repository.startswith('oci://'): + tmpdir = tempfile.TemporaryDirectory() + chart_dir = get_chart_from_oci(tmpdir.name, repository, version) + chart = chart_dir + + helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) + elif request_type == "Delete": + try: + helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) + except Exception as e: + logger.info("delete error: %s" % e) + + +def get_oci_cmd(repository, version): + # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. + private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' + public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' + + private_registry = re.match(private_ecr_pattern, repository).groupdict() + public_registry = re.match(public_ecr_pattern, repository).groupdict() + + # Build helm pull command as array + helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] + + if private_registry['registry'] is not None: + logger.info("Found AWS private repository") + ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + elif public_registry['registry'] is not None: + logger.info("Found AWS public repository, will use default region as deployment") + region = os.environ.get('AWS_REGION', 'us-east-1') + + if is_ecr_public_available(region): + # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html + ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + else: + # No login required for public ECR in non-aws regions + # see https://helm.sh/docs/helm/helm_registry_login/ + return {'helm': helm_cmd} + else: + logger.error("OCI repository format not recognized, falling back to helm pull") + return {'helm': helm_cmd} + + +def get_chart_from_oci(tmpdir, repository=None, version=None): + from subprocess import Popen, PIPE + + commands = get_oci_cmd(repository, version) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + # Execute login commands if needed + if 'ecr_login' in commands and 'helm_registry_login' in commands: + logger.info("Running login command: %s", commands['ecr_login']) + logger.info("Running registry login command: %s", commands['helm_registry_login']) + + # Start first process: aws ecr get-login-password + # NOTE: We do NOT call p1.wait() here before starting p2. + # Doing so could deadlock if p1's output fills the pipe buffer + # before p2 starts reading. Instead, start p2 immediately so it + # can consume p1's stdout as it's produced. + p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) + + # Start second process: helm registry login + p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) + p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early + + # Wait for p2 to finish first (ensures full pipeline completes) + _, p2_err = p2.communicate() + + # Now wait for p1 so we have a complete stderr and an exit code + p1.wait() + + # Handle p1 failure + if p1.returncode != 0: + p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' + logger.error( + "ECR get-login-password failed for repository %s. Error: %s", + repository, + p1_err or "No error details" + ) + raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) + + # Handle p2 failure + if p2.returncode != 0: + logger.error( + "Helm registry authentication failed for repository %s. Error: %s", + repository, + p2_err.decode('utf-8', errors='replace') or "No error details" + ) + raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) + + # Execute helm pull command + logger.info("Running helm command: %s", commands['helm']) + output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) + logger.info(output) + + # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. + # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service + return os.path.join(tmpdir, repository.rpartition('/')[-1]) + + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + raise Exception(output) + + raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') + + +def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): + cmnd = ['helm', verb, release] + if not chart is None: + cmnd.append(chart) + if verb == 'upgrade': + cmnd.append('--install') + if create_namespace: + cmnd.append('--create-namespace') + if not repo is None: + cmnd.extend(['--repo', repo]) + if not file is None: + cmnd.extend(['--values', file]) + if not version is None: + cmnd.extend(['--version', version]) + if not namespace is None: + cmnd.extend(['--namespace', namespace]) + if wait: + cmnd.append('--wait') + if skip_crds: + cmnd.append('--skip-crds') + if not timeout is None: + cmnd.extend(['--timeout', timeout]) + if atomic: + cmnd.append('--atomic') + cmnd.extend(['--kubeconfig', kubeconfig]) + + # Log the full helm command for better troubleshooting + logger.info("Running command: %s", cmnd) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) + logger.info(output.decode('utf-8', errors='replace')) + return + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + error_message = output.decode('utf-8', errors='replace') + logger.error("Command failed: %s", cmnd) + logger.error("Error output: %s", error_message) + raise Exception(output) + raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py deleted file mode 100644 index 6c7838f182a45..0000000000000 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py +++ /dev/null @@ -1,250 +0,0 @@ -import json -import logging -import os -import re -import subprocess -import shutil -import tempfile -import zipfile -import boto3 - -logger = logging.getLogger() -logger.setLevel(logging.INFO) - -# these are coming from the kubectl layer -os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] - -outdir = os.environ.get('TEST_OUTDIR', '/tmp') -kubeconfig = os.path.join(outdir, 'kubeconfig') - -def get_chart_asset_from_url(chart_asset_url): - chart_zip = os.path.join(outdir, 'chart.zip') - shutil.rmtree(chart_zip, ignore_errors=True) - subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) - chart_dir = os.path.join(outdir, 'chart') - shutil.rmtree(chart_dir, ignore_errors=True) - os.mkdir(chart_dir) - with zipfile.ZipFile(chart_zip, 'r') as zip_ref: - zip_ref.extractall(chart_dir) - return chart_dir - -def is_ecr_public_available(region): - s = boto3.Session() - return s.get_partition_for_region(region) == 'aws' - -def helm_handler(event, context): - logger.info(json.dumps(dict(event, ResponseURL='...'))) - - request_type = event['RequestType'] - props = event['ResourceProperties'] - - # resource properties - cluster_name = props['ClusterName'] - release = props['Release'] - chart = props.get('Chart', None) - chart_asset_url = props.get('ChartAssetURL', None) - version = props.get('Version', None) - wait = props.get('Wait', False) - atomic = props.get('Atomic', False) - timeout = props.get('Timeout', None) - namespace = props.get('Namespace', None) - create_namespace = props.get('CreateNamespace', None) - repository = props.get('Repository', None) - values_text = props.get('Values', None) - skip_crds = props.get('SkipCrds', False) - - # "log in" to the cluster - subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', - '--name', cluster_name, - '--kubeconfig', kubeconfig - ]) - - if os.path.isfile(kubeconfig): - os.chmod(kubeconfig, 0o600) - - # Write out the values to a file and include them with the install and upgrade - values_file = None - if not request_type == "Delete" and not values_text is None: - values = json.loads(values_text) - values_file = os.path.join(outdir, 'values.yaml') - with open(values_file, "w") as f: - f.write(json.dumps(values, indent=2)) - - if request_type == 'Create' or request_type == 'Update': - # Ensure chart or chart_asset_url are set - if chart == None and chart_asset_url == None: - raise RuntimeError(f'chart or chartAsset must be specified') - - if chart_asset_url != None: - assert(chart==None) - assert(repository==None) - assert(version==None) - if not chart_asset_url.startswith('s3://'): - raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') - # future work: support versions from s3 assets - chart = get_chart_asset_from_url(chart_asset_url) - - if repository is not None and repository.startswith('oci://'): - tmpdir = tempfile.TemporaryDirectory() - chart_dir = get_chart_from_oci(tmpdir.name, repository, version) - chart = chart_dir - - helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) - elif request_type == "Delete": - try: - helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) - except Exception as e: - logger.info("delete error: %s" % e) - - -def get_oci_cmd(repository, version): - # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. - private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' - public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' - - private_registry = re.match(private_ecr_pattern, repository).groupdict() - public_registry = re.match(public_ecr_pattern, repository).groupdict() - - # Build helm pull command as array - helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] - - if private_registry['registry'] is not None: - logger.info("Found AWS private repository") - ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] - return {'ecr_login': ecr_login, 'registry_login': helm_registry_login, 'helm': helm_cmd} - elif public_registry['registry'] is not None: - logger.info("Found AWS public repository, will use default region as deployment") - region = os.environ.get('AWS_REGION', 'us-east-1') - - if is_ecr_public_available(region): - # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html - ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] - return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} - else: - # No login required for public ECR in non-aws regions - # see https://helm.sh/docs/helm/helm_registry_login/ - return {'helm': helm_cmd} - else: - logger.error("OCI repository format not recognized, falling back to helm pull") - return {'helm': helm_cmd} - - -def get_chart_from_oci(tmpdir, repository=None, version=None): - from subprocess import Popen, PIPE - - commands = get_oci_cmd(repository, version) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - # Execute login commands if needed - if 'ecr_login' in commands and 'helm_registry_login' in commands: - logger.info("Running login command: %s", commands['ecr_login']) - logger.info("Running registry login command: %s", commands['helm_registry_login']) - - # Start first process: aws ecr get-login-password - # NOTE: We do NOT call p1.wait() here before starting p2. - # Doing so could deadlock if p1's output fills the pipe buffer - # before p2 starts reading. Instead, start p2 immediately so it - # can consume p1's stdout as it's produced. - p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) - - # Start second process: helm registry login - p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) - p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early - - # Wait for p2 to finish first (ensures full pipeline completes) - _, p2_err = p2.communicate() - - # Now wait for p1 so we have a complete stderr and an exit code - p1.wait() - - # Handle p1 failure - if p1.returncode != 0: - p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' - logger.error( - "ECR get-login-password failed for repository %s. Error: %s", - repository, - p1_err or "No error details" - ) - raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) - - # Handle p2 failure - if p2.returncode != 0: - logger.error( - "Helm registry authentication failed for repository %s. Error: %s", - repository, - p2_err.decode('utf-8', errors='replace') or "No error details" - ) - raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) - - # Execute helm pull command - logger.info("Running helm command: %s", commands['helm']) - output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) - logger.info(output) - - # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. - # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service - return os.path.join(tmpdir, repository.rpartition('/')[-1]) - - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - raise Exception(output) - - raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') - - -def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): - cmnd = ['helm', verb, release] - if not chart is None: - cmnd.append(chart) - if verb == 'upgrade': - cmnd.append('--install') - if create_namespace: - cmnd.append('--create-namespace') - if not repo is None: - cmnd.extend(['--repo', repo]) - if not file is None: - cmnd.extend(['--values', file]) - if not version is None: - cmnd.extend(['--version', version]) - if not namespace is None: - cmnd.extend(['--namespace', namespace]) - if wait: - cmnd.append('--wait') - if skip_crds: - cmnd.append('--skip-crds') - if not timeout is None: - cmnd.extend(['--timeout', timeout]) - if atomic: - cmnd.append('--atomic') - cmnd.extend(['--kubeconfig', kubeconfig]) - - # Log the full helm command for better troubleshooting - logger.info("Running command: %s", cmnd) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) - logger.info(output.decode('utf-8', errors='replace')) - return - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - error_message = output.decode('utf-8', errors='replace') - logger.error("Command failed: %s", cmnd) - logger.error("Error output: %s", error_message) - raise Exception(output) - raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/aws-cdk-eks-helm-test.assets.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/aws-cdk-eks-helm-test.assets.json index 051915795a08c..bb5b143a1d079 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/aws-cdk-eks-helm-test.assets.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/aws-cdk-eks-helm-test.assets.json @@ -15,16 +15,16 @@ } } }, - "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a": { + "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9": { "displayName": "Cluster/KubectlProvider/Handler/Code", "source": { - "path": "asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a", + "path": "asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9", "packaging": "zip" }, "destinations": { - "current_account-current_region-5b09798b": { + "current_account-current_region-b8d33bdb": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip", + "objectKey": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } @@ -99,16 +99,16 @@ } } }, - "5cdf7e978507ccee1cd7ab1c5047111d06fc08212cd072f119943ca1ee18013b": { + "59ee2cf2ecf163b58671e5b39cb971ac0f4a4cb901b52c12f81de3fa06eb095e": { "displayName": "aws-cdk-eks-helm-test Template", "source": { "path": "aws-cdk-eks-helm-test.template.json", "packaging": "file" }, "destinations": { - "current_account-current_region-d5b4b021": { + "current_account-current_region-a7bfad6a": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "5cdf7e978507ccee1cd7ab1c5047111d06fc08212cd072f119943ca1ee18013b.json", + "objectKey": "59ee2cf2ecf163b58671e5b39cb971ac0f4a4cb901b52c12f81de3fa06eb095e.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/aws-cdk-eks-helm-test.template.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/aws-cdk-eks-helm-test.template.json index edcb5b9e6821c..a57bc20ed107f 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/aws-cdk-eks-helm-test.template.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/aws-cdk-eks-helm-test.template.json @@ -840,7 +840,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip" + "S3Key": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip" }, "Description": "onEvent handler for EKS kubectl resource provider", "Environment": { diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/manifest.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/manifest.json index ac311da5d575e..5a68cd5f6f8cf 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/manifest.json @@ -18,7 +18,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}/5cdf7e978507ccee1cd7ab1c5047111d06fc08212cd072f119943ca1ee18013b.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/59ee2cf2ecf163b58671e5b39cb971ac0f4a4cb901b52c12f81de3fa06eb095e.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/tree.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/tree.json index aa1095d6daece..5e2cb2b52c8cb 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-helm-asset.js.snapshot/tree.json @@ -1 +1 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-helm-test":{"id":"aws-cdk-eks-helm-test","path":"aws-cdk-eks-helm-test","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"AdminRole":{"id":"AdminRole","path":"aws-cdk-eks-helm-test/AdminRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportAdminRole":{"id":"ImportAdminRole","path":"aws-cdk-eks-helm-test/AdminRole/ImportAdminRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/AdminRole/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"]]}}}],"Version":"2012-10-17"}}}}}},"Vpc":{"id":"Vpc","path":"aws-cdk-eks-helm-test/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"natGateways":"*","restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-helm-test/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-helm-test/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-helm-test/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-helm-test/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-helm-test/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-helm-test/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"}}}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-helm-test/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-helm-test/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-helm-test/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-helm-test/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-helm-test/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-helm-test/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-helm-test/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/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","sts:TagSession"],"Effect":"Allow","Principal":{"Service":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSComputePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSBlockStoragePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSLoadBalancingPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSNetworkingPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-helm-test/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"ClusternodePoolRole":{"id":"ClusternodePoolRole","path":"aws-cdk-eks-helm-test/Cluster/ClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]}]},"children":{"ImportClusternodePoolRole":{"id":"ImportClusternodePoolRole","path":"aws-cdk-eks-helm-test/Cluster/ClusternodePoolRole/ImportClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/ClusternodePoolRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":true,"nodePools":["system","general-purpose"],"nodeRoleArn":{"Fn::GetAtt":["ClusterClusternodePoolRole69276141","Arn"]}},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":true}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":true}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-helm-test/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-helm-test/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-helm-test/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}},"mastersRoleAccess":{"id":"mastersRoleAccess","path":"aws-cdk-eks-helm-test/Cluster/mastersRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/mastersRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["AdminRole38563C57","Arn"]}}}}}},"ConfigCommand":{"id":"ConfigCommand","path":"aws-cdk-eks-helm-test/Cluster/ConfigCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"GetTokenCommand":{"id":"GetTokenCommand","path":"aws-cdk-eks-helm-test/Cluster/GetTokenCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"chart-test-chart":{"id":"chart-test-chart","path":"aws-cdk-eks-helm-test/Cluster/chart-test-chart","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/chart-test-chart/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm-test/Cluster/chart-test-chart/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-test-oci-chart":{"id":"chart-test-oci-chart","path":"aws-cdk-eks-helm-test/Cluster/chart-test-oci-chart","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/chart-test-oci-chart/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm-test/Cluster/chart-test-oci-chart/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-test-oci-chart-different-release-name":{"id":"chart-test-oci-chart-different-release-name","path":"aws-cdk-eks-helm-test/Cluster/chart-test-oci-chart-different-release-name","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/chart-test-oci-chart-different-release-name/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm-test/Cluster/chart-test-oci-chart-different-release-name/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-test-skip-crd-installation":{"id":"chart-test-skip-crd-installation","path":"aws-cdk-eks-helm-test/Cluster/chart-test-skip-crd-installation","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/chart-test-skip-crd-installation/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm-test/Cluster/chart-test-skip-crd-installation/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"ec2-controller-sa":{"id":"ec2-controller-sa","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.ServiceAccount","version":"0.0.0"},"children":{"ConditionJson":{"id":"ConditionJson","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa/ConditionJson","constructInfo":{"fqn":"aws-cdk-lib.CfnJson","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa/ConditionJson/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa/ConditionJson/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Role":{"id":"Role","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa/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:AssumeRoleWithWebIdentity","Condition":{"StringEquals":{"Fn::GetAtt":["Clusterec2controllersaConditionJson93A80A33","Value"]}},"Effect":"Allow","Principal":{"Federated":{"Ref":"ClusterOpenIdConnectProviderE7EB0530"}}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2FullAccess"]]}]}}}}},"manifest-ec2-controller-saServiceAccountResource":{"id":"manifest-ec2-controller-saServiceAccountResource","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa/manifest-ec2-controller-saServiceAccountResource","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa/manifest-ec2-controller-saServiceAccountResource/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa/manifest-ec2-controller-saServiceAccountResource/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"OpenIdConnectProvider":{"id":"OpenIdConnectProvider","path":"aws-cdk-eks-helm-test/Cluster/OpenIdConnectProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.OpenIdConnectProvider","version":"0.0.0","metadata":["*","*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/OpenIdConnectProvider/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm-test/Cluster/OpenIdConnectProvider/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-test-atomic-installation":{"id":"chart-test-atomic-installation","path":"aws-cdk-eks-helm-test/Cluster/chart-test-atomic-installation","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/chart-test-atomic-installation/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm-test/Cluster/chart-test-atomic-installation/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-test-non-ecr-oci-chart":{"id":"chart-test-non-ecr-oci-chart","path":"aws-cdk-eks-helm-test/Cluster/chart-test-non-ecr-oci-chart","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/chart-test-non-ecr-oci-chart/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm-test/Cluster/chart-test-non-ecr-oci-chart/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-eks-helm-test/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"ChartAsset":{"id":"ChartAsset","path":"aws-cdk-eks-helm-test/ChartAsset","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-helm-test/ChartAsset/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-helm-test/ChartAsset/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider":{"id":"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","path":"aws-cdk-eks-helm-test/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-helm-test/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-helm-test/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-helm-test/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"AWSCDKCfnUtilsProviderCustomResourceProvider":{"id":"AWSCDKCfnUtilsProviderCustomResourceProvider","path":"aws-cdk-eks-helm-test/AWSCDKCfnUtilsProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-helm-test/AWSCDKCfnUtilsProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-helm-test/AWSCDKCfnUtilsProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-helm-test/AWSCDKCfnUtilsProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-helm-test/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-helm-test/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-helm":{"id":"aws-cdk-eks-helm","path":"aws-cdk-eks-helm","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-helm/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-helm/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-helm/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-helm/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 +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-helm-test":{"id":"aws-cdk-eks-helm-test","path":"aws-cdk-eks-helm-test","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"AdminRole":{"id":"AdminRole","path":"aws-cdk-eks-helm-test/AdminRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportAdminRole":{"id":"ImportAdminRole","path":"aws-cdk-eks-helm-test/AdminRole/ImportAdminRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/AdminRole/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"]]}}}],"Version":"2012-10-17"}}}}}},"Vpc":{"id":"Vpc","path":"aws-cdk-eks-helm-test/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"natGateways":"*","restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-helm-test/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-helm-test/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-helm-test/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-helm-test/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-helm-test/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-helm-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-helm-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-helm-test/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":"aws-cdk-eks-helm-test/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-helm-test/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"}}}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-helm-test/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-helm-test/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-helm-test/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-helm-test/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-helm-test/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-helm-test/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-helm-test/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/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","sts:TagSession"],"Effect":"Allow","Principal":{"Service":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSComputePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSBlockStoragePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSLoadBalancingPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSNetworkingPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-helm-test/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"ClusternodePoolRole":{"id":"ClusternodePoolRole","path":"aws-cdk-eks-helm-test/Cluster/ClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]}]},"children":{"ImportClusternodePoolRole":{"id":"ImportClusternodePoolRole","path":"aws-cdk-eks-helm-test/Cluster/ClusternodePoolRole/ImportClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/ClusternodePoolRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":true,"nodePools":["system","general-purpose"],"nodeRoleArn":{"Fn::GetAtt":["ClusterClusternodePoolRole69276141","Arn"]}},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":true}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":true}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-helm-test/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-helm-test/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-helm-test/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}},"mastersRoleAccess":{"id":"mastersRoleAccess","path":"aws-cdk-eks-helm-test/Cluster/mastersRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/mastersRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["AdminRole38563C57","Arn"]}}}}}},"ConfigCommand":{"id":"ConfigCommand","path":"aws-cdk-eks-helm-test/Cluster/ConfigCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"GetTokenCommand":{"id":"GetTokenCommand","path":"aws-cdk-eks-helm-test/Cluster/GetTokenCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"chart-test-chart":{"id":"chart-test-chart","path":"aws-cdk-eks-helm-test/Cluster/chart-test-chart","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/chart-test-chart/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm-test/Cluster/chart-test-chart/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-test-oci-chart":{"id":"chart-test-oci-chart","path":"aws-cdk-eks-helm-test/Cluster/chart-test-oci-chart","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/chart-test-oci-chart/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm-test/Cluster/chart-test-oci-chart/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-test-oci-chart-different-release-name":{"id":"chart-test-oci-chart-different-release-name","path":"aws-cdk-eks-helm-test/Cluster/chart-test-oci-chart-different-release-name","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/chart-test-oci-chart-different-release-name/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm-test/Cluster/chart-test-oci-chart-different-release-name/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-test-skip-crd-installation":{"id":"chart-test-skip-crd-installation","path":"aws-cdk-eks-helm-test/Cluster/chart-test-skip-crd-installation","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/chart-test-skip-crd-installation/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm-test/Cluster/chart-test-skip-crd-installation/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"ec2-controller-sa":{"id":"ec2-controller-sa","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.ServiceAccount","version":"0.0.0"},"children":{"ConditionJson":{"id":"ConditionJson","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa/ConditionJson","constructInfo":{"fqn":"aws-cdk-lib.CfnJson","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa/ConditionJson/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa/ConditionJson/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Role":{"id":"Role","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa/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:AssumeRoleWithWebIdentity","Condition":{"StringEquals":{"Fn::GetAtt":["Clusterec2controllersaConditionJson93A80A33","Value"]}},"Effect":"Allow","Principal":{"Federated":{"Ref":"ClusterOpenIdConnectProviderE7EB0530"}}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2FullAccess"]]}]}}}}},"manifest-ec2-controller-saServiceAccountResource":{"id":"manifest-ec2-controller-saServiceAccountResource","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa/manifest-ec2-controller-saServiceAccountResource","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa/manifest-ec2-controller-saServiceAccountResource/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm-test/Cluster/ec2-controller-sa/manifest-ec2-controller-saServiceAccountResource/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"OpenIdConnectProvider":{"id":"OpenIdConnectProvider","path":"aws-cdk-eks-helm-test/Cluster/OpenIdConnectProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.OpenIdConnectProvider","version":"0.0.0","metadata":["*","*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/OpenIdConnectProvider/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm-test/Cluster/OpenIdConnectProvider/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-test-atomic-installation":{"id":"chart-test-atomic-installation","path":"aws-cdk-eks-helm-test/Cluster/chart-test-atomic-installation","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/chart-test-atomic-installation/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm-test/Cluster/chart-test-atomic-installation/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"chart-test-non-ecr-oci-chart":{"id":"chart-test-non-ecr-oci-chart","path":"aws-cdk-eks-helm-test/Cluster/chart-test-non-ecr-oci-chart","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-helm-test/Cluster/chart-test-non-ecr-oci-chart/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm-test/Cluster/chart-test-non-ecr-oci-chart/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-eks-helm-test/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"ChartAsset":{"id":"ChartAsset","path":"aws-cdk-eks-helm-test/ChartAsset","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-helm-test/ChartAsset/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-helm-test/ChartAsset/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider":{"id":"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","path":"aws-cdk-eks-helm-test/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-helm-test/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-helm-test/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-helm-test/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"AWSCDKCfnUtilsProviderCustomResourceProvider":{"id":"AWSCDKCfnUtilsProviderCustomResourceProvider","path":"aws-cdk-eks-helm-test/AWSCDKCfnUtilsProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-helm-test/AWSCDKCfnUtilsProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-helm-test/AWSCDKCfnUtilsProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-helm-test/AWSCDKCfnUtilsProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-helm-test/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-helm-test/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-helm":{"id":"aws-cdk-eks-helm","path":"aws-cdk-eks-helm","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-helm/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-helm/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-helm/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-helm/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-helm/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/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py new file mode 100644 index 0000000000000..6664adf77090d --- /dev/null +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py @@ -0,0 +1,250 @@ +import json +import logging +import os +import re +import subprocess +import shutil +import tempfile +import zipfile +import boto3 + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + +# these are coming from the kubectl layer +os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] + +outdir = os.environ.get('TEST_OUTDIR', '/tmp') +kubeconfig = os.path.join(outdir, 'kubeconfig') + +def get_chart_asset_from_url(chart_asset_url): + chart_zip = os.path.join(outdir, 'chart.zip') + shutil.rmtree(chart_zip, ignore_errors=True) + subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) + chart_dir = os.path.join(outdir, 'chart') + shutil.rmtree(chart_dir, ignore_errors=True) + os.mkdir(chart_dir) + with zipfile.ZipFile(chart_zip, 'r') as zip_ref: + zip_ref.extractall(chart_dir) + return chart_dir + +def is_ecr_public_available(region): + s = boto3.Session() + return s.get_partition_for_region(region) == 'aws' + +def helm_handler(event, context): + logger.info(json.dumps(dict(event, ResponseURL='...'))) + + request_type = event['RequestType'] + props = event['ResourceProperties'] + + # resource properties + cluster_name = props['ClusterName'] + release = props['Release'] + chart = props.get('Chart', None) + chart_asset_url = props.get('ChartAssetURL', None) + version = props.get('Version', None) + wait = props.get('Wait', False) + atomic = props.get('Atomic', False) + timeout = props.get('Timeout', None) + namespace = props.get('Namespace', None) + create_namespace = props.get('CreateNamespace', None) + repository = props.get('Repository', None) + values_text = props.get('Values', None) + skip_crds = props.get('SkipCrds', False) + + # "log in" to the cluster + subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', + '--name', cluster_name, + '--kubeconfig', kubeconfig + ]) + + if os.path.isfile(kubeconfig): + os.chmod(kubeconfig, 0o600) + + # Write out the values to a file and include them with the install and upgrade + values_file = None + if not request_type == "Delete" and not values_text is None: + values = json.loads(values_text) + values_file = os.path.join(outdir, 'values.yaml') + with open(values_file, "w") as f: + f.write(json.dumps(values, indent=2)) + + if request_type == 'Create' or request_type == 'Update': + # Ensure chart or chart_asset_url are set + if chart == None and chart_asset_url == None: + raise RuntimeError(f'chart or chartAsset must be specified') + + if chart_asset_url != None: + assert(chart==None) + assert(repository==None) + assert(version==None) + if not chart_asset_url.startswith('s3://'): + raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') + # future work: support versions from s3 assets + chart = get_chart_asset_from_url(chart_asset_url) + + if repository is not None and repository.startswith('oci://'): + tmpdir = tempfile.TemporaryDirectory() + chart_dir = get_chart_from_oci(tmpdir.name, repository, version) + chart = chart_dir + + helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) + elif request_type == "Delete": + try: + helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) + except Exception as e: + logger.info("delete error: %s" % e) + + +def get_oci_cmd(repository, version): + # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. + private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' + public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' + + private_registry = re.match(private_ecr_pattern, repository).groupdict() + public_registry = re.match(public_ecr_pattern, repository).groupdict() + + # Build helm pull command as array + helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] + + if private_registry['registry'] is not None: + logger.info("Found AWS private repository") + ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + elif public_registry['registry'] is not None: + logger.info("Found AWS public repository, will use default region as deployment") + region = os.environ.get('AWS_REGION', 'us-east-1') + + if is_ecr_public_available(region): + # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html + ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + else: + # No login required for public ECR in non-aws regions + # see https://helm.sh/docs/helm/helm_registry_login/ + return {'helm': helm_cmd} + else: + logger.error("OCI repository format not recognized, falling back to helm pull") + return {'helm': helm_cmd} + + +def get_chart_from_oci(tmpdir, repository=None, version=None): + from subprocess import Popen, PIPE + + commands = get_oci_cmd(repository, version) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + # Execute login commands if needed + if 'ecr_login' in commands and 'helm_registry_login' in commands: + logger.info("Running login command: %s", commands['ecr_login']) + logger.info("Running registry login command: %s", commands['helm_registry_login']) + + # Start first process: aws ecr get-login-password + # NOTE: We do NOT call p1.wait() here before starting p2. + # Doing so could deadlock if p1's output fills the pipe buffer + # before p2 starts reading. Instead, start p2 immediately so it + # can consume p1's stdout as it's produced. + p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) + + # Start second process: helm registry login + p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) + p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early + + # Wait for p2 to finish first (ensures full pipeline completes) + _, p2_err = p2.communicate() + + # Now wait for p1 so we have a complete stderr and an exit code + p1.wait() + + # Handle p1 failure + if p1.returncode != 0: + p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' + logger.error( + "ECR get-login-password failed for repository %s. Error: %s", + repository, + p1_err or "No error details" + ) + raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) + + # Handle p2 failure + if p2.returncode != 0: + logger.error( + "Helm registry authentication failed for repository %s. Error: %s", + repository, + p2_err.decode('utf-8', errors='replace') or "No error details" + ) + raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) + + # Execute helm pull command + logger.info("Running helm command: %s", commands['helm']) + output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) + logger.info(output) + + # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. + # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service + return os.path.join(tmpdir, repository.rpartition('/')[-1]) + + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + raise Exception(output) + + raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') + + +def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): + cmnd = ['helm', verb, release] + if not chart is None: + cmnd.append(chart) + if verb == 'upgrade': + cmnd.append('--install') + if create_namespace: + cmnd.append('--create-namespace') + if not repo is None: + cmnd.extend(['--repo', repo]) + if not file is None: + cmnd.extend(['--values', file]) + if not version is None: + cmnd.extend(['--version', version]) + if not namespace is None: + cmnd.extend(['--namespace', namespace]) + if wait: + cmnd.append('--wait') + if skip_crds: + cmnd.append('--skip-crds') + if not timeout is None: + cmnd.extend(['--timeout', timeout]) + if atomic: + cmnd.append('--atomic') + cmnd.extend(['--kubeconfig', kubeconfig]) + + # Log the full helm command for better troubleshooting + logger.info("Running command: %s", cmnd) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) + logger.info(output.decode('utf-8', errors='replace')) + return + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + error_message = output.decode('utf-8', errors='replace') + logger.error("Command failed: %s", cmnd) + logger.error("Error output: %s", error_message) + raise Exception(output) + raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py deleted file mode 100644 index 6c7838f182a45..0000000000000 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py +++ /dev/null @@ -1,250 +0,0 @@ -import json -import logging -import os -import re -import subprocess -import shutil -import tempfile -import zipfile -import boto3 - -logger = logging.getLogger() -logger.setLevel(logging.INFO) - -# these are coming from the kubectl layer -os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] - -outdir = os.environ.get('TEST_OUTDIR', '/tmp') -kubeconfig = os.path.join(outdir, 'kubeconfig') - -def get_chart_asset_from_url(chart_asset_url): - chart_zip = os.path.join(outdir, 'chart.zip') - shutil.rmtree(chart_zip, ignore_errors=True) - subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) - chart_dir = os.path.join(outdir, 'chart') - shutil.rmtree(chart_dir, ignore_errors=True) - os.mkdir(chart_dir) - with zipfile.ZipFile(chart_zip, 'r') as zip_ref: - zip_ref.extractall(chart_dir) - return chart_dir - -def is_ecr_public_available(region): - s = boto3.Session() - return s.get_partition_for_region(region) == 'aws' - -def helm_handler(event, context): - logger.info(json.dumps(dict(event, ResponseURL='...'))) - - request_type = event['RequestType'] - props = event['ResourceProperties'] - - # resource properties - cluster_name = props['ClusterName'] - release = props['Release'] - chart = props.get('Chart', None) - chart_asset_url = props.get('ChartAssetURL', None) - version = props.get('Version', None) - wait = props.get('Wait', False) - atomic = props.get('Atomic', False) - timeout = props.get('Timeout', None) - namespace = props.get('Namespace', None) - create_namespace = props.get('CreateNamespace', None) - repository = props.get('Repository', None) - values_text = props.get('Values', None) - skip_crds = props.get('SkipCrds', False) - - # "log in" to the cluster - subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', - '--name', cluster_name, - '--kubeconfig', kubeconfig - ]) - - if os.path.isfile(kubeconfig): - os.chmod(kubeconfig, 0o600) - - # Write out the values to a file and include them with the install and upgrade - values_file = None - if not request_type == "Delete" and not values_text is None: - values = json.loads(values_text) - values_file = os.path.join(outdir, 'values.yaml') - with open(values_file, "w") as f: - f.write(json.dumps(values, indent=2)) - - if request_type == 'Create' or request_type == 'Update': - # Ensure chart or chart_asset_url are set - if chart == None and chart_asset_url == None: - raise RuntimeError(f'chart or chartAsset must be specified') - - if chart_asset_url != None: - assert(chart==None) - assert(repository==None) - assert(version==None) - if not chart_asset_url.startswith('s3://'): - raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') - # future work: support versions from s3 assets - chart = get_chart_asset_from_url(chart_asset_url) - - if repository is not None and repository.startswith('oci://'): - tmpdir = tempfile.TemporaryDirectory() - chart_dir = get_chart_from_oci(tmpdir.name, repository, version) - chart = chart_dir - - helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) - elif request_type == "Delete": - try: - helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) - except Exception as e: - logger.info("delete error: %s" % e) - - -def get_oci_cmd(repository, version): - # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. - private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' - public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' - - private_registry = re.match(private_ecr_pattern, repository).groupdict() - public_registry = re.match(public_ecr_pattern, repository).groupdict() - - # Build helm pull command as array - helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] - - if private_registry['registry'] is not None: - logger.info("Found AWS private repository") - ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] - return {'ecr_login': ecr_login, 'registry_login': helm_registry_login, 'helm': helm_cmd} - elif public_registry['registry'] is not None: - logger.info("Found AWS public repository, will use default region as deployment") - region = os.environ.get('AWS_REGION', 'us-east-1') - - if is_ecr_public_available(region): - # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html - ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] - return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} - else: - # No login required for public ECR in non-aws regions - # see https://helm.sh/docs/helm/helm_registry_login/ - return {'helm': helm_cmd} - else: - logger.error("OCI repository format not recognized, falling back to helm pull") - return {'helm': helm_cmd} - - -def get_chart_from_oci(tmpdir, repository=None, version=None): - from subprocess import Popen, PIPE - - commands = get_oci_cmd(repository, version) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - # Execute login commands if needed - if 'ecr_login' in commands and 'helm_registry_login' in commands: - logger.info("Running login command: %s", commands['ecr_login']) - logger.info("Running registry login command: %s", commands['helm_registry_login']) - - # Start first process: aws ecr get-login-password - # NOTE: We do NOT call p1.wait() here before starting p2. - # Doing so could deadlock if p1's output fills the pipe buffer - # before p2 starts reading. Instead, start p2 immediately so it - # can consume p1's stdout as it's produced. - p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) - - # Start second process: helm registry login - p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) - p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early - - # Wait for p2 to finish first (ensures full pipeline completes) - _, p2_err = p2.communicate() - - # Now wait for p1 so we have a complete stderr and an exit code - p1.wait() - - # Handle p1 failure - if p1.returncode != 0: - p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' - logger.error( - "ECR get-login-password failed for repository %s. Error: %s", - repository, - p1_err or "No error details" - ) - raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) - - # Handle p2 failure - if p2.returncode != 0: - logger.error( - "Helm registry authentication failed for repository %s. Error: %s", - repository, - p2_err.decode('utf-8', errors='replace') or "No error details" - ) - raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) - - # Execute helm pull command - logger.info("Running helm command: %s", commands['helm']) - output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) - logger.info(output) - - # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. - # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service - return os.path.join(tmpdir, repository.rpartition('/')[-1]) - - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - raise Exception(output) - - raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') - - -def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): - cmnd = ['helm', verb, release] - if not chart is None: - cmnd.append(chart) - if verb == 'upgrade': - cmnd.append('--install') - if create_namespace: - cmnd.append('--create-namespace') - if not repo is None: - cmnd.extend(['--repo', repo]) - if not file is None: - cmnd.extend(['--values', file]) - if not version is None: - cmnd.extend(['--version', version]) - if not namespace is None: - cmnd.extend(['--namespace', namespace]) - if wait: - cmnd.append('--wait') - if skip_crds: - cmnd.append('--skip-crds') - if not timeout is None: - cmnd.extend(['--timeout', timeout]) - if atomic: - cmnd.append('--atomic') - cmnd.extend(['--kubeconfig', kubeconfig]) - - # Log the full helm command for better troubleshooting - logger.info("Running command: %s", cmnd) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) - logger.info(output.decode('utf-8', errors='replace')) - return - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - error_message = output.decode('utf-8', errors='replace') - logger.error("Command failed: %s", cmnd) - logger.error("Error output: %s", error_message) - raise Exception(output) - raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/aws-cdk-eks-cluster-inference-nodegroup.assets.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/aws-cdk-eks-cluster-inference-nodegroup.assets.json index e6affbc6655a4..05640ed23a11e 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/aws-cdk-eks-cluster-inference-nodegroup.assets.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/aws-cdk-eks-cluster-inference-nodegroup.assets.json @@ -15,16 +15,16 @@ } } }, - "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a": { + "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9": { "displayName": "Cluster/KubectlProvider/Handler/Code", "source": { - "path": "asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a", + "path": "asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9", "packaging": "zip" }, "destinations": { - "current_account-current_region-5b09798b": { + "current_account-current_region-b8d33bdb": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip", + "objectKey": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } @@ -85,16 +85,16 @@ } } }, - "df626523ac2f52a55f6617a64f9d26c16beb1847656f1de5267c78a1da63b7e4": { + "5fe54241410eb75b394f41083225f5a01b161f37ddc02fad7d3b4406e455475e": { "displayName": "aws-cdk-eks-cluster-inference-nodegroup Template", "source": { "path": "aws-cdk-eks-cluster-inference-nodegroup.template.json", "packaging": "file" }, "destinations": { - "current_account-current_region-cd29a79a": { + "current_account-current_region-b45cfec3": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "df626523ac2f52a55f6617a64f9d26c16beb1847656f1de5267c78a1da63b7e4.json", + "objectKey": "5fe54241410eb75b394f41083225f5a01b161f37ddc02fad7d3b4406e455475e.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/aws-cdk-eks-cluster-inference-nodegroup.template.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/aws-cdk-eks-cluster-inference-nodegroup.template.json index 2c6d4dff5cb8f..d5c4fe29b4071 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/aws-cdk-eks-cluster-inference-nodegroup.template.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/aws-cdk-eks-cluster-inference-nodegroup.template.json @@ -663,7 +663,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip" + "S3Key": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip" }, "Description": "onEvent handler for EKS kubectl resource provider", "Environment": { diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/manifest.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/manifest.json index 14910009147bb..12dc701780c88 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/manifest.json @@ -18,7 +18,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}/df626523ac2f52a55f6617a64f9d26c16beb1847656f1de5267c78a1da63b7e4.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/5fe54241410eb75b394f41083225f5a01b161f37ddc02fad7d3b4406e455475e.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/tree.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/tree.json index e55321f9e067d..4312e3421be9b 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-inference-nodegroup.js.snapshot/tree.json @@ -1 +1 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-cluster-inference-nodegroup":{"id":"aws-cdk-eks-cluster-inference-nodegroup","path":"aws-cdk-eks-cluster-inference-nodegroup","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Vpc":{"id":"Vpc","path":"aws-cdk-eks-cluster-inference-nodegroup/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"maxAzs":"*","natGateways":"*","restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-cluster-inference-nodegroup/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"}}}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-cluster-inference-nodegroup/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-inference-nodegroup/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-inference-nodegroup/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-inference-nodegroup/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*","*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/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":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":false},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":false}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":false}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}},"OpenIdConnectProvider":{"id":"OpenIdConnectProvider","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/OpenIdConnectProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.OpenIdConnectProvider","version":"0.0.0","metadata":["*","*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/OpenIdConnectProvider/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/OpenIdConnectProvider/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"NodegroupDefaultCapacity":{"id":"NodegroupDefaultCapacity","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupDefaultCapacity","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupDefaultCapacity/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupDefaultCapacity/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupDefaultCapacity/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupDefaultCapacity/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_x86_64","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["m5.large"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupDefaultCapacityNodeGroupRole55953B04","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":2},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"manifest-NeuronDevicePlugin":{"id":"manifest-NeuronDevicePlugin","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/manifest-NeuronDevicePlugin","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/manifest-NeuronDevicePlugin/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/manifest-NeuronDevicePlugin/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"NodegroupInferenceInstances":{"id":"NodegroupInferenceInstances","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInferenceInstances","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInferenceInstances/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInferenceInstances/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInferenceInstances/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInferenceInstances/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_x86_64_GPU","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["inf1.2xlarge"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupInferenceInstancesNodeGroupRole80013868","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"NodegroupInference2Instances":{"id":"NodegroupInference2Instances","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInference2Instances","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInference2Instances/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInference2Instances/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInference2Instances/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInference2Instances/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_x86_64_GPU","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["inf2.xlarge"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupInference2InstancesNodeGroupRole3A8C7FF7","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-eks-cluster-inference-nodegroup/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController":{"id":"awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AlbController","version":"0.0.0"},"children":{"alb-sa":{"id":"alb-sa","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.ServiceAccount","version":"0.0.0"},"children":{"ConditionJson":{"id":"ConditionJson","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/ConditionJson","constructInfo":{"fqn":"aws-cdk-lib.CfnJson","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/ConditionJson/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/ConditionJson/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/Role","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":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/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:AssumeRoleWithWebIdentity","Condition":{"StringEquals":{"Fn::GetAtt":["awscdkeksclusterinferencenodegroupCluster4FEA031EAlbControlleralbsaConditionJsonD4837132","Value"]}},"Effect":"Allow","Principal":{"Federated":{"Ref":"ClusterOpenIdConnectProviderE7EB0530"}}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/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":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/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":"iam:CreateServiceLinkedRole","Condition":{"StringEquals":{"iam:AWSServiceName":"elasticloadbalancing.amazonaws.com"}},"Effect":"Allow","Resource":"*"},{"Action":["acm:DescribeCertificate","acm:ListCertificates","cognito-idp:DescribeUserPoolClient","ec2:AuthorizeSecurityGroupIngress","ec2:CreateSecurityGroup","ec2:DescribeAccountAttributes","ec2:DescribeAddresses","ec2:DescribeAvailabilityZones","ec2:DescribeCoipPools","ec2:DescribeInstances","ec2:DescribeInternetGateways","ec2:DescribeNetworkInterfaces","ec2:DescribeSecurityGroups","ec2:DescribeSubnets","ec2:DescribeTags","ec2:DescribeVpcPeeringConnections","ec2:DescribeVpcs","ec2:GetCoipPoolUsage","ec2:RevokeSecurityGroupIngress","elasticloadbalancing:AddListenerCertificates","elasticloadbalancing:CreateListener","elasticloadbalancing:CreateRule","elasticloadbalancing:DeleteListener","elasticloadbalancing:DeleteRule","elasticloadbalancing:DescribeListenerCertificates","elasticloadbalancing:DescribeListeners","elasticloadbalancing:DescribeLoadBalancerAttributes","elasticloadbalancing:DescribeLoadBalancers","elasticloadbalancing:DescribeRules","elasticloadbalancing:DescribeSSLPolicies","elasticloadbalancing:DescribeTags","elasticloadbalancing:DescribeTargetGroupAttributes","elasticloadbalancing:DescribeTargetGroups","elasticloadbalancing:DescribeTargetHealth","elasticloadbalancing:DescribeTrustStores","elasticloadbalancing:ModifyListener","elasticloadbalancing:ModifyRule","elasticloadbalancing:RemoveListenerCertificates","elasticloadbalancing:SetWebAcl","iam:GetServerCertificate","iam:ListServerCertificates","shield:CreateProtection","shield:DeleteProtection","shield:DescribeProtection","shield:GetSubscriptionState","waf-regional:AssociateWebACL","waf-regional:DisassociateWebACL","waf-regional:GetWebACL","waf-regional:GetWebACLForResource","wafv2:AssociateWebACL","wafv2:DisassociateWebACL","wafv2:GetWebACL","wafv2:GetWebACLForResource"],"Effect":"Allow","Resource":"*"},{"Action":"ec2:CreateTags","Condition":{"StringEquals":{"ec2:CreateAction":"CreateSecurityGroup"},"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:*:*:security-group/*"]]}},{"Action":["ec2:CreateTags","ec2:DeleteTags"],"Condition":{"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"true","aws:ResourceTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:*:*:security-group/*"]]}},{"Action":["ec2:AuthorizeSecurityGroupIngress","ec2:DeleteSecurityGroup","ec2:RevokeSecurityGroupIngress","elasticloadbalancing:DeleteLoadBalancer","elasticloadbalancing:DeleteTargetGroup","elasticloadbalancing:ModifyLoadBalancerAttributes","elasticloadbalancing:ModifyTargetGroup","elasticloadbalancing:ModifyTargetGroupAttributes","elasticloadbalancing:SetIpAddressType","elasticloadbalancing:SetSecurityGroups","elasticloadbalancing:SetSubnets"],"Condition":{"Null":{"aws:ResourceTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":"*"},{"Action":["elasticloadbalancing:CreateLoadBalancer","elasticloadbalancing:CreateTargetGroup"],"Condition":{"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":"*"},{"Action":["elasticloadbalancing:AddTags","elasticloadbalancing:RemoveTags"],"Condition":{"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"true","aws:ResourceTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:loadbalancer/app/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:loadbalancer/net/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:targetgroup/*/*"]]}]},{"Action":["elasticloadbalancing:AddTags","elasticloadbalancing:RemoveTags"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:listener-rule/app/*/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:listener-rule/net/*/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:listener/app/*/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:listener/net/*/*/*"]]}]},{"Action":"elasticloadbalancing:AddTags","Condition":{"StringEquals":{"elasticloadbalancing:CreateAction":["CreateTargetGroup","CreateLoadBalancer"]},"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:loadbalancer/app/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:loadbalancer/net/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:targetgroup/*/*"]]}]},{"Action":["elasticloadbalancing:DeregisterTargets","elasticloadbalancing:RegisterTargets"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:targetgroup/*/*"]]}}],"Version":"2012-10-17"},"policyName":"awscdkeksclusterinferencenodegroupCluster4FEA031EAlbControlleralbsaRoleDefaultPolicyD6B360F4","roles":[{"Ref":"awscdkeksclusterinferencenodegroupCluster4FEA031EAlbControlleralbsaRoleCBC0A7F6"}]}}}}}}},"manifest-alb-saServiceAccountResource":{"id":"manifest-alb-saServiceAccountResource","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/manifest-alb-saServiceAccountResource","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/manifest-alb-saServiceAccountResource/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/manifest-alb-saServiceAccountResource/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/Resource","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/Resource/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/Resource/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider":{"id":"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","path":"aws-cdk-eks-cluster-inference-nodegroup/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-cluster-inference-nodegroup/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster-inference-nodegroup/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-inference-nodegroup/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"AWSCDKCfnUtilsProviderCustomResourceProvider":{"id":"AWSCDKCfnUtilsProviderCustomResourceProvider","path":"aws-cdk-eks-cluster-inference-nodegroup/AWSCDKCfnUtilsProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-cluster-inference-nodegroup/AWSCDKCfnUtilsProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster-inference-nodegroup/AWSCDKCfnUtilsProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-inference-nodegroup/AWSCDKCfnUtilsProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-inference-nodegroup/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-inference-nodegroup/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-cluster-interence-nodegroup-integ":{"id":"aws-cdk-eks-cluster-interence-nodegroup-integ","path":"aws-cdk-eks-cluster-interence-nodegroup-integ","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-cluster-interence-nodegroup-integ/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-interence-nodegroup-integ/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-cluster-interence-nodegroup-integ/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-interence-nodegroup-integ/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-interence-nodegroup-integ/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 +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-cluster-inference-nodegroup":{"id":"aws-cdk-eks-cluster-inference-nodegroup","path":"aws-cdk-eks-cluster-inference-nodegroup","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Vpc":{"id":"Vpc","path":"aws-cdk-eks-cluster-inference-nodegroup/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"maxAzs":"*","natGateways":"*","restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-inference-nodegroup/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-cluster-inference-nodegroup/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":"aws-cdk-eks-cluster-inference-nodegroup/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-cluster-inference-nodegroup/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"}}}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-cluster-inference-nodegroup/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-inference-nodegroup/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-inference-nodegroup/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-inference-nodegroup/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*","*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/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":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":false},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":false}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":false}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}},"OpenIdConnectProvider":{"id":"OpenIdConnectProvider","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/OpenIdConnectProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.OpenIdConnectProvider","version":"0.0.0","metadata":["*","*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/OpenIdConnectProvider/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/OpenIdConnectProvider/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"NodegroupDefaultCapacity":{"id":"NodegroupDefaultCapacity","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupDefaultCapacity","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupDefaultCapacity/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupDefaultCapacity/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupDefaultCapacity/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupDefaultCapacity/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_x86_64","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["m5.large"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupDefaultCapacityNodeGroupRole55953B04","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":2},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"manifest-NeuronDevicePlugin":{"id":"manifest-NeuronDevicePlugin","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/manifest-NeuronDevicePlugin","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/manifest-NeuronDevicePlugin/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/manifest-NeuronDevicePlugin/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"NodegroupInferenceInstances":{"id":"NodegroupInferenceInstances","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInferenceInstances","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInferenceInstances/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInferenceInstances/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInferenceInstances/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInferenceInstances/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_x86_64_GPU","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["inf1.2xlarge"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupInferenceInstancesNodeGroupRole80013868","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"NodegroupInference2Instances":{"id":"NodegroupInference2Instances","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInference2Instances","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInference2Instances/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInference2Instances/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInference2Instances/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/Cluster/NodegroupInference2Instances/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_x86_64_GPU","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"instanceTypes":["inf2.xlarge"],"nodeRole":{"Fn::GetAtt":["ClusterNodegroupInference2InstancesNodeGroupRole3A8C7FF7","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-eks-cluster-inference-nodegroup/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController":{"id":"awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AlbController","version":"0.0.0"},"children":{"alb-sa":{"id":"alb-sa","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.ServiceAccount","version":"0.0.0"},"children":{"ConditionJson":{"id":"ConditionJson","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/ConditionJson","constructInfo":{"fqn":"aws-cdk-lib.CfnJson","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/ConditionJson/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*","*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/ConditionJson/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/Role","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":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/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:AssumeRoleWithWebIdentity","Condition":{"StringEquals":{"Fn::GetAtt":["awscdkeksclusterinferencenodegroupCluster4FEA031EAlbControlleralbsaConditionJsonD4837132","Value"]}},"Effect":"Allow","Principal":{"Federated":{"Ref":"ClusterOpenIdConnectProviderE7EB0530"}}}],"Version":"2012-10-17"}}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/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":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/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":"iam:CreateServiceLinkedRole","Condition":{"StringEquals":{"iam:AWSServiceName":"elasticloadbalancing.amazonaws.com"}},"Effect":"Allow","Resource":"*"},{"Action":["acm:DescribeCertificate","acm:ListCertificates","cognito-idp:DescribeUserPoolClient","ec2:AuthorizeSecurityGroupIngress","ec2:CreateSecurityGroup","ec2:DescribeAccountAttributes","ec2:DescribeAddresses","ec2:DescribeAvailabilityZones","ec2:DescribeCoipPools","ec2:DescribeInstances","ec2:DescribeInternetGateways","ec2:DescribeNetworkInterfaces","ec2:DescribeSecurityGroups","ec2:DescribeSubnets","ec2:DescribeTags","ec2:DescribeVpcPeeringConnections","ec2:DescribeVpcs","ec2:GetCoipPoolUsage","ec2:RevokeSecurityGroupIngress","elasticloadbalancing:AddListenerCertificates","elasticloadbalancing:CreateListener","elasticloadbalancing:CreateRule","elasticloadbalancing:DeleteListener","elasticloadbalancing:DeleteRule","elasticloadbalancing:DescribeListenerCertificates","elasticloadbalancing:DescribeListeners","elasticloadbalancing:DescribeLoadBalancerAttributes","elasticloadbalancing:DescribeLoadBalancers","elasticloadbalancing:DescribeRules","elasticloadbalancing:DescribeSSLPolicies","elasticloadbalancing:DescribeTags","elasticloadbalancing:DescribeTargetGroupAttributes","elasticloadbalancing:DescribeTargetGroups","elasticloadbalancing:DescribeTargetHealth","elasticloadbalancing:DescribeTrustStores","elasticloadbalancing:ModifyListener","elasticloadbalancing:ModifyRule","elasticloadbalancing:RemoveListenerCertificates","elasticloadbalancing:SetWebAcl","iam:GetServerCertificate","iam:ListServerCertificates","shield:CreateProtection","shield:DeleteProtection","shield:DescribeProtection","shield:GetSubscriptionState","waf-regional:AssociateWebACL","waf-regional:DisassociateWebACL","waf-regional:GetWebACL","waf-regional:GetWebACLForResource","wafv2:AssociateWebACL","wafv2:DisassociateWebACL","wafv2:GetWebACL","wafv2:GetWebACLForResource"],"Effect":"Allow","Resource":"*"},{"Action":"ec2:CreateTags","Condition":{"StringEquals":{"ec2:CreateAction":"CreateSecurityGroup"},"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:*:*:security-group/*"]]}},{"Action":["ec2:CreateTags","ec2:DeleteTags"],"Condition":{"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"true","aws:ResourceTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ec2:*:*:security-group/*"]]}},{"Action":["ec2:AuthorizeSecurityGroupIngress","ec2:DeleteSecurityGroup","ec2:RevokeSecurityGroupIngress","elasticloadbalancing:DeleteLoadBalancer","elasticloadbalancing:DeleteTargetGroup","elasticloadbalancing:ModifyLoadBalancerAttributes","elasticloadbalancing:ModifyTargetGroup","elasticloadbalancing:ModifyTargetGroupAttributes","elasticloadbalancing:SetIpAddressType","elasticloadbalancing:SetSecurityGroups","elasticloadbalancing:SetSubnets"],"Condition":{"Null":{"aws:ResourceTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":"*"},{"Action":["elasticloadbalancing:CreateLoadBalancer","elasticloadbalancing:CreateTargetGroup"],"Condition":{"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":"*"},{"Action":["elasticloadbalancing:AddTags","elasticloadbalancing:RemoveTags"],"Condition":{"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"true","aws:ResourceTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:loadbalancer/app/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:loadbalancer/net/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:targetgroup/*/*"]]}]},{"Action":["elasticloadbalancing:AddTags","elasticloadbalancing:RemoveTags"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:listener-rule/app/*/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:listener-rule/net/*/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:listener/app/*/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:listener/net/*/*/*"]]}]},{"Action":"elasticloadbalancing:AddTags","Condition":{"StringEquals":{"elasticloadbalancing:CreateAction":["CreateTargetGroup","CreateLoadBalancer"]},"Null":{"aws:RequestTag/elbv2.k8s.aws/cluster":"false"}},"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:loadbalancer/app/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:loadbalancer/net/*/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:targetgroup/*/*"]]}]},{"Action":["elasticloadbalancing:DeregisterTargets","elasticloadbalancing:RegisterTargets"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":elasticloadbalancing:*:*:targetgroup/*/*"]]}}],"Version":"2012-10-17"},"policyName":"awscdkeksclusterinferencenodegroupCluster4FEA031EAlbControlleralbsaRoleDefaultPolicyD6B360F4","roles":[{"Ref":"awscdkeksclusterinferencenodegroupCluster4FEA031EAlbControlleralbsaRoleCBC0A7F6"}]}}}}}}},"manifest-alb-saServiceAccountResource":{"id":"manifest-alb-saServiceAccountResource","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/manifest-alb-saServiceAccountResource","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesManifest","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/manifest-alb-saServiceAccountResource/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/alb-sa/manifest-alb-saServiceAccountResource/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/Resource","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/Resource/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-inference-nodegroup/awscdkeksclusterinferencenodegroupCluster4FEA031E-AlbController/Resource/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider":{"id":"Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","path":"aws-cdk-eks-cluster-inference-nodegroup/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-cluster-inference-nodegroup/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster-inference-nodegroup/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-inference-nodegroup/Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"AWSCDKCfnUtilsProviderCustomResourceProvider":{"id":"AWSCDKCfnUtilsProviderCustomResourceProvider","path":"aws-cdk-eks-cluster-inference-nodegroup/AWSCDKCfnUtilsProviderCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-cluster-inference-nodegroup/AWSCDKCfnUtilsProviderCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster-inference-nodegroup/AWSCDKCfnUtilsProviderCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-inference-nodegroup/AWSCDKCfnUtilsProviderCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-inference-nodegroup/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-inference-nodegroup/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-cluster-interence-nodegroup-integ":{"id":"aws-cdk-eks-cluster-interence-nodegroup-integ","path":"aws-cdk-eks-cluster-interence-nodegroup-integ","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-cluster-interence-nodegroup-integ/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-interence-nodegroup-integ/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-cluster-interence-nodegroup-integ/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-interence-nodegroup-integ/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-interence-nodegroup-integ/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/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/EKSStandardAccessEntry.assets.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/EKSStandardAccessEntry.assets.json index e57021e985477..9f5879e8710a5 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/EKSStandardAccessEntry.assets.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/EKSStandardAccessEntry.assets.json @@ -15,16 +15,16 @@ } } }, - "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a": { + "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9": { "displayName": "Cluster/KubectlProvider/Handler/Code", "source": { - "path": "asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a", + "path": "asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9", "packaging": "zip" }, "destinations": { - "current_account-current_region-5b09798b": { + "current_account-current_region-b8d33bdb": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip", + "objectKey": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } @@ -57,16 +57,16 @@ } } }, - "4d880a0f5ce8a332b5c55871420b549d40425bb700c513dbf473ae04aaa8cbd3": { + "8e4badb6166b851cf78db523e476825a5f1d0653561eaeee09fe3b65792c4d6d": { "displayName": "EKSStandardAccessEntry Template", "source": { "path": "EKSStandardAccessEntry.template.json", "packaging": "file" }, "destinations": { - "current_account-current_region-178a078b": { + "current_account-current_region-f992f861": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "4d880a0f5ce8a332b5c55871420b549d40425bb700c513dbf473ae04aaa8cbd3.json", + "objectKey": "8e4badb6166b851cf78db523e476825a5f1d0653561eaeee09fe3b65792c4d6d.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/EKSStandardAccessEntry.template.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/EKSStandardAccessEntry.template.json index 46cbe8cc74d12..a07d013f34f17 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/EKSStandardAccessEntry.template.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/EKSStandardAccessEntry.template.json @@ -663,7 +663,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip" + "S3Key": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip" }, "Description": "onEvent handler for EKS kubectl resource provider", "Environment": { diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py new file mode 100644 index 0000000000000..6664adf77090d --- /dev/null +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py @@ -0,0 +1,250 @@ +import json +import logging +import os +import re +import subprocess +import shutil +import tempfile +import zipfile +import boto3 + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + +# these are coming from the kubectl layer +os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] + +outdir = os.environ.get('TEST_OUTDIR', '/tmp') +kubeconfig = os.path.join(outdir, 'kubeconfig') + +def get_chart_asset_from_url(chart_asset_url): + chart_zip = os.path.join(outdir, 'chart.zip') + shutil.rmtree(chart_zip, ignore_errors=True) + subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) + chart_dir = os.path.join(outdir, 'chart') + shutil.rmtree(chart_dir, ignore_errors=True) + os.mkdir(chart_dir) + with zipfile.ZipFile(chart_zip, 'r') as zip_ref: + zip_ref.extractall(chart_dir) + return chart_dir + +def is_ecr_public_available(region): + s = boto3.Session() + return s.get_partition_for_region(region) == 'aws' + +def helm_handler(event, context): + logger.info(json.dumps(dict(event, ResponseURL='...'))) + + request_type = event['RequestType'] + props = event['ResourceProperties'] + + # resource properties + cluster_name = props['ClusterName'] + release = props['Release'] + chart = props.get('Chart', None) + chart_asset_url = props.get('ChartAssetURL', None) + version = props.get('Version', None) + wait = props.get('Wait', False) + atomic = props.get('Atomic', False) + timeout = props.get('Timeout', None) + namespace = props.get('Namespace', None) + create_namespace = props.get('CreateNamespace', None) + repository = props.get('Repository', None) + values_text = props.get('Values', None) + skip_crds = props.get('SkipCrds', False) + + # "log in" to the cluster + subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', + '--name', cluster_name, + '--kubeconfig', kubeconfig + ]) + + if os.path.isfile(kubeconfig): + os.chmod(kubeconfig, 0o600) + + # Write out the values to a file and include them with the install and upgrade + values_file = None + if not request_type == "Delete" and not values_text is None: + values = json.loads(values_text) + values_file = os.path.join(outdir, 'values.yaml') + with open(values_file, "w") as f: + f.write(json.dumps(values, indent=2)) + + if request_type == 'Create' or request_type == 'Update': + # Ensure chart or chart_asset_url are set + if chart == None and chart_asset_url == None: + raise RuntimeError(f'chart or chartAsset must be specified') + + if chart_asset_url != None: + assert(chart==None) + assert(repository==None) + assert(version==None) + if not chart_asset_url.startswith('s3://'): + raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') + # future work: support versions from s3 assets + chart = get_chart_asset_from_url(chart_asset_url) + + if repository is not None and repository.startswith('oci://'): + tmpdir = tempfile.TemporaryDirectory() + chart_dir = get_chart_from_oci(tmpdir.name, repository, version) + chart = chart_dir + + helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) + elif request_type == "Delete": + try: + helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) + except Exception as e: + logger.info("delete error: %s" % e) + + +def get_oci_cmd(repository, version): + # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. + private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' + public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' + + private_registry = re.match(private_ecr_pattern, repository).groupdict() + public_registry = re.match(public_ecr_pattern, repository).groupdict() + + # Build helm pull command as array + helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] + + if private_registry['registry'] is not None: + logger.info("Found AWS private repository") + ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + elif public_registry['registry'] is not None: + logger.info("Found AWS public repository, will use default region as deployment") + region = os.environ.get('AWS_REGION', 'us-east-1') + + if is_ecr_public_available(region): + # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html + ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + else: + # No login required for public ECR in non-aws regions + # see https://helm.sh/docs/helm/helm_registry_login/ + return {'helm': helm_cmd} + else: + logger.error("OCI repository format not recognized, falling back to helm pull") + return {'helm': helm_cmd} + + +def get_chart_from_oci(tmpdir, repository=None, version=None): + from subprocess import Popen, PIPE + + commands = get_oci_cmd(repository, version) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + # Execute login commands if needed + if 'ecr_login' in commands and 'helm_registry_login' in commands: + logger.info("Running login command: %s", commands['ecr_login']) + logger.info("Running registry login command: %s", commands['helm_registry_login']) + + # Start first process: aws ecr get-login-password + # NOTE: We do NOT call p1.wait() here before starting p2. + # Doing so could deadlock if p1's output fills the pipe buffer + # before p2 starts reading. Instead, start p2 immediately so it + # can consume p1's stdout as it's produced. + p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) + + # Start second process: helm registry login + p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) + p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early + + # Wait for p2 to finish first (ensures full pipeline completes) + _, p2_err = p2.communicate() + + # Now wait for p1 so we have a complete stderr and an exit code + p1.wait() + + # Handle p1 failure + if p1.returncode != 0: + p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' + logger.error( + "ECR get-login-password failed for repository %s. Error: %s", + repository, + p1_err or "No error details" + ) + raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) + + # Handle p2 failure + if p2.returncode != 0: + logger.error( + "Helm registry authentication failed for repository %s. Error: %s", + repository, + p2_err.decode('utf-8', errors='replace') or "No error details" + ) + raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) + + # Execute helm pull command + logger.info("Running helm command: %s", commands['helm']) + output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) + logger.info(output) + + # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. + # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service + return os.path.join(tmpdir, repository.rpartition('/')[-1]) + + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + raise Exception(output) + + raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') + + +def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): + cmnd = ['helm', verb, release] + if not chart is None: + cmnd.append(chart) + if verb == 'upgrade': + cmnd.append('--install') + if create_namespace: + cmnd.append('--create-namespace') + if not repo is None: + cmnd.extend(['--repo', repo]) + if not file is None: + cmnd.extend(['--values', file]) + if not version is None: + cmnd.extend(['--version', version]) + if not namespace is None: + cmnd.extend(['--namespace', namespace]) + if wait: + cmnd.append('--wait') + if skip_crds: + cmnd.append('--skip-crds') + if not timeout is None: + cmnd.extend(['--timeout', timeout]) + if atomic: + cmnd.append('--atomic') + cmnd.extend(['--kubeconfig', kubeconfig]) + + # Log the full helm command for better troubleshooting + logger.info("Running command: %s", cmnd) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) + logger.info(output.decode('utf-8', errors='replace')) + return + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + error_message = output.decode('utf-8', errors='replace') + logger.error("Command failed: %s", cmnd) + logger.error("Error output: %s", error_message) + raise Exception(output) + raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py deleted file mode 100644 index 6c7838f182a45..0000000000000 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py +++ /dev/null @@ -1,250 +0,0 @@ -import json -import logging -import os -import re -import subprocess -import shutil -import tempfile -import zipfile -import boto3 - -logger = logging.getLogger() -logger.setLevel(logging.INFO) - -# these are coming from the kubectl layer -os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] - -outdir = os.environ.get('TEST_OUTDIR', '/tmp') -kubeconfig = os.path.join(outdir, 'kubeconfig') - -def get_chart_asset_from_url(chart_asset_url): - chart_zip = os.path.join(outdir, 'chart.zip') - shutil.rmtree(chart_zip, ignore_errors=True) - subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) - chart_dir = os.path.join(outdir, 'chart') - shutil.rmtree(chart_dir, ignore_errors=True) - os.mkdir(chart_dir) - with zipfile.ZipFile(chart_zip, 'r') as zip_ref: - zip_ref.extractall(chart_dir) - return chart_dir - -def is_ecr_public_available(region): - s = boto3.Session() - return s.get_partition_for_region(region) == 'aws' - -def helm_handler(event, context): - logger.info(json.dumps(dict(event, ResponseURL='...'))) - - request_type = event['RequestType'] - props = event['ResourceProperties'] - - # resource properties - cluster_name = props['ClusterName'] - release = props['Release'] - chart = props.get('Chart', None) - chart_asset_url = props.get('ChartAssetURL', None) - version = props.get('Version', None) - wait = props.get('Wait', False) - atomic = props.get('Atomic', False) - timeout = props.get('Timeout', None) - namespace = props.get('Namespace', None) - create_namespace = props.get('CreateNamespace', None) - repository = props.get('Repository', None) - values_text = props.get('Values', None) - skip_crds = props.get('SkipCrds', False) - - # "log in" to the cluster - subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', - '--name', cluster_name, - '--kubeconfig', kubeconfig - ]) - - if os.path.isfile(kubeconfig): - os.chmod(kubeconfig, 0o600) - - # Write out the values to a file and include them with the install and upgrade - values_file = None - if not request_type == "Delete" and not values_text is None: - values = json.loads(values_text) - values_file = os.path.join(outdir, 'values.yaml') - with open(values_file, "w") as f: - f.write(json.dumps(values, indent=2)) - - if request_type == 'Create' or request_type == 'Update': - # Ensure chart or chart_asset_url are set - if chart == None and chart_asset_url == None: - raise RuntimeError(f'chart or chartAsset must be specified') - - if chart_asset_url != None: - assert(chart==None) - assert(repository==None) - assert(version==None) - if not chart_asset_url.startswith('s3://'): - raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') - # future work: support versions from s3 assets - chart = get_chart_asset_from_url(chart_asset_url) - - if repository is not None and repository.startswith('oci://'): - tmpdir = tempfile.TemporaryDirectory() - chart_dir = get_chart_from_oci(tmpdir.name, repository, version) - chart = chart_dir - - helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) - elif request_type == "Delete": - try: - helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) - except Exception as e: - logger.info("delete error: %s" % e) - - -def get_oci_cmd(repository, version): - # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. - private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' - public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' - - private_registry = re.match(private_ecr_pattern, repository).groupdict() - public_registry = re.match(public_ecr_pattern, repository).groupdict() - - # Build helm pull command as array - helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] - - if private_registry['registry'] is not None: - logger.info("Found AWS private repository") - ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] - return {'ecr_login': ecr_login, 'registry_login': helm_registry_login, 'helm': helm_cmd} - elif public_registry['registry'] is not None: - logger.info("Found AWS public repository, will use default region as deployment") - region = os.environ.get('AWS_REGION', 'us-east-1') - - if is_ecr_public_available(region): - # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html - ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] - return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} - else: - # No login required for public ECR in non-aws regions - # see https://helm.sh/docs/helm/helm_registry_login/ - return {'helm': helm_cmd} - else: - logger.error("OCI repository format not recognized, falling back to helm pull") - return {'helm': helm_cmd} - - -def get_chart_from_oci(tmpdir, repository=None, version=None): - from subprocess import Popen, PIPE - - commands = get_oci_cmd(repository, version) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - # Execute login commands if needed - if 'ecr_login' in commands and 'helm_registry_login' in commands: - logger.info("Running login command: %s", commands['ecr_login']) - logger.info("Running registry login command: %s", commands['helm_registry_login']) - - # Start first process: aws ecr get-login-password - # NOTE: We do NOT call p1.wait() here before starting p2. - # Doing so could deadlock if p1's output fills the pipe buffer - # before p2 starts reading. Instead, start p2 immediately so it - # can consume p1's stdout as it's produced. - p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) - - # Start second process: helm registry login - p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) - p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early - - # Wait for p2 to finish first (ensures full pipeline completes) - _, p2_err = p2.communicate() - - # Now wait for p1 so we have a complete stderr and an exit code - p1.wait() - - # Handle p1 failure - if p1.returncode != 0: - p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' - logger.error( - "ECR get-login-password failed for repository %s. Error: %s", - repository, - p1_err or "No error details" - ) - raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) - - # Handle p2 failure - if p2.returncode != 0: - logger.error( - "Helm registry authentication failed for repository %s. Error: %s", - repository, - p2_err.decode('utf-8', errors='replace') or "No error details" - ) - raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) - - # Execute helm pull command - logger.info("Running helm command: %s", commands['helm']) - output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) - logger.info(output) - - # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. - # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service - return os.path.join(tmpdir, repository.rpartition('/')[-1]) - - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - raise Exception(output) - - raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') - - -def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): - cmnd = ['helm', verb, release] - if not chart is None: - cmnd.append(chart) - if verb == 'upgrade': - cmnd.append('--install') - if create_namespace: - cmnd.append('--create-namespace') - if not repo is None: - cmnd.extend(['--repo', repo]) - if not file is None: - cmnd.extend(['--values', file]) - if not version is None: - cmnd.extend(['--version', version]) - if not namespace is None: - cmnd.extend(['--namespace', namespace]) - if wait: - cmnd.append('--wait') - if skip_crds: - cmnd.append('--skip-crds') - if not timeout is None: - cmnd.extend(['--timeout', timeout]) - if atomic: - cmnd.append('--atomic') - cmnd.extend(['--kubeconfig', kubeconfig]) - - # Log the full helm command for better troubleshooting - logger.info("Running command: %s", cmnd) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) - logger.info(output.decode('utf-8', errors='replace')) - return - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - error_message = output.decode('utf-8', errors='replace') - logger.error("Command failed: %s", cmnd) - logger.error("Error output: %s", error_message) - raise Exception(output) - raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/manifest.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/manifest.json index 2686cfe9358a6..8b3699195c789 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/manifest.json @@ -18,7 +18,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}/4d880a0f5ce8a332b5c55871420b549d40425bb700c513dbf473ae04aaa8cbd3.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/8e4badb6166b851cf78db523e476825a5f1d0653561eaeee09fe3b65792c4d6d.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/tree.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/tree.json index 5ade763d2129d..20d8b08687e6a 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-standard-access-entry.js.snapshot/tree.json @@ -1 +1 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"EKSStandardAccessEntry":{"id":"EKSStandardAccessEntry","path":"EKSStandardAccessEntry","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Vpc":{"id":"Vpc","path":"EKSStandardAccessEntry/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"maxAzs":"*","natGateways":"*","restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"EKSStandardAccessEntry/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"EKSStandardAccessEntry/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"EKSStandardAccessEntry/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"EKSStandardAccessEntry/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"EKSStandardAccessEntry/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"EKSStandardAccessEntry/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"EKSStandardAccessEntry/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"EKSStandardAccessEntry/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"EKSStandardAccessEntry/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"EKSStandardAccessEntry/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"EKSStandardAccessEntry/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"EKSStandardAccessEntry/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"}}}}}},"kubectlLayer":{"id":"kubectlLayer","path":"EKSStandardAccessEntry/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"EKSStandardAccessEntry/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"EKSStandardAccessEntry/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"EKSStandardAccessEntry/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"EKSStandardAccessEntry/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*"]},"children":{"Role":{"id":"Role","path":"EKSStandardAccessEntry/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"EKSStandardAccessEntry/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/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":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"EKSStandardAccessEntry/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":false},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":false}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":false}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"EKSStandardAccessEntry/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"EKSStandardAccessEntry/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"EKSStandardAccessEntry/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (EKSStandardAccessEntry/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"EKSStandardAccessEntry/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"EKSStandardAccessEntry/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"Role":{"id":"Role","path":"EKSStandardAccessEntry/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportRole":{"id":"ImportRole","path":"EKSStandardAccessEntry/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/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":"lambda.amazonaws.com"}}],"Version":"2012-10-17"}}}}}},"AccessEntry":{"id":"AccessEntry","path":"EKSStandardAccessEntry/AccessEntry","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/AccessEntry/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["Role1ABCC5F0","Arn"]},"type":"STANDARD"}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"EKSStandardAccessEntry/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"EKSStandardAccessEntry/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-standard-access-entry-integ":{"id":"aws-cdk-eks-standard-access-entry-integ","path":"aws-cdk-eks-standard-access-entry-integ","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-standard-access-entry-integ/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-standard-access-entry-integ/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-standard-access-entry-integ/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-standard-access-entry-integ/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-standard-access-entry-integ/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 +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"EKSStandardAccessEntry":{"id":"EKSStandardAccessEntry","path":"EKSStandardAccessEntry","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Vpc":{"id":"Vpc","path":"EKSStandardAccessEntry/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"maxAzs":"*","natGateways":"*","restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"EKSStandardAccessEntry/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"EKSStandardAccessEntry/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"EKSStandardAccessEntry/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"EKSStandardAccessEntry/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"EKSStandardAccessEntry/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"EKSStandardAccessEntry/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"EKSStandardAccessEntry/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"EKSStandardAccessEntry/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"EKSStandardAccessEntry/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"EKSStandardAccessEntry/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"EKSStandardAccessEntry/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"EKSStandardAccessEntry/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"EKSStandardAccessEntry/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":"EKSStandardAccessEntry/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"EKSStandardAccessEntry/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"}}}}}},"kubectlLayer":{"id":"kubectlLayer","path":"EKSStandardAccessEntry/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"EKSStandardAccessEntry/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"EKSStandardAccessEntry/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"EKSStandardAccessEntry/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"EKSStandardAccessEntry/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*"]},"children":{"Role":{"id":"Role","path":"EKSStandardAccessEntry/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"EKSStandardAccessEntry/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/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":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"EKSStandardAccessEntry/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":false},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":false}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":false}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"EKSStandardAccessEntry/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"EKSStandardAccessEntry/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"EKSStandardAccessEntry/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (EKSStandardAccessEntry/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"EKSStandardAccessEntry/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"EKSStandardAccessEntry/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"Role":{"id":"Role","path":"EKSStandardAccessEntry/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportRole":{"id":"ImportRole","path":"EKSStandardAccessEntry/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/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":"lambda.amazonaws.com"}}],"Version":"2012-10-17"}}}}}},"AccessEntry":{"id":"AccessEntry","path":"EKSStandardAccessEntry/AccessEntry","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"EKSStandardAccessEntry/AccessEntry/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["Role1ABCC5F0","Arn"]},"type":"STANDARD"}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"EKSStandardAccessEntry/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"EKSStandardAccessEntry/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-standard-access-entry-integ":{"id":"aws-cdk-eks-standard-access-entry-integ","path":"aws-cdk-eks-standard-access-entry-integ","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-standard-access-entry-integ/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-standard-access-entry-integ/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-standard-access-entry-integ/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-standard-access-entry-integ/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-standard-access-entry-integ/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/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py new file mode 100644 index 0000000000000..6664adf77090d --- /dev/null +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py @@ -0,0 +1,250 @@ +import json +import logging +import os +import re +import subprocess +import shutil +import tempfile +import zipfile +import boto3 + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + +# these are coming from the kubectl layer +os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] + +outdir = os.environ.get('TEST_OUTDIR', '/tmp') +kubeconfig = os.path.join(outdir, 'kubeconfig') + +def get_chart_asset_from_url(chart_asset_url): + chart_zip = os.path.join(outdir, 'chart.zip') + shutil.rmtree(chart_zip, ignore_errors=True) + subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) + chart_dir = os.path.join(outdir, 'chart') + shutil.rmtree(chart_dir, ignore_errors=True) + os.mkdir(chart_dir) + with zipfile.ZipFile(chart_zip, 'r') as zip_ref: + zip_ref.extractall(chart_dir) + return chart_dir + +def is_ecr_public_available(region): + s = boto3.Session() + return s.get_partition_for_region(region) == 'aws' + +def helm_handler(event, context): + logger.info(json.dumps(dict(event, ResponseURL='...'))) + + request_type = event['RequestType'] + props = event['ResourceProperties'] + + # resource properties + cluster_name = props['ClusterName'] + release = props['Release'] + chart = props.get('Chart', None) + chart_asset_url = props.get('ChartAssetURL', None) + version = props.get('Version', None) + wait = props.get('Wait', False) + atomic = props.get('Atomic', False) + timeout = props.get('Timeout', None) + namespace = props.get('Namespace', None) + create_namespace = props.get('CreateNamespace', None) + repository = props.get('Repository', None) + values_text = props.get('Values', None) + skip_crds = props.get('SkipCrds', False) + + # "log in" to the cluster + subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', + '--name', cluster_name, + '--kubeconfig', kubeconfig + ]) + + if os.path.isfile(kubeconfig): + os.chmod(kubeconfig, 0o600) + + # Write out the values to a file and include them with the install and upgrade + values_file = None + if not request_type == "Delete" and not values_text is None: + values = json.loads(values_text) + values_file = os.path.join(outdir, 'values.yaml') + with open(values_file, "w") as f: + f.write(json.dumps(values, indent=2)) + + if request_type == 'Create' or request_type == 'Update': + # Ensure chart or chart_asset_url are set + if chart == None and chart_asset_url == None: + raise RuntimeError(f'chart or chartAsset must be specified') + + if chart_asset_url != None: + assert(chart==None) + assert(repository==None) + assert(version==None) + if not chart_asset_url.startswith('s3://'): + raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') + # future work: support versions from s3 assets + chart = get_chart_asset_from_url(chart_asset_url) + + if repository is not None and repository.startswith('oci://'): + tmpdir = tempfile.TemporaryDirectory() + chart_dir = get_chart_from_oci(tmpdir.name, repository, version) + chart = chart_dir + + helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) + elif request_type == "Delete": + try: + helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) + except Exception as e: + logger.info("delete error: %s" % e) + + +def get_oci_cmd(repository, version): + # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. + private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' + public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' + + private_registry = re.match(private_ecr_pattern, repository).groupdict() + public_registry = re.match(public_ecr_pattern, repository).groupdict() + + # Build helm pull command as array + helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] + + if private_registry['registry'] is not None: + logger.info("Found AWS private repository") + ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + elif public_registry['registry'] is not None: + logger.info("Found AWS public repository, will use default region as deployment") + region = os.environ.get('AWS_REGION', 'us-east-1') + + if is_ecr_public_available(region): + # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html + ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + else: + # No login required for public ECR in non-aws regions + # see https://helm.sh/docs/helm/helm_registry_login/ + return {'helm': helm_cmd} + else: + logger.error("OCI repository format not recognized, falling back to helm pull") + return {'helm': helm_cmd} + + +def get_chart_from_oci(tmpdir, repository=None, version=None): + from subprocess import Popen, PIPE + + commands = get_oci_cmd(repository, version) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + # Execute login commands if needed + if 'ecr_login' in commands and 'helm_registry_login' in commands: + logger.info("Running login command: %s", commands['ecr_login']) + logger.info("Running registry login command: %s", commands['helm_registry_login']) + + # Start first process: aws ecr get-login-password + # NOTE: We do NOT call p1.wait() here before starting p2. + # Doing so could deadlock if p1's output fills the pipe buffer + # before p2 starts reading. Instead, start p2 immediately so it + # can consume p1's stdout as it's produced. + p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) + + # Start second process: helm registry login + p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) + p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early + + # Wait for p2 to finish first (ensures full pipeline completes) + _, p2_err = p2.communicate() + + # Now wait for p1 so we have a complete stderr and an exit code + p1.wait() + + # Handle p1 failure + if p1.returncode != 0: + p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' + logger.error( + "ECR get-login-password failed for repository %s. Error: %s", + repository, + p1_err or "No error details" + ) + raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) + + # Handle p2 failure + if p2.returncode != 0: + logger.error( + "Helm registry authentication failed for repository %s. Error: %s", + repository, + p2_err.decode('utf-8', errors='replace') or "No error details" + ) + raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) + + # Execute helm pull command + logger.info("Running helm command: %s", commands['helm']) + output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) + logger.info(output) + + # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. + # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service + return os.path.join(tmpdir, repository.rpartition('/')[-1]) + + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + raise Exception(output) + + raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') + + +def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): + cmnd = ['helm', verb, release] + if not chart is None: + cmnd.append(chart) + if verb == 'upgrade': + cmnd.append('--install') + if create_namespace: + cmnd.append('--create-namespace') + if not repo is None: + cmnd.extend(['--repo', repo]) + if not file is None: + cmnd.extend(['--values', file]) + if not version is None: + cmnd.extend(['--version', version]) + if not namespace is None: + cmnd.extend(['--namespace', namespace]) + if wait: + cmnd.append('--wait') + if skip_crds: + cmnd.append('--skip-crds') + if not timeout is None: + cmnd.extend(['--timeout', timeout]) + if atomic: + cmnd.append('--atomic') + cmnd.extend(['--kubeconfig', kubeconfig]) + + # Log the full helm command for better troubleshooting + logger.info("Running command: %s", cmnd) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) + logger.info(output.decode('utf-8', errors='replace')) + return + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + error_message = output.decode('utf-8', errors='replace') + logger.error("Command failed: %s", cmnd) + logger.error("Error output: %s", error_message) + raise Exception(output) + raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py deleted file mode 100644 index 6c7838f182a45..0000000000000 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py +++ /dev/null @@ -1,250 +0,0 @@ -import json -import logging -import os -import re -import subprocess -import shutil -import tempfile -import zipfile -import boto3 - -logger = logging.getLogger() -logger.setLevel(logging.INFO) - -# these are coming from the kubectl layer -os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] - -outdir = os.environ.get('TEST_OUTDIR', '/tmp') -kubeconfig = os.path.join(outdir, 'kubeconfig') - -def get_chart_asset_from_url(chart_asset_url): - chart_zip = os.path.join(outdir, 'chart.zip') - shutil.rmtree(chart_zip, ignore_errors=True) - subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) - chart_dir = os.path.join(outdir, 'chart') - shutil.rmtree(chart_dir, ignore_errors=True) - os.mkdir(chart_dir) - with zipfile.ZipFile(chart_zip, 'r') as zip_ref: - zip_ref.extractall(chart_dir) - return chart_dir - -def is_ecr_public_available(region): - s = boto3.Session() - return s.get_partition_for_region(region) == 'aws' - -def helm_handler(event, context): - logger.info(json.dumps(dict(event, ResponseURL='...'))) - - request_type = event['RequestType'] - props = event['ResourceProperties'] - - # resource properties - cluster_name = props['ClusterName'] - release = props['Release'] - chart = props.get('Chart', None) - chart_asset_url = props.get('ChartAssetURL', None) - version = props.get('Version', None) - wait = props.get('Wait', False) - atomic = props.get('Atomic', False) - timeout = props.get('Timeout', None) - namespace = props.get('Namespace', None) - create_namespace = props.get('CreateNamespace', None) - repository = props.get('Repository', None) - values_text = props.get('Values', None) - skip_crds = props.get('SkipCrds', False) - - # "log in" to the cluster - subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', - '--name', cluster_name, - '--kubeconfig', kubeconfig - ]) - - if os.path.isfile(kubeconfig): - os.chmod(kubeconfig, 0o600) - - # Write out the values to a file and include them with the install and upgrade - values_file = None - if not request_type == "Delete" and not values_text is None: - values = json.loads(values_text) - values_file = os.path.join(outdir, 'values.yaml') - with open(values_file, "w") as f: - f.write(json.dumps(values, indent=2)) - - if request_type == 'Create' or request_type == 'Update': - # Ensure chart or chart_asset_url are set - if chart == None and chart_asset_url == None: - raise RuntimeError(f'chart or chartAsset must be specified') - - if chart_asset_url != None: - assert(chart==None) - assert(repository==None) - assert(version==None) - if not chart_asset_url.startswith('s3://'): - raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') - # future work: support versions from s3 assets - chart = get_chart_asset_from_url(chart_asset_url) - - if repository is not None and repository.startswith('oci://'): - tmpdir = tempfile.TemporaryDirectory() - chart_dir = get_chart_from_oci(tmpdir.name, repository, version) - chart = chart_dir - - helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) - elif request_type == "Delete": - try: - helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) - except Exception as e: - logger.info("delete error: %s" % e) - - -def get_oci_cmd(repository, version): - # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. - private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' - public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' - - private_registry = re.match(private_ecr_pattern, repository).groupdict() - public_registry = re.match(public_ecr_pattern, repository).groupdict() - - # Build helm pull command as array - helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] - - if private_registry['registry'] is not None: - logger.info("Found AWS private repository") - ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] - return {'ecr_login': ecr_login, 'registry_login': helm_registry_login, 'helm': helm_cmd} - elif public_registry['registry'] is not None: - logger.info("Found AWS public repository, will use default region as deployment") - region = os.environ.get('AWS_REGION', 'us-east-1') - - if is_ecr_public_available(region): - # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html - ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] - return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} - else: - # No login required for public ECR in non-aws regions - # see https://helm.sh/docs/helm/helm_registry_login/ - return {'helm': helm_cmd} - else: - logger.error("OCI repository format not recognized, falling back to helm pull") - return {'helm': helm_cmd} - - -def get_chart_from_oci(tmpdir, repository=None, version=None): - from subprocess import Popen, PIPE - - commands = get_oci_cmd(repository, version) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - # Execute login commands if needed - if 'ecr_login' in commands and 'helm_registry_login' in commands: - logger.info("Running login command: %s", commands['ecr_login']) - logger.info("Running registry login command: %s", commands['helm_registry_login']) - - # Start first process: aws ecr get-login-password - # NOTE: We do NOT call p1.wait() here before starting p2. - # Doing so could deadlock if p1's output fills the pipe buffer - # before p2 starts reading. Instead, start p2 immediately so it - # can consume p1's stdout as it's produced. - p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) - - # Start second process: helm registry login - p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) - p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early - - # Wait for p2 to finish first (ensures full pipeline completes) - _, p2_err = p2.communicate() - - # Now wait for p1 so we have a complete stderr and an exit code - p1.wait() - - # Handle p1 failure - if p1.returncode != 0: - p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' - logger.error( - "ECR get-login-password failed for repository %s. Error: %s", - repository, - p1_err or "No error details" - ) - raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) - - # Handle p2 failure - if p2.returncode != 0: - logger.error( - "Helm registry authentication failed for repository %s. Error: %s", - repository, - p2_err.decode('utf-8', errors='replace') or "No error details" - ) - raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) - - # Execute helm pull command - logger.info("Running helm command: %s", commands['helm']) - output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) - logger.info(output) - - # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. - # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service - return os.path.join(tmpdir, repository.rpartition('/')[-1]) - - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - raise Exception(output) - - raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') - - -def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): - cmnd = ['helm', verb, release] - if not chart is None: - cmnd.append(chart) - if verb == 'upgrade': - cmnd.append('--install') - if create_namespace: - cmnd.append('--create-namespace') - if not repo is None: - cmnd.extend(['--repo', repo]) - if not file is None: - cmnd.extend(['--values', file]) - if not version is None: - cmnd.extend(['--version', version]) - if not namespace is None: - cmnd.extend(['--namespace', namespace]) - if wait: - cmnd.append('--wait') - if skip_crds: - cmnd.append('--skip-crds') - if not timeout is None: - cmnd.extend(['--timeout', timeout]) - if atomic: - cmnd.append('--atomic') - cmnd.extend(['--kubeconfig', kubeconfig]) - - # Log the full helm command for better troubleshooting - logger.info("Running command: %s", cmnd) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) - logger.info(output.decode('utf-8', errors='replace')) - return - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - error_message = output.decode('utf-8', errors='replace') - logger.error("Command failed: %s", cmnd) - logger.error("Error output: %s", error_message) - raise Exception(output) - raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/aws-cdk-eks-cluster-stack.assets.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/aws-cdk-eks-cluster-stack.assets.json index ec328c35d5dbd..57a67121d4e2c 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/aws-cdk-eks-cluster-stack.assets.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/aws-cdk-eks-cluster-stack.assets.json @@ -29,16 +29,16 @@ } } }, - "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a": { + "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9": { "displayName": "Cluster/KubectlProvider/Handler/Code", "source": { - "path": "asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a", + "path": "asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9", "packaging": "zip" }, "destinations": { - "current_account-current_region-5b09798b": { + "current_account-current_region-b8d33bdb": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip", + "objectKey": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } @@ -71,16 +71,16 @@ } } }, - "8e332cfa9ddbb01627f4e272a4fad4c59b9d5647c6eb50d35d47ea41e65169e4": { + "18f617cd33d87d6e0a9f191a0a75d968ce4c62e71b069cff8bad55d598c3f2c9": { "displayName": "aws-cdk-eks-cluster-stack Template", "source": { "path": "aws-cdk-eks-cluster-stack.template.json", "packaging": "file" }, "destinations": { - "current_account-current_region-693e01b0": { + "current_account-current_region-be33b75b": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "8e332cfa9ddbb01627f4e272a4fad4c59b9d5647c6eb50d35d47ea41e65169e4.json", + "objectKey": "18f617cd33d87d6e0a9f191a0a75d968ce4c62e71b069cff8bad55d598c3f2c9.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/aws-cdk-eks-cluster-stack.template.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/aws-cdk-eks-cluster-stack.template.json index e61963f82c11a..b801928847c2a 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/aws-cdk-eks-cluster-stack.template.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/aws-cdk-eks-cluster-stack.template.json @@ -734,7 +734,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip" + "S3Key": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip" }, "Description": "onEvent handler for EKS kubectl resource provider", "Environment": { diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/manifest.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/manifest.json index 580fed8089eaa..4cabecd746fff 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/manifest.json @@ -18,7 +18,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}/8e332cfa9ddbb01627f4e272a4fad4c59b9d5647c6eb50d35d47ea41e65169e4.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/18f617cd33d87d6e0a9f191a0a75d968ce4c62e71b069cff8bad55d598c3f2c9.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/tree.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/tree.json index 68fd529597272..c4b18410c624b 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-subnet-updates.js.snapshot/tree.json @@ -1 +1 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-cluster-stack":{"id":"aws-cdk-eks-cluster-stack","path":"aws-cdk-eks-cluster-stack","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Vpc":{"id":"Vpc","path":"aws-cdk-eks-cluster-stack/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"natGateways":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-stack/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-cluster-stack/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-stack/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-stack/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-stack/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-cluster-stack/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"}}}},"RestrictDefaultSecurityGroupCustomResource":{"id":"RestrictDefaultSecurityGroupCustomResource","path":"aws-cdk-eks-cluster-stack/Vpc/RestrictDefaultSecurityGroupCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-stack/Vpc/RestrictDefaultSecurityGroupCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-eks-cluster-stack/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"Custom::VpcRestrictDefaultSGCustomResourceProvider":{"id":"Custom::VpcRestrictDefaultSGCustomResourceProvider","path":"aws-cdk-eks-cluster-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-cluster-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-cluster-stack/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-stack/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-stack/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-stack/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-cluster-stack/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-cluster-stack/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster-stack/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/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":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-cluster-stack/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":false},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":false}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":false}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-cluster-stack/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":"*","vpcSubnets":"*"},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":"*","securityGroups":"*","role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"SecurityGroup":{"id":"SecurityGroup","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*","allowAllOutbound":"*","allowAllIpv6Outbound":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/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 security group for Lambda Function awscdkeksclusterstackClusterKubectlProviderframeworkonEventC550C962","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventSecurityGroupE2538617","GroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-cluster-stack/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-stack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-stack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-cluster":{"id":"aws-cdk-eks-cluster","path":"aws-cdk-eks-cluster","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-cluster/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-cluster/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster/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 +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-cluster-stack":{"id":"aws-cdk-eks-cluster-stack","path":"aws-cdk-eks-cluster-stack","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Vpc":{"id":"Vpc","path":"aws-cdk-eks-cluster-stack/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"natGateways":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-stack/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-cluster-stack/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-stack/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-stack/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-stack/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-stack/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-stack/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-cluster-stack/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":"aws-cdk-eks-cluster-stack/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-cluster-stack/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"}}}},"RestrictDefaultSecurityGroupCustomResource":{"id":"RestrictDefaultSecurityGroupCustomResource","path":"aws-cdk-eks-cluster-stack/Vpc/RestrictDefaultSecurityGroupCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-stack/Vpc/RestrictDefaultSecurityGroupCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-eks-cluster-stack/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"Custom::VpcRestrictDefaultSGCustomResourceProvider":{"id":"Custom::VpcRestrictDefaultSGCustomResourceProvider","path":"aws-cdk-eks-cluster-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-cluster-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-cluster-stack/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-stack/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-stack/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-stack/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-cluster-stack/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-cluster-stack/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster-stack/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/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":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-cluster-stack/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":false},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":false}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":false}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-cluster-stack/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":"*","vpcSubnets":"*"},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":"*","securityGroups":"*","role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"SecurityGroup":{"id":"SecurityGroup","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*","allowAllOutbound":"*","allowAllIpv6Outbound":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/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 security group for Lambda Function awscdkeksclusterstackClusterKubectlProviderframeworkonEventC550C962","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventSecurityGroupE2538617","GroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-cluster-stack/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-stack/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-stack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-stack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-cluster":{"id":"aws-cdk-eks-cluster","path":"aws-cdk-eks-cluster","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-cluster/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-cluster/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster/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/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py new file mode 100644 index 0000000000000..6664adf77090d --- /dev/null +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py @@ -0,0 +1,250 @@ +import json +import logging +import os +import re +import subprocess +import shutil +import tempfile +import zipfile +import boto3 + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + +# these are coming from the kubectl layer +os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] + +outdir = os.environ.get('TEST_OUTDIR', '/tmp') +kubeconfig = os.path.join(outdir, 'kubeconfig') + +def get_chart_asset_from_url(chart_asset_url): + chart_zip = os.path.join(outdir, 'chart.zip') + shutil.rmtree(chart_zip, ignore_errors=True) + subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) + chart_dir = os.path.join(outdir, 'chart') + shutil.rmtree(chart_dir, ignore_errors=True) + os.mkdir(chart_dir) + with zipfile.ZipFile(chart_zip, 'r') as zip_ref: + zip_ref.extractall(chart_dir) + return chart_dir + +def is_ecr_public_available(region): + s = boto3.Session() + return s.get_partition_for_region(region) == 'aws' + +def helm_handler(event, context): + logger.info(json.dumps(dict(event, ResponseURL='...'))) + + request_type = event['RequestType'] + props = event['ResourceProperties'] + + # resource properties + cluster_name = props['ClusterName'] + release = props['Release'] + chart = props.get('Chart', None) + chart_asset_url = props.get('ChartAssetURL', None) + version = props.get('Version', None) + wait = props.get('Wait', False) + atomic = props.get('Atomic', False) + timeout = props.get('Timeout', None) + namespace = props.get('Namespace', None) + create_namespace = props.get('CreateNamespace', None) + repository = props.get('Repository', None) + values_text = props.get('Values', None) + skip_crds = props.get('SkipCrds', False) + + # "log in" to the cluster + subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', + '--name', cluster_name, + '--kubeconfig', kubeconfig + ]) + + if os.path.isfile(kubeconfig): + os.chmod(kubeconfig, 0o600) + + # Write out the values to a file and include them with the install and upgrade + values_file = None + if not request_type == "Delete" and not values_text is None: + values = json.loads(values_text) + values_file = os.path.join(outdir, 'values.yaml') + with open(values_file, "w") as f: + f.write(json.dumps(values, indent=2)) + + if request_type == 'Create' or request_type == 'Update': + # Ensure chart or chart_asset_url are set + if chart == None and chart_asset_url == None: + raise RuntimeError(f'chart or chartAsset must be specified') + + if chart_asset_url != None: + assert(chart==None) + assert(repository==None) + assert(version==None) + if not chart_asset_url.startswith('s3://'): + raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') + # future work: support versions from s3 assets + chart = get_chart_asset_from_url(chart_asset_url) + + if repository is not None and repository.startswith('oci://'): + tmpdir = tempfile.TemporaryDirectory() + chart_dir = get_chart_from_oci(tmpdir.name, repository, version) + chart = chart_dir + + helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) + elif request_type == "Delete": + try: + helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) + except Exception as e: + logger.info("delete error: %s" % e) + + +def get_oci_cmd(repository, version): + # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. + private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' + public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' + + private_registry = re.match(private_ecr_pattern, repository).groupdict() + public_registry = re.match(public_ecr_pattern, repository).groupdict() + + # Build helm pull command as array + helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] + + if private_registry['registry'] is not None: + logger.info("Found AWS private repository") + ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + elif public_registry['registry'] is not None: + logger.info("Found AWS public repository, will use default region as deployment") + region = os.environ.get('AWS_REGION', 'us-east-1') + + if is_ecr_public_available(region): + # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html + ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + else: + # No login required for public ECR in non-aws regions + # see https://helm.sh/docs/helm/helm_registry_login/ + return {'helm': helm_cmd} + else: + logger.error("OCI repository format not recognized, falling back to helm pull") + return {'helm': helm_cmd} + + +def get_chart_from_oci(tmpdir, repository=None, version=None): + from subprocess import Popen, PIPE + + commands = get_oci_cmd(repository, version) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + # Execute login commands if needed + if 'ecr_login' in commands and 'helm_registry_login' in commands: + logger.info("Running login command: %s", commands['ecr_login']) + logger.info("Running registry login command: %s", commands['helm_registry_login']) + + # Start first process: aws ecr get-login-password + # NOTE: We do NOT call p1.wait() here before starting p2. + # Doing so could deadlock if p1's output fills the pipe buffer + # before p2 starts reading. Instead, start p2 immediately so it + # can consume p1's stdout as it's produced. + p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) + + # Start second process: helm registry login + p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) + p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early + + # Wait for p2 to finish first (ensures full pipeline completes) + _, p2_err = p2.communicate() + + # Now wait for p1 so we have a complete stderr and an exit code + p1.wait() + + # Handle p1 failure + if p1.returncode != 0: + p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' + logger.error( + "ECR get-login-password failed for repository %s. Error: %s", + repository, + p1_err or "No error details" + ) + raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) + + # Handle p2 failure + if p2.returncode != 0: + logger.error( + "Helm registry authentication failed for repository %s. Error: %s", + repository, + p2_err.decode('utf-8', errors='replace') or "No error details" + ) + raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) + + # Execute helm pull command + logger.info("Running helm command: %s", commands['helm']) + output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) + logger.info(output) + + # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. + # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service + return os.path.join(tmpdir, repository.rpartition('/')[-1]) + + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + raise Exception(output) + + raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') + + +def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): + cmnd = ['helm', verb, release] + if not chart is None: + cmnd.append(chart) + if verb == 'upgrade': + cmnd.append('--install') + if create_namespace: + cmnd.append('--create-namespace') + if not repo is None: + cmnd.extend(['--repo', repo]) + if not file is None: + cmnd.extend(['--values', file]) + if not version is None: + cmnd.extend(['--version', version]) + if not namespace is None: + cmnd.extend(['--namespace', namespace]) + if wait: + cmnd.append('--wait') + if skip_crds: + cmnd.append('--skip-crds') + if not timeout is None: + cmnd.extend(['--timeout', timeout]) + if atomic: + cmnd.append('--atomic') + cmnd.extend(['--kubeconfig', kubeconfig]) + + # Log the full helm command for better troubleshooting + logger.info("Running command: %s", cmnd) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) + logger.info(output.decode('utf-8', errors='replace')) + return + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + error_message = output.decode('utf-8', errors='replace') + logger.error("Command failed: %s", cmnd) + logger.error("Error output: %s", error_message) + raise Exception(output) + raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py deleted file mode 100644 index 6c7838f182a45..0000000000000 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py +++ /dev/null @@ -1,250 +0,0 @@ -import json -import logging -import os -import re -import subprocess -import shutil -import tempfile -import zipfile -import boto3 - -logger = logging.getLogger() -logger.setLevel(logging.INFO) - -# these are coming from the kubectl layer -os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] - -outdir = os.environ.get('TEST_OUTDIR', '/tmp') -kubeconfig = os.path.join(outdir, 'kubeconfig') - -def get_chart_asset_from_url(chart_asset_url): - chart_zip = os.path.join(outdir, 'chart.zip') - shutil.rmtree(chart_zip, ignore_errors=True) - subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) - chart_dir = os.path.join(outdir, 'chart') - shutil.rmtree(chart_dir, ignore_errors=True) - os.mkdir(chart_dir) - with zipfile.ZipFile(chart_zip, 'r') as zip_ref: - zip_ref.extractall(chart_dir) - return chart_dir - -def is_ecr_public_available(region): - s = boto3.Session() - return s.get_partition_for_region(region) == 'aws' - -def helm_handler(event, context): - logger.info(json.dumps(dict(event, ResponseURL='...'))) - - request_type = event['RequestType'] - props = event['ResourceProperties'] - - # resource properties - cluster_name = props['ClusterName'] - release = props['Release'] - chart = props.get('Chart', None) - chart_asset_url = props.get('ChartAssetURL', None) - version = props.get('Version', None) - wait = props.get('Wait', False) - atomic = props.get('Atomic', False) - timeout = props.get('Timeout', None) - namespace = props.get('Namespace', None) - create_namespace = props.get('CreateNamespace', None) - repository = props.get('Repository', None) - values_text = props.get('Values', None) - skip_crds = props.get('SkipCrds', False) - - # "log in" to the cluster - subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', - '--name', cluster_name, - '--kubeconfig', kubeconfig - ]) - - if os.path.isfile(kubeconfig): - os.chmod(kubeconfig, 0o600) - - # Write out the values to a file and include them with the install and upgrade - values_file = None - if not request_type == "Delete" and not values_text is None: - values = json.loads(values_text) - values_file = os.path.join(outdir, 'values.yaml') - with open(values_file, "w") as f: - f.write(json.dumps(values, indent=2)) - - if request_type == 'Create' or request_type == 'Update': - # Ensure chart or chart_asset_url are set - if chart == None and chart_asset_url == None: - raise RuntimeError(f'chart or chartAsset must be specified') - - if chart_asset_url != None: - assert(chart==None) - assert(repository==None) - assert(version==None) - if not chart_asset_url.startswith('s3://'): - raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') - # future work: support versions from s3 assets - chart = get_chart_asset_from_url(chart_asset_url) - - if repository is not None and repository.startswith('oci://'): - tmpdir = tempfile.TemporaryDirectory() - chart_dir = get_chart_from_oci(tmpdir.name, repository, version) - chart = chart_dir - - helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) - elif request_type == "Delete": - try: - helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) - except Exception as e: - logger.info("delete error: %s" % e) - - -def get_oci_cmd(repository, version): - # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. - private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' - public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' - - private_registry = re.match(private_ecr_pattern, repository).groupdict() - public_registry = re.match(public_ecr_pattern, repository).groupdict() - - # Build helm pull command as array - helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] - - if private_registry['registry'] is not None: - logger.info("Found AWS private repository") - ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] - return {'ecr_login': ecr_login, 'registry_login': helm_registry_login, 'helm': helm_cmd} - elif public_registry['registry'] is not None: - logger.info("Found AWS public repository, will use default region as deployment") - region = os.environ.get('AWS_REGION', 'us-east-1') - - if is_ecr_public_available(region): - # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html - ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] - return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} - else: - # No login required for public ECR in non-aws regions - # see https://helm.sh/docs/helm/helm_registry_login/ - return {'helm': helm_cmd} - else: - logger.error("OCI repository format not recognized, falling back to helm pull") - return {'helm': helm_cmd} - - -def get_chart_from_oci(tmpdir, repository=None, version=None): - from subprocess import Popen, PIPE - - commands = get_oci_cmd(repository, version) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - # Execute login commands if needed - if 'ecr_login' in commands and 'helm_registry_login' in commands: - logger.info("Running login command: %s", commands['ecr_login']) - logger.info("Running registry login command: %s", commands['helm_registry_login']) - - # Start first process: aws ecr get-login-password - # NOTE: We do NOT call p1.wait() here before starting p2. - # Doing so could deadlock if p1's output fills the pipe buffer - # before p2 starts reading. Instead, start p2 immediately so it - # can consume p1's stdout as it's produced. - p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) - - # Start second process: helm registry login - p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) - p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early - - # Wait for p2 to finish first (ensures full pipeline completes) - _, p2_err = p2.communicate() - - # Now wait for p1 so we have a complete stderr and an exit code - p1.wait() - - # Handle p1 failure - if p1.returncode != 0: - p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' - logger.error( - "ECR get-login-password failed for repository %s. Error: %s", - repository, - p1_err or "No error details" - ) - raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) - - # Handle p2 failure - if p2.returncode != 0: - logger.error( - "Helm registry authentication failed for repository %s. Error: %s", - repository, - p2_err.decode('utf-8', errors='replace') or "No error details" - ) - raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) - - # Execute helm pull command - logger.info("Running helm command: %s", commands['helm']) - output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) - logger.info(output) - - # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. - # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service - return os.path.join(tmpdir, repository.rpartition('/')[-1]) - - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - raise Exception(output) - - raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') - - -def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): - cmnd = ['helm', verb, release] - if not chart is None: - cmnd.append(chart) - if verb == 'upgrade': - cmnd.append('--install') - if create_namespace: - cmnd.append('--create-namespace') - if not repo is None: - cmnd.extend(['--repo', repo]) - if not file is None: - cmnd.extend(['--values', file]) - if not version is None: - cmnd.extend(['--version', version]) - if not namespace is None: - cmnd.extend(['--namespace', namespace]) - if wait: - cmnd.append('--wait') - if skip_crds: - cmnd.append('--skip-crds') - if not timeout is None: - cmnd.extend(['--timeout', timeout]) - if atomic: - cmnd.append('--atomic') - cmnd.extend(['--kubeconfig', kubeconfig]) - - # Log the full helm command for better troubleshooting - logger.info("Running command: %s", cmnd) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) - logger.info(output.decode('utf-8', errors='replace')) - return - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - error_message = output.decode('utf-8', errors='replace') - logger.error("Command failed: %s", cmnd) - logger.error("Error output: %s", error_message) - raise Exception(output) - raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/aws-cdk-eks-cluster-windows-ng-test.assets.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/aws-cdk-eks-cluster-windows-ng-test.assets.json index 98ca08e26083e..3d5dd4cca20e0 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/aws-cdk-eks-cluster-windows-ng-test.assets.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/aws-cdk-eks-cluster-windows-ng-test.assets.json @@ -29,16 +29,16 @@ } } }, - "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a": { + "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9": { "displayName": "Cluster/KubectlProvider/Handler/Code", "source": { - "path": "asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a", + "path": "asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9", "packaging": "zip" }, "destinations": { - "current_account-current_region-5b09798b": { + "current_account-current_region-b8d33bdb": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip", + "objectKey": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } @@ -71,16 +71,16 @@ } } }, - "9c3a06162fea284705632ec39bdc4567887961f47e2728e0bc26be3bcb2d0efc": { + "e348a71cb8189b7c55d645ea9cfe3593019d1da79097b8a6b0a5a139d72bd44e": { "displayName": "aws-cdk-eks-cluster-windows-ng-test Template", "source": { "path": "aws-cdk-eks-cluster-windows-ng-test.template.json", "packaging": "file" }, "destinations": { - "current_account-current_region-3e2c67d4": { + "current_account-current_region-d010c937": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "9c3a06162fea284705632ec39bdc4567887961f47e2728e0bc26be3bcb2d0efc.json", + "objectKey": "e348a71cb8189b7c55d645ea9cfe3593019d1da79097b8a6b0a5a139d72bd44e.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/aws-cdk-eks-cluster-windows-ng-test.template.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/aws-cdk-eks-cluster-windows-ng-test.template.json index c895c9960085d..24069f9123f92 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/aws-cdk-eks-cluster-windows-ng-test.template.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/aws-cdk-eks-cluster-windows-ng-test.template.json @@ -820,7 +820,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip" + "S3Key": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip" }, "Description": "onEvent handler for EKS kubectl resource provider", "Environment": { diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/manifest.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/manifest.json index 058e6ae3a9375..800ca716188b9 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/manifest.json @@ -18,7 +18,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}/9c3a06162fea284705632ec39bdc4567887961f47e2728e0bc26be3bcb2d0efc.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/e348a71cb8189b7c55d645ea9cfe3593019d1da79097b8a6b0a5a139d72bd44e.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/tree.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/tree.json index 8616e47247356..ac9c19b98d367 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.eks-windows-ng.js.snapshot/tree.json @@ -1 +1 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-cluster-windows-ng-test":{"id":"aws-cdk-eks-cluster-windows-ng-test","path":"aws-cdk-eks-cluster-windows-ng-test","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"AdminRole":{"id":"AdminRole","path":"aws-cdk-eks-cluster-windows-ng-test/AdminRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportAdminRole":{"id":"ImportAdminRole","path":"aws-cdk-eks-cluster-windows-ng-test/AdminRole/ImportAdminRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/AdminRole/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"]]}}}],"Version":"2012-10-17"}}}}}},"Vpc":{"id":"Vpc","path":"aws-cdk-eks-cluster-windows-ng-test/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"natGateways":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-cluster-windows-ng-test/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-cluster-windows-ng-test/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"}}}},"RestrictDefaultSecurityGroupCustomResource":{"id":"RestrictDefaultSecurityGroupCustomResource","path":"aws-cdk-eks-cluster-windows-ng-test/Vpc/RestrictDefaultSecurityGroupCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-windows-ng-test/Vpc/RestrictDefaultSecurityGroupCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-eks-cluster-windows-ng-test/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"Custom::VpcRestrictDefaultSGCustomResourceProvider":{"id":"Custom::VpcRestrictDefaultSGCustomResourceProvider","path":"aws-cdk-eks-cluster-windows-ng-test/Custom::VpcRestrictDefaultSGCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-cluster-windows-ng-test/Custom::VpcRestrictDefaultSGCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster-windows-ng-test/Custom::VpcRestrictDefaultSGCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-windows-ng-test/Custom::VpcRestrictDefaultSGCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-cluster-windows-ng-test/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-windows-ng-test/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-windows-ng-test/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-windows-ng-test/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*","*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/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":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":false},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":false}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":false}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}},"mastersRoleAccess":{"id":"mastersRoleAccess","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/mastersRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/mastersRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["AdminRole38563C57","Arn"]}}}}}},"ConfigCommand":{"id":"ConfigCommand","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/ConfigCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"GetTokenCommand":{"id":"GetTokenCommand","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/GetTokenCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"NodegroupLinuxNodegroup":{"id":"NodegroupLinuxNodegroup","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupLinuxNodegroup","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupLinuxNodegroup/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupLinuxNodegroup/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupLinuxNodegroup/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupLinuxNodegroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_x86_64","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"nodeRole":{"Fn::GetAtt":["ClusterNodegroupLinuxNodegroupNodeGroupRoleF14B6D19","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"NodegroupWindowsNodegroup":{"id":"NodegroupWindowsNodegroup","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupWindowsNodegroup","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupWindowsNodegroup/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupWindowsNodegroup/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupWindowsNodegroup/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupWindowsNodegroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"WINDOWS_FULL_2022_x86_64","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"nodeRole":{"Fn::GetAtt":["ClusterNodegroupWindowsNodegroupNodeGroupRoleD51D4054","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"taints":[{"effect":"NO_SCHEDULE","key":"os","value":"windows"}]}}}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-windows-ng-test/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-windows-ng-test/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-cluster-windows-ng":{"id":"aws-cdk-eks-cluster-windows-ng","path":"aws-cdk-eks-cluster-windows-ng","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-cluster-windows-ng/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-windows-ng/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-cluster-windows-ng/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-windows-ng/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-windows-ng/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 +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-cluster-windows-ng-test":{"id":"aws-cdk-eks-cluster-windows-ng-test","path":"aws-cdk-eks-cluster-windows-ng-test","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"AdminRole":{"id":"AdminRole","path":"aws-cdk-eks-cluster-windows-ng-test/AdminRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportAdminRole":{"id":"ImportAdminRole","path":"aws-cdk-eks-cluster-windows-ng-test/AdminRole/ImportAdminRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/AdminRole/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"]]}}}],"Version":"2012-10-17"}}}}}},"Vpc":{"id":"Vpc","path":"aws-cdk-eks-cluster-windows-ng-test/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"natGateways":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-cluster-windows-ng-test/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-cluster-windows-ng-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-cluster-windows-ng-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-cluster-windows-ng-test/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":"aws-cdk-eks-cluster-windows-ng-test/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-cluster-windows-ng-test/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"}}}},"RestrictDefaultSecurityGroupCustomResource":{"id":"RestrictDefaultSecurityGroupCustomResource","path":"aws-cdk-eks-cluster-windows-ng-test/Vpc/RestrictDefaultSecurityGroupCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-windows-ng-test/Vpc/RestrictDefaultSecurityGroupCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-eks-cluster-windows-ng-test/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"Custom::VpcRestrictDefaultSGCustomResourceProvider":{"id":"Custom::VpcRestrictDefaultSGCustomResourceProvider","path":"aws-cdk-eks-cluster-windows-ng-test/Custom::VpcRestrictDefaultSGCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-eks-cluster-windows-ng-test/Custom::VpcRestrictDefaultSGCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-eks-cluster-windows-ng-test/Custom::VpcRestrictDefaultSGCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-windows-ng-test/Custom::VpcRestrictDefaultSGCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-cluster-windows-ng-test/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-windows-ng-test/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-windows-ng-test/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-windows-ng-test/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*","*","*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/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":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":false},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":false}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":false}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole081AD342A","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}},"mastersRoleAccess":{"id":"mastersRoleAccess","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/mastersRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/mastersRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["AdminRole38563C57","Arn"]}}}}}},"ConfigCommand":{"id":"ConfigCommand","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/ConfigCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"GetTokenCommand":{"id":"GetTokenCommand","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/GetTokenCommand","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"0.0.0"}},"NodegroupLinuxNodegroup":{"id":"NodegroupLinuxNodegroup","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupLinuxNodegroup","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupLinuxNodegroup/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupLinuxNodegroup/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupLinuxNodegroup/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupLinuxNodegroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"AL2_x86_64","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"nodeRole":{"Fn::GetAtt":["ClusterNodegroupLinuxNodegroupNodeGroupRoleF14B6D19","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}]}}}}},"NodegroupWindowsNodegroup":{"id":"NodegroupWindowsNodegroup","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupWindowsNodegroup","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Nodegroup","version":"0.0.0","metadata":["*"]},"children":{"NodeGroupRole":{"id":"NodeGroupRole","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupWindowsNodegroup/NodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportNodeGroupRole":{"id":"ImportNodeGroupRole","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupWindowsNodegroup/NodeGroupRole/ImportNodeGroupRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupWindowsNodegroup/NodeGroupRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKS_CNI_Policy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-cluster-windows-ng-test/Cluster/NodegroupWindowsNodegroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnNodegroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Nodegroup","aws:cdk:cloudformation:props":{"amiType":"WINDOWS_FULL_2022_x86_64","clusterName":{"Ref":"ClusterEB0386A7"},"forceUpdateEnabled":true,"nodeRole":{"Fn::GetAtt":["ClusterNodegroupWindowsNodegroupNodeGroupRoleD51D4054","Arn"]},"scalingConfig":{"desiredSize":2,"maxSize":2,"minSize":1},"subnets":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"taints":[{"effect":"NO_SCHEDULE","key":"os","value":"windows"}]}}}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-windows-ng-test/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-windows-ng-test/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-cluster-windows-ng":{"id":"aws-cdk-eks-cluster-windows-ng","path":"aws-cdk-eks-cluster-windows-ng","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-cluster-windows-ng/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-cluster-windows-ng/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-cluster-windows-ng/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-cluster-windows-ng/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-cluster-windows-ng/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/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py new file mode 100644 index 0000000000000..6664adf77090d --- /dev/null +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py @@ -0,0 +1,250 @@ +import json +import logging +import os +import re +import subprocess +import shutil +import tempfile +import zipfile +import boto3 + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + +# these are coming from the kubectl layer +os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] + +outdir = os.environ.get('TEST_OUTDIR', '/tmp') +kubeconfig = os.path.join(outdir, 'kubeconfig') + +def get_chart_asset_from_url(chart_asset_url): + chart_zip = os.path.join(outdir, 'chart.zip') + shutil.rmtree(chart_zip, ignore_errors=True) + subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) + chart_dir = os.path.join(outdir, 'chart') + shutil.rmtree(chart_dir, ignore_errors=True) + os.mkdir(chart_dir) + with zipfile.ZipFile(chart_zip, 'r') as zip_ref: + zip_ref.extractall(chart_dir) + return chart_dir + +def is_ecr_public_available(region): + s = boto3.Session() + return s.get_partition_for_region(region) == 'aws' + +def helm_handler(event, context): + logger.info(json.dumps(dict(event, ResponseURL='...'))) + + request_type = event['RequestType'] + props = event['ResourceProperties'] + + # resource properties + cluster_name = props['ClusterName'] + release = props['Release'] + chart = props.get('Chart', None) + chart_asset_url = props.get('ChartAssetURL', None) + version = props.get('Version', None) + wait = props.get('Wait', False) + atomic = props.get('Atomic', False) + timeout = props.get('Timeout', None) + namespace = props.get('Namespace', None) + create_namespace = props.get('CreateNamespace', None) + repository = props.get('Repository', None) + values_text = props.get('Values', None) + skip_crds = props.get('SkipCrds', False) + + # "log in" to the cluster + subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', + '--name', cluster_name, + '--kubeconfig', kubeconfig + ]) + + if os.path.isfile(kubeconfig): + os.chmod(kubeconfig, 0o600) + + # Write out the values to a file and include them with the install and upgrade + values_file = None + if not request_type == "Delete" and not values_text is None: + values = json.loads(values_text) + values_file = os.path.join(outdir, 'values.yaml') + with open(values_file, "w") as f: + f.write(json.dumps(values, indent=2)) + + if request_type == 'Create' or request_type == 'Update': + # Ensure chart or chart_asset_url are set + if chart == None and chart_asset_url == None: + raise RuntimeError(f'chart or chartAsset must be specified') + + if chart_asset_url != None: + assert(chart==None) + assert(repository==None) + assert(version==None) + if not chart_asset_url.startswith('s3://'): + raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') + # future work: support versions from s3 assets + chart = get_chart_asset_from_url(chart_asset_url) + + if repository is not None and repository.startswith('oci://'): + tmpdir = tempfile.TemporaryDirectory() + chart_dir = get_chart_from_oci(tmpdir.name, repository, version) + chart = chart_dir + + helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) + elif request_type == "Delete": + try: + helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) + except Exception as e: + logger.info("delete error: %s" % e) + + +def get_oci_cmd(repository, version): + # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. + private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' + public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' + + private_registry = re.match(private_ecr_pattern, repository).groupdict() + public_registry = re.match(public_ecr_pattern, repository).groupdict() + + # Build helm pull command as array + helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] + + if private_registry['registry'] is not None: + logger.info("Found AWS private repository") + ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + elif public_registry['registry'] is not None: + logger.info("Found AWS public repository, will use default region as deployment") + region = os.environ.get('AWS_REGION', 'us-east-1') + + if is_ecr_public_available(region): + # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html + ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + else: + # No login required for public ECR in non-aws regions + # see https://helm.sh/docs/helm/helm_registry_login/ + return {'helm': helm_cmd} + else: + logger.error("OCI repository format not recognized, falling back to helm pull") + return {'helm': helm_cmd} + + +def get_chart_from_oci(tmpdir, repository=None, version=None): + from subprocess import Popen, PIPE + + commands = get_oci_cmd(repository, version) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + # Execute login commands if needed + if 'ecr_login' in commands and 'helm_registry_login' in commands: + logger.info("Running login command: %s", commands['ecr_login']) + logger.info("Running registry login command: %s", commands['helm_registry_login']) + + # Start first process: aws ecr get-login-password + # NOTE: We do NOT call p1.wait() here before starting p2. + # Doing so could deadlock if p1's output fills the pipe buffer + # before p2 starts reading. Instead, start p2 immediately so it + # can consume p1's stdout as it's produced. + p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) + + # Start second process: helm registry login + p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) + p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early + + # Wait for p2 to finish first (ensures full pipeline completes) + _, p2_err = p2.communicate() + + # Now wait for p1 so we have a complete stderr and an exit code + p1.wait() + + # Handle p1 failure + if p1.returncode != 0: + p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' + logger.error( + "ECR get-login-password failed for repository %s. Error: %s", + repository, + p1_err or "No error details" + ) + raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) + + # Handle p2 failure + if p2.returncode != 0: + logger.error( + "Helm registry authentication failed for repository %s. Error: %s", + repository, + p2_err.decode('utf-8', errors='replace') or "No error details" + ) + raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) + + # Execute helm pull command + logger.info("Running helm command: %s", commands['helm']) + output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) + logger.info(output) + + # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. + # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service + return os.path.join(tmpdir, repository.rpartition('/')[-1]) + + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + raise Exception(output) + + raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') + + +def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): + cmnd = ['helm', verb, release] + if not chart is None: + cmnd.append(chart) + if verb == 'upgrade': + cmnd.append('--install') + if create_namespace: + cmnd.append('--create-namespace') + if not repo is None: + cmnd.extend(['--repo', repo]) + if not file is None: + cmnd.extend(['--values', file]) + if not version is None: + cmnd.extend(['--version', version]) + if not namespace is None: + cmnd.extend(['--namespace', namespace]) + if wait: + cmnd.append('--wait') + if skip_crds: + cmnd.append('--skip-crds') + if not timeout is None: + cmnd.extend(['--timeout', timeout]) + if atomic: + cmnd.append('--atomic') + cmnd.extend(['--kubeconfig', kubeconfig]) + + # Log the full helm command for better troubleshooting + logger.info("Running command: %s", cmnd) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) + logger.info(output.decode('utf-8', errors='replace')) + return + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + error_message = output.decode('utf-8', errors='replace') + logger.error("Command failed: %s", cmnd) + logger.error("Error output: %s", error_message) + raise Exception(output) + raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py deleted file mode 100644 index 6c7838f182a45..0000000000000 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py +++ /dev/null @@ -1,250 +0,0 @@ -import json -import logging -import os -import re -import subprocess -import shutil -import tempfile -import zipfile -import boto3 - -logger = logging.getLogger() -logger.setLevel(logging.INFO) - -# these are coming from the kubectl layer -os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] - -outdir = os.environ.get('TEST_OUTDIR', '/tmp') -kubeconfig = os.path.join(outdir, 'kubeconfig') - -def get_chart_asset_from_url(chart_asset_url): - chart_zip = os.path.join(outdir, 'chart.zip') - shutil.rmtree(chart_zip, ignore_errors=True) - subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) - chart_dir = os.path.join(outdir, 'chart') - shutil.rmtree(chart_dir, ignore_errors=True) - os.mkdir(chart_dir) - with zipfile.ZipFile(chart_zip, 'r') as zip_ref: - zip_ref.extractall(chart_dir) - return chart_dir - -def is_ecr_public_available(region): - s = boto3.Session() - return s.get_partition_for_region(region) == 'aws' - -def helm_handler(event, context): - logger.info(json.dumps(dict(event, ResponseURL='...'))) - - request_type = event['RequestType'] - props = event['ResourceProperties'] - - # resource properties - cluster_name = props['ClusterName'] - release = props['Release'] - chart = props.get('Chart', None) - chart_asset_url = props.get('ChartAssetURL', None) - version = props.get('Version', None) - wait = props.get('Wait', False) - atomic = props.get('Atomic', False) - timeout = props.get('Timeout', None) - namespace = props.get('Namespace', None) - create_namespace = props.get('CreateNamespace', None) - repository = props.get('Repository', None) - values_text = props.get('Values', None) - skip_crds = props.get('SkipCrds', False) - - # "log in" to the cluster - subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', - '--name', cluster_name, - '--kubeconfig', kubeconfig - ]) - - if os.path.isfile(kubeconfig): - os.chmod(kubeconfig, 0o600) - - # Write out the values to a file and include them with the install and upgrade - values_file = None - if not request_type == "Delete" and not values_text is None: - values = json.loads(values_text) - values_file = os.path.join(outdir, 'values.yaml') - with open(values_file, "w") as f: - f.write(json.dumps(values, indent=2)) - - if request_type == 'Create' or request_type == 'Update': - # Ensure chart or chart_asset_url are set - if chart == None and chart_asset_url == None: - raise RuntimeError(f'chart or chartAsset must be specified') - - if chart_asset_url != None: - assert(chart==None) - assert(repository==None) - assert(version==None) - if not chart_asset_url.startswith('s3://'): - raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') - # future work: support versions from s3 assets - chart = get_chart_asset_from_url(chart_asset_url) - - if repository is not None and repository.startswith('oci://'): - tmpdir = tempfile.TemporaryDirectory() - chart_dir = get_chart_from_oci(tmpdir.name, repository, version) - chart = chart_dir - - helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) - elif request_type == "Delete": - try: - helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) - except Exception as e: - logger.info("delete error: %s" % e) - - -def get_oci_cmd(repository, version): - # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. - private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' - public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' - - private_registry = re.match(private_ecr_pattern, repository).groupdict() - public_registry = re.match(public_ecr_pattern, repository).groupdict() - - # Build helm pull command as array - helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] - - if private_registry['registry'] is not None: - logger.info("Found AWS private repository") - ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] - return {'ecr_login': ecr_login, 'registry_login': helm_registry_login, 'helm': helm_cmd} - elif public_registry['registry'] is not None: - logger.info("Found AWS public repository, will use default region as deployment") - region = os.environ.get('AWS_REGION', 'us-east-1') - - if is_ecr_public_available(region): - # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html - ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] - return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} - else: - # No login required for public ECR in non-aws regions - # see https://helm.sh/docs/helm/helm_registry_login/ - return {'helm': helm_cmd} - else: - logger.error("OCI repository format not recognized, falling back to helm pull") - return {'helm': helm_cmd} - - -def get_chart_from_oci(tmpdir, repository=None, version=None): - from subprocess import Popen, PIPE - - commands = get_oci_cmd(repository, version) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - # Execute login commands if needed - if 'ecr_login' in commands and 'helm_registry_login' in commands: - logger.info("Running login command: %s", commands['ecr_login']) - logger.info("Running registry login command: %s", commands['helm_registry_login']) - - # Start first process: aws ecr get-login-password - # NOTE: We do NOT call p1.wait() here before starting p2. - # Doing so could deadlock if p1's output fills the pipe buffer - # before p2 starts reading. Instead, start p2 immediately so it - # can consume p1's stdout as it's produced. - p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) - - # Start second process: helm registry login - p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) - p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early - - # Wait for p2 to finish first (ensures full pipeline completes) - _, p2_err = p2.communicate() - - # Now wait for p1 so we have a complete stderr and an exit code - p1.wait() - - # Handle p1 failure - if p1.returncode != 0: - p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' - logger.error( - "ECR get-login-password failed for repository %s. Error: %s", - repository, - p1_err or "No error details" - ) - raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) - - # Handle p2 failure - if p2.returncode != 0: - logger.error( - "Helm registry authentication failed for repository %s. Error: %s", - repository, - p2_err.decode('utf-8', errors='replace') or "No error details" - ) - raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) - - # Execute helm pull command - logger.info("Running helm command: %s", commands['helm']) - output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) - logger.info(output) - - # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. - # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service - return os.path.join(tmpdir, repository.rpartition('/')[-1]) - - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - raise Exception(output) - - raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') - - -def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): - cmnd = ['helm', verb, release] - if not chart is None: - cmnd.append(chart) - if verb == 'upgrade': - cmnd.append('--install') - if create_namespace: - cmnd.append('--create-namespace') - if not repo is None: - cmnd.extend(['--repo', repo]) - if not file is None: - cmnd.extend(['--values', file]) - if not version is None: - cmnd.extend(['--version', version]) - if not namespace is None: - cmnd.extend(['--namespace', namespace]) - if wait: - cmnd.append('--wait') - if skip_crds: - cmnd.append('--skip-crds') - if not timeout is None: - cmnd.extend(['--timeout', timeout]) - if atomic: - cmnd.append('--atomic') - cmnd.extend(['--kubeconfig', kubeconfig]) - - # Log the full helm command for better troubleshooting - logger.info("Running command: %s", cmnd) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) - logger.info(output.decode('utf-8', errors='replace')) - return - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - error_message = output.decode('utf-8', errors='replace') - logger.error("Command failed: %s", cmnd) - logger.error("Error output: %s", error_message) - raise Exception(output) - raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/eks-fargate-cluster-test-stack.assets.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/eks-fargate-cluster-test-stack.assets.json index 0ca15983f249c..ccecf3f45814f 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/eks-fargate-cluster-test-stack.assets.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/eks-fargate-cluster-test-stack.assets.json @@ -29,16 +29,16 @@ } } }, - "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a": { + "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9": { "displayName": "FargateTestCluster/KubectlProvider/Handler/Code", "source": { - "path": "asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a", + "path": "asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9", "packaging": "zip" }, "destinations": { - "current_account-current_region-5b09798b": { + "current_account-current_region-b8d33bdb": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip", + "objectKey": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } @@ -71,16 +71,16 @@ } } }, - "280674231c36f0e1e66d7d7268743be80a6f3ad9ac2cff023d59ab4228b7033e": { + "40a0874a50cf083e4985cc9070486ec3590317eeb8c8593376f0f5f4d133a7a4": { "displayName": "eks-fargate-cluster-test-stack Template", "source": { "path": "eks-fargate-cluster-test-stack.template.json", "packaging": "file" }, "destinations": { - "current_account-current_region-da89f7a4": { + "current_account-current_region-c5affd82": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "280674231c36f0e1e66d7d7268743be80a6f3ad9ac2cff023d59ab4228b7033e.json", + "objectKey": "40a0874a50cf083e4985cc9070486ec3590317eeb8c8593376f0f5f4d133a7a4.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/eks-fargate-cluster-test-stack.template.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/eks-fargate-cluster-test-stack.template.json index 33c8298f8213d..24c784ceabe7f 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/eks-fargate-cluster-test-stack.template.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/eks-fargate-cluster-test-stack.template.json @@ -734,7 +734,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip" + "S3Key": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip" }, "Description": "onEvent handler for EKS kubectl resource provider", "Environment": { diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/manifest.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/manifest.json index d441125a6765a..48bf0354c343a 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/manifest.json @@ -18,7 +18,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}/280674231c36f0e1e66d7d7268743be80a6f3ad9ac2cff023d59ab4228b7033e.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/40a0874a50cf083e4985cc9070486ec3590317eeb8c8593376f0f5f4d133a7a4.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/tree.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/tree.json index d4179f43215c6..55b250572eb75 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.fargate-cluster.js.snapshot/tree.json @@ -1 +1 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"eks-fargate-cluster-test-stack":{"id":"eks-fargate-cluster-test-stack","path":"eks-fargate-cluster-test-stack","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"kubectlLayer":{"id":"kubectlLayer","path":"eks-fargate-cluster-test-stack/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"eks-fargate-cluster-test-stack/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-fargate-cluster-test-stack/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-fargate-cluster-test-stack/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"FargateTestCluster":{"id":"FargateTestCluster","path":"eks-fargate-cluster-test-stack/FargateTestCluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.FargateCluster","version":"0.0.0","metadata":["*","*","*","*"]},"children":{"DefaultVpc":{"id":"DefaultVpc","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet1"}],"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}},"Acl":{"id":"Acl","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet1"}],"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"FargateTestClusterDefaultVpcPublicSubnet1RouteTableB500F1D5"},"subnetId":{"Ref":"FargateTestClusterDefaultVpcPublicSubnet1Subnet5D09A042"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"FargateTestClusterDefaultVpcIGW5D07D60C"},"routeTableId":{"Ref":"FargateTestClusterDefaultVpcPublicSubnet1RouteTableB500F1D5"}}}},"EIP":{"id":"EIP","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":["FargateTestClusterDefaultVpcPublicSubnet1EIPC3787A01","AllocationId"]},"subnetId":{"Ref":"FargateTestClusterDefaultVpcPublicSubnet1Subnet5D09A042"},"tags":[{"key":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet2"}],"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}},"Acl":{"id":"Acl","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet2"}],"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"FargateTestClusterDefaultVpcPublicSubnet2RouteTable4195A330"},"subnetId":{"Ref":"FargateTestClusterDefaultVpcPublicSubnet2SubnetDFD56340"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"FargateTestClusterDefaultVpcIGW5D07D60C"},"routeTableId":{"Ref":"FargateTestClusterDefaultVpcPublicSubnet2RouteTable4195A330"}}}},"EIP":{"id":"EIP","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet2"}]}}},"NATGateway":{"id":"NATGateway","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":["FargateTestClusterDefaultVpcPublicSubnet2EIP0C04AB7C","AllocationId"]},"subnetId":{"Ref":"FargateTestClusterDefaultVpcPublicSubnet2SubnetDFD56340"},"tags":[{"key":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet2"}]}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PrivateSubnet1"}],"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}},"Acl":{"id":"Acl","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PrivateSubnet1"}],"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"FargateTestClusterDefaultVpcPrivateSubnet1RouteTableC927E408"},"subnetId":{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet1Subnet974738F7"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"FargateTestClusterDefaultVpcPublicSubnet1NATGatewayC7755095"},"routeTableId":{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet1RouteTableC927E408"}}}}}},"PrivateSubnet2":{"id":"PrivateSubnet2","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PrivateSubnet2"}],"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}},"Acl":{"id":"Acl","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PrivateSubnet2"}],"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"FargateTestClusterDefaultVpcPrivateSubnet2RouteTableEE3ED096"},"subnetId":{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet2SubnetAEE82747"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"FargateTestClusterDefaultVpcPublicSubnet2NATGatewayB1FD6513"},"routeTableId":{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet2RouteTableEE3ED096"}}}}}},"IGW":{"id":"IGW","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc"}]}}},"VPCGW":{"id":"VPCGW","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"FargateTestClusterDefaultVpcIGW5D07D60C"},"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}},"RestrictDefaultSecurityGroupCustomResource":{"id":"RestrictDefaultSecurityGroupCustomResource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/RestrictDefaultSecurityGroupCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/RestrictDefaultSecurityGroupCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Role":{"id":"Role","path":"eks-fargate-cluster-test-stack/FargateTestCluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"eks-fargate-cluster-test-stack/FargateTestCluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/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":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"eks-fargate-cluster-test-stack/FargateTestCluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}}}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":false},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":false}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["FargateTestClusterControlPlaneSecurityGroup9A9D3DD9","GroupId"]}],"subnetIds":[{"Ref":"FargateTestClusterDefaultVpcPublicSubnet1Subnet5D09A042"},{"Ref":"FargateTestClusterDefaultVpcPublicSubnet2SubnetDFD56340"},{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet1Subnet974738F7"},{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet2SubnetAEE82747"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["FargateTestClusterRoleCB15D0DE","Arn"]},"storageConfig":{"blockStorage":{"enabled":false}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"eks-fargate-cluster-test-stack/FargateTestCluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["FargateTestClusterKubectlProviderHandlerHasEcrPublicD54723EB",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["FargateTestClusterCAF9262D","Arn"]}}],"Version":"2012-10-17"},"policyName":"FargateTestClusterKubectlProviderHandlerServiceRoleDefaultPolicyD43FC73D","roles":[{"Ref":"FargateTestClusterKubectlProviderHandlerServiceRoleB8FACFEE"}]}}}}}}},"Code":{"id":"Code","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"FargateTestClusterKubectlProviderAwsCliLayer89D35680"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["FargateTestClusterKubectlProviderHandlerServiceRoleB8FACFEE","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet1Subnet974738F7"},{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet2SubnetAEE82747"}],"securityGroupIds":[{"Fn::GetAtt":["FargateTestClusterCAF9262D","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["FargateTestClusterKubectlProviderHandler57BDDF1A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["FargateTestClusterKubectlProviderHandler57BDDF1A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"FargateTestClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicy84061E77","roles":[{"Ref":"FargateTestClusterKubectlProviderframeworkonEventServiceRole7B0EE1EE"}]}}}}}}},"Code":{"id":"Code","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["FargateTestClusterKubectlProviderHandler57BDDF1A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["FargateTestClusterKubectlProviderframeworkonEventServiceRole7B0EE1EE","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet1Subnet974738F7"},{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet2SubnetAEE82747"}],"securityGroupIds":[{"Fn::GetAtt":["FargateTestClusterCAF9262D","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["FargateTestClusterKubectlProviderHandler57BDDF1A","Arn"]}}],"Version":"2012-10-17"},"policyName":"FargateTestClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole0885AE23E","roles":[{"Ref":"FargateTestClusterKubectlProviderframeworkonEventServiceRole7B0EE1EE"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"eks-fargate-cluster-test-stack/FargateTestCluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"FargateTestClusterCAF9262D"},"principalArn":{"Fn::GetAtt":["FargateTestClusterKubectlProviderHandlerServiceRoleB8FACFEE","Arn"]}}}}}},"CoreDnsComputeTypePatch":{"id":"CoreDnsComputeTypePatch","path":"eks-fargate-cluster-test-stack/FargateTestCluster/CoreDnsComputeTypePatch","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesPatch","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/CoreDnsComputeTypePatch/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"eks-fargate-cluster-test-stack/FargateTestCluster/CoreDnsComputeTypePatch/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"fargate-profile-default":{"id":"fargate-profile-default","path":"eks-fargate-cluster-test-stack/FargateTestCluster/fargate-profile-default","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.FargateProfile","version":"0.0.0"},"children":{"PodExecutionRole":{"id":"PodExecutionRole","path":"eks-fargate-cluster-test-stack/FargateTestCluster/fargate-profile-default/PodExecutionRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportPodExecutionRole":{"id":"ImportPodExecutionRole","path":"eks-fargate-cluster-test-stack/FargateTestCluster/fargate-profile-default/PodExecutionRole/ImportPodExecutionRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/fargate-profile-default/PodExecutionRole/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":"eks-fargate-pods.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy"]]}]}}}}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/fargate-profile-default/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnFargateProfile","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::FargateProfile","aws:cdk:cloudformation:props":{"clusterName":{"Ref":"FargateTestClusterCAF9262D"},"podExecutionRoleArn":{"Fn::GetAtt":["FargateTestClusterfargateprofiledefaultPodExecutionRole36251E64","Arn"]},"selectors":[{"namespace":"default","labels":[]},{"namespace":"kube-system","labels":[]}]}}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"eks-fargate-cluster-test-stack/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"Custom::VpcRestrictDefaultSGCustomResourceProvider":{"id":"Custom::VpcRestrictDefaultSGCustomResourceProvider","path":"eks-fargate-cluster-test-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"eks-fargate-cluster-test-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"eks-fargate-cluster-test-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"eks-fargate-cluster-test-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"eks-fargate-cluster-test-stack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"eks-fargate-cluster-test-stack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"eks-fargate-cluster":{"id":"eks-fargate-cluster","path":"eks-fargate-cluster","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"eks-fargate-cluster/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"eks-fargate-cluster/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"eks-fargate-cluster/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"eks-fargate-cluster/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"eks-fargate-cluster/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 +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"eks-fargate-cluster-test-stack":{"id":"eks-fargate-cluster-test-stack","path":"eks-fargate-cluster-test-stack","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"kubectlLayer":{"id":"kubectlLayer","path":"eks-fargate-cluster-test-stack/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"eks-fargate-cluster-test-stack/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-fargate-cluster-test-stack/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-fargate-cluster-test-stack/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"FargateTestCluster":{"id":"FargateTestCluster","path":"eks-fargate-cluster-test-stack/FargateTestCluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.FargateCluster","version":"0.0.0","metadata":["*","*","*","*"]},"children":{"DefaultVpc":{"id":"DefaultVpc","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet1"}],"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}},"Acl":{"id":"Acl","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet1"}],"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"FargateTestClusterDefaultVpcPublicSubnet1RouteTableB500F1D5"},"subnetId":{"Ref":"FargateTestClusterDefaultVpcPublicSubnet1Subnet5D09A042"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"FargateTestClusterDefaultVpcIGW5D07D60C"},"routeTableId":{"Ref":"FargateTestClusterDefaultVpcPublicSubnet1RouteTableB500F1D5"}}}},"EIP":{"id":"EIP","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":["FargateTestClusterDefaultVpcPublicSubnet1EIPC3787A01","AllocationId"]},"subnetId":{"Ref":"FargateTestClusterDefaultVpcPublicSubnet1Subnet5D09A042"},"tags":[{"key":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet2"}],"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}},"Acl":{"id":"Acl","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet2"}],"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"FargateTestClusterDefaultVpcPublicSubnet2RouteTable4195A330"},"subnetId":{"Ref":"FargateTestClusterDefaultVpcPublicSubnet2SubnetDFD56340"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"FargateTestClusterDefaultVpcIGW5D07D60C"},"routeTableId":{"Ref":"FargateTestClusterDefaultVpcPublicSubnet2RouteTable4195A330"}}}},"EIP":{"id":"EIP","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet2"}]}}},"NATGateway":{"id":"NATGateway","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":["FargateTestClusterDefaultVpcPublicSubnet2EIP0C04AB7C","AllocationId"]},"subnetId":{"Ref":"FargateTestClusterDefaultVpcPublicSubnet2SubnetDFD56340"},"tags":[{"key":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PublicSubnet2"}]}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PrivateSubnet1"}],"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}},"Acl":{"id":"Acl","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PrivateSubnet1"}],"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"FargateTestClusterDefaultVpcPrivateSubnet1RouteTableC927E408"},"subnetId":{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet1Subnet974738F7"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"FargateTestClusterDefaultVpcPublicSubnet1NATGatewayC7755095"},"routeTableId":{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet1RouteTableC927E408"}}}}}},"PrivateSubnet2":{"id":"PrivateSubnet2","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PrivateSubnet2"}],"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}},"Acl":{"id":"Acl","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/PrivateSubnet2"}],"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"FargateTestClusterDefaultVpcPrivateSubnet2RouteTableEE3ED096"},"subnetId":{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet2SubnetAEE82747"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"FargateTestClusterDefaultVpcPublicSubnet2NATGatewayB1FD6513"},"routeTableId":{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet2RouteTableEE3ED096"}}}}}},"IGW":{"id":"IGW","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc"}]}}},"VPCGW":{"id":"VPCGW","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/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":"FargateTestClusterDefaultVpcIGW5D07D60C"},"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}},"RestrictDefaultSecurityGroupCustomResource":{"id":"RestrictDefaultSecurityGroupCustomResource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/RestrictDefaultSecurityGroupCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"eks-fargate-cluster-test-stack/FargateTestCluster/DefaultVpc/RestrictDefaultSecurityGroupCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Role":{"id":"Role","path":"eks-fargate-cluster-test-stack/FargateTestCluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"eks-fargate-cluster-test-stack/FargateTestCluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/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":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"eks-fargate-cluster-test-stack/FargateTestCluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"FargateTestClusterDefaultVpcEA353EBF"}}}}}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":false},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":false}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["FargateTestClusterControlPlaneSecurityGroup9A9D3DD9","GroupId"]}],"subnetIds":[{"Ref":"FargateTestClusterDefaultVpcPublicSubnet1Subnet5D09A042"},{"Ref":"FargateTestClusterDefaultVpcPublicSubnet2SubnetDFD56340"},{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet1Subnet974738F7"},{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet2SubnetAEE82747"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["FargateTestClusterRoleCB15D0DE","Arn"]},"storageConfig":{"blockStorage":{"enabled":false}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"eks-fargate-cluster-test-stack/FargateTestCluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["FargateTestClusterKubectlProviderHandlerHasEcrPublicD54723EB",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["FargateTestClusterCAF9262D","Arn"]}}],"Version":"2012-10-17"},"policyName":"FargateTestClusterKubectlProviderHandlerServiceRoleDefaultPolicyD43FC73D","roles":[{"Ref":"FargateTestClusterKubectlProviderHandlerServiceRoleB8FACFEE"}]}}}}}}},"Code":{"id":"Code","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"FargateTestClusterKubectlProviderAwsCliLayer89D35680"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["FargateTestClusterKubectlProviderHandlerServiceRoleB8FACFEE","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet1Subnet974738F7"},{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet2SubnetAEE82747"}],"securityGroupIds":[{"Fn::GetAtt":["FargateTestClusterCAF9262D","ClusterSecurityGroupId"]}]}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["FargateTestClusterKubectlProviderHandler57BDDF1A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["FargateTestClusterKubectlProviderHandler57BDDF1A","Arn"]},":*"]]}]}],"Version":"2012-10-17"},"policyName":"FargateTestClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicy84061E77","roles":[{"Ref":"FargateTestClusterKubectlProviderframeworkonEventServiceRole7B0EE1EE"}]}}}}}}},"Code":{"id":"Code","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["FargateTestClusterKubectlProviderHandler57BDDF1A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["FargateTestClusterKubectlProviderframeworkonEventServiceRole7B0EE1EE","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet1Subnet974738F7"},{"Ref":"FargateTestClusterDefaultVpcPrivateSubnet2SubnetAEE82747"}],"securityGroupIds":[{"Fn::GetAtt":["FargateTestClusterCAF9262D","ClusterSecurityGroupId"]}]}}}},"inlinePolicyAddedToExecutionRole-0":{"id":"inlinePolicyAddedToExecutionRole-0","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":[{"statements":"*"},{"addStatements":[{}]},{"attachToRole":["*"]},{"attachToRole":["*"]}]},"children":{"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/KubectlProvider/Provider/framework-onEvent/inlinePolicyAddedToExecutionRole-0/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":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["FargateTestClusterKubectlProviderHandler57BDDF1A","Arn"]}}],"Version":"2012-10-17"},"policyName":"FargateTestClusterKubectlProviderframeworkonEventinlinePolicyAddedToExecutionRole0885AE23E","roles":[{"Ref":"FargateTestClusterKubectlProviderframeworkonEventServiceRole7B0EE1EE"}]}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"eks-fargate-cluster-test-stack/FargateTestCluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"FargateTestClusterCAF9262D"},"principalArn":{"Fn::GetAtt":["FargateTestClusterKubectlProviderHandlerServiceRoleB8FACFEE","Arn"]}}}}}},"CoreDnsComputeTypePatch":{"id":"CoreDnsComputeTypePatch","path":"eks-fargate-cluster-test-stack/FargateTestCluster/CoreDnsComputeTypePatch","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubernetesPatch","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/CoreDnsComputeTypePatch/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"eks-fargate-cluster-test-stack/FargateTestCluster/CoreDnsComputeTypePatch/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"fargate-profile-default":{"id":"fargate-profile-default","path":"eks-fargate-cluster-test-stack/FargateTestCluster/fargate-profile-default","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.FargateProfile","version":"0.0.0"},"children":{"PodExecutionRole":{"id":"PodExecutionRole","path":"eks-fargate-cluster-test-stack/FargateTestCluster/fargate-profile-default/PodExecutionRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportPodExecutionRole":{"id":"ImportPodExecutionRole","path":"eks-fargate-cluster-test-stack/FargateTestCluster/fargate-profile-default/PodExecutionRole/ImportPodExecutionRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/fargate-profile-default/PodExecutionRole/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":"eks-fargate-pods.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy"]]}]}}}}},"Resource":{"id":"Resource","path":"eks-fargate-cluster-test-stack/FargateTestCluster/fargate-profile-default/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnFargateProfile","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::FargateProfile","aws:cdk:cloudformation:props":{"clusterName":{"Ref":"FargateTestClusterCAF9262D"},"podExecutionRoleArn":{"Fn::GetAtt":["FargateTestClusterfargateprofiledefaultPodExecutionRole36251E64","Arn"]},"selectors":[{"namespace":"default","labels":[]},{"namespace":"kube-system","labels":[]}]}}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"eks-fargate-cluster-test-stack/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"Custom::VpcRestrictDefaultSGCustomResourceProvider":{"id":"Custom::VpcRestrictDefaultSGCustomResourceProvider","path":"eks-fargate-cluster-test-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"eks-fargate-cluster-test-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"eks-fargate-cluster-test-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"eks-fargate-cluster-test-stack/Custom::VpcRestrictDefaultSGCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"eks-fargate-cluster-test-stack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"eks-fargate-cluster-test-stack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"eks-fargate-cluster":{"id":"eks-fargate-cluster","path":"eks-fargate-cluster","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"eks-fargate-cluster/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"eks-fargate-cluster/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"eks-fargate-cluster/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"eks-fargate-cluster/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"eks-fargate-cluster/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/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/apply/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/apply/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/get/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/get/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py new file mode 100644 index 0000000000000..6664adf77090d --- /dev/null +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/helm/__init__.py @@ -0,0 +1,250 @@ +import json +import logging +import os +import re +import subprocess +import shutil +import tempfile +import zipfile +import boto3 + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + +# these are coming from the kubectl layer +os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] + +outdir = os.environ.get('TEST_OUTDIR', '/tmp') +kubeconfig = os.path.join(outdir, 'kubeconfig') + +def get_chart_asset_from_url(chart_asset_url): + chart_zip = os.path.join(outdir, 'chart.zip') + shutil.rmtree(chart_zip, ignore_errors=True) + subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) + chart_dir = os.path.join(outdir, 'chart') + shutil.rmtree(chart_dir, ignore_errors=True) + os.mkdir(chart_dir) + with zipfile.ZipFile(chart_zip, 'r') as zip_ref: + zip_ref.extractall(chart_dir) + return chart_dir + +def is_ecr_public_available(region): + s = boto3.Session() + return s.get_partition_for_region(region) == 'aws' + +def helm_handler(event, context): + logger.info(json.dumps(dict(event, ResponseURL='...'))) + + request_type = event['RequestType'] + props = event['ResourceProperties'] + + # resource properties + cluster_name = props['ClusterName'] + release = props['Release'] + chart = props.get('Chart', None) + chart_asset_url = props.get('ChartAssetURL', None) + version = props.get('Version', None) + wait = props.get('Wait', False) + atomic = props.get('Atomic', False) + timeout = props.get('Timeout', None) + namespace = props.get('Namespace', None) + create_namespace = props.get('CreateNamespace', None) + repository = props.get('Repository', None) + values_text = props.get('Values', None) + skip_crds = props.get('SkipCrds', False) + + # "log in" to the cluster + subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', + '--name', cluster_name, + '--kubeconfig', kubeconfig + ]) + + if os.path.isfile(kubeconfig): + os.chmod(kubeconfig, 0o600) + + # Write out the values to a file and include them with the install and upgrade + values_file = None + if not request_type == "Delete" and not values_text is None: + values = json.loads(values_text) + values_file = os.path.join(outdir, 'values.yaml') + with open(values_file, "w") as f: + f.write(json.dumps(values, indent=2)) + + if request_type == 'Create' or request_type == 'Update': + # Ensure chart or chart_asset_url are set + if chart == None and chart_asset_url == None: + raise RuntimeError(f'chart or chartAsset must be specified') + + if chart_asset_url != None: + assert(chart==None) + assert(repository==None) + assert(version==None) + if not chart_asset_url.startswith('s3://'): + raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') + # future work: support versions from s3 assets + chart = get_chart_asset_from_url(chart_asset_url) + + if repository is not None and repository.startswith('oci://'): + tmpdir = tempfile.TemporaryDirectory() + chart_dir = get_chart_from_oci(tmpdir.name, repository, version) + chart = chart_dir + + helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) + elif request_type == "Delete": + try: + helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) + except Exception as e: + logger.info("delete error: %s" % e) + + +def get_oci_cmd(repository, version): + # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. + private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' + public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' + + private_registry = re.match(private_ecr_pattern, repository).groupdict() + public_registry = re.match(public_ecr_pattern, repository).groupdict() + + # Build helm pull command as array + helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] + + if private_registry['registry'] is not None: + logger.info("Found AWS private repository") + ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + elif public_registry['registry'] is not None: + logger.info("Found AWS public repository, will use default region as deployment") + region = os.environ.get('AWS_REGION', 'us-east-1') + + if is_ecr_public_available(region): + # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html + ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] + helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] + return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} + else: + # No login required for public ECR in non-aws regions + # see https://helm.sh/docs/helm/helm_registry_login/ + return {'helm': helm_cmd} + else: + logger.error("OCI repository format not recognized, falling back to helm pull") + return {'helm': helm_cmd} + + +def get_chart_from_oci(tmpdir, repository=None, version=None): + from subprocess import Popen, PIPE + + commands = get_oci_cmd(repository, version) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + # Execute login commands if needed + if 'ecr_login' in commands and 'helm_registry_login' in commands: + logger.info("Running login command: %s", commands['ecr_login']) + logger.info("Running registry login command: %s", commands['helm_registry_login']) + + # Start first process: aws ecr get-login-password + # NOTE: We do NOT call p1.wait() here before starting p2. + # Doing so could deadlock if p1's output fills the pipe buffer + # before p2 starts reading. Instead, start p2 immediately so it + # can consume p1's stdout as it's produced. + p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) + + # Start second process: helm registry login + p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) + p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early + + # Wait for p2 to finish first (ensures full pipeline completes) + _, p2_err = p2.communicate() + + # Now wait for p1 so we have a complete stderr and an exit code + p1.wait() + + # Handle p1 failure + if p1.returncode != 0: + p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' + logger.error( + "ECR get-login-password failed for repository %s. Error: %s", + repository, + p1_err or "No error details" + ) + raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) + + # Handle p2 failure + if p2.returncode != 0: + logger.error( + "Helm registry authentication failed for repository %s. Error: %s", + repository, + p2_err.decode('utf-8', errors='replace') or "No error details" + ) + raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) + + # Execute helm pull command + logger.info("Running helm command: %s", commands['helm']) + output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) + logger.info(output) + + # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. + # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service + return os.path.join(tmpdir, repository.rpartition('/')[-1]) + + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + raise Exception(output) + + raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') + + +def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): + cmnd = ['helm', verb, release] + if not chart is None: + cmnd.append(chart) + if verb == 'upgrade': + cmnd.append('--install') + if create_namespace: + cmnd.append('--create-namespace') + if not repo is None: + cmnd.extend(['--repo', repo]) + if not file is None: + cmnd.extend(['--values', file]) + if not version is None: + cmnd.extend(['--version', version]) + if not namespace is None: + cmnd.extend(['--namespace', namespace]) + if wait: + cmnd.append('--wait') + if skip_crds: + cmnd.append('--skip-crds') + if not timeout is None: + cmnd.extend(['--timeout', timeout]) + if atomic: + cmnd.append('--atomic') + cmnd.extend(['--kubeconfig', kubeconfig]) + + # Log the full helm command for better troubleshooting + logger.info("Running command: %s", cmnd) + + maxAttempts = 3 + retry = maxAttempts + while retry > 0: + try: + output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) + logger.info(output.decode('utf-8', errors='replace')) + return + except subprocess.CalledProcessError as exc: + output = exc.output + if b'Broken pipe' in output: + retry = retry - 1 + logger.info("Broken pipe, retries left: %s" % retry) + else: + error_message = output.decode('utf-8', errors='replace') + logger.error("Command failed: %s", cmnd) + logger.error("Error output: %s", error_message) + raise Exception(output) + raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/index.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/index.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py similarity index 100% rename from packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/patch/__init__.py rename to packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9/patch/__init__.py diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py deleted file mode 100644 index 6c7838f182a45..0000000000000 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a/helm/__init__.py +++ /dev/null @@ -1,250 +0,0 @@ -import json -import logging -import os -import re -import subprocess -import shutil -import tempfile -import zipfile -import boto3 - -logger = logging.getLogger() -logger.setLevel(logging.INFO) - -# these are coming from the kubectl layer -os.environ['PATH'] = '/opt/helm:/opt/awscli:' + os.environ['PATH'] - -outdir = os.environ.get('TEST_OUTDIR', '/tmp') -kubeconfig = os.path.join(outdir, 'kubeconfig') - -def get_chart_asset_from_url(chart_asset_url): - chart_zip = os.path.join(outdir, 'chart.zip') - shutil.rmtree(chart_zip, ignore_errors=True) - subprocess.check_call(['aws', 's3', 'cp', chart_asset_url, chart_zip]) - chart_dir = os.path.join(outdir, 'chart') - shutil.rmtree(chart_dir, ignore_errors=True) - os.mkdir(chart_dir) - with zipfile.ZipFile(chart_zip, 'r') as zip_ref: - zip_ref.extractall(chart_dir) - return chart_dir - -def is_ecr_public_available(region): - s = boto3.Session() - return s.get_partition_for_region(region) == 'aws' - -def helm_handler(event, context): - logger.info(json.dumps(dict(event, ResponseURL='...'))) - - request_type = event['RequestType'] - props = event['ResourceProperties'] - - # resource properties - cluster_name = props['ClusterName'] - release = props['Release'] - chart = props.get('Chart', None) - chart_asset_url = props.get('ChartAssetURL', None) - version = props.get('Version', None) - wait = props.get('Wait', False) - atomic = props.get('Atomic', False) - timeout = props.get('Timeout', None) - namespace = props.get('Namespace', None) - create_namespace = props.get('CreateNamespace', None) - repository = props.get('Repository', None) - values_text = props.get('Values', None) - skip_crds = props.get('SkipCrds', False) - - # "log in" to the cluster - subprocess.check_call([ 'aws', 'eks', 'update-kubeconfig', - '--name', cluster_name, - '--kubeconfig', kubeconfig - ]) - - if os.path.isfile(kubeconfig): - os.chmod(kubeconfig, 0o600) - - # Write out the values to a file and include them with the install and upgrade - values_file = None - if not request_type == "Delete" and not values_text is None: - values = json.loads(values_text) - values_file = os.path.join(outdir, 'values.yaml') - with open(values_file, "w") as f: - f.write(json.dumps(values, indent=2)) - - if request_type == 'Create' or request_type == 'Update': - # Ensure chart or chart_asset_url are set - if chart == None and chart_asset_url == None: - raise RuntimeError(f'chart or chartAsset must be specified') - - if chart_asset_url != None: - assert(chart==None) - assert(repository==None) - assert(version==None) - if not chart_asset_url.startswith('s3://'): - raise RuntimeError(f'ChartAssetURL must point to as s3 location but is {chart_asset_url}') - # future work: support versions from s3 assets - chart = get_chart_asset_from_url(chart_asset_url) - - if repository is not None and repository.startswith('oci://'): - tmpdir = tempfile.TemporaryDirectory() - chart_dir = get_chart_from_oci(tmpdir.name, repository, version) - chart = chart_dir - - helm('upgrade', release, chart, repository, values_file, namespace, version, wait, timeout, create_namespace, atomic=atomic) - elif request_type == "Delete": - try: - helm('uninstall', release, namespace=namespace, wait=wait, timeout=timeout) - except Exception as e: - logger.info("delete error: %s" % e) - - -def get_oci_cmd(repository, version): - # Generates OCI command based on pattern. Public ECR vs Private ECR are treated differently. - private_ecr_pattern = 'oci://(?P\d+\.dkr\.ecr\.(?P[a-z0-9\-]+)\.(?P[a-z0-9\.-]+))*' - public_ecr_pattern = 'oci://(?Ppublic\.ecr\.aws)*' - - private_registry = re.match(private_ecr_pattern, repository).groupdict() - public_registry = re.match(public_ecr_pattern, repository).groupdict() - - # Build helm pull command as array - helm_cmd = ['helm', 'pull', repository, '--version', version , '--untar'] - - if private_registry['registry'] is not None: - logger.info("Found AWS private repository") - ecr_login = ['aws', 'ecr', 'get-login-password', '--region', private_registry['region']] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', private_registry['registry']] - return {'ecr_login': ecr_login, 'registry_login': helm_registry_login, 'helm': helm_cmd} - elif public_registry['registry'] is not None: - logger.info("Found AWS public repository, will use default region as deployment") - region = os.environ.get('AWS_REGION', 'us-east-1') - - if is_ecr_public_available(region): - # Public ECR auth is always in us-east-1: https://docs.aws.amazon.com/AmazonECR/latest/public/public-registry-auth.html - ecr_login = ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1'] - helm_registry_login = ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', public_registry['registry']] - return {'ecr_login': ecr_login, 'helm_registry_login': helm_registry_login, 'helm': helm_cmd} - else: - # No login required for public ECR in non-aws regions - # see https://helm.sh/docs/helm/helm_registry_login/ - return {'helm': helm_cmd} - else: - logger.error("OCI repository format not recognized, falling back to helm pull") - return {'helm': helm_cmd} - - -def get_chart_from_oci(tmpdir, repository=None, version=None): - from subprocess import Popen, PIPE - - commands = get_oci_cmd(repository, version) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - # Execute login commands if needed - if 'ecr_login' in commands and 'helm_registry_login' in commands: - logger.info("Running login command: %s", commands['ecr_login']) - logger.info("Running registry login command: %s", commands['helm_registry_login']) - - # Start first process: aws ecr get-login-password - # NOTE: We do NOT call p1.wait() here before starting p2. - # Doing so could deadlock if p1's output fills the pipe buffer - # before p2 starts reading. Instead, start p2 immediately so it - # can consume p1's stdout as it's produced. - p1 = Popen(commands['ecr_login'], stdout=PIPE, stderr=PIPE, cwd=tmpdir) - - # Start second process: helm registry login - p2 = Popen(commands['helm_registry_login'], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, cwd=tmpdir) - p1.stdout.close() # Allow p1 to receive SIGPIPE if p2 exits early - - # Wait for p2 to finish first (ensures full pipeline completes) - _, p2_err = p2.communicate() - - # Now wait for p1 so we have a complete stderr and an exit code - p1.wait() - - # Handle p1 failure - if p1.returncode != 0: - p1_err = p1.stderr.read().decode('utf-8', errors='replace') if p1.stderr else '' - logger.error( - "ECR get-login-password failed for repository %s. Error: %s", - repository, - p1_err or "No error details" - ) - raise subprocess.CalledProcessError(p1.returncode, commands['ecr_login'], p1_err.encode()) - - # Handle p2 failure - if p2.returncode != 0: - logger.error( - "Helm registry authentication failed for repository %s. Error: %s", - repository, - p2_err.decode('utf-8', errors='replace') or "No error details" - ) - raise subprocess.CalledProcessError(p2.returncode, commands['helm_registry_login'], p2_err) - - # Execute helm pull command - logger.info("Running helm command: %s", commands['helm']) - output = subprocess.check_output(commands['helm'], stderr=subprocess.STDOUT, cwd=tmpdir) - logger.info(output) - - # effectively returns "$tmpDir/$lastPartOfOCIUrl", because this is how helm pull saves OCI artifact. - # Eg. if we have oci://9999999999.dkr.ecr.us-east-1.amazonaws.com/foo/bar/pet-service repository, helm saves artifact under $tmpDir/pet-service - return os.path.join(tmpdir, repository.rpartition('/')[-1]) - - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - raise Exception(output) - - raise Exception(f'Operation failed after {maxAttempts} attempts: {output}') - - -def helm(verb, release, chart = None, repo = None, file = None, namespace = None, version = None, wait = False, timeout = None, create_namespace = None, skip_crds = False, atomic = False): - cmnd = ['helm', verb, release] - if not chart is None: - cmnd.append(chart) - if verb == 'upgrade': - cmnd.append('--install') - if create_namespace: - cmnd.append('--create-namespace') - if not repo is None: - cmnd.extend(['--repo', repo]) - if not file is None: - cmnd.extend(['--values', file]) - if not version is None: - cmnd.extend(['--version', version]) - if not namespace is None: - cmnd.extend(['--namespace', namespace]) - if wait: - cmnd.append('--wait') - if skip_crds: - cmnd.append('--skip-crds') - if not timeout is None: - cmnd.extend(['--timeout', timeout]) - if atomic: - cmnd.append('--atomic') - cmnd.extend(['--kubeconfig', kubeconfig]) - - # Log the full helm command for better troubleshooting - logger.info("Running command: %s", cmnd) - - maxAttempts = 3 - retry = maxAttempts - while retry > 0: - try: - output = subprocess.check_output(cmnd, stderr=subprocess.STDOUT, cwd=outdir) - logger.info(output.decode('utf-8', errors='replace')) - return - except subprocess.CalledProcessError as exc: - output = exc.output - if b'Broken pipe' in output: - retry = retry - 1 - logger.info("Broken pipe, retries left: %s" % retry) - else: - error_message = output.decode('utf-8', errors='replace') - logger.error("Command failed: %s", cmnd) - logger.error("Error output: %s", error_message) - raise Exception(output) - raise Exception(f'Operation failed after {maxAttempts} attempts: {output.decode("utf-8", errors="replace")}') diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/aws-cdk-eks-v2-alpha-helm-logging-test.assets.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/aws-cdk-eks-v2-alpha-helm-logging-test.assets.json index af46bdb84fa46..c8319f63298a3 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/aws-cdk-eks-v2-alpha-helm-logging-test.assets.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/aws-cdk-eks-v2-alpha-helm-logging-test.assets.json @@ -15,16 +15,16 @@ } } }, - "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a": { + "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9": { "displayName": "Cluster/KubectlProvider/Handler/Code", "source": { - "path": "asset.94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a", + "path": "asset.379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9", "packaging": "zip" }, "destinations": { - "current_account-current_region-5b09798b": { + "current_account-current_region-b8d33bdb": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip", + "objectKey": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } @@ -57,16 +57,16 @@ } } }, - "7104890b13ddde371c573efa663094ebd4ddfbb6fd646fb1ca044f4f35f93131": { + "75b758e2c2ea13daa584329444d3fe4357addd6dce8b1fe5c545861b280b04bd": { "displayName": "aws-cdk-eks-v2-alpha-helm-logging-test Template", "source": { "path": "aws-cdk-eks-v2-alpha-helm-logging-test.template.json", "packaging": "file" }, "destinations": { - "current_account-current_region-0191d476": { + "current_account-current_region-a780c375": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "7104890b13ddde371c573efa663094ebd4ddfbb6fd646fb1ca044f4f35f93131.json", + "objectKey": "75b758e2c2ea13daa584329444d3fe4357addd6dce8b1fe5c545861b280b04bd.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/aws-cdk-eks-v2-alpha-helm-logging-test.template.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/aws-cdk-eks-v2-alpha-helm-logging-test.template.json index 2c6bd52bb66bd..3835738ae8d3b 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/aws-cdk-eks-v2-alpha-helm-logging-test.template.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/aws-cdk-eks-v2-alpha-helm-logging-test.template.json @@ -767,7 +767,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip" + "S3Key": "379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip" }, "Description": "onEvent handler for EKS kubectl resource provider", "Environment": { diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/manifest.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/manifest.json index ec7aad530cd47..9346d7b765a2c 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/manifest.json @@ -18,7 +18,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}/7104890b13ddde371c573efa663094ebd4ddfbb6fd646fb1ca044f4f35f93131.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/75b758e2c2ea13daa584329444d3fe4357addd6dce8b1fe5c545861b280b04bd.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/tree.json b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/tree.json index 557e3690128cc..884ba1067ba98 100644 --- a/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-eks-v2-alpha/test/integ.helm-chart-logging.js.snapshot/tree.json @@ -1 +1 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-v2-alpha-helm-logging-test":{"id":"aws-cdk-eks-v2-alpha-helm-logging-test","path":"aws-cdk-eks-v2-alpha-helm-logging-test","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Vpc":{"id":"Vpc","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"natGateways":"*","restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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"}}}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-v2-alpha-helm-logging-test/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-v2-alpha-helm-logging-test/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-v2-alpha-helm-logging-test/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-v2-alpha-helm-logging-test/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/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","sts:TagSession"],"Effect":"Allow","Principal":{"Service":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSComputePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSBlockStoragePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSLoadBalancingPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSNetworkingPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"ClusternodePoolRole":{"id":"ClusternodePoolRole","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/ClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]}]},"children":{"ImportClusternodePoolRole":{"id":"ImportClusternodePoolRole","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/ClusternodePoolRole/ImportClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/ClusternodePoolRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":true,"nodePools":["system","general-purpose"],"nodeRoleArn":{"Fn::GetAtt":["ClusterClusternodePoolRole69276141","Arn"]}},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":true}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":true}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"94e52507a8326eadb61b8c6f1c7b4ad47ba88b62592e82cfa15ffe85dc2c745a.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"ClusterKubectlProviderHandler2E05C68A"}]]},"retentionInDays":731}}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]},{"Action":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"ClusterKubectlProviderframeworkonEvent68E0CF80"}]]},"retentionInDays":731}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}},"chart-aws-load-balancer-controller":{"id":"chart-aws-load-balancer-controller","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/chart-aws-load-balancer-controller","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/chart-aws-load-balancer-controller/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/chart-aws-load-balancer-controller/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-eks-v2-alpha-helm-logging-test/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-v2-alpha-helm-logging-test/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-v2-alpha-helm-logging-test/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-v2-alpha-helm-logging":{"id":"aws-cdk-eks-v2-alpha-helm-logging","path":"aws-cdk-eks-v2-alpha-helm-logging","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-v2-alpha-helm-logging/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-v2-alpha-helm-logging/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-v2-alpha-helm-logging/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-v2-alpha-helm-logging/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-v2-alpha-helm-logging/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 +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-eks-v2-alpha-helm-logging-test":{"id":"aws-cdk-eks-v2-alpha-helm-logging-test","path":"aws-cdk-eks-v2-alpha-helm-logging-test","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"Vpc":{"id":"Vpc","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"natGateways":"*","restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PublicSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"*"},{}]},"children":{"Subnet":{"id":"Subnet","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PublicSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/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"}}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PrivateSubnet1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"Acl":{"id":"Acl","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"kubernetes.io/role/internal-elb","value":"1"},{"key":"Name","value":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc/PrivateSubnet2"}],"vpcId":{"Ref":"Vpc8378EB38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"VpcPublicSubnet1NATGateway4D7517AA"},"routeTableId":{"Ref":"VpcPrivateSubnet2RouteTableA678073B"}}}}}},"IGW":{"id":"IGW","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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":"aws-cdk-eks-v2-alpha-helm-logging-test/Vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"aws-cdk-eks-v2-alpha-helm-logging-test/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"}}}}}},"kubectlLayer":{"id":"kubectlLayer","path":"aws-cdk-eks-v2-alpha-helm-logging-test/kubectlLayer","constructInfo":{"fqn":"@aws-cdk/lambda-layer-kubectl-v32.KubectlV32Layer","version":"2.1.0","metadata":["*"]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-v2-alpha-helm-logging-test/kubectlLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-v2-alpha-helm-logging-test/kubectlLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-v2-alpha-helm-logging-test/kubectlLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/kubectlLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"6094cb0ff874f89ab5ab24fb6b9417df0fdeb6966645f90c88ec1d7e28130112.zip"},"description":"/opt/kubectl/kubectl 1.32.3; /opt/helm/helm 3.17.2","licenseInfo":"Apache-2.0"}}}}},"Cluster":{"id":"Cluster","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.Cluster","version":"0.0.0","metadata":["*","*"]},"children":{"Role":{"id":"Role","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/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","sts:TagSession"],"Effect":"Allow","Principal":{"Service":"eks.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSClusterPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSComputePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSBlockStoragePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSLoadBalancingPolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSNetworkingPolicy"]]}]}}}}},"ControlPlaneSecurityGroup":{"id":"ControlPlaneSecurityGroup","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/ControlPlaneSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*","description":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/ControlPlaneSecurityGroup/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":"EKS Control Plane Security Group","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"Vpc8378EB38"}}}}}},"ClusternodePoolRole":{"id":"ClusternodePoolRole","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/ClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]}]},"children":{"ImportClusternodePoolRole":{"id":"ImportClusternodePoolRole","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/ClusternodePoolRole/ImportClusternodePoolRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/ClusternodePoolRole/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":"ec2.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEKSWorkerNodePolicy"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnCluster","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::Cluster","aws:cdk:cloudformation:props":{"accessConfig":{"authenticationMode":"API"},"computeConfig":{"enabled":true,"nodePools":["system","general-purpose"],"nodeRoleArn":{"Fn::GetAtt":["ClusterClusternodePoolRole69276141","Arn"]}},"kubernetesNetworkConfig":{"ipFamily":"ipv4","elasticLoadBalancing":{"enabled":true}},"resourcesVpcConfig":{"securityGroupIds":[{"Fn::GetAtt":["ClusterControlPlaneSecurityGroupD274242C","GroupId"]}],"subnetIds":[{"Ref":"VpcPublicSubnet1Subnet5C2D37C4"},{"Ref":"VpcPublicSubnet2Subnet691E08A3"},{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"endpointPrivateAccess":true,"endpointPublicAccess":true},"roleArn":{"Fn::GetAtt":["ClusterRoleFA261979","Arn"]},"storageConfig":{"blockStorage":{"enabled":true}},"version":"1.32"}}},"KubectlReadyBarrier":{"id":"KubectlReadyBarrier","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlReadyBarrier","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"ClusterSecurityGroup":{"id":"ClusterSecurityGroup","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/ClusterSecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"KubectlProvider":{"id":"KubectlProvider","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.KubectlProvider","version":"0.0.0"},"children":{"Handler":{"id":"Handler","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"timeout":"*","description":"*","memorySize":"*","environment":"*","role":"*","code":"*","handler":"*","runtime":"*","vpc":"*","securityGroups":["*"],"vpcSubnets":{"subnets":["*","*"]}},{"addEnvironment":["*","*"]},{"addLayers":["*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":[{"managedPolicyArn":"*"}]},{"addManagedPolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"]]},{"Fn::If":["ClusterKubectlProviderHandlerHasEcrPublic69E09706",{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly"]]},{"Ref":"AWS::NoValue"}]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/ServiceRole/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":"eks:DescribeCluster","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterEB0386A7","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderHandlerServiceRoleDefaultPolicy77317198","roles":[{"Ref":"ClusterKubectlProviderHandlerServiceRoleB460AA6D"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/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}-${AWS::Region}"},"s3Key":"379a97e43c3d01fdb08125fcff9c80a976a33da6287e25571deb51e72b5eeda9.zip"},"description":"onEvent handler for EKS kubectl resource provider","environment":{"variables":{"AWS_STS_REGIONAL_ENDPOINTS":"regional"}},"handler":"index.handler","layers":[{"Ref":"ClusterKubectlProviderAwsCliLayer24064B0B"},{"Ref":"kubectlLayer44321E08"}],"memorySize":1024,"role":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]},"runtime":"python3.11","timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"ClusterKubectlProviderHandler2E05C68A"}]]},"retentionInDays":731}}}}},"HasEcrPublic":{"id":"HasEcrPublic","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Handler/HasEcrPublic","constructInfo":{"fqn":"aws-cdk-lib.CfnCondition","version":"0.0.0"}}}},"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c49d356cac773d491c5f7ac148995a1181498a8e289429f8612a7f7e3814f535.zip"},"description":"/opt/awscli/aws"}}}}},"ConditionalPolicyArn":{"id":"ConditionalPolicyArn","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/ConditionalPolicyArn","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"conditionalPolicy":{"id":"conditionalPolicy","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/conditionalPolicy","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"Provider":{"id":"Provider","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider","constructInfo":{"fqn":"aws-cdk-lib.custom_resources.Provider","version":"0.0.0"},"children":{"framework-onEvent":{"id":"framework-onEvent","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"code":"*","description":"*","runtime":"*","handler":"*","timeout":"*","loggingFormat":"JSON","applicationLogLevelV2":"FATAL","logGroup":"*","vpc":"*","vpcSubnets":{"subnets":["*","*"]},"securityGroups":["*"],"role":"*","functionName":"*","environmentEncryption":"*"},{"addEnvironment":["*","*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"},{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/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"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/ServiceRole/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":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]},":*"]]}]},{"Action":"lambda:GetFunction","Effect":"Allow","Resource":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}],"Version":"2012-10-17"},"policyName":"ClusterKubectlProviderframeworkonEventServiceRoleDefaultPolicyA4F24629","roles":[{"Ref":"ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/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}-${AWS::Region}"},"s3Key":"39472b1c2875cf306d4ba429aeccdd34cb49bcf59dbde81f7e6b6cb9deac23a6.zip"},"description":"AWS CDK resource provider framework - onEvent (aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider)","environment":{"variables":{"USER_ON_EVENT_FUNCTION_ARN":{"Fn::GetAtt":["ClusterKubectlProviderHandler2E05C68A","Arn"]}}},"handler":"framework.onEvent","loggingConfig":{"logFormat":"JSON","applicationLogLevel":"FATAL"},"role":{"Fn::GetAtt":["ClusterKubectlProviderframeworkonEventServiceRoleFD0BA8C5","Arn"]},"runtime":{"Fn::FindInMap":["LatestNodeRuntimeMap",{"Ref":"AWS::Region"},"value"]},"timeout":900,"vpcConfig":{"subnetIds":[{"Ref":"VpcPrivateSubnet1Subnet536B997A"},{"Ref":"VpcPrivateSubnet2Subnet3788AAA1"}],"securityGroupIds":[{"Fn::GetAtt":["ClusterEB0386A7","ClusterSecurityGroupId"]}]}}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/KubectlProvider/Provider/framework-onEvent/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"ClusterKubectlProviderframeworkonEvent68E0CF80"}]]},"retentionInDays":731}}}}}}}}}}},"ClusterAdminRoleAccess":{"id":"ClusterAdminRoleAccess","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/ClusterAdminRoleAccess","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.AccessEntry","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/ClusterAdminRoleAccess/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_eks.CfnAccessEntry","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EKS::AccessEntry","aws:cdk:cloudformation:props":{"accessPolicies":[{"accessScope":{"type":"cluster"},"policyArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"]]}}],"clusterName":{"Ref":"ClusterEB0386A7"},"principalArn":{"Fn::GetAtt":["ClusterKubectlProviderHandlerServiceRoleB460AA6D","Arn"]}}}}}},"chart-aws-load-balancer-controller":{"id":"chart-aws-load-balancer-controller","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/chart-aws-load-balancer-controller","constructInfo":{"fqn":"@aws-cdk/aws-eks-v2-alpha.HelmChart","version":"0.0.0"},"children":{"Resource":{"id":"Resource","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/chart-aws-load-balancer-controller/Resource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-v2-alpha-helm-logging-test/Cluster/chart-aws-load-balancer-controller/Resource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-eks-v2-alpha-helm-logging-test/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-v2-alpha-helm-logging-test/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-v2-alpha-helm-logging-test/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"aws-cdk-eks-v2-alpha-helm-logging":{"id":"aws-cdk-eks-v2-alpha-helm-logging","path":"aws-cdk-eks-v2-alpha-helm-logging","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"aws-cdk-eks-v2-alpha-helm-logging/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"aws-cdk-eks-v2-alpha-helm-logging/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"aws-cdk-eks-v2-alpha-helm-logging/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-eks-v2-alpha-helm-logging/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-eks-v2-alpha-helm-logging/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