ApplicationLoadBalancedServiceBaseProps Struct
The properties for the base ApplicationLoadBalancedEc2Service or ApplicationLoadBalancedFargateService service.
Example
// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import * as cdk from 'aws-cdk-lib';
import { aws_certificatemanager as certificatemanager } from 'aws-cdk-lib';
import { aws_ec2 as ec2 } from 'aws-cdk-lib';
import { aws_ecs as ecs } from 'aws-cdk-lib';
import { aws_ecs_patterns as ecs_patterns } from 'aws-cdk-lib';
import { aws_elasticloadbalancingv2 as elbv2 } from 'aws-cdk-lib';
import { aws_iam as iam } from 'aws-cdk-lib';
import { aws_route53 as route53 } from 'aws-cdk-lib';
import { aws_servicediscovery as servicediscovery } from 'aws-cdk-lib';
declare const applicationLoadBalancer: elbv2.ApplicationLoadBalancer;
declare const certificate: certificatemanager.Certificate;
declare const cluster: ecs.Cluster;
declare const containerDefinition: ecs.ContainerDefinition;
declare const containerImage: ecs.ContainerImage;
declare const hostedZone: route53.HostedZone;
declare const logDriver: ecs.LogDriver;
declare const namespace: servicediscovery.INamespace;
declare const role: iam.Role;
declare const secret: ecs.Secret;
declare const vpc: ec2.Vpc;
const applicationLoadBalancedServiceBaseProps: ecs_patterns.ApplicationLoadBalancedServiceBaseProps = {
capacityProviderStrategies: [{
capacityProvider: 'capacityProvider',
// the properties below are optional
base: 123,
weight: 123,
}],
certificate: certificate,
circuitBreaker: {
enable: false,
rollback: false,
},
cloudMapOptions: {
cloudMapNamespace: namespace,
container: containerDefinition,
containerPort: 123,
dnsRecordType: servicediscovery.DnsRecordType.A,
dnsTtl: cdk.Duration.minutes(30),
failureThreshold: 123,
name: 'name',
},
cluster: cluster,
deploymentController: {
type: ecs.DeploymentControllerType.ECS,
},
desiredCount: 123,
domainName: 'domainName',
domainZone: hostedZone,
enableECSManagedTags: false,
enableExecuteCommand: false,
healthCheckGracePeriod: cdk.Duration.minutes(30),
idleTimeout: cdk.Duration.minutes(30),
ipAddressType: elbv2.IpAddressType.IPV4,
listenerPort: 123,
loadBalancer: applicationLoadBalancer,
loadBalancerName: 'loadBalancerName',
maxHealthyPercent: 123,
minHealthyPercent: 123,
openListener: false,
propagateTags: ecs.PropagatedTagSource.SERVICE,
protocol: elbv2.ApplicationProtocol.HTTP,
protocolVersion: elbv2.ApplicationProtocolVersion.GRPC,
publicLoadBalancer: false,
recordType: ecs_patterns.ApplicationLoadBalancedServiceRecordType.ALIAS,
redirectHTTP: false,
serviceName: 'serviceName',
sslPolicy: elbv2.SslPolicy.RECOMMENDED_TLS,
targetProtocol: elbv2.ApplicationProtocol.HTTP,
taskImageOptions: {
image: containerImage,
// the properties below are optional
command: ['command'],
containerName: 'containerName',
containerPort: 123,
dockerLabels: {
dockerLabelsKey: 'dockerLabels',
},
enableLogging: false,
entryPoint: ['entryPoint'],
environment: {
environmentKey: 'environment',
},
executionRole: role,
family: 'family',
logDriver: logDriver,
secrets: {
secretsKey: secret,
},
taskRole: role,
},
vpc: vpc,
};
Properties
capacityProviderStrategiesCapacityProviderStrategy[]capacity_provider_strategiestyping.List[CapacityProviderStrategy]capacityProviderStrategiesList<CapacityProviderStrategy>CapacityProviderStrategiesCapacityProviderStrategy[]CapacityProviderStrategies*[]CapacityProviderStrategy= undefined#certificateICertificatecertificateICertificatecertificateICertificateCertificateICertificateCertificateICertificate= No certificate associated with t…#Setting this option will set the load balancer protocol to HTTPS.
default
Default: No certificate associated with the load balancer, if using the HTTP protocol. For HTTPS, a DNS-validated certificate will be created for the load balancer's specified domain name if a domain name and domain zone are specified.
circuitBreakerDeploymentCircuitBreakercircuit_breakerDeploymentCircuitBreakercircuitBreakerDeploymentCircuitBreakerCircuitBreakerDeploymentCircuitBreakerCircuitBreakerDeploymentCircuitBreaker= disabled#If this property is defined, circuit breaker will be implicitly enabled.
cloudMapOptionsCloudMapOptionscloud_map_optionsCloudMapOptionscloudMapOptionsCloudMapOptionsCloudMapOptionsCloudMapOptionsCloudMapOptionsCloudMapOptions= AWS Cloud Map service discovery …#default
Default: AWS Cloud Map service discovery is not enabled.
clusterIClusterclusterIClusterclusterIClusterClusterIClusterClusterICluster= create a new cluster; if both cl…#If a cluster is specified, the vpc construct should be omitted. Alternatively, you can omit both cluster and vpc.
default
Default: create a new cluster; if both cluster and vpc are omitted, a new VPC will be created for you.
deploymentControllerDeploymentControllerdeployment_controllerDeploymentControllerdeploymentControllerDeploymentControllerDeploymentControllerDeploymentControllerDeploymentControllerDeploymentController= Rolling update (ECS)#For more information, see Amazon ECS Deployment Types
desiredCountnumberdesired_countint | floatdesiredCountNumberDesiredCountdoubleDesiredCount*float64= The default is 1 for all new ser…#The minimum value is 1
default
Default: The default is 1 for all new services and uses the existing service's desired count when updating an existing service.
domainZoneIHostedZonedomain_zoneIHostedZonedomainZoneIHostedZoneDomainZoneIHostedZoneDomainZoneIHostedZone= No Route53 hosted domain zone.#enableECSManagedTagsbooleanenable_ecs_managed_tagsboolenableECSManagedTagsBooleanEnableECSManagedTagsboolEnableECSManagedTags*bool= false#For more information, see Tagging Your Amazon ECS Resources
enableExecuteCommandbooleanenable_execute_commandboolenableExecuteCommandBooleanEnableExecuteCommandboolEnableExecuteCommand*bool= false#healthCheckGracePeriodDurationhealth_check_grace_periodDurationhealthCheckGracePeriodDurationHealthCheckGracePeriodDurationHealthCheckGracePeriodDuration= defaults to 60 seconds if at lea…#default
Default: defaults to 60 seconds if at least one load balancer is in-use and it is not already set
idleTimeoutDurationidle_timeoutDurationidleTimeoutDurationIdleTimeoutDurationIdleTimeoutDuration= CloudFormation sets idle timeout…#Can be between 1 and 4000 seconds
default
Default: CloudFormation sets idle timeout to 60 seconds
ipAddressTypeIpAddressTypeip_address_typeIpAddressTypeipAddressTypeIpAddressTypeIpAddressTypeIpAddressTypeIpAddressTypeIpAddressType= IpAddressType.IPV4#listenerPortnumberlistener_portint | floatlistenerPortNumberListenerPortdoubleListenerPort*float64= The default listener port is det…#default
Default: The default listener port is determined from the protocol (port 80 for HTTP, port 443 for HTTPS). A domain name and zone must be also be specified if using HTTPS.
loadBalancerIApplicationLoadBalancerload_balancerIApplicationLoadBalancerloadBalancerIApplicationLoadBalancerLoadBalancerIApplicationLoadBalancerLoadBalancerIApplicationLoadBalancer= a new load balancer will be crea…#The VPC attribute of a load balancer must be specified for it to be used to create a new service with this pattern.
[disable-awslint:ref-via-interface]
default
Default: a new load balancer will be created.
loadBalancerNamestringload_balancer_namestrloadBalancerNameStringLoadBalancerNamestringLoadBalancerName*string= Automatically generated name.#maxHealthyPercentnumbermax_healthy_percentint | floatmaxHealthyPercentNumberMaxHealthyPercentdoubleMaxHealthyPercent*float64= 100 if daemon, otherwise 200#minHealthyPercentnumbermin_healthy_percentint | floatminHealthyPercentNumberMinHealthyPercentdoubleMinHealthyPercent*float64= 0 if daemon, otherwise 50#openListenerbooleanopen_listenerboolopenListenerBooleanOpenListenerboolOpenListener*bool= true -- The security group allow…#default
Default: true -- The security group allows ingress from all IP addresses.
propagateTagsPropagatedTagSourcepropagate_tagsPropagatedTagSourcepropagateTagsPropagatedTagSourcePropagateTagsPropagatedTagSourcePropagateTagsPropagatedTagSource= none#Tags can only be propagated to the tasks within the service during service creation.
protocolApplicationProtocolprotocolApplicationProtocolprotocolApplicationProtocolProtocolApplicationProtocolProtocolApplicationProtocol= HTTP. If a certificate is specif…#The load balancer port is determined from the protocol (port 80 for HTTP, port 443 for HTTPS). If HTTPS, either a certificate or domain name and domain zone must also be specified.
default
Default: HTTP. If a certificate is specified, the protocol will be set by default to HTTPS.
protocolVersionApplicationProtocolVersionprotocol_versionApplicationProtocolVersionprotocolVersionApplicationProtocolVersionProtocolVersionApplicationProtocolVersionProtocolVersionApplicationProtocolVersion= ApplicationProtocolVersion.HTTP1#publicLoadBalancerbooleanpublic_load_balancerboolpublicLoadBalancerBooleanPublicLoadBalancerboolPublicLoadBalancer*bool= true#recordTypeApplicationLoadBalancedServiceRecordTyperecord_typeApplicationLoadBalancedServiceRecordTyperecordTypeApplicationLoadBalancedServiceRecordTypeRecordTypeApplicationLoadBalancedServiceRecordTypeRecordTypeApplicationLoadBalancedServiceRecordType= ApplicationLoadBalancedServiceRe…#This is useful if you need to work with DNS systems that do not support alias records.
default
Default: ApplicationLoadBalancedServiceRecordType.ALIAS
This is only valid if the protocol of the ALB is HTTPS.
serviceNamestringservice_namestrserviceNameStringServiceNamestringServiceName*string= CloudFormation-generated name.#sslPolicySslPolicyssl_policySslPolicysslPolicySslPolicySslPolicySslPolicySslPolicySslPolicy= The recommended elastic load bal…#default
Default: The recommended elastic load balancing security policy
targetProtocolApplicationProtocoltarget_protocolApplicationProtocoltargetProtocolApplicationProtocolTargetProtocolApplicationProtocolTargetProtocolApplicationProtocol= HTTP.#The default target port is determined from the protocol (port 80 for HTTP, port 443 for HTTPS).
taskImageOptionsApplicationLoadBalancedTaskImageOptionstask_image_optionsApplicationLoadBalancedTaskImageOptionstaskImageOptionsApplicationLoadBalancedTaskImageOptionsTaskImageOptionsApplicationLoadBalancedTaskImageOptionsTaskImageOptionsApplicationLoadBalancedTaskImageOptions= none#TaskDefinition or TaskImageOptions must be specified, but not both.
If a vpc is specified, the cluster construct should be omitted. Alternatively, you can omit both vpc and cluster.
default
Default: uses the VPC defined in the cluster or creates a new VPC.