diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions-tasks/test/ecs/integ.ec2-run-task.js.snapshot/aws-sfn-tasks-ecs-run-task.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions-tasks/test/ecs/integ.ec2-run-task.js.snapshot/aws-sfn-tasks-ecs-run-task.assets.json index 9e4c6412a37b2..e4a7c7b822ca8 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions-tasks/test/ecs/integ.ec2-run-task.js.snapshot/aws-sfn-tasks-ecs-run-task.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions-tasks/test/ecs/integ.ec2-run-task.js.snapshot/aws-sfn-tasks-ecs-run-task.assets.json @@ -1,7 +1,7 @@ { "version": "36.0.0", "files": { - "95e3c66ed03d4b413dbfdca27bdc41c19f0035e7aab4e92a1fa335f02cd8b768": { + "a2ab39fe0d946767a488ce04eb51fffb041276b29879387f4fe7dcad7f577c37": { "source": { "path": "aws-sfn-tasks-ecs-run-task.template.json", "packaging": "file" @@ -9,7 +9,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "95e3c66ed03d4b413dbfdca27bdc41c19f0035e7aab4e92a1fa335f02cd8b768.json", + "objectKey": "a2ab39fe0d946767a488ce04eb51fffb041276b29879387f4fe7dcad7f577c37.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-stepfunctions-tasks/test/ecs/integ.ec2-run-task.js.snapshot/aws-sfn-tasks-ecs-run-task.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions-tasks/test/ecs/integ.ec2-run-task.js.snapshot/aws-sfn-tasks-ecs-run-task.template.json index 69fd4e4190aeb..b805e97be7941 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions-tasks/test/ecs/integ.ec2-run-task.js.snapshot/aws-sfn-tasks-ecs-run-task.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions-tasks/test/ecs/integ.ec2-run-task.js.snapshot/aws-sfn-tasks-ecs-run-task.template.json @@ -1379,7 +1379,7 @@ "Arn" ] }, - "\",\"TaskDefinition\":\"awssfntasksecsruntaskTaskDef75140181\",\"Overrides\":{\"ContainerOverrides\":[{\"Name\":\"Container\",\"Environment\":[{\"Name\":\"SOME_KEY\",\"Value.$\":\"$.SomeKey\"}]}]},\"LaunchType\":\"EC2\"}}}}" + "\",\"TaskDefinition\":\"awssfntasksecsruntaskTaskDef75140181\",\"Overrides\":{\"ContainerOverrides\":[{\"Name\":\"Container\",\"Environment\":[{\"Name\":\"SOME_KEY\",\"Value.$\":\"$.SomeKey\"}]}]},\"LaunchType\":\"EC2\",\"EnableExecuteCommand\":true}}}}" ] ] }, diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions-tasks/test/ecs/integ.ec2-run-task.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions-tasks/test/ecs/integ.ec2-run-task.js.snapshot/manifest.json index 380a0942b6701..2106df50715cf 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions-tasks/test/ecs/integ.ec2-run-task.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions-tasks/test/ecs/integ.ec2-run-task.js.snapshot/manifest.json @@ -18,7 +18,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/95e3c66ed03d4b413dbfdca27bdc41c19f0035e7aab4e92a1fa335f02cd8b768.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/a2ab39fe0d946767a488ce04eb51fffb041276b29879387f4fe7dcad7f577c37.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions-tasks/test/ecs/integ.ec2-run-task.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions-tasks/test/ecs/integ.ec2-run-task.js.snapshot/tree.json index 9ecf86d3d0921..35d22c14f4287 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions-tasks/test/ecs/integ.ec2-run-task.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions-tasks/test/ecs/integ.ec2-run-task.js.snapshot/tree.json @@ -20,8 +20,8 @@ "aws:cdk:cloudformation:props": {} }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ecs.CfnCluster", + "version": "0.0.0" } }, "Vpc": { @@ -47,8 +47,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnVPC", + "version": "0.0.0" } }, "PublicSubnet1": { @@ -91,16 +91,16 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnet", + "version": "0.0.0" } }, "Acl": { "id": "Acl", "path": "aws-sfn-tasks-ecs-run-task/Ec2Cluster/Vpc/PublicSubnet1/Acl", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" } }, "RouteTable": { @@ -121,8 +121,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnRouteTable", + "version": "0.0.0" } }, "RouteTableAssociation": { @@ -140,8 +140,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation", + "version": "0.0.0" } }, "DefaultRoute": { @@ -160,8 +160,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnRoute", + "version": "0.0.0" } }, "EIP": { @@ -180,8 +180,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnEIP", + "version": "0.0.0" } }, "NATGateway": { @@ -208,14 +208,14 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnNatGateway", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.PublicSubnet", + "version": "0.0.0" } }, "PublicSubnet2": { @@ -258,16 +258,16 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnet", + "version": "0.0.0" } }, "Acl": { "id": "Acl", "path": "aws-sfn-tasks-ecs-run-task/Ec2Cluster/Vpc/PublicSubnet2/Acl", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" } }, "RouteTable": { @@ -288,8 +288,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnRouteTable", + "version": "0.0.0" } }, "RouteTableAssociation": { @@ -307,8 +307,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation", + "version": "0.0.0" } }, "DefaultRoute": { @@ -327,8 +327,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnRoute", + "version": "0.0.0" } }, "EIP": { @@ -347,8 +347,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnEIP", + "version": "0.0.0" } }, "NATGateway": { @@ -375,14 +375,14 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnNatGateway", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.PublicSubnet", + "version": "0.0.0" } }, "PrivateSubnet1": { @@ -425,16 +425,16 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnet", + "version": "0.0.0" } }, "Acl": { "id": "Acl", "path": "aws-sfn-tasks-ecs-run-task/Ec2Cluster/Vpc/PrivateSubnet1/Acl", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" } }, "RouteTable": { @@ -455,8 +455,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnRouteTable", + "version": "0.0.0" } }, "RouteTableAssociation": { @@ -474,8 +474,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation", + "version": "0.0.0" } }, "DefaultRoute": { @@ -494,14 +494,14 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnRoute", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.PrivateSubnet", + "version": "0.0.0" } }, "PrivateSubnet2": { @@ -544,16 +544,16 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnet", + "version": "0.0.0" } }, "Acl": { "id": "Acl", "path": "aws-sfn-tasks-ecs-run-task/Ec2Cluster/Vpc/PrivateSubnet2/Acl", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" } }, "RouteTable": { @@ -574,8 +574,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnRouteTable", + "version": "0.0.0" } }, "RouteTableAssociation": { @@ -593,8 +593,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation", + "version": "0.0.0" } }, "DefaultRoute": { @@ -613,14 +613,14 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnRoute", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.PrivateSubnet", + "version": "0.0.0" } }, "IGW": { @@ -638,8 +638,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnInternetGateway", + "version": "0.0.0" } }, "VPCGW": { @@ -657,14 +657,14 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnVPCGatewayAttachment", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.Vpc", + "version": "0.0.0" } }, "DefaultAutoScalingGroup": { @@ -701,14 +701,14 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnSecurityGroup", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.SecurityGroup", + "version": "0.0.0" } }, "InstanceRole": { @@ -719,8 +719,8 @@ "id": "ImportInstanceRole", "path": "aws-sfn-tasks-ecs-run-task/Ec2Cluster/DefaultAutoScalingGroup/InstanceRole/ImportInstanceRole", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" } }, "Resource": { @@ -750,8 +750,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" } }, "DefaultPolicy": { @@ -820,20 +820,20 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.CfnPolicy", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.Policy", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" } }, "InstanceProfile": { @@ -850,16 +850,16 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.CfnInstanceProfile", + "version": "0.0.0" } }, "ImportedInstanceProfile": { "id": "ImportedInstanceProfile", "path": "aws-sfn-tasks-ecs-run-task/Ec2Cluster/DefaultAutoScalingGroup/ImportedInstanceProfile", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" } }, "LaunchTemplate": { @@ -945,14 +945,14 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.CfnLaunchTemplate", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ec2.LaunchTemplate", + "version": "0.0.0" } }, "ASG": { @@ -992,8 +992,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_autoscaling.CfnAutoScalingGroup", + "version": "0.0.0" } }, "DrainECSHook": { @@ -1012,8 +1012,8 @@ "id": "ImportServiceRole", "path": "aws-sfn-tasks-ecs-run-task/Ec2Cluster/DefaultAutoScalingGroup/DrainECSHook/Function/ServiceRole/ImportServiceRole", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" } }, "Resource": { @@ -1057,8 +1057,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" } }, "DefaultPolicy": { @@ -1156,20 +1156,20 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.CfnPolicy", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.Policy", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" } }, "Resource": { @@ -1206,8 +1206,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_lambda.CfnFunction", + "version": "0.0.0" } }, "AllowInvoke:awssfntasksecsruntaskEc2ClusterDefaultAutoScalingGroupLifecycleHookDrainHookTopicF7B5DFDE": { @@ -1230,8 +1230,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_lambda.CfnPermission", + "version": "0.0.0" } }, "Topic": { @@ -1257,20 +1257,20 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_sns.CfnSubscription", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_sns.Subscription", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_lambda.Function", + "version": "0.0.0" } } }, @@ -1302,14 +1302,14 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_sns.CfnTopic", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_sns.Topic", + "version": "0.0.0" } }, "Role": { @@ -1320,8 +1320,8 @@ "id": "ImportRole", "path": "aws-sfn-tasks-ecs-run-task/Ec2Cluster/DefaultAutoScalingGroup/LifecycleHookDrainHook/Role/ImportRole", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" } }, "Resource": { @@ -1351,8 +1351,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" } }, "DefaultPolicy": { @@ -1386,20 +1386,20 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.CfnPolicy", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.Policy", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" } }, "Resource": { @@ -1426,42 +1426,42 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_autoscaling.CfnLifecycleHook", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_autoscaling.LifecycleHook", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_autoscaling.AutoScalingGroup", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ecs.Cluster", + "version": "0.0.0" } }, "SsmParameterValue:--aws--service--ecs--optimized-ami--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter": { "id": "SsmParameterValue:--aws--service--ecs--optimized-ami--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter", "path": "aws-sfn-tasks-ecs-run-task/SsmParameterValue:--aws--service--ecs--optimized-ami--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.CfnParameter", + "version": "0.0.0" } }, "SsmParameterValue:--aws--service--ecs--optimized-ami--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118": { "id": "SsmParameterValue:--aws--service--ecs--optimized-ami--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118", "path": "aws-sfn-tasks-ecs-run-task/SsmParameterValue:--aws--service--ecs--optimized-ami--amazon-linux-2--recommended--image_id:C96584B6-F00A-464E-AD19-53AFF4B05118", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" } }, "TaskDef": { @@ -1476,8 +1476,8 @@ "id": "ImportTaskRole", "path": "aws-sfn-tasks-ecs-run-task/TaskDef/TaskRole/ImportTaskRole", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" } }, "Resource": { @@ -1501,14 +1501,14 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" } }, "Resource": { @@ -1559,8 +1559,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ecs.CfnTaskDefinition", + "version": "0.0.0" } }, "Container": { @@ -1575,22 +1575,22 @@ "id": "Staging", "path": "aws-sfn-tasks-ecs-run-task/TaskDef/Container/AssetImage/Staging", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.AssetStaging", + "version": "0.0.0" } }, "Repository": { "id": "Repository", "path": "aws-sfn-tasks-ecs-run-task/TaskDef/Container/AssetImage/Repository", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ecr.RepositoryBase", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ecr_assets.DockerImageAsset", + "version": "0.0.0" } }, "LogGroup": { @@ -1605,20 +1605,20 @@ "aws:cdk:cloudformation:props": {} }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_logs.CfnLogGroup", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_logs.LogGroup", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ecs.ContainerDefinition", + "version": "0.0.0" } }, "ExecutionRole": { @@ -1629,8 +1629,8 @@ "id": "ImportExecutionRole", "path": "aws-sfn-tasks-ecs-run-task/TaskDef/ExecutionRole/ImportExecutionRole", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" } }, "Resource": { @@ -1654,8 +1654,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" } }, "DefaultPolicy": { @@ -1731,42 +1731,42 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.CfnPolicy", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.Policy", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_ecs.Ec2TaskDefinition", + "version": "0.0.0" } }, "Start": { "id": "Start", "path": "aws-sfn-tasks-ecs-run-task/Start", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_stepfunctions.Pass", + "version": "0.0.0" } }, "Run": { "id": "Run", "path": "aws-sfn-tasks-ecs-run-task/Run", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_stepfunctions_tasks.EcsRunTask", + "version": "0.0.0" } }, "StateMachine": { @@ -1781,8 +1781,8 @@ "id": "ImportRole", "path": "aws-sfn-tasks-ecs-run-task/StateMachine/Role/ImportRole", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" } }, "Resource": { @@ -1806,8 +1806,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" } }, "DefaultPolicy": { @@ -2117,20 +2117,20 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.CfnPolicy", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.Policy", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" } }, "Resource": { @@ -2154,7 +2154,7 @@ "Arn" ] }, - "\",\"TaskDefinition\":\"awssfntasksecsruntaskTaskDef75140181\",\"Overrides\":{\"ContainerOverrides\":[{\"Name\":\"Container\",\"Environment\":[{\"Name\":\"SOME_KEY\",\"Value.$\":\"$.SomeKey\"}]}]},\"LaunchType\":\"EC2\"}}}}" + "\",\"TaskDefinition\":\"awssfntasksecsruntaskTaskDef75140181\",\"Overrides\":{\"ContainerOverrides\":[{\"Name\":\"Container\",\"Environment\":[{\"Name\":\"SOME_KEY\",\"Value.$\":\"$.SomeKey\"}]}]},\"LaunchType\":\"EC2\",\"EnableExecuteCommand\":true}}}}" ] ] }, @@ -2167,44 +2167,44 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_stepfunctions.CfnStateMachine", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.aws_stepfunctions.StateMachine", + "version": "0.0.0" } }, "stateMachineArn": { "id": "stateMachineArn", "path": "aws-sfn-tasks-ecs-run-task/stateMachineArn", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.CfnOutput", + "version": "0.0.0" } }, "BootstrapVersion": { "id": "BootstrapVersion", "path": "aws-sfn-tasks-ecs-run-task/BootstrapVersion", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.CfnParameter", + "version": "0.0.0" } }, "CheckBootstrapVersion": { "id": "CheckBootstrapVersion", "path": "aws-sfn-tasks-ecs-run-task/CheckBootstrapVersion", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.CfnRule", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.Stack", + "version": "0.0.0" } }, "SfnTasksEcsEc2RunTaskTest": { @@ -2231,22 +2231,22 @@ "id": "BootstrapVersion", "path": "SfnTasksEcsEc2RunTaskTest/DefaultTest/DeployAssert/BootstrapVersion", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.CfnParameter", + "version": "0.0.0" } }, "CheckBootstrapVersion": { "id": "CheckBootstrapVersion", "path": "SfnTasksEcsEc2RunTaskTest/DefaultTest/DeployAssert/CheckBootstrapVersion", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.CfnRule", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.Stack", + "version": "0.0.0" } } }, @@ -2271,8 +2271,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.3.0" + "fqn": "aws-cdk-lib.App", + "version": "0.0.0" } } } \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions-tasks/test/ecs/integ.ec2-run-task.ts b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions-tasks/test/ecs/integ.ec2-run-task.ts index 5c2fd6afd0ebd..05cb571dbd3d7 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions-tasks/test/ecs/integ.ec2-run-task.ts +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions-tasks/test/ecs/integ.ec2-run-task.ts @@ -55,6 +55,7 @@ const definition = new sfn.Pass(stack, 'Start', { }, ], launchTarget: new tasks.EcsEc2LaunchTarget(), + enableExecuteCommand: true, }), ); diff --git a/packages/aws-cdk-lib/aws-stepfunctions-tasks/README.md b/packages/aws-cdk-lib/aws-stepfunctions-tasks/README.md index 789529547b6d6..ac5f25779e112 100644 --- a/packages/aws-cdk-lib/aws-stepfunctions-tasks/README.md +++ b/packages/aws-cdk-lib/aws-stepfunctions-tasks/README.md @@ -555,6 +555,7 @@ const runTask = new tasks.EcsRunTask(this, 'Run', { ], }), propagatedTagSource: ecs.PropagatedTagSource.TASK_DEFINITION, + enableExecuteCommand: false, }); ``` diff --git a/packages/aws-cdk-lib/aws-stepfunctions-tasks/lib/ecs/run-ecs-task-base.ts b/packages/aws-cdk-lib/aws-stepfunctions-tasks/lib/ecs/run-ecs-task-base.ts index a23b5c26eff6e..8e98bfbe2a12e 100644 --- a/packages/aws-cdk-lib/aws-stepfunctions-tasks/lib/ecs/run-ecs-task-base.ts +++ b/packages/aws-cdk-lib/aws-stepfunctions-tasks/lib/ecs/run-ecs-task-base.ts @@ -11,37 +11,37 @@ import { getResourceArn } from '../resource-arn-suffix'; */ export interface CommonEcsRunTaskProps { /** - * The topic to run the task on - */ + * The topic to run the task on + */ readonly cluster: ecs.ICluster; /** - * Task Definition used for running tasks in the service. - * - * Note: this must be TaskDefinition, and not ITaskDefinition, - * as it requires properties that are not known for imported task definitions - * If you want to run a RunTask with an imported task definition, - * consider using CustomState - */ + * Task Definition used for running tasks in the service. + * + * Note: this must be TaskDefinition, and not ITaskDefinition, + * as it requires properties that are not known for imported task definitions + * If you want to run a RunTask with an imported task definition, + * consider using CustomState + */ readonly taskDefinition: ecs.TaskDefinition; /** - * Container setting overrides - * - * Key is the name of the container to override, value is the - * values you want to override. - * - * @default - No overrides - */ + * Container setting overrides + * + * Key is the name of the container to override, value is the + * values you want to override. + * + * @default - No overrides + */ readonly containerOverrides?: ContainerOverride[]; /** - * The service integration pattern indicates different ways to call RunTask in ECS. - * - * The valid value for Lambda is FIRE_AND_FORGET, SYNC and WAIT_FOR_TASK_TOKEN. - * - * @default FIRE_AND_FORGET - */ + * The service integration pattern indicates different ways to call RunTask in ECS. + * + * The valid value for Lambda is FIRE_AND_FORGET, SYNC and WAIT_FOR_TASK_TOKEN. + * + * @default FIRE_AND_FORGET + */ readonly integrationPattern?: sfn.ServiceIntegrationPattern; } @@ -51,11 +51,11 @@ export interface CommonEcsRunTaskProps { */ export interface EcsRunTaskBaseProps extends CommonEcsRunTaskProps { /** - * Additional parameters to pass to the base task - * - * @default - No additional parameters passed - */ - readonly parameters?: {[key: string]: any}; + * Additional parameters to pass to the base task + * + * @default - No additional parameters passed + */ + readonly parameters?: { [key: string]: any }; } /** @@ -64,8 +64,8 @@ export interface EcsRunTaskBaseProps extends CommonEcsRunTaskProps { */ export class EcsRunTaskBase implements ec2.IConnectable, sfn.IStepFunctionsTask { /** - * Manage allowed network traffic for this service - */ + * Manage allowed network traffic for this service + */ public readonly connections: ec2.Connections = new ec2.Connections(); private securityGroup?: ec2.ISecurityGroup; @@ -86,7 +86,7 @@ export class EcsRunTaskBase implements ec2.IConnectable, sfn.IStepFunctionsTask } if (this.integrationPattern === sfn.ServiceIntegrationPattern.WAIT_FOR_TASK_TOKEN - && !sfn.FieldUtils.containsTaskToken(props.containerOverrides?.map(override => override.environment))) { + && !sfn.FieldUtils.containsTaskToken(props.containerOverrides?.map(override => override.environment))) { throw new Error('Task Token is required in at least one `containerOverrides.environment` for callback. Use JsonPath.taskToken to set the token.'); } @@ -190,7 +190,9 @@ export class EcsRunTaskBase implements ec2.IConnectable, sfn.IStepFunctionsTask } function renderOverrides(containerOverrides?: ContainerOverride[]) { - if (!containerOverrides) { return undefined; } + if (!containerOverrides) { + return undefined; + } const ret = new Array(); for (const override of containerOverrides) { diff --git a/packages/aws-cdk-lib/aws-stepfunctions-tasks/lib/ecs/run-task.ts b/packages/aws-cdk-lib/aws-stepfunctions-tasks/lib/ecs/run-task.ts index 303468707ea54..1c44256bcbcc7 100644 --- a/packages/aws-cdk-lib/aws-stepfunctions-tasks/lib/ecs/run-task.ts +++ b/packages/aws-cdk-lib/aws-stepfunctions-tasks/lib/ecs/run-task.ts @@ -12,75 +12,82 @@ import { integrationResourceArn, validatePatternSupported } from '../private/tas */ export interface EcsRunTaskProps extends sfn.TaskStateBaseProps { /** - * The ECS cluster to run the task on - */ + * The ECS cluster to run the task on + */ readonly cluster: ecs.ICluster; /** - * [disable-awslint:ref-via-interface] - * Task Definition used for running tasks in the service. - * - * Note: this must be TaskDefinition, and not ITaskDefinition, - * as it requires properties that are not known for imported task definitions - * If you want to run a RunTask with an imported task definition, - * consider using CustomState - */ + * [disable-awslint:ref-via-interface] + * Task Definition used for running tasks in the service. + * + * Note: this must be TaskDefinition, and not ITaskDefinition, + * as it requires properties that are not known for imported task definitions + * If you want to run a RunTask with an imported task definition, + * consider using CustomState + */ readonly taskDefinition: ecs.TaskDefinition; /** - * The revision number of ECS task definiton family - * - * @default - '$latest' - */ + * The revision number of ECS task definition family + * + * @default - '$latest' + */ readonly revisionNumber?: number; /** - * Container setting overrides - * - * Specify the container to use and the overrides to apply. - * - * @default - No overrides - */ + * Container setting overrides + * + * Specify the container to use and the overrides to apply. + * + * @default - No overrides + */ readonly containerOverrides?: ContainerOverride[]; /** - * Subnets to place the task's ENIs - * - * @default - Public subnets if assignPublicIp is set. Private subnets otherwise. - */ + * Subnets to place the task's ENIs + * + * @default - Public subnets if assignPublicIp is set. Private subnets otherwise. + */ readonly subnets?: ec2.SubnetSelection; /** - * Existing security groups to use for the tasks - * - * @default - A new security group is created - */ + * Existing security groups to use for the tasks + * + * @default - A new security group is created + */ readonly securityGroups?: ec2.ISecurityGroup[]; /** - * Assign public IP addresses to each task - * - * @default false - */ + * Assign public IP addresses to each task + * + * @default false + */ readonly assignPublicIp?: boolean; /** - * An Amazon ECS launch type determines the type of infrastructure on which your - * tasks and services are hosted. - * - * @see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html - */ + * An Amazon ECS launch type determines the type of infrastructure on which your + * tasks and services are hosted. + * + * @see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html + */ readonly launchTarget: IEcsLaunchTarget; /** - * Specifies whether to propagate the tags from the task definition to the task. - * An error will be received if you specify the SERVICE option when running a task. - * - * @see https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html#ECS-RunTask-request-propagateTags - * - * @default - No tags are propagated. - */ + * Specifies whether to propagate the tags from the task definition to the task. + * An error will be received if you specify the SERVICE option when running a task. + * + * @see https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html#ECS-RunTask-request-propagateTags + * + * @default - No tags are propagated. + */ readonly propagatedTagSource?: ecs.PropagatedTagSource; + + /** + * Whether ECS Exec should be enabled + * + * @default - false + */ + readonly enableExecuteCommand?: boolean; } /** @@ -89,8 +96,8 @@ export interface EcsRunTaskProps extends sfn.TaskStateBaseProps { */ export interface IEcsLaunchTarget { /** - * called when the ECS launch target is configured on RunTask - */ + * called when the ECS launch target is configured on RunTask + */ bind(task: EcsRunTask, launchTargetOptions: LaunchTargetBindOptions): EcsLaunchTargetConfig; } @@ -99,16 +106,16 @@ export interface IEcsLaunchTarget { */ export interface LaunchTargetBindOptions { /** - * Task definition to run Docker containers in Amazon ECS - */ + * Task definition to run Docker containers in Amazon ECS + */ readonly taskDefinition: ecs.ITaskDefinition; /** - * A regional grouping of one or more container instances on which you can run - * tasks and services. - * - * @default - No cluster - */ + * A regional grouping of one or more container instances on which you can run + * tasks and services. + * + * @default - No cluster + */ readonly cluster?: ecs.ICluster; } @@ -117,10 +124,10 @@ export interface LaunchTargetBindOptions { */ export interface EcsLaunchTargetConfig { /** - * Additional parameters to pass to the base task - * - * @default - No additional parameters passed - */ + * Additional parameters to pass to the base task + * + * @default - No additional parameters passed + */ readonly parameters?: { [key: string]: any }; } @@ -129,11 +136,11 @@ export interface EcsLaunchTargetConfig { */ export interface EcsFargateLaunchTargetOptions { /** - * Refers to a specific runtime environment for Fargate task infrastructure. - * Fargate platform version is a combination of the kernel and container runtime versions. - * - * @see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html - */ + * Refers to a specific runtime environment for Fargate task infrastructure. + * Fargate platform version is a combination of the kernel and container runtime versions. + * + * @see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html + */ readonly platformVersion: ecs.FargatePlatformVersion; } @@ -142,17 +149,17 @@ export interface EcsFargateLaunchTargetOptions { */ export interface EcsEc2LaunchTargetOptions { /** - * Placement constraints - * - * @default - None - */ + * Placement constraints + * + * @default - None + */ readonly placementConstraints?: ecs.PlacementConstraint[]; /** - * Placement strategies - * - * @default - None - */ + * Placement strategies + * + * @default - None + */ readonly placementStrategies?: ecs.PlacementStrategy[]; } @@ -162,11 +169,12 @@ export interface EcsEc2LaunchTargetOptions { * @see https://docs.aws.amazon.com/AmazonECS/latest/userguide/launch_types.html#launch-type-fargate */ export class EcsFargateLaunchTarget implements IEcsLaunchTarget { - constructor(private readonly options?: EcsFargateLaunchTargetOptions) {} + constructor(private readonly options?: EcsFargateLaunchTargetOptions) { + } /** - * Called when the Fargate launch type configured on RunTask - */ + * Called when the Fargate launch type configured on RunTask + */ public bind(_task: EcsRunTask, launchTargetOptions: LaunchTargetBindOptions): EcsLaunchTargetConfig { if (!launchTargetOptions.taskDefinition.isFargateCompatible) { throw new Error('Supplied TaskDefinition is not compatible with Fargate'); @@ -187,10 +195,12 @@ export class EcsFargateLaunchTarget implements IEcsLaunchTarget { * @see https://docs.aws.amazon.com/AmazonECS/latest/userguide/launch_types.html#launch-type-ec2 */ export class EcsEc2LaunchTarget implements IEcsLaunchTarget { - constructor(private readonly options?: EcsEc2LaunchTargetOptions) {} + constructor(private readonly options?: EcsEc2LaunchTargetOptions) { + } + /** - * Called when the EC2 launch type is configured on RunTask - */ + * Called when the EC2 launch type is configured on RunTask + */ public bind(_task: EcsRunTask, launchTargetOptions: LaunchTargetBindOptions): EcsLaunchTargetConfig { if (!launchTargetOptions.taskDefinition.isEc2Compatible) { throw new Error('Supplied TaskDefinition is not compatible with EC2'); @@ -244,8 +254,8 @@ export class EcsRunTask extends sfn.TaskStateBase implements ec2.IConnectable { ]; /** - * Manage allowed network traffic for this service - */ + * Manage allowed network traffic for this service + */ public readonly connections: ec2.Connections = new ec2.Connections(); protected readonly taskMetrics?: sfn.TaskMetricsConfig; @@ -262,7 +272,7 @@ export class EcsRunTask extends sfn.TaskStateBase implements ec2.IConnectable { validatePatternSupported(this.integrationPattern, EcsRunTask.SUPPORTED_INTEGRATION_PATTERNS); if (this.integrationPattern === sfn.IntegrationPattern.WAIT_FOR_TASK_TOKEN - && !sfn.FieldUtils.containsTaskToken(props.containerOverrides?.map(override => override.environment))) { + && !sfn.FieldUtils.containsTaskToken(props.containerOverrides?.map(override => override.environment))) { throw new Error('Task Token is required in at least one `containerOverrides.environment` for callback. Use JsonPath.taskToken to set the token.'); } @@ -292,8 +302,8 @@ export class EcsRunTask extends sfn.TaskStateBase implements ec2.IConnectable { } /** - * @internal - */ + * @internal + */ protected _renderTask(): any { return { Resource: integrationResourceArn('ecs', 'runTask', this.integrationPattern), @@ -303,14 +313,19 @@ export class EcsRunTask extends sfn.TaskStateBase implements ec2.IConnectable { NetworkConfiguration: this.networkConfiguration, Overrides: renderOverrides(this.props.containerOverrides), PropagateTags: this.props.propagatedTagSource, - ...this.props.launchTarget.bind(this, { taskDefinition: this.props.taskDefinition, cluster: this.props.cluster }).parameters, + ...this.props.launchTarget.bind(this, { + taskDefinition: this.props.taskDefinition, + cluster: this.props.cluster, + }, + ).parameters, + EnableExecuteCommand: this.props.enableExecuteCommand, }), }; } private configureAwsVpcNetworking() { const subnetSelection = this.props.subnets ?? - { subnetType: this.props.assignPublicIp ? ec2.SubnetType.PUBLIC : ec2.SubnetType.PRIVATE_WITH_EGRESS }; + { subnetType: this.props.assignPublicIp ? ec2.SubnetType.PUBLIC : ec2.SubnetType.PRIVATE_WITH_EGRESS }; this.networkConfiguration = { AwsvpcConfiguration: { @@ -375,11 +390,11 @@ export class EcsRunTask extends sfn.TaskStateBase implements ec2.IConnectable { } /** - * Returns the ARN of the task definition family by removing the - * revision from the task definition ARN - * Before - arn:aws:ecs:us-west-2:123456789012:task-definition/hello_world:8 - * After - arn:aws:ecs:us-west-2:123456789012:task-definition/hello_world - */ + * Returns the ARN of the task definition family by removing the + * revision from the task definition ARN + * Before - arn:aws:ecs:us-west-2:123456789012:task-definition/hello_world:8 + * After - arn:aws:ecs:us-west-2:123456789012:task-definition/hello_world + */ private getTaskDefinitionFamilyArn(): string { const arnComponents = cdk.Stack.of(this).splitArn(this.props.taskDefinition.taskDefinitionArn, cdk.ArnFormat.SLASH_RESOURCE_NAME); let { resourceName } = arnComponents; @@ -424,10 +439,10 @@ function renderOverrides(containerOverrides?: ContainerOverride[]) { Memory: override.memoryLimit, MemoryReservation: override.memoryReservation, Environment: - override.environment?.map((e) => ({ - Name: e.name, - Value: e.value, - })), + override.environment?.map((e) => ({ + Name: e.name, + Value: e.value, + })), }); } diff --git a/packages/aws-cdk-lib/aws-stepfunctions-tasks/test/ecs/run-tasks.test.ts b/packages/aws-cdk-lib/aws-stepfunctions-tasks/test/ecs/run-tasks.test.ts index 928e7486eb02f..aea9845175ae0 100644 --- a/packages/aws-cdk-lib/aws-stepfunctions-tasks/test/ecs/run-tasks.test.ts +++ b/packages/aws-cdk-lib/aws-stepfunctions-tasks/test/ecs/run-tasks.test.ts @@ -38,7 +38,11 @@ test('Cannot create a Fargate task with a fargate-incompatible task definition', }); expect(() => - new tasks.EcsRunTask(stack, 'task', { cluster, taskDefinition, launchTarget: new tasks.EcsFargateLaunchTarget() }).toStateJson(), + new tasks.EcsRunTask(stack, 'task', { + cluster, + taskDefinition, + launchTarget: new tasks.EcsFargateLaunchTarget(), + }).toStateJson(), ).toThrowError(/Supplied TaskDefinition is not compatible with Fargate/); }); @@ -49,7 +53,11 @@ test('Cannot create a Fargate task without a default container', () => { compatibility: ecs.Compatibility.FARGATE, }); expect(() => - new tasks.EcsRunTask(stack, 'task', { cluster, taskDefinition, launchTarget: new tasks.EcsFargateLaunchTarget() }).toStateJson(), + new tasks.EcsRunTask(stack, 'task', { + cluster, + taskDefinition, + launchTarget: new tasks.EcsFargateLaunchTarget(), + }).toStateJson(), ).toThrowError(/must have at least one essential container/); }); @@ -81,7 +89,10 @@ test('Cannot override container definitions when container is not in task defini containerOverrides: [ { containerDefinition: containerDefinitionB, - environment: [{ name: 'SOME_KEY', value: sfn.JsonPath.stringAt('$.SomeKey') }], + environment: [{ + name: 'SOME_KEY', + value: sfn.JsonPath.stringAt('$.SomeKey'), + }], }, ], launchTarget: new tasks.EcsFargateLaunchTarget(), @@ -108,7 +119,10 @@ test('Running a task with container override and container has explicitly set a containerOverrides: [ { containerDefinition, - environment: [{ name: 'SOME_KEY', value: sfn.JsonPath.stringAt('$.SomeKey') }], + environment: [{ + name: 'SOME_KEY', + value: sfn.JsonPath.stringAt('$.SomeKey'), + }], }, ], launchTarget: new tasks.EcsFargateLaunchTarget(), @@ -148,7 +162,10 @@ test('Running a task without propagated tag source', () => { containerOverrides: [ { containerDefinition, - environment: [{ name: 'SOME_KEY', value: sfn.JsonPath.stringAt('$.SomeKey') }], + environment: [{ + name: 'SOME_KEY', + value: sfn.JsonPath.stringAt('$.SomeKey'), + }], }, ], launchTarget: new tasks.EcsFargateLaunchTarget(), @@ -174,7 +191,10 @@ test('Running a task with TASK_DEFINITION as propagated tag source', () => { containerOverrides: [ { containerDefinition, - environment: [{ name: 'SOME_KEY', value: sfn.JsonPath.stringAt('$.SomeKey') }], + environment: [{ + name: 'SOME_KEY', + value: sfn.JsonPath.stringAt('$.SomeKey'), + }], }, ], launchTarget: new tasks.EcsFargateLaunchTarget(), @@ -201,7 +221,10 @@ test('Running a task with NONE as propagated tag source', () => { containerOverrides: [ { containerDefinition, - environment: [{ name: 'SOME_KEY', value: sfn.JsonPath.stringAt('$.SomeKey') }], + environment: [{ + name: 'SOME_KEY', + value: sfn.JsonPath.stringAt('$.SomeKey'), + }], }, ], launchTarget: new tasks.EcsFargateLaunchTarget(), @@ -228,7 +251,10 @@ test('Running a Fargate Task', () => { containerOverrides: [ { containerDefinition, - environment: [{ name: 'SOME_KEY', value: sfn.JsonPath.stringAt('$.SomeKey') }], + environment: [{ + name: 'SOME_KEY', + value: sfn.JsonPath.stringAt('$.SomeKey'), + }], }, ], launchTarget: new tasks.EcsFargateLaunchTarget({ @@ -379,7 +405,10 @@ test('Running an EC2 Task with bridge network', () => { containerOverrides: [ { containerDefinition, - environment: [{ name: 'SOME_KEY', value: sfn.JsonPath.stringAt('$.SomeKey') }], + environment: [{ + name: 'SOME_KEY', + value: sfn.JsonPath.stringAt('$.SomeKey'), + }], }, ], launchTarget: new tasks.EcsEc2LaunchTarget(), @@ -535,8 +564,17 @@ test('Running an EC2 Task with placement strategies', () => { Cluster: { 'Fn::GetAtt': ['ClusterEB0386A7', 'Arn'] }, LaunchType: 'EC2', TaskDefinition: 'TD', - PlacementConstraints: [{ Type: 'memberOf', Expression: 'blieptuut' }], - PlacementStrategy: [{ Field: 'instanceId', Type: 'spread' }, { Field: 'CPU', Type: 'binpack' }, { Type: 'random' }], + PlacementConstraints: [{ + Type: 'memberOf', + Expression: 'blieptuut', + }], + PlacementStrategy: [{ + Field: 'instanceId', + Type: 'spread', + }, { + Field: 'CPU', + Type: 'binpack', + }, { Type: 'random' }], }, Resource: { 'Fn::Join': [ @@ -686,7 +724,7 @@ test('Running a task with WAIT_FOR_TASK_TOKEN and task token in environment', () })).not.toThrow(); }); -test('Set revision number of ECS task denition family', () => { +test('Set revision number of ECS task definition family', () => { // When const taskDefinition = new ecs.TaskDefinition(stack, 'TD', { memoryMiB: '512', @@ -754,3 +792,50 @@ test('Set revision number of ECS task denition family', () => { }, ); }); + +test('set enableExecuteCommand', () => { + const taskDefinition = new ecs.TaskDefinition(stack, 'TD', { + compatibility: ecs.Compatibility.EC2, + }); + taskDefinition.addContainer('TheContainer', { + image: ecs.ContainerImage.fromRegistry('foo/bar'), + memoryLimitMiB: 256, + }); + + // WHEN + const runTask = new tasks.EcsRunTask(stack, 'Run', { + integrationPattern: sfn.IntegrationPattern.RUN_JOB, + launchTarget: new tasks.EcsEc2LaunchTarget(), + cluster, + taskDefinition, + enableExecuteCommand: true, + }); + + new sfn.StateMachine(stack, 'SM', { + definitionBody: sfn.DefinitionBody.fromChainable(runTask), + }); + + // THEN + expect(stack.resolve(runTask.toStateJson())).toEqual({ + End: true, + Parameters: { + Cluster: { 'Fn::GetAtt': ['ClusterEB0386A7', 'Arn'] }, + LaunchType: 'EC2', + TaskDefinition: 'TD', + EnableExecuteCommand: true, + }, + Resource: { + 'Fn::Join': [ + '', + [ + 'arn:', + { + Ref: 'AWS::Partition', + }, + ':states:::ecs:runTask.sync', + ], + ], + }, + Type: 'Task', + }); +});