diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/BatchManagedComputeEnvironmentTestDefaultTestDeployAssertD4528F80.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/BatchManagedComputeEnvironmentTestDefaultTestDeployAssertD4528F80.assets.json index 70f739de9114f..67bc1d398f8ca 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/BatchManagedComputeEnvironmentTestDefaultTestDeployAssertD4528F80.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/BatchManagedComputeEnvironmentTestDefaultTestDeployAssertD4528F80.assets.json @@ -1,13 +1,14 @@ { - "version": "39.0.0", + "version": "48.0.0", "files": { "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BatchManagedComputeEnvironmentTestDefaultTestDeployAssertD4528F80 Template", "source": { "path": "BatchManagedComputeEnvironmentTestDefaultTestDeployAssertD4528F80.template.json", "packaging": "file" }, "destinations": { - "current_account-current_region": { + "current_account-current_region-d8d86b35": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/batch-stack.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/batch-stack.assets.json index 0690efcf19363..05b97cf8520c2 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/batch-stack.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/batch-stack.assets.json @@ -1,15 +1,16 @@ { - "version": "39.0.0", + "version": "48.0.0", "files": { - "a7f441ca77fafeef4eec69135aa635b2c503f8c144801e46f8b4423ce75b69c3": { + "d92ca37f1e09d84f1d2fa240eaec387b557a4d7b2e87c66b94637314c88c7c93": { + "displayName": "batch-stack Template", "source": { "path": "batch-stack.template.json", "packaging": "file" }, "destinations": { - "current_account-current_region": { + "current_account-current_region-19fc3ae9": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "a7f441ca77fafeef4eec69135aa635b2c503f8c144801e46f8b4423ce75b69c3.json", + "objectKey": "d92ca37f1e09d84f1d2fa240eaec387b557a4d7b2e87c66b94637314c88c7c93.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/batch-stack.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/batch-stack.template.json index 0df7fad833d9c..ec21a6dd46548 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/batch-stack.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/batch-stack.template.json @@ -1221,6 +1221,108 @@ "UpdatePolicy": {} } }, + "ECSAL2023NVIDIASecurityGroup54E4FC0F": { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "batch-stack/ECS_AL2023_NVIDIA/SecurityGroup", + "SecurityGroupEgress": [ + { + "CidrIp": "0.0.0.0/0", + "Description": "Allow all outbound traffic by default", + "IpProtocol": "-1" + } + ], + "VpcId": { + "Ref": "vpcA2121C38" + } + } + }, + "ECSAL2023NVIDIAInstanceProfileRole5D4EC64F": { + "Type": "AWS::IAM::Role", + "Properties": { + "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/service-role/AmazonEC2ContainerServiceforEC2Role" + ] + ] + } + ] + } + }, + "ECSAL2023NVIDIAInstanceProfileF9315BDB": { + "Type": "AWS::IAM::InstanceProfile", + "Properties": { + "Roles": [ + { + "Ref": "ECSAL2023NVIDIAInstanceProfileRole5D4EC64F" + } + ] + } + }, + "ECSAL2023NVIDIAEF211FD7": { + "Type": "AWS::Batch::ComputeEnvironment", + "Properties": { + "ComputeResources": { + "AllocationStrategy": "BEST_FIT_PROGRESSIVE", + "Ec2Configuration": [ + { + "ImageType": "ECS_AL2023_NVIDIA" + } + ], + "InstanceRole": { + "Fn::GetAtt": [ + "ECSAL2023NVIDIAInstanceProfileF9315BDB", + "Arn" + ] + }, + "InstanceTypes": [ + "optimal" + ], + "MaxvCpus": 256, + "MinvCpus": 0, + "SecurityGroupIds": [ + { + "Fn::GetAtt": [ + "ECSAL2023NVIDIASecurityGroup54E4FC0F", + "GroupId" + ] + } + ], + "Subnets": [ + { + "Ref": "vpcPrivateSubnet1Subnet934893E8" + }, + { + "Ref": "vpcPrivateSubnet2Subnet7031C2BA" + } + ], + "Type": "EC2" + }, + "ReplaceComputeEnvironment": false, + "State": "ENABLED", + "Type": "managed", + "UpdatePolicy": {} + } + }, "ParamertizedManagedCESecurityGroup772BD71B": { "Type": "AWS::EC2::SecurityGroup", "Properties": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/cdk.out b/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/cdk.out index 91e1a8b9901d5..523a9aac37cbf 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/cdk.out +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/cdk.out @@ -1 +1 @@ -{"version":"39.0.0"} \ No newline at end of file +{"version":"48.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/integ.json b/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/integ.json index e0db1b12da945..040ee78fd100a 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/integ.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/integ.json @@ -1,5 +1,5 @@ { - "version": "39.0.0", + "version": "48.0.0", "testCases": { "BatchManagedComputeEnvironmentTest/DefaultTest": { "stacks": [ @@ -8,5 +8,6 @@ "assertionStack": "BatchManagedComputeEnvironmentTest/DefaultTest/DeployAssert", "assertionStackName": "BatchManagedComputeEnvironmentTestDefaultTestDeployAssertD4528F80" } - } + }, + "minimumCliVersion": "2.1027.0" } \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/manifest.json index 1f277a0c919ca..e77604b3ca5e2 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/manifest.json @@ -1,5 +1,5 @@ { - "version": "39.0.0", + "version": "48.0.0", "artifacts": { "batch-stack.assets": { "type": "cdk:asset-manifest", @@ -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}/a7f441ca77fafeef4eec69135aa635b2c503f8c144801e46f8b4423ce75b69c3.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/d92ca37f1e09d84f1d2fa240eaec387b557a4d7b2e87c66b94637314c88c7c93.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -34,12 +34,56 @@ "batch-stack.assets" ], "metadata": { + "/batch-stack/vpc": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "restrictDefaultSecurityGroup": false + } + } + ], "/batch-stack/vpc/Resource": [ { "type": "aws:cdk:logicalId", "data": "vpcA2121C38" } ], + "/batch-stack/vpc/PublicSubnet1": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "availabilityZone": "*", + "vpcId": "*", + "cidrBlock": "*", + "mapPublicIpOnLaunch": true, + "ipv6CidrBlock": "*", + "assignIpv6AddressOnCreation": "*" + } + }, + { + "type": "aws:cdk:analytics:construct", + "data": { + "availabilityZone": "*", + "vpcId": "*", + "cidrBlock": "*", + "mapPublicIpOnLaunch": true, + "ipv6CidrBlock": "*", + "assignIpv6AddressOnCreation": "*" + } + }, + { + "type": "aws:cdk:analytics:method", + "data": {} + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addNatGateway": [ + "*" + ] + } + } + ], "/batch-stack/vpc/PublicSubnet1/Subnet": [ { "type": "aws:cdk:logicalId", @@ -76,6 +120,42 @@ "data": "vpcPublicSubnet1NATGateway9C16659E" } ], + "/batch-stack/vpc/PublicSubnet2": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "availabilityZone": "*", + "vpcId": "*", + "cidrBlock": "*", + "mapPublicIpOnLaunch": true, + "ipv6CidrBlock": "*", + "assignIpv6AddressOnCreation": "*" + } + }, + { + "type": "aws:cdk:analytics:construct", + "data": { + "availabilityZone": "*", + "vpcId": "*", + "cidrBlock": "*", + "mapPublicIpOnLaunch": true, + "ipv6CidrBlock": "*", + "assignIpv6AddressOnCreation": "*" + } + }, + { + "type": "aws:cdk:analytics:method", + "data": {} + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addNatGateway": [ + "*" + ] + } + } + ], "/batch-stack/vpc/PublicSubnet2/Subnet": [ { "type": "aws:cdk:logicalId", @@ -112,6 +192,34 @@ "data": "vpcPublicSubnet2NATGateway9B8AE11A" } ], + "/batch-stack/vpc/PrivateSubnet1": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "availabilityZone": "*", + "vpcId": "*", + "cidrBlock": "*", + "mapPublicIpOnLaunch": false, + "ipv6CidrBlock": "*", + "assignIpv6AddressOnCreation": "*" + } + }, + { + "type": "aws:cdk:analytics:construct", + "data": { + "availabilityZone": "*", + "vpcId": "*", + "cidrBlock": "*", + "mapPublicIpOnLaunch": false, + "ipv6CidrBlock": "*", + "assignIpv6AddressOnCreation": "*" + } + }, + { + "type": "aws:cdk:analytics:method", + "data": {} + } + ], "/batch-stack/vpc/PrivateSubnet1/Subnet": [ { "type": "aws:cdk:logicalId", @@ -136,6 +244,34 @@ "data": "vpcPrivateSubnet1DefaultRoute1AA8E2E5" } ], + "/batch-stack/vpc/PrivateSubnet2": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "availabilityZone": "*", + "vpcId": "*", + "cidrBlock": "*", + "mapPublicIpOnLaunch": false, + "ipv6CidrBlock": "*", + "assignIpv6AddressOnCreation": "*" + } + }, + { + "type": "aws:cdk:analytics:construct", + "data": { + "availabilityZone": "*", + "vpcId": "*", + "cidrBlock": "*", + "mapPublicIpOnLaunch": false, + "ipv6CidrBlock": "*", + "assignIpv6AddressOnCreation": "*" + } + }, + { + "type": "aws:cdk:analytics:method", + "data": {} + } + ], "/batch-stack/vpc/PrivateSubnet2/Subnet": [ { "type": "aws:cdk:logicalId", @@ -172,12 +308,46 @@ "data": "vpcVPCGW7984C166" } ], + "/batch-stack/SpotFleetRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + } + ], + "/batch-stack/SpotFleetRole/ImportSpotFleetRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], "/batch-stack/SpotFleetRole/Resource": [ { "type": "aws:cdk:logicalId", "data": "SpotFleetRole6D4F7558" } ], + "/batch-stack/minimalPropsFargate": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*", + "maxvCpus": "*" + } + } + ], + "/batch-stack/minimalPropsFargate/SecurityGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*" + } + } + ], "/batch-stack/minimalPropsFargate/SecurityGroup/Resource": [ { "type": "aws:cdk:logicalId", @@ -190,6 +360,29 @@ "data": "minimalPropsFargate58449235" } ], + "/batch-stack/maximalPropsFargate": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*", + "maxvCpus": "*", + "computeEnvironmentName": "*", + "replaceComputeEnvironment": true, + "spot": true, + "terminateOnUpdate": true, + "updateTimeout": "*", + "updateToLatestImageVersion": false + } + } + ], + "/batch-stack/maximalPropsFargate/SecurityGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*" + } + } + ], "/batch-stack/maximalPropsFargate/SecurityGroup/Resource": [ { "type": "aws:cdk:logicalId", @@ -202,12 +395,45 @@ "data": "maximalPropsFargate2D7D8138" } ], + "/batch-stack/minimalPropsEc2": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*", + "images": [ + { + "image": "*" + } + ] + } + } + ], + "/batch-stack/minimalPropsEc2/SecurityGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*" + } + } + ], "/batch-stack/minimalPropsEc2/SecurityGroup/Resource": [ { "type": "aws:cdk:logicalId", "data": "minimalPropsEc2SecurityGroup50CBE4DC" } ], + "/batch-stack/minimalPropsEc2/InstanceProfileRole": [ + { + "type": "aws:cdk:warning", + "data": "Failed to add construct metadata for node [InstanceProfileRole]. Reason: ValidationError: The result of fromAwsManagedPolicyName can not be used in this API [ack: @aws-cdk/core:addConstructMetadataFailed]" + } + ], + "/batch-stack/minimalPropsEc2/InstanceProfileRole/ImportInstanceProfileRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], "/batch-stack/minimalPropsEc2/InstanceProfileRole/Resource": [ { "type": "aws:cdk:logicalId", @@ -232,24 +458,77 @@ "data": "SsmParameterValueawsserviceamiamazonlinuxlatestamznamihvmx8664gp2C96584B6F00A464EAD1953AFF4B05118Parameter" } ], + "/batch-stack/placementGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], "/batch-stack/placementGroup/Resource": [ { "type": "aws:cdk:logicalId", "data": "placementGroupD973C950" } ], + "/batch-stack/launchTemplate": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], "/batch-stack/launchTemplate/Resource": [ { "type": "aws:cdk:logicalId", "data": "launchTemplateDEE5742D" } ], + "/batch-stack/LaunchTemplate": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*", + "images": [ + { + "image": "*" + } + ], + "allocationStrategy": "BEST_FIT", + "minvCpus": "*", + "maxvCpus": "*", + "replaceComputeEnvironment": true, + "terminateOnUpdate": false, + "placementGroup": "*", + "updateTimeout": "*", + "launchTemplate": "*" + } + } + ], + "/batch-stack/LaunchTemplate/SecurityGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*" + } + } + ], "/batch-stack/LaunchTemplate/SecurityGroup/Resource": [ { "type": "aws:cdk:logicalId", "data": "LaunchTemplateSecurityGroup02438453" } ], + "/batch-stack/LaunchTemplate/InstanceProfileRole": [ + { + "type": "aws:cdk:warning", + "data": "Failed to add construct metadata for node [InstanceProfileRole]. Reason: ValidationError: The result of fromAwsManagedPolicyName can not be used in this API [ack: @aws-cdk/core:addConstructMetadataFailed]" + } + ], + "/batch-stack/LaunchTemplate/InstanceProfileRole/ImportInstanceProfileRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], "/batch-stack/LaunchTemplate/InstanceProfileRole/Resource": [ { "type": "aws:cdk:logicalId", @@ -268,12 +547,48 @@ "data": "LaunchTemplate04EC5460" } ], + "/batch-stack/SpotEc2": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*", + "images": [ + { + "image": "*" + } + ], + "spot": true, + "spotBidPercentage": "*", + "spotFleetRole": "*" + } + } + ], + "/batch-stack/SpotEc2/SecurityGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*" + } + } + ], "/batch-stack/SpotEc2/SecurityGroup/Resource": [ { "type": "aws:cdk:logicalId", "data": "SpotEc2SecurityGroup1225E163" } ], + "/batch-stack/SpotEc2/InstanceProfileRole": [ + { + "type": "aws:cdk:warning", + "data": "Failed to add construct metadata for node [InstanceProfileRole]. Reason: ValidationError: The result of fromAwsManagedPolicyName can not be used in this API [ack: @aws-cdk/core:addConstructMetadataFailed]" + } + ], + "/batch-stack/SpotEc2/InstanceProfileRole/ImportInstanceProfileRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], "/batch-stack/SpotEc2/InstanceProfileRole/Resource": [ { "type": "aws:cdk:logicalId", @@ -292,12 +607,48 @@ "data": "SpotEc2A0470C83" } ], + "/batch-stack/AllocationStrategySPOT_CAPACITY": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*", + "images": [ + { + "image": "*" + } + ], + "spot": true, + "spotBidPercentage": "*", + "allocationStrategy": "SPOT_CAPACITY_OPTIMIZED" + } + } + ], + "/batch-stack/AllocationStrategySPOT_CAPACITY/SecurityGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*" + } + } + ], "/batch-stack/AllocationStrategySPOT_CAPACITY/SecurityGroup/Resource": [ { "type": "aws:cdk:logicalId", "data": "AllocationStrategySPOTCAPACITYSecurityGroupA581EB8C" } ], + "/batch-stack/AllocationStrategySPOT_CAPACITY/InstanceProfileRole": [ + { + "type": "aws:cdk:warning", + "data": "Failed to add construct metadata for node [InstanceProfileRole]. Reason: ValidationError: The result of fromAwsManagedPolicyName can not be used in this API [ack: @aws-cdk/core:addConstructMetadataFailed]" + } + ], + "/batch-stack/AllocationStrategySPOT_CAPACITY/InstanceProfileRole/ImportInstanceProfileRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], "/batch-stack/AllocationStrategySPOT_CAPACITY/InstanceProfileRole/Resource": [ { "type": "aws:cdk:logicalId", @@ -316,12 +667,45 @@ "data": "AllocationStrategySPOTCAPACITYEE4582C5" } ], + "/batch-stack/taggedCE": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*", + "images": [ + { + "image": "*" + } + ] + } + } + ], + "/batch-stack/taggedCE/SecurityGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*" + } + } + ], "/batch-stack/taggedCE/SecurityGroup/Resource": [ { "type": "aws:cdk:logicalId", "data": "taggedCESecurityGroup82CCF59F" } ], + "/batch-stack/taggedCE/InstanceProfileRole": [ + { + "type": "aws:cdk:warning", + "data": "Failed to add construct metadata for node [InstanceProfileRole]. Reason: ValidationError: The result of fromAwsManagedPolicyName can not be used in this API [ack: @aws-cdk/core:addConstructMetadataFailed]" + } + ], + "/batch-stack/taggedCE/InstanceProfileRole/ImportInstanceProfileRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], "/batch-stack/taggedCE/InstanceProfileRole/Resource": [ { "type": "aws:cdk:logicalId", @@ -340,12 +724,45 @@ "data": "taggedCE5029E6F8" } ], + "/batch-stack/ECS_AL2023": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*", + "images": [ + { + "imageType": "ECS_AL2023" + } + ] + } + } + ], + "/batch-stack/ECS_AL2023/SecurityGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*" + } + } + ], "/batch-stack/ECS_AL2023/SecurityGroup/Resource": [ { "type": "aws:cdk:logicalId", "data": "ECSAL2023SecurityGroup7AE4A1D4" } ], + "/batch-stack/ECS_AL2023/InstanceProfileRole": [ + { + "type": "aws:cdk:warning", + "data": "Failed to add construct metadata for node [InstanceProfileRole]. Reason: ValidationError: The result of fromAwsManagedPolicyName can not be used in this API [ack: @aws-cdk/core:addConstructMetadataFailed]" + } + ], + "/batch-stack/ECS_AL2023/InstanceProfileRole/ImportInstanceProfileRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], "/batch-stack/ECS_AL2023/InstanceProfileRole/Resource": [ { "type": "aws:cdk:logicalId", @@ -364,6 +781,63 @@ "data": "ECSAL20239DA0188B" } ], + "/batch-stack/ECS_AL2023_NVIDIA": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*", + "images": [ + { + "imageType": "*" + } + ] + } + } + ], + "/batch-stack/ECS_AL2023_NVIDIA/SecurityGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*" + } + } + ], + "/batch-stack/ECS_AL2023_NVIDIA/SecurityGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ECSAL2023NVIDIASecurityGroup54E4FC0F" + } + ], + "/batch-stack/ECS_AL2023_NVIDIA/InstanceProfileRole": [ + { + "type": "aws:cdk:warning", + "data": "Failed to add construct metadata for node [InstanceProfileRole]. Reason: ValidationError: The result of fromAwsManagedPolicyName can not be used in this API [ack: @aws-cdk/core:addConstructMetadataFailed]" + } + ], + "/batch-stack/ECS_AL2023_NVIDIA/InstanceProfileRole/ImportInstanceProfileRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/batch-stack/ECS_AL2023_NVIDIA/InstanceProfileRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ECSAL2023NVIDIAInstanceProfileRole5D4EC64F" + } + ], + "/batch-stack/ECS_AL2023_NVIDIA/InstanceProfile": [ + { + "type": "aws:cdk:logicalId", + "data": "ECSAL2023NVIDIAInstanceProfileF9315BDB" + } + ], + "/batch-stack/ECS_AL2023_NVIDIA/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ECSAL2023NVIDIAEF211FD7" + } + ], "/batch-stack/MinVCpuParameter": [ { "type": "aws:cdk:logicalId", @@ -382,12 +856,50 @@ "data": "SpotBidPercentageParameter" } ], + "/batch-stack/ParamertizedManagedCE": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*", + "images": [ + { + "image": "*" + } + ], + "minvCpus": "*", + "maxvCpus": "*", + "spot": true, + "spotBidPercentage": "*", + "spotFleetRole": "*" + } + } + ], + "/batch-stack/ParamertizedManagedCE/SecurityGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "vpc": "*" + } + } + ], "/batch-stack/ParamertizedManagedCE/SecurityGroup/Resource": [ { "type": "aws:cdk:logicalId", "data": "ParamertizedManagedCESecurityGroup772BD71B" } ], + "/batch-stack/ParamertizedManagedCE/InstanceProfileRole": [ + { + "type": "aws:cdk:warning", + "data": "Failed to add construct metadata for node [InstanceProfileRole]. Reason: ValidationError: The result of fromAwsManagedPolicyName can not be used in this API [ack: @aws-cdk/core:addConstructMetadataFailed]" + } + ], + "/batch-stack/ParamertizedManagedCE/InstanceProfileRole/ImportInstanceProfileRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], "/batch-stack/ParamertizedManagedCE/InstanceProfileRole/Resource": [ { "type": "aws:cdk:logicalId", @@ -474,6 +986,502 @@ "properties": { "file": "tree.json" } + }, + "aws-cdk-lib/feature-flag-report": { + "type": "cdk:feature-flag-report", + "properties": { + "module": "aws-cdk-lib", + "flags": { + "@aws-cdk/aws-signer:signingProfileNamePassedToCfn": { + "userValue": true, + "recommendedValue": true, + "explanation": "Pass signingProfileName to CfnSigningProfile" + }, + "@aws-cdk/core:newStyleStackSynthesis": { + "recommendedValue": true, + "explanation": "Switch to new stack synthesis method which enables CI/CD", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/core:stackRelativeExports": { + "recommendedValue": true, + "explanation": "Name exports based on the construct paths relative to the stack, rather than the global construct path", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-ecs-patterns:secGroupsDisablesImplicitOpenListener": { + "userValue": true, + "recommendedValue": true, + "explanation": "Disable implicit openListener when custom security groups are provided" + }, + "@aws-cdk/aws-rds:lowercaseDbIdentifier": { + "recommendedValue": true, + "explanation": "Force lowercasing of RDS Cluster names in CDK", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId": { + "recommendedValue": true, + "explanation": "Allow adding/removing multiple UsagePlanKeys independently", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-lambda:recognizeVersionProps": { + "recommendedValue": true, + "explanation": "Enable this feature flag to opt in to the updated logical id calculation for Lambda Version created using the `fn.currentVersion`.", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-lambda:recognizeLayerVersion": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enable this feature flag to opt in to the updated logical id calculation for Lambda Version created using the `fn.currentVersion`." + }, + "@aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021": { + "recommendedValue": true, + "explanation": "Enable this feature flag to have cloudfront distributions use the security policy TLSv1.2_2021 by default.", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/core:checkSecretUsage": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enable this flag to make it impossible to accidentally use SecretValues in unsafe locations" + }, + "@aws-cdk/core:target-partitions": { + "recommendedValue": [ + "aws", + "aws-cn" + ], + "explanation": "What regions to include in lookup tables of environment agnostic stacks" + }, + "@aws-cdk-containers/ecs-service-extensions:enableDefaultLogDriver": { + "userValue": true, + "recommendedValue": true, + "explanation": "ECS extensions will automatically add an `awslogs` driver if no logging is specified" + }, + "@aws-cdk/aws-ec2:uniqueImdsv2TemplateName": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enable this feature flag to have Launch Templates generated by the `InstanceRequireImdsv2Aspect` use unique names." + }, + "@aws-cdk/aws-ecs:arnFormatIncludesClusterName": { + "userValue": true, + "recommendedValue": true, + "explanation": "ARN format used by ECS. In the new ARN format, the cluster name is part of the resource ID." + }, + "@aws-cdk/aws-iam:minimizePolicies": { + "userValue": true, + "recommendedValue": true, + "explanation": "Minimize IAM policies by combining Statements" + }, + "@aws-cdk/core:validateSnapshotRemovalPolicy": { + "userValue": true, + "recommendedValue": true, + "explanation": "Error on snapshot removal policies on resources that do not support it." + }, + "@aws-cdk/aws-codepipeline:crossAccountKeyAliasStackSafeResourceName": { + "userValue": true, + "recommendedValue": true, + "explanation": "Generate key aliases that include the stack name" + }, + "@aws-cdk/aws-s3:createDefaultLoggingPolicy": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enable this feature flag to create an S3 bucket policy by default in cases where an AWS service would automatically create the Policy if one does not exist." + }, + "@aws-cdk/aws-sns-subscriptions:restrictSqsDescryption": { + "userValue": true, + "recommendedValue": true, + "explanation": "Restrict KMS key policy for encrypted Queues a bit more" + }, + "@aws-cdk/aws-apigateway:disableCloudWatchRole": { + "userValue": true, + "recommendedValue": true, + "explanation": "Make default CloudWatch Role behavior safe for multiple API Gateways in one environment" + }, + "@aws-cdk/core:enablePartitionLiterals": { + "userValue": true, + "recommendedValue": true, + "explanation": "Make ARNs concrete if AWS partition is known" + }, + "@aws-cdk/aws-events:eventsTargetQueueSameAccount": { + "userValue": true, + "recommendedValue": true, + "explanation": "Event Rules may only push to encrypted SQS queues in the same account" + }, + "@aws-cdk/aws-ecs:disableExplicitDeploymentControllerForCircuitBreaker": { + "userValue": true, + "recommendedValue": true, + "explanation": "Avoid setting the \"ECS\" deployment controller when adding a circuit breaker" + }, + "@aws-cdk/aws-iam:importedRoleStackSafeDefaultPolicyName": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enable this feature to create default policy names for imported roles that depend on the stack the role is in." + }, + "@aws-cdk/aws-s3:serverAccessLogsUseBucketPolicy": { + "userValue": true, + "recommendedValue": true, + "explanation": "Use S3 Bucket Policy instead of ACLs for Server Access Logging" + }, + "@aws-cdk/aws-route53-patters:useCertificate": { + "userValue": true, + "recommendedValue": true, + "explanation": "Use the official `Certificate` resource instead of `DnsValidatedCertificate`" + }, + "@aws-cdk/customresources:installLatestAwsSdkDefault": { + "userValue": false, + "recommendedValue": false, + "explanation": "Whether to install the latest SDK by default in AwsCustomResource" + }, + "@aws-cdk/aws-rds:databaseProxyUniqueResourceName": { + "userValue": true, + "recommendedValue": true, + "explanation": "Use unique resource name for Database Proxy" + }, + "@aws-cdk/aws-codedeploy:removeAlarmsFromDeploymentGroup": { + "userValue": true, + "recommendedValue": true, + "explanation": "Remove CloudWatch alarms from deployment group" + }, + "@aws-cdk/aws-apigateway:authorizerChangeDeploymentLogicalId": { + "userValue": true, + "recommendedValue": true, + "explanation": "Include authorizer configuration in the calculation of the API deployment logical ID." + }, + "@aws-cdk/aws-ec2:launchTemplateDefaultUserData": { + "userValue": true, + "recommendedValue": true, + "explanation": "Define user data for a launch template by default when a machine image is provided." + }, + "@aws-cdk/aws-secretsmanager:useAttachedSecretResourcePolicyForSecretTargetAttachments": { + "userValue": true, + "recommendedValue": true, + "explanation": "SecretTargetAttachments uses the ResourcePolicy of the attached Secret." + }, + "@aws-cdk/aws-redshift:columnId": { + "userValue": true, + "recommendedValue": true, + "explanation": "Whether to use an ID to track Redshift column changes" + }, + "@aws-cdk/aws-stepfunctions-tasks:enableEmrServicePolicyV2": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enable AmazonEMRServicePolicy_v2 managed policies" + }, + "@aws-cdk/aws-ec2:restrictDefaultSecurityGroup": { + "userValue": true, + "recommendedValue": true, + "explanation": "Restrict access to the VPC default security group" + }, + "@aws-cdk/aws-apigateway:requestValidatorUniqueId": { + "userValue": true, + "recommendedValue": true, + "explanation": "Generate a unique id for each RequestValidator added to a method" + }, + "@aws-cdk/aws-kms:aliasNameRef": { + "userValue": true, + "recommendedValue": true, + "explanation": "KMS Alias name and keyArn will have implicit reference to KMS Key" + }, + "@aws-cdk/aws-kms:applyImportedAliasPermissionsToPrincipal": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enable grant methods on Aliases imported by name to use kms:ResourceAliases condition" + }, + "@aws-cdk/aws-autoscaling:generateLaunchTemplateInsteadOfLaunchConfig": { + "userValue": true, + "recommendedValue": true, + "explanation": "Generate a launch template when creating an AutoScalingGroup" + }, + "@aws-cdk/core:includePrefixInUniqueNameGeneration": { + "userValue": true, + "recommendedValue": true, + "explanation": "Include the stack prefix in the stack name generation process" + }, + "@aws-cdk/aws-efs:denyAnonymousAccess": { + "userValue": true, + "recommendedValue": true, + "explanation": "EFS denies anonymous clients accesses" + }, + "@aws-cdk/aws-opensearchservice:enableOpensearchMultiAzWithStandby": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enables support for Multi-AZ with Standby deployment for opensearch domains" + }, + "@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enables aws-lambda-nodejs.Function to use the latest available NodeJs runtime as the default" + }, + "@aws-cdk/aws-efs:mountTargetOrderInsensitiveLogicalId": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, mount targets will have a stable logicalId that is linked to the associated subnet." + }, + "@aws-cdk/aws-rds:auroraClusterChangeScopeOfInstanceParameterGroupWithEachParameters": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, a scope of InstanceParameterGroup for AuroraClusterInstance with each parameters will change." + }, + "@aws-cdk/aws-appsync:useArnForSourceApiAssociationIdentifier": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, will always use the arn for identifiers for CfnSourceApiAssociation in the GraphqlApi construct rather than id." + }, + "@aws-cdk/aws-rds:preventRenderingDeprecatedCredentials": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, creating an RDS database cluster from a snapshot will only render credentials for snapshot credentials." + }, + "@aws-cdk/aws-codepipeline-actions:useNewDefaultBranchForCodeCommitSource": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the CodeCommit source action is using the default branch name 'main'." + }, + "@aws-cdk/aws-cloudwatch-actions:changeLambdaPermissionLogicalIdForLambdaAction": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the logical ID of a Lambda permission for a Lambda action includes an alarm ID." + }, + "@aws-cdk/aws-codepipeline:crossAccountKeysDefaultValueToFalse": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enables Pipeline to set the default value for crossAccountKeys to false." + }, + "@aws-cdk/aws-codepipeline:defaultPipelineTypeToV2": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enables Pipeline to set the default pipeline type to V2." + }, + "@aws-cdk/aws-kms:reduceCrossAccountRegionPolicyScope": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, IAM Policy created from KMS key grant will reduce the resource scope to this key only." + }, + "@aws-cdk/pipelines:reduceAssetRoleTrustScope": { + "recommendedValue": true, + "explanation": "Remove the root account principal from PipelineAssetsFileRole trust policy", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-eks:nodegroupNameAttribute": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, nodegroupName attribute of the provisioned EKS NodeGroup will not have the cluster name prefix." + }, + "@aws-cdk/aws-ec2:ebsDefaultGp3Volume": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the default volume type of the EBS volume will be GP3" + }, + "@aws-cdk/aws-ecs:removeDefaultDeploymentAlarm": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, remove default deployment alarm settings" + }, + "@aws-cdk/custom-resources:logApiResponseDataPropertyTrueDefault": { + "userValue": false, + "recommendedValue": false, + "explanation": "When enabled, the custom resource used for `AwsCustomResource` will configure the `logApiResponseData` property as true by default" + }, + "@aws-cdk/aws-s3:keepNotificationInImportedBucket": { + "userValue": false, + "recommendedValue": false, + "explanation": "When enabled, Adding notifications to a bucket in the current stack will not remove notification from imported stack." + }, + "@aws-cdk/aws-stepfunctions-tasks:useNewS3UriParametersForBedrockInvokeModelTask": { + "recommendedValue": true, + "explanation": "When enabled, use new props for S3 URI field in task definition of state machine for bedrock invoke model.", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/core:explicitStackTags": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, stack tags need to be assigned explicitly on a Stack." + }, + "@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature": { + "userValue": false, + "recommendedValue": false, + "explanation": "When set to true along with canContainersAccessInstanceRole=false in ECS cluster, new updated commands will be added to UserData to block container accessing IMDS. **Applicable to Linux only. IMPORTANT: See [details.](#aws-cdkaws-ecsenableImdsBlockingDeprecatedFeature)**" + }, + "@aws-cdk/aws-ecs:disableEcsImdsBlocking": { + "userValue": true, + "recommendedValue": true, + "explanation": "When set to true, CDK synth will throw exception if canContainersAccessInstanceRole is false. **IMPORTANT: See [details.](#aws-cdkaws-ecsdisableEcsImdsBlocking)**" + }, + "@aws-cdk/aws-ecs:reduceEc2FargateCloudWatchPermissions": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, we will only grant the necessary permissions when users specify cloudwatch log group through logConfiguration" + }, + "@aws-cdk/aws-dynamodb:resourcePolicyPerReplica": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled will allow you to specify a resource policy per replica, and not copy the source table policy to all replicas" + }, + "@aws-cdk/aws-ec2:ec2SumTImeoutEnabled": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, initOptions.timeout and resourceSignalTimeout values will be summed together." + }, + "@aws-cdk/aws-appsync:appSyncGraphQLAPIScopeLambdaPermission": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, a Lambda authorizer Permission created when using GraphqlApi will be properly scoped with a SourceArn." + }, + "@aws-cdk/aws-rds:setCorrectValueForDatabaseInstanceReadReplicaInstanceResourceId": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the value of property `instanceResourceId` in construct `DatabaseInstanceReadReplica` will be set to the correct value which is `DbiResourceId` instead of currently `DbInstanceArn`" + }, + "@aws-cdk/core:cfnIncludeRejectComplexResourceUpdateCreatePolicyIntrinsics": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, CFN templates added with `cfn-include` will error if the template contains Resource Update or Create policies with CFN Intrinsics that include non-primitive values." + }, + "@aws-cdk/aws-lambda-nodejs:sdkV3ExcludeSmithyPackages": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, both `@aws-sdk` and `@smithy` packages will be excluded from the Lambda Node.js 18.x runtime to prevent version mismatches in bundled applications." + }, + "@aws-cdk/aws-stepfunctions-tasks:fixRunEcsTaskPolicy": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the resource of IAM Run Ecs policy generated by SFN EcsRunTask will reference the definition, instead of constructing ARN." + }, + "@aws-cdk/aws-ec2:bastionHostUseAmazonLinux2023ByDefault": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the BastionHost construct will use the latest Amazon Linux 2023 AMI, instead of Amazon Linux 2." + }, + "@aws-cdk/core:aspectStabilization": { + "recommendedValue": true, + "explanation": "When enabled, a stabilization loop will be run when invoking Aspects during synthesis.", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-route53-targets:userPoolDomainNameMethodWithoutCustomResource": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, use a new method for DNS Name of user pool domain target without creating a custom resource." + }, + "@aws-cdk/aws-elasticloadbalancingV2:albDualstackWithoutPublicIpv4SecurityGroupRulesDefault": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the default security group ingress rules will allow IPv6 ingress from anywhere" + }, + "@aws-cdk/aws-iam:oidcRejectUnauthorizedConnections": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the default behaviour of OIDC provider will reject unauthorized connections" + }, + "@aws-cdk/core:enableAdditionalMetadataCollection": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, CDK will expand the scope of usage data collected to better inform CDK development and improve communication for security concerns and emerging issues." + }, + "@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy": { + "userValue": false, + "recommendedValue": false, + "explanation": "[Deprecated] When enabled, Lambda will create new inline policies with AddToRolePolicy instead of adding to the Default Policy Statement" + }, + "@aws-cdk/aws-s3:setUniqueReplicationRoleName": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, CDK will automatically generate a unique role name that is used for s3 object replication." + }, + "@aws-cdk/pipelines:reduceStageRoleTrustScope": { + "recommendedValue": true, + "explanation": "Remove the root account principal from Stage addActions trust policy", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-events:requireEventBusPolicySid": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, grantPutEventsTo() will use resource policies with Statement IDs for service principals." + }, + "@aws-cdk/core:aspectPrioritiesMutating": { + "userValue": true, + "recommendedValue": true, + "explanation": "When set to true, Aspects added by the construct library on your behalf will be given a priority of MUTATING." + }, + "@aws-cdk/aws-dynamodb:retainTableReplica": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, table replica will be default to the removal policy of source table unless specified otherwise." + }, + "@aws-cdk/cognito:logUserPoolClientSecretValue": { + "recommendedValue": false, + "explanation": "When disabled, the value of the user pool client secret will not be logged in the custom resource lambda function logs." + }, + "@aws-cdk/pipelines:reduceCrossAccountActionRoleTrustScope": { + "recommendedValue": true, + "explanation": "When enabled, scopes down the trust policy for the cross-account action role", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-stepfunctions:useDistributedMapResultWriterV2": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the resultWriterV2 property of DistributedMap will be used insted of resultWriter" + }, + "@aws-cdk/s3-notifications:addS3TrustKeyPolicyForSnsSubscriptions": { + "userValue": true, + "recommendedValue": true, + "explanation": "Add an S3 trust policy to a KMS key resource policy for SNS subscriptions." + }, + "@aws-cdk/aws-ec2:requirePrivateSubnetsForEgressOnlyInternetGateway": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the EgressOnlyGateway resource is only created if private subnets are defined in the dual-stack VPC." + }, + "@aws-cdk/aws-ec2-alpha:useResourceIdForVpcV2Migration": { + "recommendedValue": false, + "explanation": "When enabled, use resource IDs for VPC V2 migration" + }, + "@aws-cdk/aws-s3:publicAccessBlockedByDefault": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, setting any combination of options for BlockPublicAccess will automatically set true for any options not defined." + }, + "@aws-cdk/aws-lambda:useCdkManagedLogGroup": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, CDK creates and manages loggroup for the lambda function" + }, + "@aws-cdk/aws-elasticloadbalancingv2:networkLoadBalancerWithSecurityGroupByDefault": { + "recommendedValue": true, + "explanation": "When enabled, Network Load Balancer will be created with a security group by default." + }, + "@aws-cdk/aws-stepfunctions-tasks:httpInvokeDynamicJsonPathEndpoint": { + "recommendedValue": true, + "explanation": "When enabled, allows using a dynamic apiEndpoint with JSONPath format in HttpInvoke tasks.", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-ecs-patterns:uniqueTargetGroupId": { + "recommendedValue": true, + "explanation": "When enabled, ECS patterns will generate unique target group IDs to prevent conflicts during load balancer replacement" + } + } + } } - } + }, + "minimumCliVersion": "2.1033.0" } \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/tree.json index bd5737016e40d..b844b2a489b45 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.js.snapshot/tree.json @@ -1,2357 +1 @@ -{ - "version": "tree-0.1", - "tree": { - "id": "App", - "path": "", - "children": { - "batch-stack": { - "id": "batch-stack", - "path": "batch-stack", - "children": { - "vpc": { - "id": "vpc", - "path": "batch-stack/vpc", - "children": { - "Resource": { - "id": "Resource", - "path": "batch-stack/vpc/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::VPC", - "aws:cdk:cloudformation:props": { - "cidrBlock": "10.0.0.0/16", - "enableDnsHostnames": true, - "enableDnsSupport": true, - "instanceTenancy": "default", - "tags": [ - { - "key": "Name", - "value": "batch-stack/vpc" - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnVPC", - "version": "0.0.0" - } - }, - "PublicSubnet1": { - "id": "PublicSubnet1", - "path": "batch-stack/vpc/PublicSubnet1", - "children": { - "Subnet": { - "id": "Subnet", - "path": "batch-stack/vpc/PublicSubnet1/Subnet", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", - "aws:cdk:cloudformation:props": { - "availabilityZone": { - "Fn::Select": [ - 0, - { - "Fn::GetAZs": "" - } - ] - }, - "cidrBlock": "10.0.0.0/18", - "mapPublicIpOnLaunch": true, - "tags": [ - { - "key": "aws-cdk:subnet-name", - "value": "Public" - }, - { - "key": "aws-cdk:subnet-type", - "value": "Public" - }, - { - "key": "Name", - "value": "batch-stack/vpc/PublicSubnet1" - } - ], - "vpcId": { - "Ref": "vpcA2121C38" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnSubnet", - "version": "0.0.0" - } - }, - "Acl": { - "id": "Acl", - "path": "batch-stack/vpc/PublicSubnet1/Acl", - "constructInfo": { - "fqn": "aws-cdk-lib.Resource", - "version": "0.0.0" - } - }, - "RouteTable": { - "id": "RouteTable", - "path": "batch-stack/vpc/PublicSubnet1/RouteTable", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", - "aws:cdk:cloudformation:props": { - "tags": [ - { - "key": "Name", - "value": "batch-stack/vpc/PublicSubnet1" - } - ], - "vpcId": { - "Ref": "vpcA2121C38" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnRouteTable", - "version": "0.0.0" - } - }, - "RouteTableAssociation": { - "id": "RouteTableAssociation", - "path": "batch-stack/vpc/PublicSubnet1/RouteTableAssociation", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", - "aws:cdk:cloudformation:props": { - "routeTableId": { - "Ref": "vpcPublicSubnet1RouteTable48A2DF9B" - }, - "subnetId": { - "Ref": "vpcPublicSubnet1Subnet2E65531E" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation", - "version": "0.0.0" - } - }, - "DefaultRoute": { - "id": "DefaultRoute", - "path": "batch-stack/vpc/PublicSubnet1/DefaultRoute", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::Route", - "aws:cdk:cloudformation:props": { - "destinationCidrBlock": "0.0.0.0/0", - "gatewayId": { - "Ref": "vpcIGWE57CBDCA" - }, - "routeTableId": { - "Ref": "vpcPublicSubnet1RouteTable48A2DF9B" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnRoute", - "version": "0.0.0" - } - }, - "EIP": { - "id": "EIP", - "path": "batch-stack/vpc/PublicSubnet1/EIP", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::EIP", - "aws:cdk:cloudformation:props": { - "domain": "vpc", - "tags": [ - { - "key": "Name", - "value": "batch-stack/vpc/PublicSubnet1" - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnEIP", - "version": "0.0.0" - } - }, - "NATGateway": { - "id": "NATGateway", - "path": "batch-stack/vpc/PublicSubnet1/NATGateway", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", - "aws:cdk:cloudformation:props": { - "allocationId": { - "Fn::GetAtt": [ - "vpcPublicSubnet1EIPDA49DCBE", - "AllocationId" - ] - }, - "subnetId": { - "Ref": "vpcPublicSubnet1Subnet2E65531E" - }, - "tags": [ - { - "key": "Name", - "value": "batch-stack/vpc/PublicSubnet1" - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnNatGateway", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.PublicSubnet", - "version": "0.0.0" - } - }, - "PublicSubnet2": { - "id": "PublicSubnet2", - "path": "batch-stack/vpc/PublicSubnet2", - "children": { - "Subnet": { - "id": "Subnet", - "path": "batch-stack/vpc/PublicSubnet2/Subnet", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", - "aws:cdk:cloudformation:props": { - "availabilityZone": { - "Fn::Select": [ - 1, - { - "Fn::GetAZs": "" - } - ] - }, - "cidrBlock": "10.0.64.0/18", - "mapPublicIpOnLaunch": true, - "tags": [ - { - "key": "aws-cdk:subnet-name", - "value": "Public" - }, - { - "key": "aws-cdk:subnet-type", - "value": "Public" - }, - { - "key": "Name", - "value": "batch-stack/vpc/PublicSubnet2" - } - ], - "vpcId": { - "Ref": "vpcA2121C38" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnSubnet", - "version": "0.0.0" - } - }, - "Acl": { - "id": "Acl", - "path": "batch-stack/vpc/PublicSubnet2/Acl", - "constructInfo": { - "fqn": "aws-cdk-lib.Resource", - "version": "0.0.0" - } - }, - "RouteTable": { - "id": "RouteTable", - "path": "batch-stack/vpc/PublicSubnet2/RouteTable", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", - "aws:cdk:cloudformation:props": { - "tags": [ - { - "key": "Name", - "value": "batch-stack/vpc/PublicSubnet2" - } - ], - "vpcId": { - "Ref": "vpcA2121C38" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnRouteTable", - "version": "0.0.0" - } - }, - "RouteTableAssociation": { - "id": "RouteTableAssociation", - "path": "batch-stack/vpc/PublicSubnet2/RouteTableAssociation", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", - "aws:cdk:cloudformation:props": { - "routeTableId": { - "Ref": "vpcPublicSubnet2RouteTableEB40D4CB" - }, - "subnetId": { - "Ref": "vpcPublicSubnet2Subnet009B674F" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation", - "version": "0.0.0" - } - }, - "DefaultRoute": { - "id": "DefaultRoute", - "path": "batch-stack/vpc/PublicSubnet2/DefaultRoute", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::Route", - "aws:cdk:cloudformation:props": { - "destinationCidrBlock": "0.0.0.0/0", - "gatewayId": { - "Ref": "vpcIGWE57CBDCA" - }, - "routeTableId": { - "Ref": "vpcPublicSubnet2RouteTableEB40D4CB" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnRoute", - "version": "0.0.0" - } - }, - "EIP": { - "id": "EIP", - "path": "batch-stack/vpc/PublicSubnet2/EIP", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::EIP", - "aws:cdk:cloudformation:props": { - "domain": "vpc", - "tags": [ - { - "key": "Name", - "value": "batch-stack/vpc/PublicSubnet2" - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnEIP", - "version": "0.0.0" - } - }, - "NATGateway": { - "id": "NATGateway", - "path": "batch-stack/vpc/PublicSubnet2/NATGateway", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", - "aws:cdk:cloudformation:props": { - "allocationId": { - "Fn::GetAtt": [ - "vpcPublicSubnet2EIP9B3743B1", - "AllocationId" - ] - }, - "subnetId": { - "Ref": "vpcPublicSubnet2Subnet009B674F" - }, - "tags": [ - { - "key": "Name", - "value": "batch-stack/vpc/PublicSubnet2" - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnNatGateway", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.PublicSubnet", - "version": "0.0.0" - } - }, - "PrivateSubnet1": { - "id": "PrivateSubnet1", - "path": "batch-stack/vpc/PrivateSubnet1", - "children": { - "Subnet": { - "id": "Subnet", - "path": "batch-stack/vpc/PrivateSubnet1/Subnet", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", - "aws:cdk:cloudformation:props": { - "availabilityZone": { - "Fn::Select": [ - 0, - { - "Fn::GetAZs": "" - } - ] - }, - "cidrBlock": "10.0.128.0/18", - "mapPublicIpOnLaunch": false, - "tags": [ - { - "key": "aws-cdk:subnet-name", - "value": "Private" - }, - { - "key": "aws-cdk:subnet-type", - "value": "Private" - }, - { - "key": "Name", - "value": "batch-stack/vpc/PrivateSubnet1" - } - ], - "vpcId": { - "Ref": "vpcA2121C38" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnSubnet", - "version": "0.0.0" - } - }, - "Acl": { - "id": "Acl", - "path": "batch-stack/vpc/PrivateSubnet1/Acl", - "constructInfo": { - "fqn": "aws-cdk-lib.Resource", - "version": "0.0.0" - } - }, - "RouteTable": { - "id": "RouteTable", - "path": "batch-stack/vpc/PrivateSubnet1/RouteTable", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", - "aws:cdk:cloudformation:props": { - "tags": [ - { - "key": "Name", - "value": "batch-stack/vpc/PrivateSubnet1" - } - ], - "vpcId": { - "Ref": "vpcA2121C38" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnRouteTable", - "version": "0.0.0" - } - }, - "RouteTableAssociation": { - "id": "RouteTableAssociation", - "path": "batch-stack/vpc/PrivateSubnet1/RouteTableAssociation", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", - "aws:cdk:cloudformation:props": { - "routeTableId": { - "Ref": "vpcPrivateSubnet1RouteTableB41A48CC" - }, - "subnetId": { - "Ref": "vpcPrivateSubnet1Subnet934893E8" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation", - "version": "0.0.0" - } - }, - "DefaultRoute": { - "id": "DefaultRoute", - "path": "batch-stack/vpc/PrivateSubnet1/DefaultRoute", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::Route", - "aws:cdk:cloudformation:props": { - "destinationCidrBlock": "0.0.0.0/0", - "natGatewayId": { - "Ref": "vpcPublicSubnet1NATGateway9C16659E" - }, - "routeTableId": { - "Ref": "vpcPrivateSubnet1RouteTableB41A48CC" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnRoute", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.PrivateSubnet", - "version": "0.0.0" - } - }, - "PrivateSubnet2": { - "id": "PrivateSubnet2", - "path": "batch-stack/vpc/PrivateSubnet2", - "children": { - "Subnet": { - "id": "Subnet", - "path": "batch-stack/vpc/PrivateSubnet2/Subnet", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", - "aws:cdk:cloudformation:props": { - "availabilityZone": { - "Fn::Select": [ - 1, - { - "Fn::GetAZs": "" - } - ] - }, - "cidrBlock": "10.0.192.0/18", - "mapPublicIpOnLaunch": false, - "tags": [ - { - "key": "aws-cdk:subnet-name", - "value": "Private" - }, - { - "key": "aws-cdk:subnet-type", - "value": "Private" - }, - { - "key": "Name", - "value": "batch-stack/vpc/PrivateSubnet2" - } - ], - "vpcId": { - "Ref": "vpcA2121C38" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnSubnet", - "version": "0.0.0" - } - }, - "Acl": { - "id": "Acl", - "path": "batch-stack/vpc/PrivateSubnet2/Acl", - "constructInfo": { - "fqn": "aws-cdk-lib.Resource", - "version": "0.0.0" - } - }, - "RouteTable": { - "id": "RouteTable", - "path": "batch-stack/vpc/PrivateSubnet2/RouteTable", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", - "aws:cdk:cloudformation:props": { - "tags": [ - { - "key": "Name", - "value": "batch-stack/vpc/PrivateSubnet2" - } - ], - "vpcId": { - "Ref": "vpcA2121C38" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnRouteTable", - "version": "0.0.0" - } - }, - "RouteTableAssociation": { - "id": "RouteTableAssociation", - "path": "batch-stack/vpc/PrivateSubnet2/RouteTableAssociation", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", - "aws:cdk:cloudformation:props": { - "routeTableId": { - "Ref": "vpcPrivateSubnet2RouteTable7280F23E" - }, - "subnetId": { - "Ref": "vpcPrivateSubnet2Subnet7031C2BA" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation", - "version": "0.0.0" - } - }, - "DefaultRoute": { - "id": "DefaultRoute", - "path": "batch-stack/vpc/PrivateSubnet2/DefaultRoute", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::Route", - "aws:cdk:cloudformation:props": { - "destinationCidrBlock": "0.0.0.0/0", - "natGatewayId": { - "Ref": "vpcPublicSubnet2NATGateway9B8AE11A" - }, - "routeTableId": { - "Ref": "vpcPrivateSubnet2RouteTable7280F23E" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnRoute", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.PrivateSubnet", - "version": "0.0.0" - } - }, - "IGW": { - "id": "IGW", - "path": "batch-stack/vpc/IGW", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::InternetGateway", - "aws:cdk:cloudformation:props": { - "tags": [ - { - "key": "Name", - "value": "batch-stack/vpc" - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnInternetGateway", - "version": "0.0.0" - } - }, - "VPCGW": { - "id": "VPCGW", - "path": "batch-stack/vpc/VPCGW", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::VPCGatewayAttachment", - "aws:cdk:cloudformation:props": { - "internetGatewayId": { - "Ref": "vpcIGWE57CBDCA" - }, - "vpcId": { - "Ref": "vpcA2121C38" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnVPCGatewayAttachment", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.Vpc", - "version": "0.0.0" - } - }, - "SpotFleetRole": { - "id": "SpotFleetRole", - "path": "batch-stack/SpotFleetRole", - "children": { - "ImportSpotFleetRole": { - "id": "ImportSpotFleetRole", - "path": "batch-stack/SpotFleetRole/ImportSpotFleetRole", - "constructInfo": { - "fqn": "aws-cdk-lib.Resource", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "batch-stack/SpotFleetRole/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::IAM::Role", - "aws:cdk:cloudformation:props": { - "assumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "batch.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.CfnRole", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.Role", - "version": "0.0.0" - } - }, - "minimalPropsFargate": { - "id": "minimalPropsFargate", - "path": "batch-stack/minimalPropsFargate", - "children": { - "SecurityGroup": { - "id": "SecurityGroup", - "path": "batch-stack/minimalPropsFargate/SecurityGroup", - "children": { - "Resource": { - "id": "Resource", - "path": "batch-stack/minimalPropsFargate/SecurityGroup/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", - "aws:cdk:cloudformation:props": { - "groupDescription": "batch-stack/minimalPropsFargate/SecurityGroup", - "securityGroupEgress": [ - { - "cidrIp": "0.0.0.0/0", - "description": "Allow all outbound traffic by default", - "ipProtocol": "-1" - } - ], - "vpcId": { - "Ref": "vpcA2121C38" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnSecurityGroup", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.SecurityGroup", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "batch-stack/minimalPropsFargate/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::Batch::ComputeEnvironment", - "aws:cdk:cloudformation:props": { - "computeResources": { - "maxvCpus": 512, - "type": "FARGATE", - "securityGroupIds": [ - { - "Fn::GetAtt": [ - "minimalPropsFargateSecurityGroupA8D5CDD1", - "GroupId" - ] - } - ], - "subnets": [ - { - "Ref": "vpcPrivateSubnet1Subnet934893E8" - }, - { - "Ref": "vpcPrivateSubnet2Subnet7031C2BA" - } - ] - }, - "replaceComputeEnvironment": false, - "state": "ENABLED", - "type": "managed", - "updatePolicy": {} - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_batch.CfnComputeEnvironment", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_batch.FargateComputeEnvironment", - "version": "0.0.0" - } - }, - "maximalPropsFargate": { - "id": "maximalPropsFargate", - "path": "batch-stack/maximalPropsFargate", - "children": { - "SecurityGroup": { - "id": "SecurityGroup", - "path": "batch-stack/maximalPropsFargate/SecurityGroup", - "children": { - "Resource": { - "id": "Resource", - "path": "batch-stack/maximalPropsFargate/SecurityGroup/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", - "aws:cdk:cloudformation:props": { - "groupDescription": "batch-stack/maximalPropsFargate/SecurityGroup", - "securityGroupEgress": [ - { - "cidrIp": "0.0.0.0/0", - "description": "Allow all outbound traffic by default", - "ipProtocol": "-1" - } - ], - "vpcId": { - "Ref": "vpcA2121C38" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnSecurityGroup", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.SecurityGroup", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "batch-stack/maximalPropsFargate/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::Batch::ComputeEnvironment", - "aws:cdk:cloudformation:props": { - "computeEnvironmentName": "maxPropsFargateCE", - "computeResources": { - "maxvCpus": 512, - "type": "FARGATE_SPOT", - "updateToLatestImageVersion": false, - "securityGroupIds": [ - { - "Fn::GetAtt": [ - "maximalPropsFargateSecurityGroup94D64250", - "GroupId" - ] - } - ], - "subnets": [ - { - "Ref": "vpcPrivateSubnet1Subnet934893E8" - }, - { - "Ref": "vpcPrivateSubnet2Subnet7031C2BA" - } - ] - }, - "replaceComputeEnvironment": true, - "state": "ENABLED", - "type": "managed", - "updatePolicy": { - "terminateJobsOnUpdate": true, - "jobExecutionTimeoutMinutes": 30 - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_batch.CfnComputeEnvironment", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_batch.FargateComputeEnvironment", - "version": "0.0.0" - } - }, - "minimalPropsEc2": { - "id": "minimalPropsEc2", - "path": "batch-stack/minimalPropsEc2", - "children": { - "SecurityGroup": { - "id": "SecurityGroup", - "path": "batch-stack/minimalPropsEc2/SecurityGroup", - "children": { - "Resource": { - "id": "Resource", - "path": "batch-stack/minimalPropsEc2/SecurityGroup/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", - "aws:cdk:cloudformation:props": { - "groupDescription": "batch-stack/minimalPropsEc2/SecurityGroup", - "securityGroupEgress": [ - { - "cidrIp": "0.0.0.0/0", - "description": "Allow all outbound traffic by default", - "ipProtocol": "-1" - } - ], - "vpcId": { - "Ref": "vpcA2121C38" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnSecurityGroup", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.SecurityGroup", - "version": "0.0.0" - } - }, - "InstanceProfileRole": { - "id": "InstanceProfileRole", - "path": "batch-stack/minimalPropsEc2/InstanceProfileRole", - "children": { - "ImportInstanceProfileRole": { - "id": "ImportInstanceProfileRole", - "path": "batch-stack/minimalPropsEc2/InstanceProfileRole/ImportInstanceProfileRole", - "constructInfo": { - "fqn": "aws-cdk-lib.Resource", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "batch-stack/minimalPropsEc2/InstanceProfileRole/Resource", - "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/service-role/AmazonEC2ContainerServiceforEC2Role" - ] - ] - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.CfnRole", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.Role", - "version": "0.0.0" - } - }, - "InstanceProfile": { - "id": "InstanceProfile", - "path": "batch-stack/minimalPropsEc2/InstanceProfile", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::IAM::InstanceProfile", - "aws:cdk:cloudformation:props": { - "roles": [ - { - "Ref": "minimalPropsEc2InstanceProfileRole1B9873C1" - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.CfnInstanceProfile", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "batch-stack/minimalPropsEc2/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::Batch::ComputeEnvironment", - "aws:cdk:cloudformation:props": { - "computeResources": { - "maxvCpus": 256, - "type": "EC2", - "securityGroupIds": [ - { - "Fn::GetAtt": [ - "minimalPropsEc2SecurityGroup50CBE4DC", - "GroupId" - ] - } - ], - "subnets": [ - { - "Ref": "vpcPrivateSubnet1Subnet934893E8" - }, - { - "Ref": "vpcPrivateSubnet2Subnet7031C2BA" - } - ], - "minvCpus": 0, - "instanceRole": { - "Fn::GetAtt": [ - "minimalPropsEc2InstanceProfile635FB12D", - "Arn" - ] - }, - "instanceTypes": [ - "optimal" - ], - "allocationStrategy": "BEST_FIT_PROGRESSIVE", - "ec2Configuration": [ - { - "imageIdOverride": { - "Ref": "SsmParameterValueawsserviceamiamazonlinuxlatestamznamihvmx8664gp2C96584B6F00A464EAD1953AFF4B05118Parameter" - }, - "imageType": "ECS_AL2" - } - ] - }, - "replaceComputeEnvironment": false, - "state": "ENABLED", - "type": "managed", - "updatePolicy": {} - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_batch.CfnComputeEnvironment", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_batch.ManagedEc2EcsComputeEnvironment", - "version": "0.0.0" - } - }, - "SsmParameterValue:--aws--service--ami-amazon-linux-latest--amzn-ami-hvm-x86_64-gp2:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter": { - "id": "SsmParameterValue:--aws--service--ami-amazon-linux-latest--amzn-ami-hvm-x86_64-gp2:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter", - "path": "batch-stack/SsmParameterValue:--aws--service--ami-amazon-linux-latest--amzn-ami-hvm-x86_64-gp2:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnParameter", - "version": "0.0.0" - } - }, - "SsmParameterValue:--aws--service--ami-amazon-linux-latest--amzn-ami-hvm-x86_64-gp2:C96584B6-F00A-464E-AD19-53AFF4B05118": { - "id": "SsmParameterValue:--aws--service--ami-amazon-linux-latest--amzn-ami-hvm-x86_64-gp2:C96584B6-F00A-464E-AD19-53AFF4B05118", - "path": "batch-stack/SsmParameterValue:--aws--service--ami-amazon-linux-latest--amzn-ami-hvm-x86_64-gp2:C96584B6-F00A-464E-AD19-53AFF4B05118", - "constructInfo": { - "fqn": "aws-cdk-lib.Resource", - "version": "0.0.0" - } - }, - "placementGroup": { - "id": "placementGroup", - "path": "batch-stack/placementGroup", - "children": { - "Resource": { - "id": "Resource", - "path": "batch-stack/placementGroup/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::PlacementGroup", - "aws:cdk:cloudformation:props": {} - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnPlacementGroup", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.PlacementGroup", - "version": "0.0.0" - } - }, - "launchTemplate": { - "id": "launchTemplate", - "path": "batch-stack/launchTemplate", - "children": { - "Resource": { - "id": "Resource", - "path": "batch-stack/launchTemplate/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::LaunchTemplate", - "aws:cdk:cloudformation:props": { - "launchTemplateData": { - "tagSpecifications": [ - { - "resourceType": "instance", - "tags": [ - { - "key": "Name", - "value": "batch-stack/launchTemplate" - } - ] - }, - { - "resourceType": "volume", - "tags": [ - { - "key": "Name", - "value": "batch-stack/launchTemplate" - } - ] - } - ] - }, - "tagSpecifications": [ - { - "resourceType": "launch-template", - "tags": [ - { - "key": "Name", - "value": "batch-stack/launchTemplate" - } - ] - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnLaunchTemplate", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.LaunchTemplate", - "version": "0.0.0" - } - }, - "LaunchTemplate": { - "id": "LaunchTemplate", - "path": "batch-stack/LaunchTemplate", - "children": { - "SecurityGroup": { - "id": "SecurityGroup", - "path": "batch-stack/LaunchTemplate/SecurityGroup", - "children": { - "Resource": { - "id": "Resource", - "path": "batch-stack/LaunchTemplate/SecurityGroup/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", - "aws:cdk:cloudformation:props": { - "groupDescription": "batch-stack/LaunchTemplate/SecurityGroup", - "securityGroupEgress": [ - { - "cidrIp": "0.0.0.0/0", - "description": "Allow all outbound traffic by default", - "ipProtocol": "-1" - } - ], - "vpcId": { - "Ref": "vpcA2121C38" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnSecurityGroup", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.SecurityGroup", - "version": "0.0.0" - } - }, - "InstanceProfileRole": { - "id": "InstanceProfileRole", - "path": "batch-stack/LaunchTemplate/InstanceProfileRole", - "children": { - "ImportInstanceProfileRole": { - "id": "ImportInstanceProfileRole", - "path": "batch-stack/LaunchTemplate/InstanceProfileRole/ImportInstanceProfileRole", - "constructInfo": { - "fqn": "aws-cdk-lib.Resource", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "batch-stack/LaunchTemplate/InstanceProfileRole/Resource", - "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/service-role/AmazonEC2ContainerServiceforEC2Role" - ] - ] - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.CfnRole", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.Role", - "version": "0.0.0" - } - }, - "InstanceProfile": { - "id": "InstanceProfile", - "path": "batch-stack/LaunchTemplate/InstanceProfile", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::IAM::InstanceProfile", - "aws:cdk:cloudformation:props": { - "roles": [ - { - "Ref": "LaunchTemplateInstanceProfileRole037F2415" - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.CfnInstanceProfile", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "batch-stack/LaunchTemplate/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::Batch::ComputeEnvironment", - "aws:cdk:cloudformation:props": { - "computeResources": { - "maxvCpus": 512, - "type": "EC2", - "securityGroupIds": [ - { - "Fn::GetAtt": [ - "LaunchTemplateSecurityGroup02438453", - "GroupId" - ] - } - ], - "subnets": [ - { - "Ref": "vpcPrivateSubnet1Subnet934893E8" - }, - { - "Ref": "vpcPrivateSubnet2Subnet7031C2BA" - } - ], - "minvCpus": 256, - "instanceRole": { - "Fn::GetAtt": [ - "LaunchTemplateInstanceProfile81A7EF12", - "Arn" - ] - }, - "instanceTypes": [ - "optimal" - ], - "allocationStrategy": "BEST_FIT", - "launchTemplate": { - "launchTemplateId": { - "Ref": "launchTemplateDEE5742D" - } - }, - "ec2Configuration": [ - { - "imageIdOverride": { - "Ref": "SsmParameterValueawsserviceamiamazonlinuxlatestamznamihvmx8664gp2C96584B6F00A464EAD1953AFF4B05118Parameter" - }, - "imageType": "ECS_AL2" - } - ], - "placementGroup": { - "Fn::GetAtt": [ - "placementGroupD973C950", - "GroupName" - ] - } - }, - "replaceComputeEnvironment": true, - "state": "ENABLED", - "type": "managed", - "updatePolicy": { - "terminateJobsOnUpdate": false, - "jobExecutionTimeoutMinutes": 60 - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_batch.CfnComputeEnvironment", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_batch.ManagedEc2EcsComputeEnvironment", - "version": "0.0.0" - } - }, - "SpotEc2": { - "id": "SpotEc2", - "path": "batch-stack/SpotEc2", - "children": { - "SecurityGroup": { - "id": "SecurityGroup", - "path": "batch-stack/SpotEc2/SecurityGroup", - "children": { - "Resource": { - "id": "Resource", - "path": "batch-stack/SpotEc2/SecurityGroup/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", - "aws:cdk:cloudformation:props": { - "groupDescription": "batch-stack/SpotEc2/SecurityGroup", - "securityGroupEgress": [ - { - "cidrIp": "0.0.0.0/0", - "description": "Allow all outbound traffic by default", - "ipProtocol": "-1" - } - ], - "vpcId": { - "Ref": "vpcA2121C38" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnSecurityGroup", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.SecurityGroup", - "version": "0.0.0" - } - }, - "InstanceProfileRole": { - "id": "InstanceProfileRole", - "path": "batch-stack/SpotEc2/InstanceProfileRole", - "children": { - "ImportInstanceProfileRole": { - "id": "ImportInstanceProfileRole", - "path": "batch-stack/SpotEc2/InstanceProfileRole/ImportInstanceProfileRole", - "constructInfo": { - "fqn": "aws-cdk-lib.Resource", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "batch-stack/SpotEc2/InstanceProfileRole/Resource", - "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/service-role/AmazonEC2ContainerServiceforEC2Role" - ] - ] - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.CfnRole", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.Role", - "version": "0.0.0" - } - }, - "InstanceProfile": { - "id": "InstanceProfile", - "path": "batch-stack/SpotEc2/InstanceProfile", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::IAM::InstanceProfile", - "aws:cdk:cloudformation:props": { - "roles": [ - { - "Ref": "SpotEc2InstanceProfileRoleBA254130" - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.CfnInstanceProfile", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "batch-stack/SpotEc2/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::Batch::ComputeEnvironment", - "aws:cdk:cloudformation:props": { - "computeResources": { - "maxvCpus": 256, - "type": "SPOT", - "securityGroupIds": [ - { - "Fn::GetAtt": [ - "SpotEc2SecurityGroup1225E163", - "GroupId" - ] - } - ], - "subnets": [ - { - "Ref": "vpcPrivateSubnet1Subnet934893E8" - }, - { - "Ref": "vpcPrivateSubnet2Subnet7031C2BA" - } - ], - "minvCpus": 0, - "instanceRole": { - "Fn::GetAtt": [ - "SpotEc2InstanceProfileD921ABA1", - "Arn" - ] - }, - "instanceTypes": [ - "optimal" - ], - "spotIamFleetRole": { - "Fn::GetAtt": [ - "SpotFleetRole6D4F7558", - "Arn" - ] - }, - "allocationStrategy": "SPOT_PRICE_CAPACITY_OPTIMIZED", - "bidPercentage": 95, - "ec2Configuration": [ - { - "imageIdOverride": { - "Ref": "SsmParameterValueawsserviceamiamazonlinuxlatestamznamihvmx8664gp2C96584B6F00A464EAD1953AFF4B05118Parameter" - }, - "imageType": "ECS_AL2" - } - ] - }, - "replaceComputeEnvironment": false, - "state": "ENABLED", - "type": "managed", - "updatePolicy": {} - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_batch.CfnComputeEnvironment", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_batch.ManagedEc2EcsComputeEnvironment", - "version": "0.0.0" - } - }, - "AllocationStrategySPOT_CAPACITY": { - "id": "AllocationStrategySPOT_CAPACITY", - "path": "batch-stack/AllocationStrategySPOT_CAPACITY", - "children": { - "SecurityGroup": { - "id": "SecurityGroup", - "path": "batch-stack/AllocationStrategySPOT_CAPACITY/SecurityGroup", - "children": { - "Resource": { - "id": "Resource", - "path": "batch-stack/AllocationStrategySPOT_CAPACITY/SecurityGroup/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", - "aws:cdk:cloudformation:props": { - "groupDescription": "batch-stack/AllocationStrategySPOT_CAPACITY/SecurityGroup", - "securityGroupEgress": [ - { - "cidrIp": "0.0.0.0/0", - "description": "Allow all outbound traffic by default", - "ipProtocol": "-1" - } - ], - "vpcId": { - "Ref": "vpcA2121C38" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnSecurityGroup", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.SecurityGroup", - "version": "0.0.0" - } - }, - "InstanceProfileRole": { - "id": "InstanceProfileRole", - "path": "batch-stack/AllocationStrategySPOT_CAPACITY/InstanceProfileRole", - "children": { - "ImportInstanceProfileRole": { - "id": "ImportInstanceProfileRole", - "path": "batch-stack/AllocationStrategySPOT_CAPACITY/InstanceProfileRole/ImportInstanceProfileRole", - "constructInfo": { - "fqn": "aws-cdk-lib.Resource", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "batch-stack/AllocationStrategySPOT_CAPACITY/InstanceProfileRole/Resource", - "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/service-role/AmazonEC2ContainerServiceforEC2Role" - ] - ] - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.CfnRole", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.Role", - "version": "0.0.0" - } - }, - "InstanceProfile": { - "id": "InstanceProfile", - "path": "batch-stack/AllocationStrategySPOT_CAPACITY/InstanceProfile", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::IAM::InstanceProfile", - "aws:cdk:cloudformation:props": { - "roles": [ - { - "Ref": "AllocationStrategySPOTCAPACITYInstanceProfileRoleA6211395" - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.CfnInstanceProfile", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "batch-stack/AllocationStrategySPOT_CAPACITY/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::Batch::ComputeEnvironment", - "aws:cdk:cloudformation:props": { - "computeResources": { - "maxvCpus": 256, - "type": "SPOT", - "securityGroupIds": [ - { - "Fn::GetAtt": [ - "AllocationStrategySPOTCAPACITYSecurityGroupA581EB8C", - "GroupId" - ] - } - ], - "subnets": [ - { - "Ref": "vpcPrivateSubnet1Subnet934893E8" - }, - { - "Ref": "vpcPrivateSubnet2Subnet7031C2BA" - } - ], - "minvCpus": 0, - "instanceRole": { - "Fn::GetAtt": [ - "AllocationStrategySPOTCAPACITYInstanceProfile0B71F375", - "Arn" - ] - }, - "instanceTypes": [ - "optimal" - ], - "allocationStrategy": "SPOT_CAPACITY_OPTIMIZED", - "bidPercentage": 95, - "ec2Configuration": [ - { - "imageIdOverride": { - "Ref": "SsmParameterValueawsserviceamiamazonlinuxlatestamznamihvmx8664gp2C96584B6F00A464EAD1953AFF4B05118Parameter" - }, - "imageType": "ECS_AL2" - } - ] - }, - "replaceComputeEnvironment": false, - "state": "ENABLED", - "type": "managed", - "updatePolicy": {} - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_batch.CfnComputeEnvironment", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_batch.ManagedEc2EcsComputeEnvironment", - "version": "0.0.0" - } - }, - "taggedCE": { - "id": "taggedCE", - "path": "batch-stack/taggedCE", - "children": { - "SecurityGroup": { - "id": "SecurityGroup", - "path": "batch-stack/taggedCE/SecurityGroup", - "children": { - "Resource": { - "id": "Resource", - "path": "batch-stack/taggedCE/SecurityGroup/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", - "aws:cdk:cloudformation:props": { - "groupDescription": "batch-stack/taggedCE/SecurityGroup", - "securityGroupEgress": [ - { - "cidrIp": "0.0.0.0/0", - "description": "Allow all outbound traffic by default", - "ipProtocol": "-1" - } - ], - "tags": [ - { - "key": "foo", - "value": "bar" - }, - { - "key": "super", - "value": "salamander" - } - ], - "vpcId": { - "Ref": "vpcA2121C38" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnSecurityGroup", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.SecurityGroup", - "version": "0.0.0" - } - }, - "InstanceProfileRole": { - "id": "InstanceProfileRole", - "path": "batch-stack/taggedCE/InstanceProfileRole", - "children": { - "ImportInstanceProfileRole": { - "id": "ImportInstanceProfileRole", - "path": "batch-stack/taggedCE/InstanceProfileRole/ImportInstanceProfileRole", - "constructInfo": { - "fqn": "aws-cdk-lib.Resource", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "batch-stack/taggedCE/InstanceProfileRole/Resource", - "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/service-role/AmazonEC2ContainerServiceforEC2Role" - ] - ] - } - ], - "tags": [ - { - "key": "foo", - "value": "bar" - }, - { - "key": "super", - "value": "salamander" - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.CfnRole", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.Role", - "version": "0.0.0" - } - }, - "InstanceProfile": { - "id": "InstanceProfile", - "path": "batch-stack/taggedCE/InstanceProfile", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::IAM::InstanceProfile", - "aws:cdk:cloudformation:props": { - "roles": [ - { - "Ref": "taggedCEInstanceProfileRoleC239DAF9" - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.CfnInstanceProfile", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "batch-stack/taggedCE/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::Batch::ComputeEnvironment", - "aws:cdk:cloudformation:props": { - "computeResources": { - "maxvCpus": 256, - "type": "EC2", - "securityGroupIds": [ - { - "Fn::GetAtt": [ - "taggedCESecurityGroup82CCF59F", - "GroupId" - ] - } - ], - "subnets": [ - { - "Ref": "vpcPrivateSubnet1Subnet934893E8" - }, - { - "Ref": "vpcPrivateSubnet2Subnet7031C2BA" - } - ], - "minvCpus": 0, - "instanceRole": { - "Fn::GetAtt": [ - "taggedCEInstanceProfileB29F2197", - "Arn" - ] - }, - "instanceTypes": [ - "optimal" - ], - "allocationStrategy": "BEST_FIT_PROGRESSIVE", - "ec2Configuration": [ - { - "imageIdOverride": { - "Ref": "SsmParameterValueawsserviceamiamazonlinuxlatestamznamihvmx8664gp2C96584B6F00A464EAD1953AFF4B05118Parameter" - }, - "imageType": "ECS_AL2" - } - ], - "tags": { - "foo": "bar", - "super": "salamander" - } - }, - "replaceComputeEnvironment": false, - "state": "ENABLED", - "tags": { - "foo": "bar", - "super": "salamander" - }, - "type": "managed", - "updatePolicy": {} - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_batch.CfnComputeEnvironment", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_batch.ManagedEc2EcsComputeEnvironment", - "version": "0.0.0" - } - }, - "ECS_AL2023": { - "id": "ECS_AL2023", - "path": "batch-stack/ECS_AL2023", - "children": { - "SecurityGroup": { - "id": "SecurityGroup", - "path": "batch-stack/ECS_AL2023/SecurityGroup", - "children": { - "Resource": { - "id": "Resource", - "path": "batch-stack/ECS_AL2023/SecurityGroup/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", - "aws:cdk:cloudformation:props": { - "groupDescription": "batch-stack/ECS_AL2023/SecurityGroup", - "securityGroupEgress": [ - { - "cidrIp": "0.0.0.0/0", - "description": "Allow all outbound traffic by default", - "ipProtocol": "-1" - } - ], - "vpcId": { - "Ref": "vpcA2121C38" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnSecurityGroup", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.SecurityGroup", - "version": "0.0.0" - } - }, - "InstanceProfileRole": { - "id": "InstanceProfileRole", - "path": "batch-stack/ECS_AL2023/InstanceProfileRole", - "children": { - "ImportInstanceProfileRole": { - "id": "ImportInstanceProfileRole", - "path": "batch-stack/ECS_AL2023/InstanceProfileRole/ImportInstanceProfileRole", - "constructInfo": { - "fqn": "aws-cdk-lib.Resource", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "batch-stack/ECS_AL2023/InstanceProfileRole/Resource", - "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/service-role/AmazonEC2ContainerServiceforEC2Role" - ] - ] - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.CfnRole", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.Role", - "version": "0.0.0" - } - }, - "InstanceProfile": { - "id": "InstanceProfile", - "path": "batch-stack/ECS_AL2023/InstanceProfile", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::IAM::InstanceProfile", - "aws:cdk:cloudformation:props": { - "roles": [ - { - "Ref": "ECSAL2023InstanceProfileRoleEBA7FF23" - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.CfnInstanceProfile", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "batch-stack/ECS_AL2023/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::Batch::ComputeEnvironment", - "aws:cdk:cloudformation:props": { - "computeResources": { - "maxvCpus": 256, - "type": "EC2", - "securityGroupIds": [ - { - "Fn::GetAtt": [ - "ECSAL2023SecurityGroup7AE4A1D4", - "GroupId" - ] - } - ], - "subnets": [ - { - "Ref": "vpcPrivateSubnet1Subnet934893E8" - }, - { - "Ref": "vpcPrivateSubnet2Subnet7031C2BA" - } - ], - "minvCpus": 0, - "instanceRole": { - "Fn::GetAtt": [ - "ECSAL2023InstanceProfile14B35A51", - "Arn" - ] - }, - "instanceTypes": [ - "optimal" - ], - "allocationStrategy": "BEST_FIT_PROGRESSIVE", - "ec2Configuration": [ - { - "imageType": "ECS_AL2023" - } - ] - }, - "replaceComputeEnvironment": false, - "state": "ENABLED", - "type": "managed", - "updatePolicy": {} - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_batch.CfnComputeEnvironment", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_batch.ManagedEc2EcsComputeEnvironment", - "version": "0.0.0" - } - }, - "MinVCpuParameter": { - "id": "MinVCpuParameter", - "path": "batch-stack/MinVCpuParameter", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnParameter", - "version": "0.0.0" - } - }, - "MaxVCpuParameter": { - "id": "MaxVCpuParameter", - "path": "batch-stack/MaxVCpuParameter", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnParameter", - "version": "0.0.0" - } - }, - "SpotBidPercentageParameter": { - "id": "SpotBidPercentageParameter", - "path": "batch-stack/SpotBidPercentageParameter", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnParameter", - "version": "0.0.0" - } - }, - "ParamertizedManagedCE": { - "id": "ParamertizedManagedCE", - "path": "batch-stack/ParamertizedManagedCE", - "children": { - "SecurityGroup": { - "id": "SecurityGroup", - "path": "batch-stack/ParamertizedManagedCE/SecurityGroup", - "children": { - "Resource": { - "id": "Resource", - "path": "batch-stack/ParamertizedManagedCE/SecurityGroup/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", - "aws:cdk:cloudformation:props": { - "groupDescription": "batch-stack/ParamertizedManagedCE/SecurityGroup", - "securityGroupEgress": [ - { - "cidrIp": "0.0.0.0/0", - "description": "Allow all outbound traffic by default", - "ipProtocol": "-1" - } - ], - "vpcId": { - "Ref": "vpcA2121C38" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.CfnSecurityGroup", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_ec2.SecurityGroup", - "version": "0.0.0" - } - }, - "InstanceProfileRole": { - "id": "InstanceProfileRole", - "path": "batch-stack/ParamertizedManagedCE/InstanceProfileRole", - "children": { - "ImportInstanceProfileRole": { - "id": "ImportInstanceProfileRole", - "path": "batch-stack/ParamertizedManagedCE/InstanceProfileRole/ImportInstanceProfileRole", - "constructInfo": { - "fqn": "aws-cdk-lib.Resource", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "batch-stack/ParamertizedManagedCE/InstanceProfileRole/Resource", - "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/service-role/AmazonEC2ContainerServiceforEC2Role" - ] - ] - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.CfnRole", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.Role", - "version": "0.0.0" - } - }, - "InstanceProfile": { - "id": "InstanceProfile", - "path": "batch-stack/ParamertizedManagedCE/InstanceProfile", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::IAM::InstanceProfile", - "aws:cdk:cloudformation:props": { - "roles": [ - { - "Ref": "ParamertizedManagedCEInstanceProfileRoleB54B7F8B" - } - ] - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.CfnInstanceProfile", - "version": "0.0.0" - } - }, - "Resource": { - "id": "Resource", - "path": "batch-stack/ParamertizedManagedCE/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::Batch::ComputeEnvironment", - "aws:cdk:cloudformation:props": { - "computeResources": { - "maxvCpus": { - "Ref": "MaxVCpuParameter" - }, - "type": "SPOT", - "securityGroupIds": [ - { - "Fn::GetAtt": [ - "ParamertizedManagedCESecurityGroup772BD71B", - "GroupId" - ] - } - ], - "subnets": [ - { - "Ref": "vpcPrivateSubnet1Subnet934893E8" - }, - { - "Ref": "vpcPrivateSubnet2Subnet7031C2BA" - } - ], - "minvCpus": { - "Ref": "MinVCpuParameter" - }, - "instanceRole": { - "Fn::GetAtt": [ - "ParamertizedManagedCEInstanceProfileDF9CB175", - "Arn" - ] - }, - "instanceTypes": [ - "optimal" - ], - "spotIamFleetRole": { - "Fn::GetAtt": [ - "SpotFleetRole6D4F7558", - "Arn" - ] - }, - "allocationStrategy": "SPOT_PRICE_CAPACITY_OPTIMIZED", - "bidPercentage": { - "Ref": "SpotBidPercentageParameter" - }, - "ec2Configuration": [ - { - "imageIdOverride": { - "Ref": "SsmParameterValueawsserviceamiamazonlinuxlatestamznamihvmx8664gp2C96584B6F00A464EAD1953AFF4B05118Parameter" - }, - "imageType": "ECS_AL2" - } - ] - }, - "replaceComputeEnvironment": false, - "state": "ENABLED", - "type": "managed", - "updatePolicy": {} - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_batch.CfnComputeEnvironment", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.aws_batch.ManagedEc2EcsComputeEnvironment", - "version": "0.0.0" - } - }, - "BootstrapVersion": { - "id": "BootstrapVersion", - "path": "batch-stack/BootstrapVersion", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnParameter", - "version": "0.0.0" - } - }, - "CheckBootstrapVersion": { - "id": "CheckBootstrapVersion", - "path": "batch-stack/CheckBootstrapVersion", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnRule", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.Stack", - "version": "0.0.0" - } - }, - "BatchManagedComputeEnvironmentTest": { - "id": "BatchManagedComputeEnvironmentTest", - "path": "BatchManagedComputeEnvironmentTest", - "children": { - "DefaultTest": { - "id": "DefaultTest", - "path": "BatchManagedComputeEnvironmentTest/DefaultTest", - "children": { - "Default": { - "id": "Default", - "path": "BatchManagedComputeEnvironmentTest/DefaultTest/Default", - "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.4.2" - } - }, - "DeployAssert": { - "id": "DeployAssert", - "path": "BatchManagedComputeEnvironmentTest/DefaultTest/DeployAssert", - "children": { - "BootstrapVersion": { - "id": "BootstrapVersion", - "path": "BatchManagedComputeEnvironmentTest/DefaultTest/DeployAssert/BootstrapVersion", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnParameter", - "version": "0.0.0" - } - }, - "CheckBootstrapVersion": { - "id": "CheckBootstrapVersion", - "path": "BatchManagedComputeEnvironmentTest/DefaultTest/DeployAssert/CheckBootstrapVersion", - "constructInfo": { - "fqn": "aws-cdk-lib.CfnRule", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.Stack", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/integ-tests-alpha.IntegTestCase", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/integ-tests-alpha.IntegTest", - "version": "0.0.0" - } - }, - "Tree": { - "id": "Tree", - "path": "Tree", - "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.4.2" - } - } - }, - "constructInfo": { - "fqn": "aws-cdk-lib.App", - "version": "0.0.0" - } - } -} \ No newline at end of file +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"batch-stack":{"id":"batch-stack","path":"batch-stack","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"vpc":{"id":"vpc","path":"batch-stack/vpc","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.Vpc","version":"0.0.0","metadata":[{"restrictDefaultSecurityGroup":false}]},"children":{"Resource":{"id":"Resource","path":"batch-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":"batch-stack/vpc"}]}}},"PublicSubnet1":{"id":"PublicSubnet1","path":"batch-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":"batch-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":"Name","value":"batch-stack/vpc/PublicSubnet1"}],"vpcId":{"Ref":"vpcA2121C38"}}}},"Acl":{"id":"Acl","path":"batch-stack/vpc/PublicSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"batch-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":"Name","value":"batch-stack/vpc/PublicSubnet1"}],"vpcId":{"Ref":"vpcA2121C38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"batch-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":"vpcPublicSubnet1RouteTable48A2DF9B"},"subnetId":{"Ref":"vpcPublicSubnet1Subnet2E65531E"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"batch-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":"vpcIGWE57CBDCA"},"routeTableId":{"Ref":"vpcPublicSubnet1RouteTable48A2DF9B"}}}},"EIP":{"id":"EIP","path":"batch-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":"Name","value":"batch-stack/vpc/PublicSubnet1"}]}}},"NATGateway":{"id":"NATGateway","path":"batch-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":["vpcPublicSubnet1EIPDA49DCBE","AllocationId"]},"subnetId":{"Ref":"vpcPublicSubnet1Subnet2E65531E"},"tags":[{"key":"Name","value":"batch-stack/vpc/PublicSubnet1"}]}}}}},"PublicSubnet2":{"id":"PublicSubnet2","path":"batch-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":"*"},{},{"addNatGateway":["*"]}]},"children":{"Subnet":{"id":"Subnet","path":"batch-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":"Name","value":"batch-stack/vpc/PublicSubnet2"}],"vpcId":{"Ref":"vpcA2121C38"}}}},"Acl":{"id":"Acl","path":"batch-stack/vpc/PublicSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"batch-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":"Name","value":"batch-stack/vpc/PublicSubnet2"}],"vpcId":{"Ref":"vpcA2121C38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"batch-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":"vpcPublicSubnet2RouteTableEB40D4CB"},"subnetId":{"Ref":"vpcPublicSubnet2Subnet009B674F"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"batch-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":"vpcIGWE57CBDCA"},"routeTableId":{"Ref":"vpcPublicSubnet2RouteTableEB40D4CB"}}}},"EIP":{"id":"EIP","path":"batch-stack/vpc/PublicSubnet2/EIP","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnEIP","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::EIP","aws:cdk:cloudformation:props":{"domain":"vpc","tags":[{"key":"Name","value":"batch-stack/vpc/PublicSubnet2"}]}}},"NATGateway":{"id":"NATGateway","path":"batch-stack/vpc/PublicSubnet2/NATGateway","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnNatGateway","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::NatGateway","aws:cdk:cloudformation:props":{"allocationId":{"Fn::GetAtt":["vpcPublicSubnet2EIP9B3743B1","AllocationId"]},"subnetId":{"Ref":"vpcPublicSubnet2Subnet009B674F"},"tags":[{"key":"Name","value":"batch-stack/vpc/PublicSubnet2"}]}}}}},"PrivateSubnet1":{"id":"PrivateSubnet1","path":"batch-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":"batch-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":"Name","value":"batch-stack/vpc/PrivateSubnet1"}],"vpcId":{"Ref":"vpcA2121C38"}}}},"Acl":{"id":"Acl","path":"batch-stack/vpc/PrivateSubnet1/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"batch-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":"Name","value":"batch-stack/vpc/PrivateSubnet1"}],"vpcId":{"Ref":"vpcA2121C38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"batch-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":"vpcPrivateSubnet1RouteTableB41A48CC"},"subnetId":{"Ref":"vpcPrivateSubnet1Subnet934893E8"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"batch-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":"vpcPublicSubnet1NATGateway9C16659E"},"routeTableId":{"Ref":"vpcPrivateSubnet1RouteTableB41A48CC"}}}}}},"PrivateSubnet2":{"id":"PrivateSubnet2","path":"batch-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":"batch-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":"Name","value":"batch-stack/vpc/PrivateSubnet2"}],"vpcId":{"Ref":"vpcA2121C38"}}}},"Acl":{"id":"Acl","path":"batch-stack/vpc/PrivateSubnet2/Acl","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"RouteTable":{"id":"RouteTable","path":"batch-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":"Name","value":"batch-stack/vpc/PrivateSubnet2"}],"vpcId":{"Ref":"vpcA2121C38"}}}},"RouteTableAssociation":{"id":"RouteTableAssociation","path":"batch-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":"vpcPrivateSubnet2RouteTable7280F23E"},"subnetId":{"Ref":"vpcPrivateSubnet2Subnet7031C2BA"}}}},"DefaultRoute":{"id":"DefaultRoute","path":"batch-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":"vpcPublicSubnet2NATGateway9B8AE11A"},"routeTableId":{"Ref":"vpcPrivateSubnet2RouteTable7280F23E"}}}}}},"IGW":{"id":"IGW","path":"batch-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":"batch-stack/vpc"}]}}},"VPCGW":{"id":"VPCGW","path":"batch-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":"vpcIGWE57CBDCA"},"vpcId":{"Ref":"vpcA2121C38"}}}}}},"SpotFleetRole":{"id":"SpotFleetRole","path":"batch-stack/SpotFleetRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}}]},"children":{"ImportSpotFleetRole":{"id":"ImportSpotFleetRole","path":"batch-stack/SpotFleetRole/ImportSpotFleetRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"batch-stack/SpotFleetRole/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":"batch.amazonaws.com"}}],"Version":"2012-10-17"}}}}}},"minimalPropsFargate":{"id":"minimalPropsFargate","path":"batch-stack/minimalPropsFargate","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.FargateComputeEnvironment","version":"0.0.0","metadata":[{"vpc":"*","maxvCpus":"*"}]},"children":{"SecurityGroup":{"id":"SecurityGroup","path":"batch-stack/minimalPropsFargate/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*"}]},"children":{"Resource":{"id":"Resource","path":"batch-stack/minimalPropsFargate/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":"batch-stack/minimalPropsFargate/SecurityGroup","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"vpcA2121C38"}}}}}},"Resource":{"id":"Resource","path":"batch-stack/minimalPropsFargate/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.CfnComputeEnvironment","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Batch::ComputeEnvironment","aws:cdk:cloudformation:props":{"computeResources":{"maxvCpus":512,"type":"FARGATE","securityGroupIds":[{"Fn::GetAtt":["minimalPropsFargateSecurityGroupA8D5CDD1","GroupId"]}],"subnets":[{"Ref":"vpcPrivateSubnet1Subnet934893E8"},{"Ref":"vpcPrivateSubnet2Subnet7031C2BA"}]},"replaceComputeEnvironment":false,"state":"ENABLED","type":"managed","updatePolicy":{}}}}}},"maximalPropsFargate":{"id":"maximalPropsFargate","path":"batch-stack/maximalPropsFargate","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.FargateComputeEnvironment","version":"0.0.0","metadata":[{"vpc":"*","maxvCpus":"*","computeEnvironmentName":"*","replaceComputeEnvironment":true,"spot":true,"terminateOnUpdate":true,"updateTimeout":"*","updateToLatestImageVersion":false}]},"children":{"SecurityGroup":{"id":"SecurityGroup","path":"batch-stack/maximalPropsFargate/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*"}]},"children":{"Resource":{"id":"Resource","path":"batch-stack/maximalPropsFargate/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":"batch-stack/maximalPropsFargate/SecurityGroup","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"vpcA2121C38"}}}}}},"Resource":{"id":"Resource","path":"batch-stack/maximalPropsFargate/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.CfnComputeEnvironment","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Batch::ComputeEnvironment","aws:cdk:cloudformation:props":{"computeEnvironmentName":"maxPropsFargateCE","computeResources":{"maxvCpus":512,"type":"FARGATE_SPOT","updateToLatestImageVersion":false,"securityGroupIds":[{"Fn::GetAtt":["maximalPropsFargateSecurityGroup94D64250","GroupId"]}],"subnets":[{"Ref":"vpcPrivateSubnet1Subnet934893E8"},{"Ref":"vpcPrivateSubnet2Subnet7031C2BA"}]},"replaceComputeEnvironment":true,"state":"ENABLED","type":"managed","updatePolicy":{"terminateJobsOnUpdate":true,"jobExecutionTimeoutMinutes":30}}}}}},"minimalPropsEc2":{"id":"minimalPropsEc2","path":"batch-stack/minimalPropsEc2","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.ManagedEc2EcsComputeEnvironment","version":"0.0.0","metadata":[{"vpc":"*","images":[{"image":"*"}]}]},"children":{"SecurityGroup":{"id":"SecurityGroup","path":"batch-stack/minimalPropsEc2/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*"}]},"children":{"Resource":{"id":"Resource","path":"batch-stack/minimalPropsEc2/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":"batch-stack/minimalPropsEc2/SecurityGroup","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"vpcA2121C38"}}}}}},"InstanceProfileRole":{"id":"InstanceProfileRole","path":"batch-stack/minimalPropsEc2/InstanceProfileRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[]},"children":{"ImportInstanceProfileRole":{"id":"ImportInstanceProfileRole","path":"batch-stack/minimalPropsEc2/InstanceProfileRole/ImportInstanceProfileRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"batch-stack/minimalPropsEc2/InstanceProfileRole/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/service-role/AmazonEC2ContainerServiceforEC2Role"]]}]}}}}},"InstanceProfile":{"id":"InstanceProfile","path":"batch-stack/minimalPropsEc2/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":"minimalPropsEc2InstanceProfileRole1B9873C1"}]}}},"Resource":{"id":"Resource","path":"batch-stack/minimalPropsEc2/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.CfnComputeEnvironment","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Batch::ComputeEnvironment","aws:cdk:cloudformation:props":{"computeResources":{"maxvCpus":256,"type":"EC2","securityGroupIds":[{"Fn::GetAtt":["minimalPropsEc2SecurityGroup50CBE4DC","GroupId"]}],"subnets":[{"Ref":"vpcPrivateSubnet1Subnet934893E8"},{"Ref":"vpcPrivateSubnet2Subnet7031C2BA"}],"minvCpus":0,"instanceRole":{"Fn::GetAtt":["minimalPropsEc2InstanceProfile635FB12D","Arn"]},"instanceTypes":["optimal"],"allocationStrategy":"BEST_FIT_PROGRESSIVE","ec2Configuration":[{"imageIdOverride":{"Ref":"SsmParameterValueawsserviceamiamazonlinuxlatestamznamihvmx8664gp2C96584B6F00A464EAD1953AFF4B05118Parameter"},"imageType":"ECS_AL2"}]},"replaceComputeEnvironment":false,"state":"ENABLED","type":"managed","updatePolicy":{}}}}}},"SsmParameterValue:--aws--service--ami-amazon-linux-latest--amzn-ami-hvm-x86_64-gp2:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter":{"id":"SsmParameterValue:--aws--service--ami-amazon-linux-latest--amzn-ami-hvm-x86_64-gp2:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","path":"batch-stack/SsmParameterValue:--aws--service--ami-amazon-linux-latest--amzn-ami-hvm-x86_64-gp2:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"SsmParameterValue:--aws--service--ami-amazon-linux-latest--amzn-ami-hvm-x86_64-gp2:C96584B6-F00A-464E-AD19-53AFF4B05118":{"id":"SsmParameterValue:--aws--service--ami-amazon-linux-latest--amzn-ami-hvm-x86_64-gp2:C96584B6-F00A-464E-AD19-53AFF4B05118","path":"batch-stack/SsmParameterValue:--aws--service--ami-amazon-linux-latest--amzn-ami-hvm-x86_64-gp2:C96584B6-F00A-464E-AD19-53AFF4B05118","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"placementGroup":{"id":"placementGroup","path":"batch-stack/placementGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.PlacementGroup","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"batch-stack/placementGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.CfnPlacementGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::EC2::PlacementGroup","aws:cdk:cloudformation:props":{}}}}},"launchTemplate":{"id":"launchTemplate","path":"batch-stack/launchTemplate","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.LaunchTemplate","version":"0.0.0","metadata":["*"]},"children":{"Resource":{"id":"Resource","path":"batch-stack/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":{"tagSpecifications":[{"resourceType":"instance","tags":[{"key":"Name","value":"batch-stack/launchTemplate"}]},{"resourceType":"volume","tags":[{"key":"Name","value":"batch-stack/launchTemplate"}]}]},"tagSpecifications":[{"resourceType":"launch-template","tags":[{"key":"Name","value":"batch-stack/launchTemplate"}]}]}}}}},"LaunchTemplate":{"id":"LaunchTemplate","path":"batch-stack/LaunchTemplate","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.ManagedEc2EcsComputeEnvironment","version":"0.0.0","metadata":[{"vpc":"*","images":[{"image":"*"}],"allocationStrategy":"BEST_FIT","minvCpus":"*","maxvCpus":"*","replaceComputeEnvironment":true,"terminateOnUpdate":false,"placementGroup":"*","updateTimeout":"*","launchTemplate":"*"}]},"children":{"SecurityGroup":{"id":"SecurityGroup","path":"batch-stack/LaunchTemplate/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*"}]},"children":{"Resource":{"id":"Resource","path":"batch-stack/LaunchTemplate/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":"batch-stack/LaunchTemplate/SecurityGroup","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"vpcA2121C38"}}}}}},"InstanceProfileRole":{"id":"InstanceProfileRole","path":"batch-stack/LaunchTemplate/InstanceProfileRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[]},"children":{"ImportInstanceProfileRole":{"id":"ImportInstanceProfileRole","path":"batch-stack/LaunchTemplate/InstanceProfileRole/ImportInstanceProfileRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"batch-stack/LaunchTemplate/InstanceProfileRole/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/service-role/AmazonEC2ContainerServiceforEC2Role"]]}]}}}}},"InstanceProfile":{"id":"InstanceProfile","path":"batch-stack/LaunchTemplate/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":"LaunchTemplateInstanceProfileRole037F2415"}]}}},"Resource":{"id":"Resource","path":"batch-stack/LaunchTemplate/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.CfnComputeEnvironment","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Batch::ComputeEnvironment","aws:cdk:cloudformation:props":{"computeResources":{"maxvCpus":512,"type":"EC2","securityGroupIds":[{"Fn::GetAtt":["LaunchTemplateSecurityGroup02438453","GroupId"]}],"subnets":[{"Ref":"vpcPrivateSubnet1Subnet934893E8"},{"Ref":"vpcPrivateSubnet2Subnet7031C2BA"}],"minvCpus":256,"instanceRole":{"Fn::GetAtt":["LaunchTemplateInstanceProfile81A7EF12","Arn"]},"instanceTypes":["optimal"],"allocationStrategy":"BEST_FIT","launchTemplate":{"launchTemplateId":{"Ref":"launchTemplateDEE5742D"}},"ec2Configuration":[{"imageIdOverride":{"Ref":"SsmParameterValueawsserviceamiamazonlinuxlatestamznamihvmx8664gp2C96584B6F00A464EAD1953AFF4B05118Parameter"},"imageType":"ECS_AL2"}],"placementGroup":{"Fn::GetAtt":["placementGroupD973C950","GroupName"]}},"replaceComputeEnvironment":true,"state":"ENABLED","type":"managed","updatePolicy":{"terminateJobsOnUpdate":false,"jobExecutionTimeoutMinutes":60}}}}}},"SpotEc2":{"id":"SpotEc2","path":"batch-stack/SpotEc2","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.ManagedEc2EcsComputeEnvironment","version":"0.0.0","metadata":[{"vpc":"*","images":[{"image":"*"}],"spot":true,"spotBidPercentage":"*","spotFleetRole":"*"}]},"children":{"SecurityGroup":{"id":"SecurityGroup","path":"batch-stack/SpotEc2/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*"}]},"children":{"Resource":{"id":"Resource","path":"batch-stack/SpotEc2/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":"batch-stack/SpotEc2/SecurityGroup","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"vpcA2121C38"}}}}}},"InstanceProfileRole":{"id":"InstanceProfileRole","path":"batch-stack/SpotEc2/InstanceProfileRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[]},"children":{"ImportInstanceProfileRole":{"id":"ImportInstanceProfileRole","path":"batch-stack/SpotEc2/InstanceProfileRole/ImportInstanceProfileRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"batch-stack/SpotEc2/InstanceProfileRole/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/service-role/AmazonEC2ContainerServiceforEC2Role"]]}]}}}}},"InstanceProfile":{"id":"InstanceProfile","path":"batch-stack/SpotEc2/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":"SpotEc2InstanceProfileRoleBA254130"}]}}},"Resource":{"id":"Resource","path":"batch-stack/SpotEc2/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.CfnComputeEnvironment","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Batch::ComputeEnvironment","aws:cdk:cloudformation:props":{"computeResources":{"maxvCpus":256,"type":"SPOT","securityGroupIds":[{"Fn::GetAtt":["SpotEc2SecurityGroup1225E163","GroupId"]}],"subnets":[{"Ref":"vpcPrivateSubnet1Subnet934893E8"},{"Ref":"vpcPrivateSubnet2Subnet7031C2BA"}],"minvCpus":0,"instanceRole":{"Fn::GetAtt":["SpotEc2InstanceProfileD921ABA1","Arn"]},"instanceTypes":["optimal"],"spotIamFleetRole":{"Fn::GetAtt":["SpotFleetRole6D4F7558","Arn"]},"allocationStrategy":"SPOT_PRICE_CAPACITY_OPTIMIZED","bidPercentage":95,"ec2Configuration":[{"imageIdOverride":{"Ref":"SsmParameterValueawsserviceamiamazonlinuxlatestamznamihvmx8664gp2C96584B6F00A464EAD1953AFF4B05118Parameter"},"imageType":"ECS_AL2"}]},"replaceComputeEnvironment":false,"state":"ENABLED","type":"managed","updatePolicy":{}}}}}},"AllocationStrategySPOT_CAPACITY":{"id":"AllocationStrategySPOT_CAPACITY","path":"batch-stack/AllocationStrategySPOT_CAPACITY","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.ManagedEc2EcsComputeEnvironment","version":"0.0.0","metadata":[{"vpc":"*","images":[{"image":"*"}],"spot":true,"spotBidPercentage":"*","allocationStrategy":"SPOT_CAPACITY_OPTIMIZED"}]},"children":{"SecurityGroup":{"id":"SecurityGroup","path":"batch-stack/AllocationStrategySPOT_CAPACITY/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*"}]},"children":{"Resource":{"id":"Resource","path":"batch-stack/AllocationStrategySPOT_CAPACITY/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":"batch-stack/AllocationStrategySPOT_CAPACITY/SecurityGroup","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"vpcA2121C38"}}}}}},"InstanceProfileRole":{"id":"InstanceProfileRole","path":"batch-stack/AllocationStrategySPOT_CAPACITY/InstanceProfileRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[]},"children":{"ImportInstanceProfileRole":{"id":"ImportInstanceProfileRole","path":"batch-stack/AllocationStrategySPOT_CAPACITY/InstanceProfileRole/ImportInstanceProfileRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"batch-stack/AllocationStrategySPOT_CAPACITY/InstanceProfileRole/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/service-role/AmazonEC2ContainerServiceforEC2Role"]]}]}}}}},"InstanceProfile":{"id":"InstanceProfile","path":"batch-stack/AllocationStrategySPOT_CAPACITY/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":"AllocationStrategySPOTCAPACITYInstanceProfileRoleA6211395"}]}}},"Resource":{"id":"Resource","path":"batch-stack/AllocationStrategySPOT_CAPACITY/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.CfnComputeEnvironment","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Batch::ComputeEnvironment","aws:cdk:cloudformation:props":{"computeResources":{"maxvCpus":256,"type":"SPOT","securityGroupIds":[{"Fn::GetAtt":["AllocationStrategySPOTCAPACITYSecurityGroupA581EB8C","GroupId"]}],"subnets":[{"Ref":"vpcPrivateSubnet1Subnet934893E8"},{"Ref":"vpcPrivateSubnet2Subnet7031C2BA"}],"minvCpus":0,"instanceRole":{"Fn::GetAtt":["AllocationStrategySPOTCAPACITYInstanceProfile0B71F375","Arn"]},"instanceTypes":["optimal"],"allocationStrategy":"SPOT_CAPACITY_OPTIMIZED","bidPercentage":95,"ec2Configuration":[{"imageIdOverride":{"Ref":"SsmParameterValueawsserviceamiamazonlinuxlatestamznamihvmx8664gp2C96584B6F00A464EAD1953AFF4B05118Parameter"},"imageType":"ECS_AL2"}]},"replaceComputeEnvironment":false,"state":"ENABLED","type":"managed","updatePolicy":{}}}}}},"taggedCE":{"id":"taggedCE","path":"batch-stack/taggedCE","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.ManagedEc2EcsComputeEnvironment","version":"0.0.0","metadata":[{"vpc":"*","images":[{"image":"*"}]}]},"children":{"SecurityGroup":{"id":"SecurityGroup","path":"batch-stack/taggedCE/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*"}]},"children":{"Resource":{"id":"Resource","path":"batch-stack/taggedCE/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":"batch-stack/taggedCE/SecurityGroup","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"tags":[{"key":"foo","value":"bar"},{"key":"super","value":"salamander"}],"vpcId":{"Ref":"vpcA2121C38"}}}}}},"InstanceProfileRole":{"id":"InstanceProfileRole","path":"batch-stack/taggedCE/InstanceProfileRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[]},"children":{"ImportInstanceProfileRole":{"id":"ImportInstanceProfileRole","path":"batch-stack/taggedCE/InstanceProfileRole/ImportInstanceProfileRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"batch-stack/taggedCE/InstanceProfileRole/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/service-role/AmazonEC2ContainerServiceforEC2Role"]]}],"tags":[{"key":"foo","value":"bar"},{"key":"super","value":"salamander"}]}}}}},"InstanceProfile":{"id":"InstanceProfile","path":"batch-stack/taggedCE/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":"taggedCEInstanceProfileRoleC239DAF9"}]}}},"Resource":{"id":"Resource","path":"batch-stack/taggedCE/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.CfnComputeEnvironment","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Batch::ComputeEnvironment","aws:cdk:cloudformation:props":{"computeResources":{"maxvCpus":256,"type":"EC2","securityGroupIds":[{"Fn::GetAtt":["taggedCESecurityGroup82CCF59F","GroupId"]}],"subnets":[{"Ref":"vpcPrivateSubnet1Subnet934893E8"},{"Ref":"vpcPrivateSubnet2Subnet7031C2BA"}],"minvCpus":0,"instanceRole":{"Fn::GetAtt":["taggedCEInstanceProfileB29F2197","Arn"]},"instanceTypes":["optimal"],"allocationStrategy":"BEST_FIT_PROGRESSIVE","ec2Configuration":[{"imageIdOverride":{"Ref":"SsmParameterValueawsserviceamiamazonlinuxlatestamznamihvmx8664gp2C96584B6F00A464EAD1953AFF4B05118Parameter"},"imageType":"ECS_AL2"}],"tags":{"foo":"bar","super":"salamander"}},"replaceComputeEnvironment":false,"state":"ENABLED","tags":{"foo":"bar","super":"salamander"},"type":"managed","updatePolicy":{}}}}}},"ECS_AL2023":{"id":"ECS_AL2023","path":"batch-stack/ECS_AL2023","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.ManagedEc2EcsComputeEnvironment","version":"0.0.0","metadata":[{"vpc":"*","images":[{"imageType":"ECS_AL2023"}]}]},"children":{"SecurityGroup":{"id":"SecurityGroup","path":"batch-stack/ECS_AL2023/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*"}]},"children":{"Resource":{"id":"Resource","path":"batch-stack/ECS_AL2023/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":"batch-stack/ECS_AL2023/SecurityGroup","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"vpcA2121C38"}}}}}},"InstanceProfileRole":{"id":"InstanceProfileRole","path":"batch-stack/ECS_AL2023/InstanceProfileRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[]},"children":{"ImportInstanceProfileRole":{"id":"ImportInstanceProfileRole","path":"batch-stack/ECS_AL2023/InstanceProfileRole/ImportInstanceProfileRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"batch-stack/ECS_AL2023/InstanceProfileRole/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/service-role/AmazonEC2ContainerServiceforEC2Role"]]}]}}}}},"InstanceProfile":{"id":"InstanceProfile","path":"batch-stack/ECS_AL2023/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":"ECSAL2023InstanceProfileRoleEBA7FF23"}]}}},"Resource":{"id":"Resource","path":"batch-stack/ECS_AL2023/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.CfnComputeEnvironment","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Batch::ComputeEnvironment","aws:cdk:cloudformation:props":{"computeResources":{"maxvCpus":256,"type":"EC2","securityGroupIds":[{"Fn::GetAtt":["ECSAL2023SecurityGroup7AE4A1D4","GroupId"]}],"subnets":[{"Ref":"vpcPrivateSubnet1Subnet934893E8"},{"Ref":"vpcPrivateSubnet2Subnet7031C2BA"}],"minvCpus":0,"instanceRole":{"Fn::GetAtt":["ECSAL2023InstanceProfile14B35A51","Arn"]},"instanceTypes":["optimal"],"allocationStrategy":"BEST_FIT_PROGRESSIVE","ec2Configuration":[{"imageType":"ECS_AL2023"}]},"replaceComputeEnvironment":false,"state":"ENABLED","type":"managed","updatePolicy":{}}}}}},"ECS_AL2023_NVIDIA":{"id":"ECS_AL2023_NVIDIA","path":"batch-stack/ECS_AL2023_NVIDIA","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.ManagedEc2EcsComputeEnvironment","version":"0.0.0","metadata":[{"vpc":"*","images":[{"imageType":"*"}]}]},"children":{"SecurityGroup":{"id":"SecurityGroup","path":"batch-stack/ECS_AL2023_NVIDIA/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*"}]},"children":{"Resource":{"id":"Resource","path":"batch-stack/ECS_AL2023_NVIDIA/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":"batch-stack/ECS_AL2023_NVIDIA/SecurityGroup","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"vpcA2121C38"}}}}}},"InstanceProfileRole":{"id":"InstanceProfileRole","path":"batch-stack/ECS_AL2023_NVIDIA/InstanceProfileRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[]},"children":{"ImportInstanceProfileRole":{"id":"ImportInstanceProfileRole","path":"batch-stack/ECS_AL2023_NVIDIA/InstanceProfileRole/ImportInstanceProfileRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"batch-stack/ECS_AL2023_NVIDIA/InstanceProfileRole/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/service-role/AmazonEC2ContainerServiceforEC2Role"]]}]}}}}},"InstanceProfile":{"id":"InstanceProfile","path":"batch-stack/ECS_AL2023_NVIDIA/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":"ECSAL2023NVIDIAInstanceProfileRole5D4EC64F"}]}}},"Resource":{"id":"Resource","path":"batch-stack/ECS_AL2023_NVIDIA/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.CfnComputeEnvironment","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Batch::ComputeEnvironment","aws:cdk:cloudformation:props":{"computeResources":{"maxvCpus":256,"type":"EC2","securityGroupIds":[{"Fn::GetAtt":["ECSAL2023NVIDIASecurityGroup54E4FC0F","GroupId"]}],"subnets":[{"Ref":"vpcPrivateSubnet1Subnet934893E8"},{"Ref":"vpcPrivateSubnet2Subnet7031C2BA"}],"minvCpus":0,"instanceRole":{"Fn::GetAtt":["ECSAL2023NVIDIAInstanceProfileF9315BDB","Arn"]},"instanceTypes":["optimal"],"allocationStrategy":"BEST_FIT_PROGRESSIVE","ec2Configuration":[{"imageType":"ECS_AL2023_NVIDIA"}]},"replaceComputeEnvironment":false,"state":"ENABLED","type":"managed","updatePolicy":{}}}}}},"MinVCpuParameter":{"id":"MinVCpuParameter","path":"batch-stack/MinVCpuParameter","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"MaxVCpuParameter":{"id":"MaxVCpuParameter","path":"batch-stack/MaxVCpuParameter","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"SpotBidPercentageParameter":{"id":"SpotBidPercentageParameter","path":"batch-stack/SpotBidPercentageParameter","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"ParamertizedManagedCE":{"id":"ParamertizedManagedCE","path":"batch-stack/ParamertizedManagedCE","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.ManagedEc2EcsComputeEnvironment","version":"0.0.0","metadata":[{"vpc":"*","images":[{"image":"*"}],"minvCpus":"*","maxvCpus":"*","spot":true,"spotBidPercentage":"*","spotFleetRole":"*"}]},"children":{"SecurityGroup":{"id":"SecurityGroup","path":"batch-stack/ParamertizedManagedCE/SecurityGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_ec2.SecurityGroup","version":"0.0.0","metadata":[{"vpc":"*"}]},"children":{"Resource":{"id":"Resource","path":"batch-stack/ParamertizedManagedCE/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":"batch-stack/ParamertizedManagedCE/SecurityGroup","securityGroupEgress":[{"cidrIp":"0.0.0.0/0","description":"Allow all outbound traffic by default","ipProtocol":"-1"}],"vpcId":{"Ref":"vpcA2121C38"}}}}}},"InstanceProfileRole":{"id":"InstanceProfileRole","path":"batch-stack/ParamertizedManagedCE/InstanceProfileRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[]},"children":{"ImportInstanceProfileRole":{"id":"ImportInstanceProfileRole","path":"batch-stack/ParamertizedManagedCE/InstanceProfileRole/ImportInstanceProfileRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"batch-stack/ParamertizedManagedCE/InstanceProfileRole/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/service-role/AmazonEC2ContainerServiceforEC2Role"]]}]}}}}},"InstanceProfile":{"id":"InstanceProfile","path":"batch-stack/ParamertizedManagedCE/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":"ParamertizedManagedCEInstanceProfileRoleB54B7F8B"}]}}},"Resource":{"id":"Resource","path":"batch-stack/ParamertizedManagedCE/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_batch.CfnComputeEnvironment","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Batch::ComputeEnvironment","aws:cdk:cloudformation:props":{"computeResources":{"maxvCpus":{"Ref":"MaxVCpuParameter"},"type":"SPOT","securityGroupIds":[{"Fn::GetAtt":["ParamertizedManagedCESecurityGroup772BD71B","GroupId"]}],"subnets":[{"Ref":"vpcPrivateSubnet1Subnet934893E8"},{"Ref":"vpcPrivateSubnet2Subnet7031C2BA"}],"minvCpus":{"Ref":"MinVCpuParameter"},"instanceRole":{"Fn::GetAtt":["ParamertizedManagedCEInstanceProfileDF9CB175","Arn"]},"instanceTypes":["optimal"],"spotIamFleetRole":{"Fn::GetAtt":["SpotFleetRole6D4F7558","Arn"]},"allocationStrategy":"SPOT_PRICE_CAPACITY_OPTIMIZED","bidPercentage":{"Ref":"SpotBidPercentageParameter"},"ec2Configuration":[{"imageIdOverride":{"Ref":"SsmParameterValueawsserviceamiamazonlinuxlatestamznamihvmx8664gp2C96584B6F00A464EAD1953AFF4B05118Parameter"},"imageType":"ECS_AL2"}]},"replaceComputeEnvironment":false,"state":"ENABLED","type":"managed","updatePolicy":{}}}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"batch-stack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"batch-stack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"BatchManagedComputeEnvironmentTest":{"id":"BatchManagedComputeEnvironmentTest","path":"BatchManagedComputeEnvironmentTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"BatchManagedComputeEnvironmentTest/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"BatchManagedComputeEnvironmentTest/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BatchManagedComputeEnvironmentTest/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BatchManagedComputeEnvironmentTest/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BatchManagedComputeEnvironmentTest/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.ts b/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.ts index 546dc3fbbb613..a3e918897728c 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.ts +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-batch/test/integ.managed-compute-environment.ts @@ -88,6 +88,13 @@ new ManagedEc2EcsComputeEnvironment(stack, 'ECS_AL2023', { }], }); +new ManagedEc2EcsComputeEnvironment(stack, 'ECS_AL2023_NVIDIA', { + vpc, + images: [{ + imageType: EcsMachineImageType.ECS_AL2023_NVIDIA, + }], +}); + new ManagedEc2EcsComputeEnvironment(stack, 'ParamertizedManagedCE', { vpc, images: [{ diff --git a/packages/aws-cdk-lib/aws-batch/README.md b/packages/aws-cdk-lib/aws-batch/README.md index 61a4e2c50540c..b9895cec7f467 100644 --- a/packages/aws-cdk-lib/aws-batch/README.md +++ b/packages/aws-cdk-lib/aws-batch/README.md @@ -144,6 +144,23 @@ new batch.ManagedEc2EcsComputeEnvironment(this, 'myEc2ComputeEnv', { }); ``` +For GPU workloads, you can use `ECS_AL2023_NVIDIA` to run workloads on Amazon Linux 2023 with NVIDIA GPU support: + +```ts +declare const vpc: ec2.IVpc; + +new batch.ManagedEc2EcsComputeEnvironment(this, 'myGpuComputeEnv', { + vpc, + images: [ + { + imageType: batch.EcsMachineImageType.ECS_AL2023_NVIDIA, + }, + ], +}); +``` + +*Note*: `ECS_AL2023` and `ECS_AL2023_NVIDIA` do not support A1 instances (Graviton 1), as Amazon Linux 2023 requires Graviton 2 or later. + #### Allocation Strategies | Allocation Strategy | Optimized for | Downsides | diff --git a/packages/aws-cdk-lib/aws-batch/lib/managed-compute-environment.ts b/packages/aws-cdk-lib/aws-batch/lib/managed-compute-environment.ts index de0e17446fdea..b37afe011968d 100644 --- a/packages/aws-cdk-lib/aws-batch/lib/managed-compute-environment.ts +++ b/packages/aws-cdk-lib/aws-batch/lib/managed-compute-environment.ts @@ -388,7 +388,7 @@ export interface EcsMachineImage extends MachineImage { /** * A Batch MachineImage that is compatible with EKS */ -export interface EksMachineImage extends MachineImage{ +export interface EksMachineImage extends MachineImage { /** * Tells Batch which instance type to launch this image on * @@ -413,9 +413,14 @@ export enum EcsMachineImageType { ECS_AL2023 = 'ECS_AL2023', /** - * Tells Batch that this machine image runs on GPU instances + * Tells Batch that this machine image runs on GPU AL2 instances */ ECS_AL2_NVIDIA = 'ECS_AL2_NVIDIA', + + /** + * Tells Batch that this machine image runs on GPU AL2023 instances + */ + ECS_AL2023_NVIDIA = 'ECS_AL2023_NVIDIA', } /** @@ -652,7 +657,7 @@ export class ManagedEc2EcsComputeEnvironment extends ManagedComputeEnvironmentBa public readonly instanceClasses = []; public readonly instanceTypes = []; public readonly maxvCpus = 1; - public readonly connections = { } as any; + public readonly connections = {} as any; public readonly securityGroups = []; public readonly tags: TagManager = new TagManager(TagType.MAP, 'AWS::Batch::ComputeEnvironment'); @@ -703,9 +708,10 @@ export class ManagedEc2EcsComputeEnvironment extends ManagedComputeEnvironmentBa this.instanceTypes = props.instanceTypes ?? []; this.instanceClasses = props.instanceClasses ?? []; - if (this.images?.find(image => image.imageType === EcsMachineImageType.ECS_AL2023) && + if (this.images?.find(image => image.imageType !== undefined && + [EcsMachineImageType.ECS_AL2023, EcsMachineImageType.ECS_AL2023_NVIDIA].includes(image.imageType)) && (this.instanceClasses.includes(ec2.InstanceClass.A1) || - this.instanceTypes.find(instanceType => instanceType.sameInstanceClassAs(ec2.InstanceType.of(ec2.InstanceClass.A1, ec2.InstanceSize.LARGE)))) + this.instanceTypes.find(instanceType => instanceType.sameInstanceClassAs(ec2.InstanceType.of(ec2.InstanceClass.A1, ec2.InstanceSize.LARGE)))) ) { throw new ValidationError('Amazon Linux 2023 does not support A1 instances.', this); } @@ -1182,7 +1188,7 @@ export class FargateComputeEnvironment extends ManagedComputeEnvironmentBase imp public readonly computeEnvironmentName = computeEnvironmentName; public readonly enabled = true; public readonly maxvCpus = 1; - public readonly connections = { } as any; + public readonly connections = {} as any; public readonly securityGroups = []; public readonly tags: TagManager = new TagManager(TagType.MAP, 'AWS::Batch::ComputeEnvironment'); } diff --git a/packages/aws-cdk-lib/aws-batch/test/managed-compute-environment.test.ts b/packages/aws-cdk-lib/aws-batch/test/managed-compute-environment.test.ts index cb667b23ad6bb..f5931e393930a 100644 --- a/packages/aws-cdk-lib/aws-batch/test/managed-compute-environment.test.ts +++ b/packages/aws-cdk-lib/aws-batch/test/managed-compute-environment.test.ts @@ -924,6 +924,32 @@ describe('ManagedEc2EcsComputeEnvironment', () => { }); }); + test('image types are correctly rendered as EC2ConfigurationObjects for AL2023_NVIDIA', () => { + // WHEN + new ManagedEc2EcsComputeEnvironment(stack, 'MyCE', { + ...defaultEcsProps, + vpc, + images: [ + { + imageType: EcsMachineImageType.ECS_AL2023_NVIDIA, + }, + ], + }); + + // THEN + Template.fromStack(stack).hasResourceProperties('AWS::Batch::ComputeEnvironment', { + ...pascalCaseExpectedEcsProps, + ComputeResources: { + ...defaultComputeResources, + Ec2Configuration: [ + { + ImageType: 'ECS_AL2023_NVIDIA', + }, + ], + }, + }); + }); + test('Amazon Linux 2023 does not support A1 instances.', () => { expect(() => new ManagedEc2EcsComputeEnvironment(stack, 'Al2023A1InstanceClass', { ...defaultEcsProps, @@ -947,6 +973,28 @@ describe('ManagedEc2EcsComputeEnvironment', () => { ], })).toThrow('Amazon Linux 2023 does not support A1 instances.'); + expect(() => new ManagedEc2EcsComputeEnvironment(stack, 'Al2023NvidiaA1InstanceClass', { + ...defaultEcsProps, + instanceClasses: [ec2.InstanceClass.A1], + vpc, + images: [ + { + imageType: EcsMachineImageType.ECS_AL2023_NVIDIA, + }, + ], + })).toThrow('Amazon Linux 2023 does not support A1 instances.'); + + expect(() => new ManagedEc2EcsComputeEnvironment(stack, 'Al2023NvidiaA1XlargeInstance', { + ...defaultEcsProps, + instanceTypes: [ec2.InstanceType.of(ec2.InstanceClass.A1, ec2.InstanceSize.XLARGE2)], + vpc, + images: [ + { + imageType: EcsMachineImageType.ECS_AL2023_NVIDIA, + }, + ], + })).toThrow('Amazon Linux 2023 does not support A1 instances.'); + new ManagedEc2EcsComputeEnvironment(stack, 'Al2A1InstanceClass', { ...defaultEcsProps, instanceClasses: [ec2.InstanceClass.A1],