aws-sdk-go-v2/service/ecs/api_op_CreateTaskSet.go (139 lines of code) (raw):
// Code generated by smithy-go-codegen DO NOT EDIT.
package ecs
import (
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
"context"
"fmt"
"github.com/aws/smithy-go/middleware"
smithyhttp "github.com/aws/smithy-go/transport/http"
"github.com/aws/aws-sdk-go-v2/service/ecs/types"
)
// Create a task set in the specified cluster and service. This is used when a
// service uses the EXTERNAL deployment controller type. For more information, see [Amazon ECS deployment types]
// in the Amazon Elastic Container Service Developer Guide.
//
// 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.
//
// For information about the maximum number of task sets and other quotas, see [Amazon ECS service quotas] in
// the Amazon Elastic Container Service Developer Guide.
//
// [Amazon ECS deployment types]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html
// [Amazon ECS service quotas]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-quotas.html
func (c *Client) CreateTaskSet(ctx context.Context, params *CreateTaskSetInput, optFns ...func(*Options)) (*CreateTaskSetOutput, error) {
if params == nil { params = &CreateTaskSetInput{} }
result, metadata, err := c.invokeOperation(ctx, "CreateTaskSet", params, optFns, c.addOperationCreateTaskSetMiddlewares)
if err != nil { return nil, err }
out := result.(*CreateTaskSetOutput)
out.ResultMetadata = metadata
return out, nil
}
type CreateTaskSetInput struct {
// The short name or full Amazon Resource Name (ARN) of the cluster that hosts the
// service to create the task set in.
//
// This member is required.
Cluster *string
// The short name or full Amazon Resource Name (ARN) of the service to create the
// task set in.
//
// This member is required.
Service *string
// The task definition for the tasks in the task set to use. If a revision isn't
// specified, the latest ACTIVE revision is used.
//
// This member is required.
TaskDefinition *string
// The capacity provider strategy to use for the task set.
//
// A capacity provider strategy consists of one or more capacity providers along
// with the base and weight to assign to them. A capacity provider must be
// associated with the cluster to be used in a capacity provider strategy. The [PutClusterCapacityProviders]API
// is used to associate a capacity provider with a cluster. Only capacity providers
// with an ACTIVE or UPDATING status can be used.
//
// If a capacityProviderStrategy is specified, the launchType parameter must be
// omitted. If no capacityProviderStrategy or launchType is specified, the
// defaultCapacityProviderStrategy for the cluster is used.
//
// If specifying a capacity provider that uses an Auto Scaling group, the capacity
// provider must already be created. New capacity providers can be created with the
// [CreateCapacityProviderProvider]API operation.
//
// To use a Fargate capacity provider, specify either the FARGATE or FARGATE_SPOT
// capacity providers. The Fargate capacity providers are available to all accounts
// and only need to be associated with a cluster to be used.
//
// The [PutClusterCapacityProviders] API operation is used to update the list of available capacity providers
// for a cluster after the cluster is created.
//
// [PutClusterCapacityProviders]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutClusterCapacityProviders.html
// [CreateCapacityProviderProvider]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCapacityProviderProvider.html
CapacityProviderStrategy []types.CapacityProviderStrategyItem
// An identifier that you provide to ensure the idempotency of the request. It
// must be unique and is case sensitive. Up to 36 ASCII characters in the range of
// 33-126 (inclusive) are allowed.
ClientToken *string
// An optional non-unique tag that identifies this task set in external systems.
// If the task set is associated with a service discovery registry, the tasks in
// this task set will have the ECS_TASK_SET_EXTERNAL_ID Cloud Map attribute set to
// the provided value.
ExternalId *string
// The launch type that new tasks in the task set uses. For more information, see [Amazon ECS launch types]
// in the Amazon Elastic Container Service Developer Guide.
//
// If a launchType is specified, the capacityProviderStrategy parameter must be
// omitted.
//
// [Amazon ECS launch types]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html
LaunchType types.LaunchType
// A load balancer object representing the load balancer to use with the task set.
// The supported load balancer types are either an Application Load Balancer or a
// Network Load Balancer.
LoadBalancers []types.LoadBalancer
// An object representing the network configuration for a task set.
NetworkConfiguration *types.NetworkConfiguration
// The platform version that the tasks in the task set uses. A platform version is
// specified only for tasks using the Fargate launch type. If one isn't specified,
// the LATEST platform version is used.
PlatformVersion *string
// A floating-point percentage of the desired number of tasks to place and keep
// running in the task set.
Scale *types.Scale
// The details of the service discovery registries to assign to this task set. For
// more information, see [Service discovery].
//
// [Service discovery]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html
ServiceRegistries []types.ServiceRegistry
// The metadata that you apply to the task set to help you categorize and organize
// them. Each tag consists of a key and an optional value. You define both. When a
// service is deleted, the tags are deleted.
//
// The following basic restrictions apply to tags:
//
// - Maximum number of tags per resource - 50
//
// - For each resource, each tag key must be unique, and each tag key can have
// only one value.
//
// - Maximum key length - 128 Unicode characters in UTF-8
//
// - Maximum value length - 256 Unicode characters in UTF-8
//
// - If your tagging schema is used across multiple services and resources,
// remember that other services may have restrictions on allowed characters.
// Generally allowed characters are: letters, numbers, and spaces representable in
// UTF-8, and the following characters: + - = . _ : / @.
//
// - Tag keys and values are case-sensitive.
//
// - Do not use aws: , AWS: , or any upper or lowercase combination of such as a
// prefix for either keys or values as it is reserved for Amazon Web Services use.
// You cannot edit or delete tag keys or values with this prefix. Tags with this
// prefix do not count against your tags per resource limit.
Tags []types.Tag
noSmithyDocumentSerde
}
type CreateTaskSetOutput struct {
// Information about a set of Amazon ECS tasks in either an CodeDeploy or an
// EXTERNAL deployment. A task set includes details such as the desired number of
// tasks, how many tasks are running, and whether the task set serves production
// traffic.
TaskSet *types.TaskSet
// Metadata pertaining to the operation's result.
ResultMetadata middleware.Metadata
noSmithyDocumentSerde
}
func (c *Client) addOperationCreateTaskSetMiddlewares(stack *middleware.Stack, options Options) (err error) {
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
return err
}
err = stack.Serialize.Add(&awsAwsjson11_serializeOpCreateTaskSet{}, middleware.After)
if err != nil { return err }
err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpCreateTaskSet{}, middleware.After)
if err != nil { return err }
if err := addProtocolFinalizerMiddlewares(stack, options, "CreateTaskSet"); err != nil {
return fmt.Errorf("add protocol finalizers: %v", err)
}
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
return err
}
if err = addSetLoggerMiddleware(stack, options); err != nil {
return err
}
if err = addClientRequestID(stack); err != nil {
return err
}
if err = addComputeContentLength(stack); err != nil {
return err
}
if err = addResolveEndpointMiddleware(stack, options); err != nil {
return err
}
if err = addComputePayloadSHA256(stack); err != nil {
return err
}
if err = addRetry(stack, options); err != nil {
return err
}
if err = addRawResponseToMetadata(stack); err != nil {
return err
}
if err = addRecordResponseTiming(stack); err != nil {
return err
}
if err = addSpanRetryLoop(stack, options); err != nil {
return err
}
if err = addClientUserAgent(stack, options); err != nil {
return err
}
if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
return err
}
if err = addTimeOffsetBuild(stack, c); err != nil {
return err
}
if err = addUserAgentRetryMode(stack, options); err != nil {
return err
}
if err = addOpCreateTaskSetValidationMiddleware(stack); err != nil {
return err
}
if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateTaskSet(options.Region, ), middleware.Before); err != nil {
return err
}
if err = addRecursionDetection(stack); err != nil {
return err
}
if err = addRequestIDRetrieverMiddleware(stack); err != nil {
return err
}
if err = addResponseErrorMiddleware(stack); err != nil {
return err
}
if err = addRequestResponseLogging(stack, options); err != nil {
return err
}
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
return err
}
if err = addSpanInitializeStart(stack); err != nil {
return err
}
if err = addSpanInitializeEnd(stack); err != nil {
return err
}
if err = addSpanBuildRequestStart(stack); err != nil {
return err
}
if err = addSpanBuildRequestEnd(stack); err != nil {
return err
}
return nil
}
func newServiceMetadataMiddleware_opCreateTaskSet(region string) *awsmiddleware.RegisterServiceMetadata {
return &awsmiddleware.RegisterServiceMetadata{
Region: region,
ServiceID: ServiceID,
OperationName: "CreateTaskSet",
}
}