aws-cdk-lib.aws_ecs.ExternalService

class ExternalService (construct)

LanguageType name
.NETAmazon.CDK.AWS.ECS.ExternalService
Gogithub.com/aws/aws-cdk-go/awscdk/v2/awsecs#ExternalService
Javasoftware.amazon.awscdk.services.ecs.ExternalService
Pythonaws_cdk.aws_ecs.ExternalService
TypeScript (source)aws-cdk-lib » aws_ecs » ExternalService

Implements IConstruct, IDependable, IResource, IBaseService, IService, IApplicationLoadBalancerTarget, INetworkLoadBalancerTarget, ILoadBalancerTarget, IConnectable, IExternalService

This creates a service using the External launch type on an ECS cluster.

Example

declare const cluster: ecs.Cluster;
declare const taskDefinition: ecs.TaskDefinition;

const service = new ecs.ExternalService(this, 'Service', {
  cluster,
  taskDefinition,
  desiredCount: 5,
});

Initializer

new ExternalService(scope: Construct, id: string, props: ExternalServiceProps)

Parameters

  • scope Construct
  • id string
  • props ExternalServiceProps

Constructs a new instance of the ExternalService class.

Construct Props

NameTypeDescription
clusterIClusterThe name of the cluster that hosts the service.
taskDefinitionTaskDefinitionThe task definition to use for tasks in the service.
capacityProviderStrategies?CapacityProviderStrategy[]A list of Capacity Provider strategies used to place a service.
circuitBreaker?DeploymentCircuitBreakerWhether to enable the deployment circuit breaker.
cloudMapOptions?CloudMapOptionsThe options for configuring an Amazon ECS service to use service discovery.
deploymentAlarms?DeploymentAlarmConfigThe 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?DeploymentControllerSpecifies which deployment controller to use for the service.
desiredCount?numberThe desired number of instantiations of the task definition to keep running on the service.
enableECSManagedTags?booleanSpecifies whether to enable Amazon ECS managed tags for the tasks within the service.
enableExecuteCommand?booleanWhether to enable the ability to execute into a container.
healthCheckGracePeriod?DurationThe 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?numberThe 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?numberThe 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.
propagateTags?PropagatedTagSourceSpecifies whether to propagate the tags from the task definition or the service to the tasks in the service.
securityGroups?ISecurityGroup[]The security groups to associate with the service.
serviceConnectConfiguration?ServiceConnectPropsConfiguration for Service Connect.
serviceName?stringThe name of the service.

cluster

Type: ICluster

The name of the cluster that hosts the service.


taskDefinition

Type: TaskDefinition

The task definition to use for tasks in the service.

[disable-awslint:ref-via-interface]


capacityProviderStrategies?

Type: CapacityProviderStrategy[] (optional, default: undefined)

A list of Capacity Provider strategies used to place a service.


circuitBreaker?

Type: DeploymentCircuitBreaker (optional, default: disabled)

Whether to enable the deployment circuit breaker.

If this property is defined, circuit breaker will be implicitly enabled.


cloudMapOptions?

Type: CloudMapOptions (optional, default: AWS Cloud Map service discovery is not enabled.)

The options for configuring an Amazon ECS service to use service discovery.


deploymentAlarms?

