aws-cdk-lib.aws_ecs_patterns.ApplicationLoadBalancedTaskImageProps

interface ApplicationLoadBalancedTaskImageProps

LanguageType name
.NETAmazon.CDK.AWS.ECS.Patterns.ApplicationLoadBalancedTaskImageProps
Gogithub.com/aws/aws-cdk-go/awscdk/v2/awsecspatterns#ApplicationLoadBalancedTaskImageProps
Javasoftware.amazon.awscdk.services.ecs.patterns.ApplicationLoadBalancedTaskImageProps
Pythonaws_cdk.aws_ecs_patterns.ApplicationLoadBalancedTaskImageProps
TypeScript (source)aws-cdk-lib » aws_ecs_patterns » ApplicationLoadBalancedTaskImageProps

Options for configuring a new container.

Example

import { Certificate } from 'aws-cdk-lib/aws-certificatemanager';
import { InstanceType } from 'aws-cdk-lib/aws-ec2';
import { Cluster, ContainerImage } from 'aws-cdk-lib/aws-ecs';
import { ApplicationProtocol, SslPolicy } from 'aws-cdk-lib/aws-elasticloadbalancingv2';
import { PublicHostedZone } from 'aws-cdk-lib/aws-route53';
const vpc = new ec2.Vpc(this, 'Vpc', { maxAzs: 1 });
const loadBalancedFargateService = new ecsPatterns.ApplicationMultipleTargetGroupsFargateService(this, 'myService', {
  cluster: new ecs.Cluster(this, 'EcsCluster', { vpc }),
  memoryLimitMiB: 256,
  taskImageOptions: {
    image: ecs.ContainerImage.fromRegistry('amazon/amazon-ecs-sample'),
  },
  enableExecuteCommand: true,
  loadBalancers: [
    {
      name: 'lb',
      idleTimeout: Duration.seconds(400),
      domainName: 'api.example.com',
      domainZone: new PublicHostedZone(this, 'HostedZone', { zoneName: 'example.com' }),
      listeners: [
        {
          name: 'listener',
          protocol: ApplicationProtocol.HTTPS,
          certificate: Certificate.fromCertificateArn(this, 'Cert', 'helloworld'),
          sslPolicy: SslPolicy.TLS12_EXT,
        },
      ],
    },
    {
      name: 'lb2',
      idleTimeout: Duration.seconds(120),
      domainName: 'frontend.com',
      domainZone: new PublicHostedZone(this, 'HostedZone', { zoneName: 'frontend.com' }),
      listeners: [
        {
          name: 'listener2',
          protocol: ApplicationProtocol.HTTPS,
          certificate: Certificate.fromCertificateArn(this, 'Cert2', 'helloworld'),
          sslPolicy: SslPolicy.TLS12_EXT,
        },
      ],
    },
  ],
  targetGroups: [
    {
      containerPort: 80,
      listener: 'listener',
    },
    {
      containerPort: 90,
      pathPattern: 'a/b/c',
      priority: 10,
      listener: 'listener',
    },
    {
      containerPort: 443,
      listener: 'listener2',
    },
    {
      containerPort: 80,
      pathPattern: 'a/b/c',
      priority: 10,
      listener: 'listener2',
    },
  ],
});

Properties

NameTypeDescription
imageContainerImageThe image used to start a container.
containerName?stringThe container name value to be specified in the task definition.
containerPorts?number[]A list of port numbers on the container that is bound to the user-specified or automatically assigned host port.
dockerLabels?{ [string]: string }A key/value map of labels to add to the container.
enableLogging?booleanFlag to indicate whether to enable logging.
environment?{ [string]: string }The environment variables to pass to the container.
executionRole?IRoleThe name of the task execution IAM role that grants the Amazon ECS container agent permission to call AWS APIs on your behalf.
family?stringThe name of a family that this task definition is registered to.
logDriver?LogDriverThe log driver to use.
secrets?{ [string]: Secret }The secrets to expose to the container as an environment variable.
taskRole?IRoleThe name of the task IAM role that grants containers in the task permission to call AWS APIs on your behalf.

image

Type: ContainerImage

The image used to start a container.

Image or taskDefinition must be specified, not both.


containerName?

Type: string (optional, default: web)

The container name value to be specified in the task definition.


containerPorts?

Type: number[] (optional, default: [80])

A list of port numbers on the container that is bound to the user-specified or automatically assigned host port.

If you are using containers in a task with the awsvpc or host network mode, exposed ports should be specified using containerPort. If you are using containers in a task with the bridge network mode and you specify a container port and not a host port, your container automatically receives a host port in the ephemeral port range.

Port mappings that are automatically assigned in this way do not count toward the 100 reserved ports limit of a container instance.

For more information, see hostPort.


dockerLabels?

Type: { [string]: string } (optional, default: No labels.)

A key/value map of labels to add to the container.


enableLogging?

Type: boolean (optional, default: true)

Flag to indicate whether to enable logging.


environment?

Type: { [string]: string } (optional, default: No environment variables.)

The environment variables to pass to the container.


executionRole?

Type: IRole (optional, default: No value)

The name of the task execution IAM role that grants the Amazon ECS container agent permission to call AWS APIs on your behalf.


family?

Type: string (optional, default: Automatically generated name.)

The name of a family that this task definition is registered to.

A family groups multiple versions of a task definition.


logDriver?

Type: LogDriver (optional, default: AwsLogDriver if enableLogging is true)

The log driver to use.


secrets?

Type: { [string]: Secret } (optional, default: No secret environment variables.)

The secrets to expose to the container as an environment variable.


taskRole?

Type: IRole (optional, default: A task role is automatically created for you.)

The name of the task IAM role that grants containers in the task permission to call AWS APIs on your behalf.