From 21bdf2a90cfdfe588a6ea3b78ddddec3b83c80f5 Mon Sep 17 00:00:00 2001 From: awstools Date: Fri, 2 Aug 2024 18:18:17 +0000 Subject: [PATCH] feat(client-ecs): Add v2 smoke tests and smithy smokeTests trait for SDK testing. --- codegen/sdk-codegen/aws-models/ecs.json | 161 +++++++++++++----------- 1 file changed, 87 insertions(+), 74 deletions(-) diff --git a/codegen/sdk-codegen/aws-models/ecs.json b/codegen/sdk-codegen/aws-models/ecs.json index 2baf06c0a06a..6f4fad9674ec 100644 --- a/codegen/sdk-codegen/aws-models/ecs.json +++ b/codegen/sdk-codegen/aws-models/ecs.json @@ -3555,29 +3555,29 @@ "smithy.api#documentation": "

Disables an account setting for a specified user, role, or the root user for an\n\t\t\taccount.

", "smithy.api#examples": [ { - "title": "To delete your account setting", - "documentation": "This example deletes the account setting for your user for the specified resource type.", + "title": "To delete the account settings for a specific IAM user or IAM role", + "documentation": "This example deletes the account setting for a specific IAM user or IAM role for the specified resource type. Only the root user can view or modify the account settings for another user.", "input": { - "name": "serviceLongArnFormat" + "name": "containerInstanceLongArnFormat", + "principalArn": "arn:aws:iam:::user/principalName" }, "output": { "setting": { - "name": "serviceLongArnFormat", + "name": "containerInstanceLongArnFormat", "value": "enabled", "principalArn": "arn:aws:iam:::user/principalName" } } }, { - "title": "To delete the account settings for a specific IAM user or IAM role", - "documentation": "This example deletes the account setting for a specific IAM user or IAM role for the specified resource type. Only the root user can view or modify the account settings for another user.", + "title": "To delete your account setting", + "documentation": "This example deletes the account setting for your user for the specified resource type.", "input": { - "name": "containerInstanceLongArnFormat", - "principalArn": "arn:aws:iam:::user/principalName" + "name": "serviceLongArnFormat" }, "output": { "setting": { - "name": "containerInstanceLongArnFormat", + "name": "serviceLongArnFormat", "value": "enabled", "principalArn": "arn:aws:iam:::user/principalName" } @@ -6656,10 +6656,11 @@ "smithy.api#documentation": "

Lists the account settings for a specified principal.

", "smithy.api#examples": [ { - "title": "To view your effective account settings", - "documentation": "This example displays the effective account settings for your account.", + "title": "To view the effective account settings for a specific IAM user or IAM role", + "documentation": "This example displays the effective account settings for the specified user or role.", "input": { - "effectiveSettings": true + "effectiveSettings": true, + "principalArn": "arn:aws:iam:::user/principalName" }, "output": { "settings": [ @@ -6682,11 +6683,10 @@ } }, { - "title": "To view the effective account settings for a specific IAM user or IAM role", - "documentation": "This example displays the effective account settings for the specified user or role.", + "title": "To view your effective account settings", + "documentation": "This example displays the effective account settings for your account.", "input": { - "effectiveSettings": true, - "principalArn": "arn:aws:iam:::user/principalName" + "effectiveSettings": true }, "output": { "settings": [ @@ -6912,7 +6912,20 @@ "outputToken": "nextToken", "items": "clusterArns", "pageSize": "maxResults" - } + }, + "smithy.test#smokeTests": [ + { + "id": "ListClustersSuccess", + "params": {}, + "vendorParams": { + "region": "us-west-2" + }, + "vendorParamsShape": "aws.test#AwsVendorParams", + "expect": { + "success": {} + } + } + ] } }, "com.amazonaws.ecs#ListClustersRequest": { @@ -7332,13 +7345,6 @@ "traits": { "smithy.api#documentation": "

Returns a list of task definition families that are registered to your account. This\n\t\t\tlist includes task definition families that no longer have any ACTIVE task\n\t\t\tdefinition revisions.

\n

You can filter out task definition families that don't contain any ACTIVE\n\t\t\ttask definition revisions by setting the status parameter to\n\t\t\t\tACTIVE. You can also filter the results with the\n\t\t\t\tfamilyPrefix parameter.