Type: DeploymentAlarmConfig (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: DeploymentController (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.


propagateTags?

Type: PropagatedTagSource (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: ISecurityGroup[] (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.


serviceConnectConfiguration?

Type: ServiceConnectProps (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.

Properties

NameTypeDescription
clusterIClusterThe cluster that hosts the service.
connectionsConnectionsThe security groups which manage the allowed network traffic for the service.
envResourceEnvironmentThe environment this resource belongs to.
nodeNodeThe tree node.
serviceArnstringThe Amazon Resource Name (ARN) of the service.
serviceNamestringThe name of the service.
stackStackThe stack in which this resource is defined.
taskDefinitionTaskDefinitionThe task definition to use for tasks in the service.
cloudMapService?IServiceThe 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: ResourceEnvironment

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: TaskDefinition

The task definition to use for tasks in the service.


cloudMapService?

Type: IService (optional)

The CloudMap service created for this service, if any.

Methods

NameDescription
applyRemovalPolicy(policy)Apply the given removal policy to this resource.
associateCloudMapService(_options)Overriden method to throw error as associateCloudMapService is not supported for external service.
attachToApplicationTargetGroup(_targetGroup)Overriden method to throw error as attachToApplicationTargetGroup is not supported for external service.
attachToClassicLB(loadBalancer)Registers the service as a target of a Classic Load Balancer (CLB).
attachToNetworkTargetGroup(targetGroup)This method is called to attach this service to a Network Load Balancer.
autoScaleTaskCount(_props)Overriden method to throw error as autoScaleTaskCount is not supported for external service.
enableCloudMap(_options)Overriden method to throw error as enableCloudMap is not supported for external service.
enableDeploymentAlarms(alarmNames, options?)Enable Deployment Alarms which take advantage of arbitrary alarms and configure them after service initialization.
enableServiceConnect(config?)Enable Service Connect on this service.
loadBalancerTarget(_options)Overriden method to throw error as loadBalancerTarget is not supported for external service.
metric(metricName, props?)This method returns the specified CloudWatch metric name for this service.
metricCpuUtilization(props?)This method returns the CloudWatch metric for this service's CPU utilization.
metricMemoryUtilization(props?)This method returns the CloudWatch metric for this service's memory utilization.
registerLoadBalancerTargets(..._targets)Overriden method to throw error as registerLoadBalancerTargets is not supported for external service.
toString()Returns a string representation of this construct.
protected configureAwsVpcNetworkingWithSecurityGroups(_vpc, _assignPublicIp?, _vpcSubnets?, _securityGroups?)Overriden method to throw error as configureAwsVpcNetworkingWithSecurityGroups is not supported for external service.
static fromExternalServiceArn(scope, id, externalServiceArn)Imports from the specified service ARN.
static fromExternalServiceAttributes(scope, id, attrs)Imports from the specified service attributes.

applyRemovalPolicy(policy)

public applyRemovalPolicy(policy: RemovalPolicy): void

Parameters

  • policy RemovalPolicy

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).


associateCloudMapService(_options)

public associateCloudMapService(_options: AssociateCloudMapServiceOptions): void

Parameters

  • _options AssociateCloudMapServiceOptions

Overriden method to throw error as associateCloudMapService is not supported for external service.


attachToApplicationTargetGroup(_targetGroup)

public attachToApplicationTargetGroup(_targetGroup: IApplicationTargetGroup): LoadBalancerTargetProps

Parameters

  • _targetGroup IApplicationTargetGroup

Returns

  • LoadBalancerTargetProps

Overriden method to throw error as attachToApplicationTargetGroup is not supported for external service.


attachToClassicLB(loadBalancer)

public attachToClassicLB(loadBalancer: LoadBalancer): void

Parameters

  • loadBalancer LoadBalancer

Registers the service as a target of a Classic Load Balancer (CLB).

Don't call this. Call loadBalancer.addTarget() instead.


attachToNetworkTargetGroup(targetGroup)

public attachToNetworkTargetGroup(targetGroup: INetworkTargetGroup): LoadBalancerTargetProps

Parameters

  • targetGroup INetworkTargetGroup

Returns

  • LoadBalancerTargetProps

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.


autoScaleTaskCount(_props)

public autoScaleTaskCount(_props: EnableScalingProps): ScalableTaskCount

Parameters

  • _props EnableScalingProps

Returns

  • ScalableTaskCount

Overriden method to throw error as autoScaleTaskCount is not supported for external service.


enableCloudMap(_options)

public enableCloudMap(_options: CloudMapOptions): Service

Parameters

  • _options CloudMapOptions

Returns

  • Service

Overriden method to throw error as enableCloudMap is not supported for external service.


enableDeploymentAlarms(alarmNames, options?)

public enableDeploymentAlarms(alarmNames: string[], options?: DeploymentAlarmOptions): void

Parameters

  • alarmNames string[]
  • options DeploymentAlarmOptions

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.


enableServiceConnect(config?)

public enableServiceConnect(config?: ServiceConnectProps): void

Parameters

  • config ServiceConnectProps

Enable Service Connect on this service.


loadBalancerTarget(_options)

public loadBalancerTarget(_options: LoadBalancerTargetOptions): IEcsLoadBalancerTarget

Parameters

  • _options LoadBalancerTargetOptions

Returns

  • IEcsLoadBalancerTarget

Overriden method to throw error as loadBalancerTarget is not supported for external service.


metric(metricName, props?)

public metric(metricName: string, props?: MetricOptions): Metric

Parameters

  • metricName string
  • props MetricOptions

Returns

  • Metric

This method returns the specified CloudWatch metric name for this service.


metricCpuUtilization(props?)

public metricCpuUtilization(props?: MetricOptions): Metric

Parameters

  • props MetricOptions

Returns

  • Metric

This method returns the CloudWatch metric for this service's CPU utilization.


metricMemoryUtilization(props?)

public metricMemoryUtilization(props?: MetricOptions): Metric

Parameters

  • props MetricOptions

Returns

  • Metric

This method returns the CloudWatch metric for this service's memory utilization.


registerLoadBalancerTargets(..._targets)

public registerLoadBalancerTargets(..._targets: EcsTarget[]): void

Parameters

  • _targets EcsTarget

Overriden method to throw error as registerLoadBalancerTargets is not supported for external service.


toString()

public toString(): string

Returns

  • string

Returns a string representation of this construct.


protected configureAwsVpcNetworkingWithSecurityGroups(_vpc, _assignPublicIp?, _vpcSubnets?, _securityGroups?)

protected configureAwsVpcNetworkingWithSecurityGroups(_vpc: IVpc, _assignPublicIp?: boolean, _vpcSubnets?: SubnetSelection, _securityGroups?: ISecurityGroup[]): void

Parameters

  • _vpc IVpc
  • _assignPublicIp boolean
  • _vpcSubnets SubnetSelection
  • _securityGroups ISecurityGroup[]

Overriden method to throw error as configureAwsVpcNetworkingWithSecurityGroups is not supported for external service.


static fromExternalServiceArn(scope, id, externalServiceArn)

public static fromExternalServiceArn(scope: Construct, id: string, externalServiceArn: string): IExternalService

Parameters

  • scope Construct
  • id string
  • externalServiceArn string

Returns

  • IExternalService

Imports from the specified service ARN.


static fromExternalServiceAttributes(scope, id, attrs)

public static fromExternalServiceAttributes(scope: Construct, id: string, attrs: ExternalServiceAttributes): IBaseService

Parameters

  • scope Construct
  • id string
  • attrs ExternalServiceAttributes

Returns

  • IBaseService

Imports from the specified service attributes.