/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the ecs-2014-11-13.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.ECS.Model
{
///
/// Container for the parameters to the RunTask operation.
/// Starts a new task using the specified task definition.
///
///
///
/// You can allow Amazon ECS to place tasks for you, or you can customize how Amazon ECS
/// places tasks using placement constraints and placement strategies. For more information,
/// see Scheduling
/// Tasks in the Amazon Elastic Container Service Developer Guide.
///
///
///
/// Alternatively, you can use StartTask to use your own scheduler or place tasks
/// manually on specific container instances.
///
///
///
/// Starting April 15, 2023, Amazon Web Services will not onboard new customers to Amazon
/// Elastic Inference (EI), and will help current customers migrate their workloads to
/// options that offer better price and performance. After April 15, 2023, new customers
/// will not be able to launch instances with Amazon EI accelerators in Amazon SageMaker,
/// Amazon ECS, or Amazon EC2. However, customers who have used Amazon EI at least once
/// during the past 30-day period are considered current customers and will be able to
/// continue using the service.
///
///
///
/// The Amazon ECS API follows an eventual consistency model. This is because of the distributed
/// nature of the system supporting the API. This means that the result of an API command
/// you run that affects your Amazon ECS resources might not be immediately visible to
/// all subsequent commands you run. Keep this in mind when you carry out an API command
/// that immediately follows a previous API command.
///
///
///
/// To manage eventual consistency, you can do the following:
///
/// -
///
/// Confirm the state of the resource before you run a command to modify it. Run the DescribeTasks
/// command using an exponential backoff algorithm to ensure that you allow enough time
/// for the previous command to propagate through the system. To do this, run the DescribeTasks
/// command repeatedly, starting with a couple of seconds of wait time and increasing
/// gradually up to five minutes of wait time.
///
///
-
///
/// Add wait time between subsequent commands, even if the DescribeTasks command returns
/// an accurate response. Apply an exponential backoff algorithm starting with a couple
/// of seconds of wait time, and increase gradually up to about five minutes of wait time.
///
///
///
public partial class RunTaskRequest : AmazonECSRequest
{
private List _capacityProviderStrategy = new List();
private string _cluster;
private int? _count;
private bool? _enableecsManagedTags;
private bool? _enableExecuteCommand;
private string _group;
private LaunchType _launchType;
private NetworkConfiguration _networkConfiguration;
private TaskOverride _overrides;
private List _placementConstraints = new List();
private List _placementStrategy = new List();
private string _platformVersion;
private PropagateTags _propagateTags;
private string _referenceId;
private string _startedBy;
private List _tags = new List();
private string _taskDefinition;
///
/// Gets and sets the property CapacityProviderStrategy.
///
/// The capacity provider strategy to use for the task.
///
///
///
/// 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.
///
///
///
/// When you use cluster auto scaling, you must specify capacityProviderStrategy
/// and not launchType
.
///
///
///
/// A capacity provider strategy may contain a maximum of 6 capacity providers.
///
///
public List CapacityProviderStrategy
{
get { return this._capacityProviderStrategy; }
set { this._capacityProviderStrategy = value; }
}
// Check to see if CapacityProviderStrategy property is set
internal bool IsSetCapacityProviderStrategy()
{
return this._capacityProviderStrategy != null && this._capacityProviderStrategy.Count > 0;
}
///
/// Gets and sets the property Cluster.
///
/// The short name or full Amazon Resource Name (ARN) of the cluster to run your task
/// on. If you do not specify a cluster, the default cluster is assumed.
///
///
public string Cluster
{
get { return this._cluster; }
set { this._cluster = value; }
}
// Check to see if Cluster property is set
internal bool IsSetCluster()
{
return this._cluster != null;
}
///
/// Gets and sets the property Count.
///
/// The number of instantiations of the specified task to place on your cluster. You can
/// specify up to 10 tasks for each call.
///
///
public int Count
{
get { return this._count.GetValueOrDefault(); }
set { this._count = value; }
}
// Check to see if Count property is set
internal bool IsSetCount()
{
return this._count.HasValue;
}
///
/// Gets and sets the property EnableECSManagedTags.
///
/// Specifies whether to use Amazon ECS managed tags for the task. For more information,
/// see Tagging
/// Your Amazon ECS Resources in the Amazon Elastic Container Service Developer
/// Guide.
///
///
public bool EnableECSManagedTags
{
get { return this._enableecsManagedTags.GetValueOrDefault(); }
set { this._enableecsManagedTags = value; }
}
// Check to see if EnableECSManagedTags property is set
internal bool IsSetEnableECSManagedTags()
{
return this._enableecsManagedTags.HasValue;
}
///
/// Gets and sets the property EnableExecuteCommand.
///
/// Determines whether to use the execute command functionality for the containers in
/// this task. If true
, this enables execute command functionality on all
/// containers in the task.
///
///
///
/// If true
, then the task definition must have a task role, or you must
/// provide one as an override.
///
///
public bool EnableExecuteCommand
{
get { return this._enableExecuteCommand.GetValueOrDefault(); }
set { this._enableExecuteCommand = value; }
}
// Check to see if EnableExecuteCommand property is set
internal bool IsSetEnableExecuteCommand()
{
return this._enableExecuteCommand.HasValue;
}
///
/// Gets and sets the property Group.
///
/// The name of the task group to associate with the task. The default value is the family
/// name of the task definition (for example, family:my-family-name
).
///
///
public string Group
{
get { return this._group; }
set { this._group = value; }
}
// Check to see if Group property is set
internal bool IsSetGroup()
{
return this._group != null;
}
///
/// Gets and sets the property LaunchType.
///
/// The infrastructure to run your standalone task on. For more information, see Amazon
/// ECS launch types in the Amazon Elastic Container Service Developer Guide.
///
///
///
/// The FARGATE
launch type runs your tasks on Fargate On-Demand infrastructure.
///
///
///
/// Fargate Spot infrastructure is available for use but a capacity provider strategy
/// must be used. For more information, see Fargate
/// capacity providers in the Amazon ECS User Guide for Fargate.
///
///
///
/// The EC2
launch type runs your tasks on Amazon EC2 instances registered
/// to your cluster.
///
///
///
/// The EXTERNAL
launch type runs your tasks on your on-premises server or
/// virtual machine (VM) capacity registered to your cluster.
///
///
///
/// A task can use either a launch type or a capacity provider strategy. If a launchType
/// is specified, the capacityProviderStrategy
parameter must be omitted.
///
///
///
/// When you use cluster auto scaling, you must specify capacityProviderStrategy
/// and not launchType
.
///
///
public LaunchType LaunchType
{
get { return this._launchType; }
set { this._launchType = value; }
}
// Check to see if LaunchType property is set
internal bool IsSetLaunchType()
{
return this._launchType != null;
}
///
/// Gets and sets the property NetworkConfiguration.
///
/// The network configuration for the task. This parameter is required for task definitions
/// that use the awsvpc
network mode to receive their own elastic network
/// interface, and it isn't supported for other network modes. For more information, see
/// Task
/// networking in the Amazon Elastic Container Service Developer Guide.
///
///
public NetworkConfiguration NetworkConfiguration
{
get { return this._networkConfiguration; }
set { this._networkConfiguration = value; }
}
// Check to see if NetworkConfiguration property is set
internal bool IsSetNetworkConfiguration()
{
return this._networkConfiguration != null;
}
///
/// Gets and sets the property Overrides.
///
/// A list of container overrides in JSON format that specify the name of a container
/// in the specified task definition and the overrides it should receive. You can override
/// the default command for a container (that's specified in the task definition or Docker
/// image) with a command
override. You can also override existing environment
/// variables (that are specified in the task definition or Docker image) on a container
/// or add new environment variables to it with an environment
override.
///
///
///
/// A total of 8192 characters are allowed for overrides. This limit includes the JSON
/// formatting characters of the override structure.
///
///
public TaskOverride Overrides
{
get { return this._overrides; }
set { this._overrides = value; }
}
// Check to see if Overrides property is set
internal bool IsSetOverrides()
{
return this._overrides != null;
}
///
/// Gets and sets the property PlacementConstraints.
///
/// An array of placement constraint objects to use for the task. You can specify up to
/// 10 constraints for each task (including constraints in the task definition and those
/// specified at runtime).
///
///
public List PlacementConstraints
{
get { return this._placementConstraints; }
set { this._placementConstraints = value; }
}
// Check to see if PlacementConstraints property is set
internal bool IsSetPlacementConstraints()
{
return this._placementConstraints != null && this._placementConstraints.Count > 0;
}
///
/// Gets and sets the property PlacementStrategy.
///
/// The placement strategy objects to use for the task. You can specify a maximum of 5
/// strategy rules for each task.
///
///
public List PlacementStrategy
{
get { return this._placementStrategy; }
set { this._placementStrategy = value; }
}
// Check to see if PlacementStrategy property is set
internal bool IsSetPlacementStrategy()
{
return this._placementStrategy != null && this._placementStrategy.Count > 0;
}
///
/// Gets and sets the property PlatformVersion.
///
/// The platform version the task uses. A platform version is only specified for tasks
/// hosted on Fargate. If one isn't specified, the LATEST
platform version
/// is used. For more information, see Fargate
/// platform versions in the Amazon Elastic Container Service Developer Guide.
///
///
public string PlatformVersion
{
get { return this._platformVersion; }
set { this._platformVersion = value; }
}
// Check to see if PlatformVersion property is set
internal bool IsSetPlatformVersion()
{
return this._platformVersion != null;
}
///
/// Gets and sets the property PropagateTags.
///
/// Specifies whether to propagate the tags from the task definition to the task. If no
/// value is specified, the tags aren't propagated. Tags can only be propagated to the
/// task during task creation. To add tags to a task after task creation, use the TagResource
/// API action.
///
///
///
/// An error will be received if you specify the SERVICE
option when running
/// a task.
///
///
///
public PropagateTags PropagateTags
{
get { return this._propagateTags; }
set { this._propagateTags = value; }
}
// Check to see if PropagateTags property is set
internal bool IsSetPropagateTags()
{
return this._propagateTags != null;
}
///
/// Gets and sets the property ReferenceId.
///
/// The reference ID to use for the task. The reference ID can have a maximum length of
/// 1024 characters.
///
///
public string ReferenceId
{
get { return this._referenceId; }
set { this._referenceId = value; }
}
// Check to see if ReferenceId property is set
internal bool IsSetReferenceId()
{
return this._referenceId != null;
}
///
/// Gets and sets the property StartedBy.
///
/// An optional tag specified when a task is started. For example, if you automatically
/// trigger a task to run a batch process job, you could apply a unique identifier for
/// that job to your task with the startedBy
parameter. You can then identify
/// which tasks belong to that job by filtering the results of a ListTasks call
/// with the startedBy
value. Up to 36 letters (uppercase and lowercase),
/// numbers, hyphens (-), and underscores (_) are allowed.
///
///
///
/// If a task is started by an Amazon ECS service, then the startedBy
parameter
/// contains the deployment ID of the service that starts it.
///
///
public string StartedBy
{
get { return this._startedBy; }
set { this._startedBy = value; }
}
// Check to see if StartedBy property is set
internal bool IsSetStartedBy()
{
return this._startedBy != null;
}
///
/// Gets and sets the property Tags.
///
/// The metadata that you apply to the task to help you categorize and organize them.
/// Each tag consists of a key and an optional value, both of which you define.
///
///
///
/// 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.
///
///
///
[AWSProperty(Min=0, Max=50)]
public List Tags
{
get { return this._tags; }
set { this._tags = value; }
}
// Check to see if Tags property is set
internal bool IsSetTags()
{
return this._tags != null && this._tags.Count > 0;
}
///
/// Gets and sets the property TaskDefinition.
///
/// The family
and revision
(family:revision
) or
/// full ARN of the task definition to run. If a revision
isn't specified,
/// the latest ACTIVE
revision is used.
///
///
///
/// When you create a policy for run-task, you can set the resource to be the latest task
/// definition revision, or a specific revision.
///
///
///
/// The full ARN value must match the value that you specified as the Resource
/// of the principal's permissions policy.
///
///
///
/// When you specify the policy resource as the latest task definition version (by setting
/// the Resource
in the policy to arn:aws:ecs:us-east-1:111122223333:task-definition/TaskFamilyName
),
/// then set this value to arn:aws:ecs:us-east-1:111122223333:task-definition/TaskFamilyName
.
///
///
///
/// When you specify the policy resource as a specific task definition version (by setting
/// the Resource
in the policy to arn:aws:ecs:us-east-1:111122223333:task-definition/TaskFamilyName:1
/// or arn:aws:ecs:us-east-1:111122223333:task-definition/TaskFamilyName:*
),
/// then set this value to arn:aws:ecs:us-east-1:111122223333:task-definition/TaskFamilyName:1
.
///
///
///
/// For more information, see Policy
/// Resources for Amazon ECS in the Amazon Elastic Container Service developer Guide.
///
///
[AWSProperty(Required=true)]
public string TaskDefinition
{
get { return this._taskDefinition; }
set { this._taskDefinition = value; }
}
// Check to see if TaskDefinition property is set
internal bool IsSetTaskDefinition()
{
return this._taskDefinition != null;
}
}
}