", "smithy.api#examples": [ - { - "title": "To list your registered task definition families", - "documentation": "This example lists all of your registered task definition families.", - "output": { - "families": ["node-js-app", "web-timer", "hpcc", "hpcc-c4-8xlarge"] - } - }, { "title": "To filter your registered task definition families", "documentation": "This example lists the task definition revisions that start with \"hpcc\".", @@ -7348,6 +7354,13 @@ "output": { "families": ["hpcc", "hpcc-c4-8xlarge"] } + }, + { + "title": "To list your registered task definition families", + "documentation": "This example lists all of your registered task definition families.", + "output": { + "families": ["node-js-app", "web-timer", "hpcc", "hpcc-c4-8xlarge"] + } } ], "smithy.api#paginated": { @@ -7433,12 +7446,13 @@ "smithy.api#documentation": "

Returns a list of task definitions that are registered to your account. You can filter\n\t\t\tthe results by family name with the familyPrefix parameter or by status\n\t\t\twith the status parameter.

", "smithy.api#examples": [ { - "title": "To list your registered task definitions", - "documentation": "This example lists all of your registered task definitions.", + "title": "To list the registered task definitions in a family", + "documentation": "This example lists the task definition revisions of a specified family.", + "input": { + "familyPrefix": "wordpress" + }, "output": { "taskDefinitionArns": [ - "arn:aws:ecs:us-east-1::task-definition/sleep300:2", - "arn:aws:ecs:us-east-1::task-definition/sleep360:1", "arn:aws:ecs:us-east-1::task-definition/wordpress:3", "arn:aws:ecs:us-east-1::task-definition/wordpress:4", "arn:aws:ecs:us-east-1::task-definition/wordpress:5", @@ -7447,13 +7461,12 @@ } }, { - "title": "To list the registered task definitions in a family", - "documentation": "This example lists the task definition revisions of a specified family.", - "input": { - "familyPrefix": "wordpress" - }, + "title": "To list your registered task definitions", + "documentation": "This example lists all of your registered task definitions.", "output": { "taskDefinitionArns": [ + "arn:aws:ecs:us-east-1::task-definition/sleep300:2", + "arn:aws:ecs:us-east-1::task-definition/sleep360:1", "arn:aws:ecs:us-east-1::task-definition/wordpress:3", "arn:aws:ecs:us-east-1::task-definition/wordpress:4", "arn:aws:ecs:us-east-1::task-definition/wordpress:5", @@ -7556,6 +7569,17 @@ "traits": { "smithy.api#documentation": "

Returns a list of tasks. You can filter the results by cluster, task definition\n\t\t\tfamily, container instance, launch type, what IAM principal started the task, or by\n\t\t\tthe desired status of the task.

\n

Recently stopped tasks might appear in the returned results.

", "smithy.api#examples": [ + { + "title": "To list the tasks on a particular container instance", + "documentation": "This example lists the tasks of a specified container instance. Specifying a ``containerInstance`` value limits the results to tasks that belong to that container instance.", + "input": { + "cluster": "default", + "containerInstance": "f6bbb147-5370-4ace-8c73-c7181ded911f" + }, + "output": { + "taskArns": ["arn:aws:ecs:us-east-1:012345678910:task/default/0cc43cdb-3bee-4407-9c26-c0e6ea5bee84"] + } + }, { "title": "To list the tasks in a cluster", "documentation": "This example lists all of the tasks in a cluster.", @@ -7568,17 +7592,6 @@ "arn:aws:ecs:us-east-1:012345678910:task/default/6b809ef6-c67e-4467-921f-ee261c15a0a1" ] } - }, - { - "title": "To list the tasks on a particular container instance", - "documentation": "This example lists the tasks of a specified container instance. Specifying a ``containerInstance`` value limits the results to tasks that belong to that container instance.", - "input": { - "cluster": "default", - "containerInstance": "f6bbb147-5370-4ace-8c73-c7181ded911f" - }, - "output": { - "taskArns": ["arn:aws:ecs:us-east-1:012345678910:task/default/0cc43cdb-3bee-4407-9c26-c0e6ea5bee84"] - } } ], "smithy.api#paginated": { @@ -8645,31 +8658,31 @@ "smithy.api#documentation": "

Modifies an account setting. Account settings are set on a per-Region basis.

\n

If you change the root user account setting, the default settings are reset for users and\n\t\t\troles that do not have specified individual account settings. For more information, see\n\t\t\t\tAccount\n\t\t\t\tSettings in the Amazon Elastic Container Service Developer Guide.

