class Ec2Service (construct)
Language | Type name |
---|---|
.NET | Amazon.CDK.AWS.ECS.Ec2Service |
Go | github.com/aws/aws-cdk-go/awscdk/v2/awsecs#Ec2Service |
Java | software.amazon.awscdk.services.ecs.Ec2Service |
Python | aws_cdk.aws_ecs.Ec2Service |
TypeScript (source) | aws-cdk-lib » aws_ecs » Ec2Service |
Implements
IConstruct
, IDependable
, IResource
, IBase
, IService
, IApplication
, INetwork
, ILoad
, IConnectable
, IEc2
This creates a service using the EC2 launch type on an ECS cluster.
Example
declare const cluster: ecs.Cluster;
declare const taskDefinition: ecs.TaskDefinition;
declare const vpc: ec2.Vpc;
const service = new ecs.Ec2Service(this, 'Service', { cluster, taskDefinition });
const lb = new elb.LoadBalancer(this, 'LB', { vpc });
lb.addListener({ externalPort: 80 });
lb.addTarget(service.loadBalancerTarget({
containerName: 'MyContainer',
containerPort: 80,
}));
Initializer
new Ec2Service(scope: Construct, id: string, props: Ec2ServiceProps)
Parameters
- scope
Construct
- id
string
- props
Ec2
Service Props
Constructs a new instance of the Ec2Service class.
Construct Props
Name | Type | Description |
---|---|---|
cluster | ICluster | The name of the cluster that hosts the service. |
task | Task | The task definition to use for tasks in the service. |
assign | boolean | Specifies whether the task's elastic network interface receives a public IP address. |
capacity | Capacity [] | A list of Capacity Provider strategies used to place a service. |
circuit | Deployment | Whether to enable the deployment circuit breaker. |
cloud | Cloud | The options for configuring an Amazon ECS service to use service discovery. |
daemon? | boolean | Specifies whether the service will use the daemon scheduling strategy. |
deployment | Deployment | The alarm(s) to monitor during deployment, and behavior to apply if at least one enters a state of alarm during the deployment or bake time. |
deployment | Deployment | Specifies which deployment controller to use for the service. |
desired | number | The desired number of instantiations of the task definition to keep running on the service. |
enable | boolean | Specifies whether to enable Amazon ECS managed tags for the tasks within the service. |
enable | boolean | Whether to enable the ability to execute into a container. |
health | Duration | The period of time, in seconds, that the Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing target health checks after a task has first started. |
max | number | The maximum number of tasks, specified as a percentage of the Amazon ECS service's DesiredCount value, that can run in a service during a deployment. |
min | number | The minimum number of tasks, specified as a percentage of the Amazon ECS service's DesiredCount value, that must continue to run and remain healthy during a deployment. |
placement | Placement [] | The placement constraints to use for tasks in the service. |
placement | Placement [] | The placement strategies to use for tasks in the service. |
propagate | Propagated | Specifies whether to propagate the tags from the task definition or the service to the tasks in the service. |
security | ISecurity [] | The security groups to associate with the service. |
service | Service | Configuration for Service Connect. |
service | string | The name of the service. |
task | Task | Revision number for the task definition or latest to use the latest active task revision. |
volume | Service [] | Configuration details for a volume used by the service. |
vpc | Subnet | The subnets to associate with the service. |
cluster
Type:
ICluster
The name of the cluster that hosts the service.
taskDefinition
Type:
Task
The task definition to use for tasks in the service.
[disable-awslint:ref-via-interface]
assignPublicIp?
Type:
boolean
(optional, default: false)
Specifies whether the task's elastic network interface receives a public IP address.
If true, each task will receive a public IP address.
This property is only used for tasks that use the awsvpc network mode.
capacityProviderStrategies?
Type:
Capacity
[]
(optional, default: undefined)
A list of Capacity Provider strategies used to place a service.
circuitBreaker?
Type:
Deployment
(optional, default: disabled)
Whether to enable the deployment circuit breaker.
If this property is defined, circuit breaker will be implicitly enabled.
cloudMapOptions?
Type:
Cloud
(optional, default: AWS Cloud Map service discovery is not enabled.)
The options for configuring an Amazon ECS service to use service discovery.
daemon?
Type:
boolean
(optional, default: false)
Specifies whether the service will use the daemon scheduling strategy.
If true, the service scheduler deploys exactly one task on each container instance in your cluster.
When you are using this strategy, do not specify a desired number of tasks or any task placement strategies.
deploymentAlarms?
Type:
Deployment
(optional, default: No alarms will be monitored during deployment.)
The alarm(s) to monitor during deployment, and behavior to apply if at least one enters a state of alarm during the deployment or bake time.
deploymentController?
Type:
Deployment
(optional, default: Rolling update (ECS))
Specifies which deployment controller to use for the service.
For more information, see Amazon ECS Deployment Types
desiredCount?
Type:
number
(optional, default: When creating the service, default is 1; when updating the service, default uses
the current task number.)
The desired number of instantiations of the task definition to keep running on the service.
enableECSManagedTags?
Type:
boolean
(optional, default: false)
Specifies whether to enable Amazon ECS managed tags for the tasks within the service.
For more information, see Tagging Your Amazon ECS Resources
enableExecuteCommand?
Type:
boolean
(optional, default: undefined)
Whether to enable the ability to execute into a container.
healthCheckGracePeriod?
Type:
Duration
(optional, default: defaults to 60 seconds if at least one load balancer is in-use and it is not already set)
The period of time, in seconds, that the Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing target health checks after a task has first started.
maxHealthyPercent?
Type:
number
(optional, default: 100 if daemon, otherwise 200)
The maximum number of tasks, specified as a percentage of the Amazon ECS service's DesiredCount value, that can run in a service during a deployment.
minHealthyPercent?
Type:
number
(optional, default: 0 if daemon, otherwise 50)
The minimum number of tasks, specified as a percentage of the Amazon ECS service's DesiredCount value, that must continue to run and remain healthy during a deployment.
placementConstraints?
Type:
Placement
[]
(optional, default: No constraints.)
The placement constraints to use for tasks in the service.
For more information, see Amazon ECS Task Placement Constraints.
placementStrategies?
Type:
Placement
[]
(optional, default: No strategies.)
The placement strategies to use for tasks in the service.
For more information, see Amazon ECS Task Placement Strategies.
propagateTags?
Type:
Propagated
(optional, default: PropagatedTagSource.NONE)
Specifies whether to propagate the tags from the task definition or the service to the tasks in the service.
Valid values are: PropagatedTagSource.SERVICE, PropagatedTagSource.TASK_DEFINITION or PropagatedTagSource.NONE
securityGroups?
Type:
ISecurity
[]
(optional, default: A new security group is created.)
The security groups to associate with the service.
If you do not specify a security group, a new security group is created.
This property is only used for tasks that use the awsvpc network mode.
serviceConnectConfiguration?
Type:
Service
(optional, default: No ports are advertised via Service Connect on this service, and the service
cannot make requests to other services via Service Connect.)
Configuration for Service Connect.
serviceName?
Type:
string
(optional, default: CloudFormation-generated name.)
The name of the service.
taskDefinitionRevision?
Type:
Task
(optional, default: Uses the revision of the passed task definition deployed by CloudFormation)
Revision number for the task definition or latest
to use the latest active task revision.
volumeConfigurations?
Type:
Service
[]
(optional, default: undefined)
Configuration details for a volume used by the service.
This allows you to specify details about the EBS volume that can be attched to ECS tasks.
vpcSubnets?
Type:
Subnet
(optional, default: Public subnets if assignPublicIp
is set, otherwise the first available one of Private, Isolated, Public, in that order.)
The subnets to associate with the service.
This property is only used for tasks that use the awsvpc network mode.
Properties
Name | Type | Description |
---|---|---|
cluster | ICluster | The cluster that hosts the service. |
connections | Connections | The security groups which manage the allowed network traffic for the service. |
env | Resource | The environment this resource belongs to. |
node | Node | The tree node. |
service | string | The Amazon Resource Name (ARN) of the service. |
service | string | The name of the service. |
stack | Stack | The stack in which this resource is defined. |
task | Task | The task definition to use for tasks in the service. |
cloud | IService | The CloudMap service created for this service, if any. |
cluster
Type:
ICluster
The cluster that hosts the service.
connections
Type:
Connections
The security groups which manage the allowed network traffic for the service.
env
Type:
Resource
The environment this resource belongs to.
For resources that are created and managed by the CDK (generally, those created by creating new class instances like Role, Bucket, etc.), this is always the same as the environment of the stack they belong to; however, for imported resources (those obtained from static methods like fromRoleArn, fromBucketName, etc.), that might be different than the stack they were imported into.
node
Type:
Node
The tree node.
serviceArn
Type:
string
The Amazon Resource Name (ARN) of the service.
serviceName
Type:
string
The name of the service.
stack
Type:
Stack
The stack in which this resource is defined.
taskDefinition
Type:
Task
The task definition to use for tasks in the service.
cloudMapService?
Type:
IService
(optional)
The CloudMap service created for this service, if any.
Methods
Name | Description |
---|---|
add | Adds one or more placement constraints to use for tasks in the service. |
add | Adds one or more placement strategies to use for tasks in the service. |
add | Adds a volume to the Service. |
apply | Apply the given removal policy to this resource. |
associate | Associates this service with a CloudMap service. |
attach | This method is called to attach this service to an Application Load Balancer. |
attach | Registers the service as a target of a Classic Load Balancer (CLB). |
attach | This method is called to attach this service to a Network Load Balancer. |
auto | An attribute representing the minimum and maximum task count for an AutoScalingGroup. |
enable | Enable CloudMap service discovery for the service. |
enable | Enable Deployment Alarms which take advantage of arbitrary alarms and configure them after service initialization. |
enable | Enable Service Connect on this service. |
load | Return a load balancing target for a specific container and port. |
metric(metricName, props?) | This method returns the specified CloudWatch metric name for this service. |
metric | This method returns the CloudWatch metric for this service's CPU utilization. |
metric | This method returns the CloudWatch metric for this service's memory utilization. |
register | Use this function to create all load balancer targets to be registered in this service, add them to target groups, and attach target groups to listeners accordingly. |
to | Returns a string representation of this construct. |
static from | Imports from the specified service ARN. |
static from | Imports from the specified service attributes. |
PlacementConstraints(...constraints)
addpublic addPlacementConstraints(...constraints: PlacementConstraint[]): void
Parameters
- constraints
Placement
Constraint
Adds one or more placement constraints to use for tasks in the service.
For more information, see Amazon ECS Task Placement Constraints.
PlacementStrategies(...strategies)
addpublic addPlacementStrategies(...strategies: PlacementStrategy[]): void
Parameters
- strategies
Placement
Strategy
Adds one or more placement strategies to use for tasks in the service.
For more information, see Amazon ECS Task Placement Strategies.
Volume(volume)
addpublic addVolume(volume: ServiceManagedVolume): void
Parameters
- volume
Service
Managed Volume
Adds a volume to the Service.
RemovalPolicy(policy)
applypublic applyRemovalPolicy(policy: RemovalPolicy): void
Parameters
- policy
Removal
Policy
Apply the given removal policy to this resource.
The Removal Policy controls what happens to this resource when it stops being managed by CloudFormation, either because you've removed it from the CDK application or because you've made a change that requires the resource to be replaced.
The resource can be deleted (RemovalPolicy.DESTROY
), or left in your AWS
account for data recovery and cleanup later (RemovalPolicy.RETAIN
).
CloudMapService(options)
associatepublic associateCloudMapService(options: AssociateCloudMapServiceOptions): void
Parameters
- options
Associate
Cloud Map Service Options
Associates this service with a CloudMap service.
ToApplicationTargetGroup(targetGroup)
attachpublic attachToApplicationTargetGroup(targetGroup: IApplicationTargetGroup): LoadBalancerTargetProps
Parameters
- targetGroup
IApplication
Target Group
Returns
This method is called to attach this service to an Application Load Balancer.
Don't call this function directly. Instead, call listener.addTargets()
to add this service to a load balancer.
ToClassicLB(loadBalancer)
attachpublic attachToClassicLB(loadBalancer: LoadBalancer): void
Parameters
- loadBalancer
Load
Balancer
Registers the service as a target of a Classic Load Balancer (CLB).
Don't call this. Call loadBalancer.addTarget()
instead.
ToNetworkTargetGroup(targetGroup)
attachpublic attachToNetworkTargetGroup(targetGroup: INetworkTargetGroup): LoadBalancerTargetProps
Parameters
- targetGroup
INetwork
Target Group
Returns
This method is called to attach this service to a Network Load Balancer.
Don't call this function directly. Instead, call listener.addTargets()
to add this service to a load balancer.
ScaleTaskCount(props)
autopublic autoScaleTaskCount(props: EnableScalingProps): ScalableTaskCount
Parameters
- props
Enable
Scaling Props
Returns
An attribute representing the minimum and maximum task count for an AutoScalingGroup.
CloudMap(options)
enablepublic enableCloudMap(options: CloudMapOptions): Service
Parameters
- options
Cloud
Map Options
Returns
Enable CloudMap service discovery for the service.
DeploymentAlarms(alarmNames, options?)
enablepublic enableDeploymentAlarms(alarmNames: string[], options?: DeploymentAlarmOptions): void
Parameters
- alarmNames
string[]
- options
Deployment
Alarm Options
Enable Deployment Alarms which take advantage of arbitrary alarms and configure them after service initialization.
If you have already enabled deployment alarms, this function can be used to tell ECS about additional alarms that should interrupt a deployment.
New alarms specified in subsequent calls of this function will be appended to the existing list of alarms.
The same Alarm Behavior must be used on all deployment alarms. If you specify different AlarmBehavior values in multiple calls to this function, or the Alarm Behavior used here doesn't match the one used in the service constructor, an error will be thrown.
If the alarm's metric references the service, you cannot pass Alarm.alarmName
here. That will cause a circular
dependency between the service and its deployment alarm. See this package's README for options to alarm on service
metrics, and avoid this circular dependency.
ServiceConnect(config?)
enablepublic enableServiceConnect(config?: ServiceConnectProps): void
Parameters
- config
Service
Connect Props
Enable Service Connect on this service.
BalancerTarget(options)
loadpublic loadBalancerTarget(options: LoadBalancerTargetOptions): IEcsLoadBalancerTarget
Parameters
- options
Load
Balancer Target Options
Returns
Return a load balancing target for a specific container and port.
Use this function to create a load balancer target if you want to load balance to another container than the first essential container or the first mapped port on the container.
Use the return value of this function where you would normally use a load balancer
target, instead of the Service
object itself.
Example
declare const listener: elbv2.ApplicationListener;
declare const service: ecs.BaseService;
listener.addTargets('ECS', {
port: 80,
targets: [service.loadBalancerTarget({
containerName: 'MyContainer',
containerPort: 1234,
})],
});
metric(metricName, props?)
public metric(metricName: string, props?: MetricOptions): Metric
Parameters
- metricName
string
- props
Metric
Options
Returns
This method returns the specified CloudWatch metric name for this service.
CpuUtilization(props?)
metricpublic metricCpuUtilization(props?: MetricOptions): Metric
Parameters
- props
Metric
Options
Returns
This method returns the CloudWatch metric for this service's CPU utilization.
MemoryUtilization(props?)
metricpublic metricMemoryUtilization(props?: MetricOptions): Metric
Parameters
- props
Metric
Options
Returns
This method returns the CloudWatch metric for this service's memory utilization.
LoadBalancerTargets(...targets)
registerpublic registerLoadBalancerTargets(...targets: EcsTarget[]): void
Parameters
- targets
Ecs
Target
Use this function to create all load balancer targets to be registered in this service, add them to target groups, and attach target groups to listeners accordingly.
Alternatively, you can use listener.addTargets()
to create targets and add them to target groups.
Example
declare const listener: elbv2.ApplicationListener;
declare const service: ecs.BaseService;
service.registerLoadBalancerTargets(
{
containerName: 'web',
containerPort: 80,
newTargetGroupId: 'ECS',
listener: ecs.ListenerConfig.applicationListener(listener, {
protocol: elbv2.ApplicationProtocol.HTTPS
}),
},
)
String()
topublic toString(): string
Returns
string
Returns a string representation of this construct.
Ec2ServiceArn(scope, id, ec2ServiceArn)
static frompublic static fromEc2ServiceArn(scope: Construct, id: string, ec2ServiceArn: string): IEc2Service
Parameters
- scope
Construct
- id
string
- ec2ServiceArn
string
Returns
Imports from the specified service ARN.
Ec2ServiceAttributes(scope, id, attrs)
static frompublic static fromEc2ServiceAttributes(scope: Construct, id: string, attrs: Ec2ServiceAttributes): IBaseService
Parameters
- scope
Construct
- id
string
- attrs
Ec2
Service Attributes
Returns
Imports from the specified service attributes.