interface ApplicationLoadBalancedTaskImageProps
Language | Type name |
---|---|
![]() | Amazon.CDK.AWS.ECS.Patterns.ApplicationLoadBalancedTaskImageProps |
![]() | github.com/aws/aws-cdk-go/awscdk/v2/awsecspatterns#ApplicationLoadBalancedTaskImageProps |
![]() | software.amazon.awscdk.services.ecs.patterns.ApplicationLoadBalancedTaskImageProps |
![]() | aws_cdk.aws_ecs_patterns.ApplicationLoadBalancedTaskImageProps |
![]() | 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
Name | Type | Description |
---|---|---|
image | Container | The image used to start a container. |
container | string | The container name value to be specified in the task definition. |
container | number[] | A list of port numbers on the container that is bound to the user-specified or automatically assigned host port. |
docker | { [string]: string } | A key/value map of labels to add to the container. |
enable | boolean | Flag to indicate whether to enable logging. |
environment? | { [string]: string } | The environment variables to pass to the container. |
execution | IRole | The name of the task execution IAM role that grants the Amazon ECS container agent permission to call AWS APIs on your behalf. |
family? | string | The name of a family that this task definition is registered to. |
log | Log | The log driver to use. |
secrets? | { [string]: Secret } | The secrets to expose to the container as an environment variable. |
task | IRole | The name of the task IAM role that grants containers in the task permission to call AWS APIs on your behalf. |
image
Type:
Container
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:
Log
(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.