", "smithy.api#examples": [ { - "title": "To modify your account settings", - "documentation": "This example modifies your account settings to opt in to the new ARN and resource ID format for Amazon ECS services. If you’re using this command as the root user, then changes apply to the entire AWS account, unless an IAM user or role explicitly overrides these settings for themselves.", + "title": "To modify the account settings for a specific IAM user or IAM role", + "documentation": "This example modifies the account setting for a specific IAM user or IAM role to opt in to the new ARN and resource ID format for Amazon ECS container instances. If you’re using this command as the root user, then changes apply to the entire AWS account, unless an IAM user or role explicitly overrides these settings for themselves.", "input": { - "name": "serviceLongArnFormat", - "value": "enabled" + "name": "containerInstanceLongArnFormat", + "value": "enabled", + "principalArn": "arn:aws:iam:::user/principalName" }, "output": { "setting": { - "name": "serviceLongArnFormat", + "name": "containerInstanceLongArnFormat", "value": "enabled", "principalArn": "arn:aws:iam:::user/principalName" } } }, { - "title": "To modify the account settings for a specific IAM user or IAM role", - "documentation": "This example modifies the account setting for a specific IAM user or IAM role to opt in to the new ARN and resource ID format for Amazon ECS container instances. If you’re using this command as the root user, then changes apply to the entire AWS account, unless an IAM user or role explicitly overrides these settings for themselves.", + "title": "To modify your account settings", + "documentation": "This example modifies your account settings to opt in to the new ARN and resource ID format for Amazon ECS services. If you’re using this command as the root user, then changes apply to the entire AWS account, unless an IAM user or role explicitly overrides these settings for themselves.", "input": { - "name": "containerInstanceLongArnFormat", - "value": "enabled", - "principalArn": "arn:aws:iam:::user/principalName" + "name": "serviceLongArnFormat", + "value": "enabled" }, "output": { "setting": { - "name": "containerInstanceLongArnFormat", + "name": "serviceLongArnFormat", "value": "enabled", "principalArn": "arn:aws:iam:::user/principalName" } @@ -12863,20 +12876,20 @@ "smithy.api#documentation": "

Modifies the parameters of a service.

\n \n

On March 21, 2024, a change was made to resolve the task definition revision before authorization. When a task definition revision is not specified, authorization will occur using the latest revision of a task definition.

\n
\n

For services using the rolling update (ECS) you can update the desired\n\t\t\tcount, deployment configuration, network configuration, load balancers, service\n\t\t\tregistries, enable ECS managed tags option, propagate tags option, task placement\n\t\t\tconstraints and strategies, and task definition. When you update any of these\n\t\t\tparameters, Amazon ECS starts new tasks with the new configuration.

\n

You can attach Amazon EBS volumes to Amazon ECS tasks by configuring the volume when starting or\n\t\t\trunning a task, or when creating or updating a service. For more infomation, see Amazon EBS volumes in the Amazon Elastic Container Service Developer Guide. You can update\n\t\t\tyour volume configurations and trigger a new deployment.\n\t\t\t\tvolumeConfigurations is only supported for REPLICA service and not\n\t\t\tDAEMON service. If you leave volumeConfigurations\n null, it doesn't trigger a new deployment. For more infomation on volumes,\n\t\t\tsee Amazon EBS volumes in the Amazon Elastic Container Service Developer Guide.

\n

For services using the blue/green (CODE_DEPLOY) deployment controller,\n\t\t\tonly the desired count, deployment configuration, health check grace period, task\n\t\t\tplacement constraints and strategies, enable ECS managed tags option, and propagate tags\n\t\t\tcan be updated using this API. If the network configuration, platform version, task\n\t\t\tdefinition, or load balancer need to be updated, create a new CodeDeploy deployment. For more\n\t\t\tinformation, see CreateDeployment in the CodeDeploy API Reference.

\n

For services using an external deployment controller, you can update only the desired\n\t\t\tcount, task placement constraints and strategies, health check grace period, enable ECS\n\t\t\tmanaged tags option, and propagate tags option, using this API. If the launch type, load\n\t\t\tbalancer, network configuration, platform version, or task definition need to be\n\t\t\tupdated, create a new task set For more information, see CreateTaskSet.

\n

You can add to or subtract from the number of instantiations of a task definition in a\n\t\t\tservice by specifying the cluster that the service is running in and a new\n\t\t\t\tdesiredCount parameter.

\n

You can attach Amazon EBS volumes to Amazon ECS tasks by configuring the volume when starting or\n\t\t\trunning a task, or when creating or updating a service. For more infomation, see Amazon EBS volumes in the Amazon Elastic Container Service Developer Guide.

\n

If you have updated the container image of your application, you can create a new task\n\t\t\tdefinition with that image and deploy it to your service. The service scheduler uses the\n\t\t\tminimum healthy percent and maximum percent parameters (in the service's deployment\n\t\t\tconfiguration) to determine the deployment strategy.

\n \n

If your updated Docker image uses the same tag as what is in the existing task\n\t\t\t\tdefinition for your service (for example, my_image:latest), you don't\n\t\t\t\tneed to create a new revision of your task definition. You can update the service\n\t\t\t\tusing the forceNewDeployment option. The new tasks launched by the\n\t\t\t\tdeployment pull the current image/tag combination from your repository when they\n\t\t\t\tstart.

\n
\n

You can also update the deployment configuration of a service. When a deployment is\n\t\t\ttriggered by updating the task definition of a service, the service scheduler uses the\n\t\t\tdeployment configuration parameters, minimumHealthyPercent and\n\t\t\t\tmaximumPercent, to determine the deployment strategy.

\n
    \n
  • \n

    If minimumHealthyPercent is below 100%, the scheduler can ignore\n\t\t\t\t\t\tdesiredCount temporarily during a deployment. For example, if\n\t\t\t\t\t\tdesiredCount is four tasks, a minimum of 50% allows the\n\t\t\t\t\tscheduler to stop two existing tasks before starting two new tasks. Tasks for\n\t\t\t\t\tservices that don't use a load balancer are considered healthy if they're in the\n\t\t\t\t\t\tRUNNING state. Tasks for services that use a load balancer are\n\t\t\t\t\tconsidered healthy if they're in the RUNNING state and are reported\n\t\t\t\t\tas healthy by the load balancer.

    \n
  • \n
  • \n

    The maximumPercent parameter represents an upper limit on the\n\t\t\t\t\tnumber of running tasks during a deployment. You can use it to define the\n\t\t\t\t\tdeployment batch size. For example, if desiredCount is four tasks,\n\t\t\t\t\ta maximum of 200% starts four new tasks before stopping the four older tasks\n\t\t\t\t\t(provided that the cluster resources required to do this are available).

    \n
  • \n
\n

When UpdateService stops a task during a deployment, the equivalent\n\t\t\tof docker stop is issued to the containers running in the task. This\n\t\t\tresults in a SIGTERM and a 30-second timeout. After this,\n\t\t\t\tSIGKILL is sent and the containers are forcibly stopped. If the\n\t\t\tcontainer handles the SIGTERM gracefully and exits within 30 seconds from\n\t\t\treceiving it, no SIGKILL is sent.

\n

When the service scheduler launches new tasks, it determines task placement in your\n\t\t\tcluster with the following logic.

\n
    \n
  • \n

    Determine which of the container instances in your cluster can support your\n\t\t\t\t\tservice's task definition. For example, they have the required CPU, memory,\n\t\t\t\t\tports, and container instance attributes.

    \n
  • \n
  • \n

    By default, the service scheduler attempts to balance tasks across\n\t\t\t\t\tAvailability Zones in this manner even though you can choose a different\n\t\t\t\t\tplacement strategy.

    \n
      \n
    • \n

      Sort the valid container instances by the fewest number of running\n\t\t\t\t\t\t\ttasks for this service in the same Availability Zone as the instance.\n\t\t\t\t\t\t\tFor example, if zone A has one running service task and zones B and C\n\t\t\t\t\t\t\teach have zero, valid container instances in either zone B or C are\n\t\t\t\t\t\t\tconsidered optimal for placement.

      \n
    • \n
    • \n

      Place the new service task on a valid container instance in an optimal\n\t\t\t\t\t\t\tAvailability Zone (based on the previous steps), favoring container\n\t\t\t\t\t\t\tinstances with the fewest number of running tasks for this\n\t\t\t\t\t\t\tservice.

      \n
    • \n
    \n
  • \n
\n

When the service scheduler stops running tasks, it attempts to maintain balance across\n\t\t\tthe Availability Zones in your cluster using the following logic:

\n
    \n
  • \n

    Sort the container instances by the largest number of running tasks for this\n\t\t\t\t\tservice in the same Availability Zone as the instance. For example, if zone A\n\t\t\t\t\thas one running service task and zones B and C each have two, container\n\t\t\t\t\tinstances in either zone B or C are considered optimal for termination.

    \n
  • \n
  • \n

    Stop the task on a container instance in an optimal Availability Zone (based\n\t\t\t\t\ton the previous steps), favoring container instances with the largest number of\n\t\t\t\t\trunning tasks for this service.

    \n
  • \n
\n \n

You must have a service-linked role when you update any of the following service\n\t\t\t\tproperties:

\n
    \n
  • \n

    \n loadBalancers,

    \n
  • \n
  • \n

    \n serviceRegistries\n

    \n
  • \n
\n

For more information about the role see the CreateService request\n\t\t\t\tparameter \n role\n .

\n
", "smithy.api#examples": [ { - "title": "To change the task definition used in a service", - "documentation": "This example updates the my-http-service service to use the amazon-ecs-sample task definition.", + "title": "To change the number of tasks in a service", + "documentation": "This example updates the desired count of the my-http-service service to 10.", "input": { "service": "my-http-service", - "taskDefinition": "amazon-ecs-sample" + "desiredCount": 10 }, "output": {} }, { - "title": "To change the number of tasks in a service", - "documentation": "This example updates the desired count of the my-http-service service to 10.", + "title": "To change the task definition used in a service", + "documentation": "This example updates the my-http-service service to use the amazon-ecs-sample task definition.", "input": { "service": "my-http-service", - "desiredCount": 10 + "taskDefinition": "amazon-ecs-sample" }, "output": {} } @@ -13140,32 +13153,31 @@ "smithy.api#documentation": "

Updates the protection status of a task. You can set protectionEnabled to\n\t\t\t\ttrue to protect your task from termination during scale-in events from\n\t\t\t\tService\n\t\t\t\tAutoscaling or deployments.

\n

Task-protection, by default, expires after 2 hours at which point Amazon ECS clears the\n\t\t\t\tprotectionEnabled property making the task eligible for termination by\n\t\t\ta subsequent scale-in event.

\n

You can specify a custom expiration period for task protection from 1 minute to up to\n\t\t\t2,880 minutes (48 hours). To specify the custom expiration period, set the\n\t\t\t\texpiresInMinutes property. The expiresInMinutes property\n\t\t\tis always reset when you invoke this operation for a task that already has\n\t\t\t\tprotectionEnabled set to true. You can keep extending the\n\t\t\tprotection expiration period of a task by invoking this operation repeatedly.

\n

To learn more about Amazon ECS task protection, see Task scale-in\n\t\t\t\tprotection in the \n Amazon Elastic Container Service Developer Guide\n .

\n \n

This operation is only supported for tasks belonging to an Amazon ECS service. Invoking\n\t\t\t\tthis operation for a standalone task will result in an TASK_NOT_VALID\n\t\t\t\tfailure. For more information, see API failure\n\t\t\t\t\treasons.

\n
\n \n

If you prefer to set task protection from within the container, we recommend using\n\t\t\t\tthe Task scale-in protection endpoint.

\n
", "smithy.api#examples": [ { - "title": "To set task scale-in protection for a task for 60 minutes", - "documentation": "This example enables scale-in protection for a task for 60 minutes.", + "title": "To remove task scale-in protection", + "documentation": "This example removes scale-in protection for a task.", "input": { "cluster": "test-task-protection", "tasks": ["b8b1cf532d0e46ba8d44a40d1de16772"], - "protectionEnabled": true, - "expiresInMinutes": 60 + "protectionEnabled": false }, "output": { "protectedTasks": [ { "taskArn": "arn:aws:ecs:us-west-2:012345678910:task/default/b8b1cf532d0e46ba8d44a40d1de16772", - "protectionEnabled": true, - "expirationDate": "2022-11-02T06:56:32.553Z" + "protectionEnabled": false } ], "failures": [] } }, { - "title": "To set task scale-in protection for the default time period in minutes", - "documentation": "This example enables task scale-in protection for a task, without specifying the expiresInMinutes parameter, for the default protection period of 120 minutes.", + "title": "To set task scale-in protection for a task for 60 minutes", + "documentation": "This example enables scale-in protection for a task for 60 minutes.", "input": { "cluster": "test-task-protection", "tasks": ["b8b1cf532d0e46ba8d44a40d1de16772"], - "protectionEnabled": true + "protectionEnabled": true, + "expiresInMinutes": 60 }, "output": { "protectedTasks": [ @@ -13179,18 +13191,19 @@ } }, { - "title": "To remove task scale-in protection", - "documentation": "This example removes scale-in protection for a task.", + "title": "To set task scale-in protection for the default time period in minutes", + "documentation": "This example enables task scale-in protection for a task, without specifying the expiresInMinutes parameter, for the default protection period of 120 minutes.", "input": { "cluster": "test-task-protection", "tasks": ["b8b1cf532d0e46ba8d44a40d1de16772"], - "protectionEnabled": false + "protectionEnabled": true }, "output": { "protectedTasks": [ { "taskArn": "arn:aws:ecs:us-west-2:012345678910:task/default/b8b1cf532d0e46ba8d44a40d1de16772", - "protectionEnabled": false + "protectionEnabled": true, + "expirationDate": "2022-11-02T06:56:32.553Z" } ], "failures": []