aws-cdk-lib 2.205.0__py3-none-any.whl → 2.206.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of aws-cdk-lib might be problematic. Click here for more details.
- aws_cdk/_jsii/__init__.py +1 -1
- aws_cdk/_jsii/{aws-cdk-lib@2.205.0.jsii.tgz → aws-cdk-lib@2.206.0.jsii.tgz} +0 -0
- aws_cdk/aws_ecs/__init__.py +706 -194
- aws_cdk/custom_resources/__init__.py +32 -4
- {aws_cdk_lib-2.205.0.dist-info → aws_cdk_lib-2.206.0.dist-info}/METADATA +1 -1
- {aws_cdk_lib-2.205.0.dist-info → aws_cdk_lib-2.206.0.dist-info}/RECORD +10 -10
- {aws_cdk_lib-2.205.0.dist-info → aws_cdk_lib-2.206.0.dist-info}/LICENSE +0 -0
- {aws_cdk_lib-2.205.0.dist-info → aws_cdk_lib-2.206.0.dist-info}/NOTICE +0 -0
- {aws_cdk_lib-2.205.0.dist-info → aws_cdk_lib-2.206.0.dist-info}/WHEEL +0 -0
- {aws_cdk_lib-2.205.0.dist-info → aws_cdk_lib-2.206.0.dist-info}/top_level.txt +0 -0
aws_cdk/aws_ecs/__init__.py
CHANGED
|
@@ -2112,7 +2112,96 @@ service = ecs.FargateService(self, "FargateService",
|
|
|
2112
2112
|
)
|
|
2113
2113
|
```
|
|
2114
2114
|
|
|
2115
|
-
##
|
|
2115
|
+
## ECS Native Blue/Green Deployment
|
|
2116
|
+
|
|
2117
|
+
Amazon ECS supports native blue/green deployments that allow you to deploy new versions of your services with zero downtime. This deployment strategy creates a new set of tasks (green) alongside the existing tasks (blue), then shifts traffic from the old version to the new version.
|
|
2118
|
+
|
|
2119
|
+
[Amazon ECS blue/green deployments](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-blue-green.html)
|
|
2120
|
+
|
|
2121
|
+
### Using Escape Hatches for Blue/Green Features
|
|
2122
|
+
|
|
2123
|
+
The new blue/green deployment features are added to CloudFormation but not yet available in the CDK L2 constructs, you can use escape hatches to access them through the L1 (CfnService) construct.
|
|
2124
|
+
|
|
2125
|
+
#### Load Balancer Advanced Configuration
|
|
2126
|
+
|
|
2127
|
+
Configure advanced load balancer settings for blue/green deployments with alternate target groups and listener rules:
|
|
2128
|
+
|
|
2129
|
+
```python
|
|
2130
|
+
# service: ecs.FargateService
|
|
2131
|
+
|
|
2132
|
+
|
|
2133
|
+
cfn_service = service.node.default_child
|
|
2134
|
+
cfn_service.load_balancers = [ecs.CfnService.LoadBalancerProperty(
|
|
2135
|
+
container_name="web",
|
|
2136
|
+
container_port=80,
|
|
2137
|
+
target_group_arn="arn:aws:elasticloadbalancing:region:account:targetgroup/production",
|
|
2138
|
+
advanced_configuration=ecs.CfnService.AdvancedConfigurationProperty(
|
|
2139
|
+
alternate_target_group_arn="arn:aws:elasticloadbalancing:region:account:targetgroup/test",
|
|
2140
|
+
production_listener_rule="arn:aws:elasticloadbalancing:region:account:listener-rule/production-rule",
|
|
2141
|
+
test_listener_rule="arn:aws:elasticloadbalancing:region:account:listener-rule/test-rule",
|
|
2142
|
+
role_arn="arn:aws:iam::account:role/ecs-blue-green-role"
|
|
2143
|
+
)
|
|
2144
|
+
)]
|
|
2145
|
+
```
|
|
2146
|
+
|
|
2147
|
+
#### Blue/Green Deployment Configuration
|
|
2148
|
+
|
|
2149
|
+
Configure deployment strategy with bake time and lifecycle hooks:
|
|
2150
|
+
|
|
2151
|
+
```python
|
|
2152
|
+
# service: ecs.FargateService
|
|
2153
|
+
|
|
2154
|
+
|
|
2155
|
+
cfn_service = service.node.default_child
|
|
2156
|
+
cfn_service.deployment_configuration = ecs.CfnService.DeploymentConfigurationProperty(
|
|
2157
|
+
maximum_percent=200,
|
|
2158
|
+
minimum_healthy_percent=100,
|
|
2159
|
+
strategy="BLUE_GREEN",
|
|
2160
|
+
bake_time_in_minutes=15,
|
|
2161
|
+
lifecycle_hooks=[ecs.CfnService.DeploymentLifecycleHookProperty(
|
|
2162
|
+
hook_target_arn="arn:aws:lambda:region:account:function:pre-deployment-hook",
|
|
2163
|
+
role_arn="arn:aws:iam::account:role/deployment-hook-role",
|
|
2164
|
+
lifecycle_stages=["PRE_STOP", "POST_START"]
|
|
2165
|
+
)]
|
|
2166
|
+
)
|
|
2167
|
+
```
|
|
2168
|
+
|
|
2169
|
+
#### Service Connect Test Traffic Rules
|
|
2170
|
+
|
|
2171
|
+
Configure test traffic routing for Service Connect during blue/green deployments:
|
|
2172
|
+
|
|
2173
|
+
```python
|
|
2174
|
+
# cluster: ecs.Cluster
|
|
2175
|
+
# task_definition: ecs.TaskDefinition
|
|
2176
|
+
|
|
2177
|
+
|
|
2178
|
+
service = ecs.FargateService(self, "Service",
|
|
2179
|
+
cluster=cluster,
|
|
2180
|
+
task_definition=task_definition
|
|
2181
|
+
)
|
|
2182
|
+
|
|
2183
|
+
cfn_service = service.node.default_child
|
|
2184
|
+
cfn_service.service_connect_configuration = ecs.CfnService.ServiceConnectConfigurationProperty(
|
|
2185
|
+
enabled=True,
|
|
2186
|
+
services=[ecs.CfnService.ServiceConnectServiceProperty(
|
|
2187
|
+
port_name="api",
|
|
2188
|
+
client_aliases=[ecs.CfnService.ServiceConnectClientAliasProperty(
|
|
2189
|
+
port=80,
|
|
2190
|
+
dns_name="my-service",
|
|
2191
|
+
test_traffic_rules=ecs.CfnService.ServiceConnectTestTrafficRulesProperty(
|
|
2192
|
+
header=ecs.CfnService.ServiceConnectTestTrafficRulesHeaderProperty(
|
|
2193
|
+
name="x-canary-test",
|
|
2194
|
+
value=ecs.CfnService.ServiceConnectTestTrafficRulesHeaderValueProperty(
|
|
2195
|
+
exact="beta-version"
|
|
2196
|
+
)
|
|
2197
|
+
)
|
|
2198
|
+
)
|
|
2199
|
+
)]
|
|
2200
|
+
)]
|
|
2201
|
+
)
|
|
2202
|
+
```
|
|
2203
|
+
|
|
2204
|
+
## Daemon Scheduling Strategy
|
|
2116
2205
|
|
|
2117
2206
|
You can specify whether service use Daemon scheduling strategy by specifying `daemon` option in Service constructs. See [differences between Daemon and Replica scheduling strategy](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html)
|
|
2118
2207
|
|
|
@@ -8553,159 +8642,23 @@ class CfnService(
|
|
|
8553
8642
|
|
|
8554
8643
|
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html
|
|
8555
8644
|
:cloudformationResource: AWS::ECS::Service
|
|
8556
|
-
:exampleMetadata:
|
|
8645
|
+
:exampleMetadata: infused
|
|
8557
8646
|
|
|
8558
8647
|
Example::
|
|
8559
8648
|
|
|
8560
|
-
#
|
|
8561
|
-
# The values are placeholders you should change.
|
|
8562
|
-
from aws_cdk import aws_ecs as ecs
|
|
8563
|
-
|
|
8564
|
-
cfn_service = ecs.CfnService(self, "MyCfnService",
|
|
8565
|
-
availability_zone_rebalancing="availabilityZoneRebalancing",
|
|
8566
|
-
capacity_provider_strategy=[ecs.CfnService.CapacityProviderStrategyItemProperty(
|
|
8567
|
-
base=123,
|
|
8568
|
-
capacity_provider="capacityProvider",
|
|
8569
|
-
weight=123
|
|
8570
|
-
)],
|
|
8571
|
-
cluster="cluster",
|
|
8572
|
-
deployment_configuration=ecs.CfnService.DeploymentConfigurationProperty(
|
|
8573
|
-
alarms=ecs.CfnService.DeploymentAlarmsProperty(
|
|
8574
|
-
alarm_names=["alarmNames"],
|
|
8575
|
-
enable=False,
|
|
8576
|
-
rollback=False
|
|
8577
|
-
),
|
|
8578
|
-
deployment_circuit_breaker=ecs.CfnService.DeploymentCircuitBreakerProperty(
|
|
8579
|
-
enable=False,
|
|
8580
|
-
rollback=False
|
|
8581
|
-
),
|
|
8582
|
-
maximum_percent=123,
|
|
8583
|
-
minimum_healthy_percent=123
|
|
8584
|
-
),
|
|
8585
|
-
deployment_controller=ecs.CfnService.DeploymentControllerProperty(
|
|
8586
|
-
type="type"
|
|
8587
|
-
),
|
|
8588
|
-
desired_count=123,
|
|
8589
|
-
enable_ecs_managed_tags=False,
|
|
8590
|
-
enable_execute_command=False,
|
|
8591
|
-
health_check_grace_period_seconds=123,
|
|
8592
|
-
launch_type="launchType",
|
|
8593
|
-
load_balancers=[ecs.CfnService.LoadBalancerProperty(
|
|
8594
|
-
container_name="containerName",
|
|
8595
|
-
container_port=123,
|
|
8596
|
-
load_balancer_name="loadBalancerName",
|
|
8597
|
-
target_group_arn="targetGroupArn"
|
|
8598
|
-
)],
|
|
8599
|
-
network_configuration=ecs.CfnService.NetworkConfigurationProperty(
|
|
8600
|
-
awsvpc_configuration=ecs.CfnService.AwsVpcConfigurationProperty(
|
|
8601
|
-
assign_public_ip="assignPublicIp",
|
|
8602
|
-
security_groups=["securityGroups"],
|
|
8603
|
-
subnets=["subnets"]
|
|
8604
|
-
)
|
|
8605
|
-
),
|
|
8606
|
-
placement_constraints=[ecs.CfnService.PlacementConstraintProperty(
|
|
8607
|
-
type="type",
|
|
8608
|
-
|
|
8609
|
-
# the properties below are optional
|
|
8610
|
-
expression="expression"
|
|
8611
|
-
)],
|
|
8612
|
-
placement_strategies=[ecs.CfnService.PlacementStrategyProperty(
|
|
8613
|
-
type="type",
|
|
8614
|
-
|
|
8615
|
-
# the properties below are optional
|
|
8616
|
-
field="field"
|
|
8617
|
-
)],
|
|
8618
|
-
platform_version="platformVersion",
|
|
8619
|
-
propagate_tags="propagateTags",
|
|
8620
|
-
role="role",
|
|
8621
|
-
scheduling_strategy="schedulingStrategy",
|
|
8622
|
-
service_connect_configuration=ecs.CfnService.ServiceConnectConfigurationProperty(
|
|
8623
|
-
enabled=False,
|
|
8624
|
-
|
|
8625
|
-
# the properties below are optional
|
|
8626
|
-
log_configuration=ecs.CfnService.LogConfigurationProperty(
|
|
8627
|
-
log_driver="logDriver",
|
|
8628
|
-
options={
|
|
8629
|
-
"options_key": "options"
|
|
8630
|
-
},
|
|
8631
|
-
secret_options=[ecs.CfnService.SecretProperty(
|
|
8632
|
-
name="name",
|
|
8633
|
-
value_from="valueFrom"
|
|
8634
|
-
)]
|
|
8635
|
-
),
|
|
8636
|
-
namespace="namespace",
|
|
8637
|
-
services=[ecs.CfnService.ServiceConnectServiceProperty(
|
|
8638
|
-
port_name="portName",
|
|
8639
|
-
|
|
8640
|
-
# the properties below are optional
|
|
8641
|
-
client_aliases=[ecs.CfnService.ServiceConnectClientAliasProperty(
|
|
8642
|
-
port=123,
|
|
8643
|
-
|
|
8644
|
-
# the properties below are optional
|
|
8645
|
-
dns_name="dnsName"
|
|
8646
|
-
)],
|
|
8647
|
-
discovery_name="discoveryName",
|
|
8648
|
-
ingress_port_override=123,
|
|
8649
|
-
timeout=ecs.CfnService.TimeoutConfigurationProperty(
|
|
8650
|
-
idle_timeout_seconds=123,
|
|
8651
|
-
per_request_timeout_seconds=123
|
|
8652
|
-
),
|
|
8653
|
-
tls=ecs.CfnService.ServiceConnectTlsConfigurationProperty(
|
|
8654
|
-
issuer_certificate_authority=ecs.CfnService.ServiceConnectTlsCertificateAuthorityProperty(
|
|
8655
|
-
aws_pca_authority_arn="awsPcaAuthorityArn"
|
|
8656
|
-
),
|
|
8657
|
-
|
|
8658
|
-
# the properties below are optional
|
|
8659
|
-
kms_key="kmsKey",
|
|
8660
|
-
role_arn="roleArn"
|
|
8661
|
-
)
|
|
8662
|
-
)]
|
|
8663
|
-
),
|
|
8664
|
-
service_name="serviceName",
|
|
8665
|
-
service_registries=[ecs.CfnService.ServiceRegistryProperty(
|
|
8666
|
-
container_name="containerName",
|
|
8667
|
-
container_port=123,
|
|
8668
|
-
port=123,
|
|
8669
|
-
registry_arn="registryArn"
|
|
8670
|
-
)],
|
|
8671
|
-
tags=[CfnTag(
|
|
8672
|
-
key="key",
|
|
8673
|
-
value="value"
|
|
8674
|
-
)],
|
|
8675
|
-
task_definition="taskDefinition",
|
|
8676
|
-
volume_configurations=[ecs.CfnService.ServiceVolumeConfigurationProperty(
|
|
8677
|
-
name="name",
|
|
8678
|
-
|
|
8679
|
-
# the properties below are optional
|
|
8680
|
-
managed_ebs_volume=ecs.CfnService.ServiceManagedEBSVolumeConfigurationProperty(
|
|
8681
|
-
role_arn="roleArn",
|
|
8649
|
+
# service: ecs.FargateService
|
|
8682
8650
|
|
|
8683
|
-
# the properties below are optional
|
|
8684
|
-
encrypted=False,
|
|
8685
|
-
filesystem_type="filesystemType",
|
|
8686
|
-
iops=123,
|
|
8687
|
-
kms_key_id="kmsKeyId",
|
|
8688
|
-
size_in_gi_b=123,
|
|
8689
|
-
snapshot_id="snapshotId",
|
|
8690
|
-
tag_specifications=[ecs.CfnService.EBSTagSpecificationProperty(
|
|
8691
|
-
resource_type="resourceType",
|
|
8692
8651
|
|
|
8693
|
-
|
|
8694
|
-
|
|
8695
|
-
|
|
8696
|
-
|
|
8697
|
-
|
|
8698
|
-
|
|
8699
|
-
|
|
8700
|
-
|
|
8701
|
-
|
|
8702
|
-
|
|
8703
|
-
)
|
|
8704
|
-
)],
|
|
8705
|
-
vpc_lattice_configurations=[ecs.CfnService.VpcLatticeConfigurationProperty(
|
|
8706
|
-
port_name="portName",
|
|
8707
|
-
role_arn="roleArn",
|
|
8708
|
-
target_group_arn="targetGroupArn"
|
|
8652
|
+
cfn_service = service.node.default_child
|
|
8653
|
+
cfn_service.deployment_configuration = ecs.CfnService.DeploymentConfigurationProperty(
|
|
8654
|
+
maximum_percent=200,
|
|
8655
|
+
minimum_healthy_percent=100,
|
|
8656
|
+
strategy="BLUE_GREEN",
|
|
8657
|
+
bake_time_in_minutes=15,
|
|
8658
|
+
lifecycle_hooks=[ecs.CfnService.DeploymentLifecycleHookProperty(
|
|
8659
|
+
hook_target_arn="arn:aws:lambda:region:account:function:pre-deployment-hook",
|
|
8660
|
+
role_arn="arn:aws:iam::account:role/deployment-hook-role",
|
|
8661
|
+
lifecycle_stages=["PRE_STOP", "POST_START"]
|
|
8709
8662
|
)]
|
|
8710
8663
|
)
|
|
8711
8664
|
'''
|
|
@@ -9267,6 +9220,109 @@ class CfnService(
|
|
|
9267
9220
|
check_type(argname="argument value", value=value, expected_type=type_hints["value"])
|
|
9268
9221
|
jsii.set(self, "vpcLatticeConfigurations", value) # pyright: ignore[reportArgumentType]
|
|
9269
9222
|
|
|
9223
|
+
@jsii.data_type(
|
|
9224
|
+
jsii_type="aws-cdk-lib.aws_ecs.CfnService.AdvancedConfigurationProperty",
|
|
9225
|
+
jsii_struct_bases=[],
|
|
9226
|
+
name_mapping={
|
|
9227
|
+
"alternate_target_group_arn": "alternateTargetGroupArn",
|
|
9228
|
+
"production_listener_rule": "productionListenerRule",
|
|
9229
|
+
"role_arn": "roleArn",
|
|
9230
|
+
"test_listener_rule": "testListenerRule",
|
|
9231
|
+
},
|
|
9232
|
+
)
|
|
9233
|
+
class AdvancedConfigurationProperty:
|
|
9234
|
+
def __init__(
|
|
9235
|
+
self,
|
|
9236
|
+
*,
|
|
9237
|
+
alternate_target_group_arn: builtins.str,
|
|
9238
|
+
production_listener_rule: typing.Optional[builtins.str] = None,
|
|
9239
|
+
role_arn: typing.Optional[builtins.str] = None,
|
|
9240
|
+
test_listener_rule: typing.Optional[builtins.str] = None,
|
|
9241
|
+
) -> None:
|
|
9242
|
+
'''
|
|
9243
|
+
:param alternate_target_group_arn:
|
|
9244
|
+
:param production_listener_rule:
|
|
9245
|
+
:param role_arn:
|
|
9246
|
+
:param test_listener_rule:
|
|
9247
|
+
|
|
9248
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-advancedconfiguration.html
|
|
9249
|
+
:exampleMetadata: fixture=_generated
|
|
9250
|
+
|
|
9251
|
+
Example::
|
|
9252
|
+
|
|
9253
|
+
# The code below shows an example of how to instantiate this type.
|
|
9254
|
+
# The values are placeholders you should change.
|
|
9255
|
+
from aws_cdk import aws_ecs as ecs
|
|
9256
|
+
|
|
9257
|
+
advanced_configuration_property = ecs.CfnService.AdvancedConfigurationProperty(
|
|
9258
|
+
alternate_target_group_arn="alternateTargetGroupArn",
|
|
9259
|
+
|
|
9260
|
+
# the properties below are optional
|
|
9261
|
+
production_listener_rule="productionListenerRule",
|
|
9262
|
+
role_arn="roleArn",
|
|
9263
|
+
test_listener_rule="testListenerRule"
|
|
9264
|
+
)
|
|
9265
|
+
'''
|
|
9266
|
+
if __debug__:
|
|
9267
|
+
type_hints = typing.get_type_hints(_typecheckingstub__c3f25e48977935912f7b78499d7be554157bd31ec2fadc2d811e82880622bfdf)
|
|
9268
|
+
check_type(argname="argument alternate_target_group_arn", value=alternate_target_group_arn, expected_type=type_hints["alternate_target_group_arn"])
|
|
9269
|
+
check_type(argname="argument production_listener_rule", value=production_listener_rule, expected_type=type_hints["production_listener_rule"])
|
|
9270
|
+
check_type(argname="argument role_arn", value=role_arn, expected_type=type_hints["role_arn"])
|
|
9271
|
+
check_type(argname="argument test_listener_rule", value=test_listener_rule, expected_type=type_hints["test_listener_rule"])
|
|
9272
|
+
self._values: typing.Dict[builtins.str, typing.Any] = {
|
|
9273
|
+
"alternate_target_group_arn": alternate_target_group_arn,
|
|
9274
|
+
}
|
|
9275
|
+
if production_listener_rule is not None:
|
|
9276
|
+
self._values["production_listener_rule"] = production_listener_rule
|
|
9277
|
+
if role_arn is not None:
|
|
9278
|
+
self._values["role_arn"] = role_arn
|
|
9279
|
+
if test_listener_rule is not None:
|
|
9280
|
+
self._values["test_listener_rule"] = test_listener_rule
|
|
9281
|
+
|
|
9282
|
+
@builtins.property
|
|
9283
|
+
def alternate_target_group_arn(self) -> builtins.str:
|
|
9284
|
+
'''
|
|
9285
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-advancedconfiguration.html#cfn-ecs-service-advancedconfiguration-alternatetargetgrouparn
|
|
9286
|
+
'''
|
|
9287
|
+
result = self._values.get("alternate_target_group_arn")
|
|
9288
|
+
assert result is not None, "Required property 'alternate_target_group_arn' is missing"
|
|
9289
|
+
return typing.cast(builtins.str, result)
|
|
9290
|
+
|
|
9291
|
+
@builtins.property
|
|
9292
|
+
def production_listener_rule(self) -> typing.Optional[builtins.str]:
|
|
9293
|
+
'''
|
|
9294
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-advancedconfiguration.html#cfn-ecs-service-advancedconfiguration-productionlistenerrule
|
|
9295
|
+
'''
|
|
9296
|
+
result = self._values.get("production_listener_rule")
|
|
9297
|
+
return typing.cast(typing.Optional[builtins.str], result)
|
|
9298
|
+
|
|
9299
|
+
@builtins.property
|
|
9300
|
+
def role_arn(self) -> typing.Optional[builtins.str]:
|
|
9301
|
+
'''
|
|
9302
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-advancedconfiguration.html#cfn-ecs-service-advancedconfiguration-rolearn
|
|
9303
|
+
'''
|
|
9304
|
+
result = self._values.get("role_arn")
|
|
9305
|
+
return typing.cast(typing.Optional[builtins.str], result)
|
|
9306
|
+
|
|
9307
|
+
@builtins.property
|
|
9308
|
+
def test_listener_rule(self) -> typing.Optional[builtins.str]:
|
|
9309
|
+
'''
|
|
9310
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-advancedconfiguration.html#cfn-ecs-service-advancedconfiguration-testlistenerrule
|
|
9311
|
+
'''
|
|
9312
|
+
result = self._values.get("test_listener_rule")
|
|
9313
|
+
return typing.cast(typing.Optional[builtins.str], result)
|
|
9314
|
+
|
|
9315
|
+
def __eq__(self, rhs: typing.Any) -> builtins.bool:
|
|
9316
|
+
return isinstance(rhs, self.__class__) and rhs._values == self._values
|
|
9317
|
+
|
|
9318
|
+
def __ne__(self, rhs: typing.Any) -> builtins.bool:
|
|
9319
|
+
return not (rhs == self)
|
|
9320
|
+
|
|
9321
|
+
def __repr__(self) -> str:
|
|
9322
|
+
return "AdvancedConfigurationProperty(%s)" % ", ".join(
|
|
9323
|
+
k + "=" + repr(v) for k, v in self._values.items()
|
|
9324
|
+
)
|
|
9325
|
+
|
|
9270
9326
|
@jsii.data_type(
|
|
9271
9327
|
jsii_type="aws-cdk-lib.aws_ecs.CfnService.AwsVpcConfigurationProperty",
|
|
9272
9328
|
jsii_struct_bases=[],
|
|
@@ -9662,9 +9718,12 @@ class CfnService(
|
|
|
9662
9718
|
jsii_struct_bases=[],
|
|
9663
9719
|
name_mapping={
|
|
9664
9720
|
"alarms": "alarms",
|
|
9721
|
+
"bake_time_in_minutes": "bakeTimeInMinutes",
|
|
9665
9722
|
"deployment_circuit_breaker": "deploymentCircuitBreaker",
|
|
9723
|
+
"lifecycle_hooks": "lifecycleHooks",
|
|
9666
9724
|
"maximum_percent": "maximumPercent",
|
|
9667
9725
|
"minimum_healthy_percent": "minimumHealthyPercent",
|
|
9726
|
+
"strategy": "strategy",
|
|
9668
9727
|
},
|
|
9669
9728
|
)
|
|
9670
9729
|
class DeploymentConfigurationProperty:
|
|
@@ -9672,16 +9731,22 @@ class CfnService(
|
|
|
9672
9731
|
self,
|
|
9673
9732
|
*,
|
|
9674
9733
|
alarms: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnService.DeploymentAlarmsProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
|
|
9734
|
+
bake_time_in_minutes: typing.Optional[jsii.Number] = None,
|
|
9675
9735
|
deployment_circuit_breaker: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnService.DeploymentCircuitBreakerProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
|
|
9736
|
+
lifecycle_hooks: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union["CfnService.DeploymentLifecycleHookProperty", typing.Dict[builtins.str, typing.Any]]]]]] = None,
|
|
9676
9737
|
maximum_percent: typing.Optional[jsii.Number] = None,
|
|
9677
9738
|
minimum_healthy_percent: typing.Optional[jsii.Number] = None,
|
|
9739
|
+
strategy: typing.Optional[builtins.str] = None,
|
|
9678
9740
|
) -> None:
|
|
9679
9741
|
'''Optional deployment parameters that control how many tasks run during a deployment and the ordering of stopping and starting tasks.
|
|
9680
9742
|
|
|
9681
9743
|
:param alarms: Information about the CloudWatch alarms.
|
|
9744
|
+
:param bake_time_in_minutes:
|
|
9682
9745
|
:param deployment_circuit_breaker: .. epigraph:: The deployment circuit breaker can only be used for services using the rolling update ( ``ECS`` ) deployment type. The *deployment circuit breaker* determines whether a service deployment will fail if the service can't reach a steady state. If you use the deployment circuit breaker, a service deployment will transition to a failed state and stop launching new tasks. If you use the rollback option, when a service deployment fails, the service is rolled back to the last deployment that completed successfully. For more information, see `Rolling update <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html>`_ in the *Amazon Elastic Container Service Developer Guide*
|
|
9746
|
+
:param lifecycle_hooks:
|
|
9683
9747
|
:param maximum_percent: If a service is using the rolling update ( ``ECS`` ) deployment type, the ``maximumPercent`` parameter represents an upper limit on the number of your service's tasks that are allowed in the ``RUNNING`` or ``PENDING`` state during a deployment, as a percentage of the ``desiredCount`` (rounded down to the nearest integer). This parameter enables you to define the deployment batch size. For example, if your service is using the ``REPLICA`` service scheduler and has a ``desiredCount`` of four tasks and a ``maximumPercent`` value of 200%, the scheduler may start four new tasks before stopping the four older tasks (provided that the cluster resources required to do this are available). The default ``maximumPercent`` value for a service using the ``REPLICA`` service scheduler is 200%. The Amazon ECS scheduler uses this parameter to replace unhealthy tasks by starting replacement tasks first and then stopping the unhealthy tasks, as long as cluster resources for starting replacement tasks are available. For more information about how the scheduler replaces unhealthy tasks, see `Amazon ECS services <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html>`_ . If a service is using either the blue/green ( ``CODE_DEPLOY`` ) or ``EXTERNAL`` deployment types, and tasks in the service use the EC2 launch type, the *maximum percent* value is set to the default value. The *maximum percent* value is used to define the upper limit on the number of the tasks in the service that remain in the ``RUNNING`` state while the container instances are in the ``DRAINING`` state. .. epigraph:: You can't specify a custom ``maximumPercent`` value for a service that uses either the blue/green ( ``CODE_DEPLOY`` ) or ``EXTERNAL`` deployment types and has tasks that use the EC2 launch type. If the service uses either the blue/green ( ``CODE_DEPLOY`` ) or ``EXTERNAL`` deployment types, and the tasks in the service use the Fargate launch type, the maximum percent value is not used. The value is still returned when describing your service.
|
|
9684
9748
|
:param minimum_healthy_percent: If a service is using the rolling update ( ``ECS`` ) deployment type, the ``minimumHealthyPercent`` represents a lower limit on the number of your service's tasks that must remain in the ``RUNNING`` state during a deployment, as a percentage of the ``desiredCount`` (rounded up to the nearest integer). This parameter enables you to deploy without using additional cluster capacity. For example, if your service has a ``desiredCount`` of four tasks and a ``minimumHealthyPercent`` of 50%, the service scheduler may stop two existing tasks to free up cluster capacity before starting two new tasks. If any tasks are unhealthy and if ``maximumPercent`` doesn't allow the Amazon ECS scheduler to start replacement tasks, the scheduler stops the unhealthy tasks one-by-one — using the ``minimumHealthyPercent`` as a constraint — to clear up capacity to launch replacement tasks. For more information about how the scheduler replaces unhealthy tasks, see `Amazon ECS services <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html>`_ . For services that *do not* use a load balancer, the following should be noted: - A service is considered healthy if all essential containers within the tasks in the service pass their health checks. - If a task has no essential containers with a health check defined, the service scheduler will wait for 40 seconds after a task reaches a ``RUNNING`` state before the task is counted towards the minimum healthy percent total. - If a task has one or more essential containers with a health check defined, the service scheduler will wait for the task to reach a healthy status before counting it towards the minimum healthy percent total. A task is considered healthy when all essential containers within the task have passed their health checks. The amount of time the service scheduler can wait for is determined by the container health check settings. For services that *do* use a load balancer, the following should be noted: - If a task has no essential containers with a health check defined, the service scheduler will wait for the load balancer target group health check to return a healthy status before counting the task towards the minimum healthy percent total. - If a task has an essential container with a health check defined, the service scheduler will wait for both the task to reach a healthy status and the load balancer target group health check to return a healthy status before counting the task towards the minimum healthy percent total. The default value for a replica service for ``minimumHealthyPercent`` is 100%. The default ``minimumHealthyPercent`` value for a service using the ``DAEMON`` service schedule is 0% for the AWS CLI , the AWS SDKs, and the APIs and 50% for the AWS Management Console. The minimum number of healthy tasks during a deployment is the ``desiredCount`` multiplied by the ``minimumHealthyPercent`` /100, rounded up to the nearest integer value. If a service is using either the blue/green ( ``CODE_DEPLOY`` ) or ``EXTERNAL`` deployment types and is running tasks that use the EC2 launch type, the *minimum healthy percent* value is set to the default value. The *minimum healthy percent* value is used to define the lower limit on the number of the tasks in the service that remain in the ``RUNNING`` state while the container instances are in the ``DRAINING`` state. .. epigraph:: You can't specify a custom ``minimumHealthyPercent`` value for a service that uses either the blue/green ( ``CODE_DEPLOY`` ) or ``EXTERNAL`` deployment types and has tasks that use the EC2 launch type. If a service is using either the blue/green ( ``CODE_DEPLOY`` ) or ``EXTERNAL`` deployment types and is running tasks that use the Fargate launch type, the minimum healthy percent value is not used, although it is returned when describing your service.
|
|
9749
|
+
:param strategy:
|
|
9685
9750
|
|
|
9686
9751
|
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentconfiguration.html
|
|
9687
9752
|
:exampleMetadata: fixture=_generated
|
|
@@ -9698,29 +9763,45 @@ class CfnService(
|
|
|
9698
9763
|
enable=False,
|
|
9699
9764
|
rollback=False
|
|
9700
9765
|
),
|
|
9766
|
+
bake_time_in_minutes=123,
|
|
9701
9767
|
deployment_circuit_breaker=ecs.CfnService.DeploymentCircuitBreakerProperty(
|
|
9702
9768
|
enable=False,
|
|
9703
9769
|
rollback=False
|
|
9704
9770
|
),
|
|
9771
|
+
lifecycle_hooks=[ecs.CfnService.DeploymentLifecycleHookProperty(
|
|
9772
|
+
hook_target_arn="hookTargetArn",
|
|
9773
|
+
lifecycle_stages=["lifecycleStages"],
|
|
9774
|
+
role_arn="roleArn"
|
|
9775
|
+
)],
|
|
9705
9776
|
maximum_percent=123,
|
|
9706
|
-
minimum_healthy_percent=123
|
|
9777
|
+
minimum_healthy_percent=123,
|
|
9778
|
+
strategy="strategy"
|
|
9707
9779
|
)
|
|
9708
9780
|
'''
|
|
9709
9781
|
if __debug__:
|
|
9710
9782
|
type_hints = typing.get_type_hints(_typecheckingstub__d809d14e704a11675cbface3b43579e5f8f2a29c9b48e27608c625a3f01cb3a6)
|
|
9711
9783
|
check_type(argname="argument alarms", value=alarms, expected_type=type_hints["alarms"])
|
|
9784
|
+
check_type(argname="argument bake_time_in_minutes", value=bake_time_in_minutes, expected_type=type_hints["bake_time_in_minutes"])
|
|
9712
9785
|
check_type(argname="argument deployment_circuit_breaker", value=deployment_circuit_breaker, expected_type=type_hints["deployment_circuit_breaker"])
|
|
9786
|
+
check_type(argname="argument lifecycle_hooks", value=lifecycle_hooks, expected_type=type_hints["lifecycle_hooks"])
|
|
9713
9787
|
check_type(argname="argument maximum_percent", value=maximum_percent, expected_type=type_hints["maximum_percent"])
|
|
9714
9788
|
check_type(argname="argument minimum_healthy_percent", value=minimum_healthy_percent, expected_type=type_hints["minimum_healthy_percent"])
|
|
9789
|
+
check_type(argname="argument strategy", value=strategy, expected_type=type_hints["strategy"])
|
|
9715
9790
|
self._values: typing.Dict[builtins.str, typing.Any] = {}
|
|
9716
9791
|
if alarms is not None:
|
|
9717
9792
|
self._values["alarms"] = alarms
|
|
9793
|
+
if bake_time_in_minutes is not None:
|
|
9794
|
+
self._values["bake_time_in_minutes"] = bake_time_in_minutes
|
|
9718
9795
|
if deployment_circuit_breaker is not None:
|
|
9719
9796
|
self._values["deployment_circuit_breaker"] = deployment_circuit_breaker
|
|
9797
|
+
if lifecycle_hooks is not None:
|
|
9798
|
+
self._values["lifecycle_hooks"] = lifecycle_hooks
|
|
9720
9799
|
if maximum_percent is not None:
|
|
9721
9800
|
self._values["maximum_percent"] = maximum_percent
|
|
9722
9801
|
if minimum_healthy_percent is not None:
|
|
9723
9802
|
self._values["minimum_healthy_percent"] = minimum_healthy_percent
|
|
9803
|
+
if strategy is not None:
|
|
9804
|
+
self._values["strategy"] = strategy
|
|
9724
9805
|
|
|
9725
9806
|
@builtins.property
|
|
9726
9807
|
def alarms(
|
|
@@ -9733,6 +9814,14 @@ class CfnService(
|
|
|
9733
9814
|
result = self._values.get("alarms")
|
|
9734
9815
|
return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnService.DeploymentAlarmsProperty"]], result)
|
|
9735
9816
|
|
|
9817
|
+
@builtins.property
|
|
9818
|
+
def bake_time_in_minutes(self) -> typing.Optional[jsii.Number]:
|
|
9819
|
+
'''
|
|
9820
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentconfiguration.html#cfn-ecs-service-deploymentconfiguration-baketimeinminutes
|
|
9821
|
+
'''
|
|
9822
|
+
result = self._values.get("bake_time_in_minutes")
|
|
9823
|
+
return typing.cast(typing.Optional[jsii.Number], result)
|
|
9824
|
+
|
|
9736
9825
|
@builtins.property
|
|
9737
9826
|
def deployment_circuit_breaker(
|
|
9738
9827
|
self,
|
|
@@ -9748,6 +9837,16 @@ class CfnService(
|
|
|
9748
9837
|
result = self._values.get("deployment_circuit_breaker")
|
|
9749
9838
|
return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnService.DeploymentCircuitBreakerProperty"]], result)
|
|
9750
9839
|
|
|
9840
|
+
@builtins.property
|
|
9841
|
+
def lifecycle_hooks(
|
|
9842
|
+
self,
|
|
9843
|
+
) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnService.DeploymentLifecycleHookProperty"]]]]:
|
|
9844
|
+
'''
|
|
9845
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentconfiguration.html#cfn-ecs-service-deploymentconfiguration-lifecyclehooks
|
|
9846
|
+
'''
|
|
9847
|
+
result = self._values.get("lifecycle_hooks")
|
|
9848
|
+
return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnService.DeploymentLifecycleHookProperty"]]]], result)
|
|
9849
|
+
|
|
9751
9850
|
@builtins.property
|
|
9752
9851
|
def maximum_percent(self) -> typing.Optional[jsii.Number]:
|
|
9753
9852
|
'''If a service is using the rolling update ( ``ECS`` ) deployment type, the ``maximumPercent`` parameter represents an upper limit on the number of your service's tasks that are allowed in the ``RUNNING`` or ``PENDING`` state during a deployment, as a percentage of the ``desiredCount`` (rounded down to the nearest integer).
|
|
@@ -9803,6 +9902,14 @@ class CfnService(
|
|
|
9803
9902
|
result = self._values.get("minimum_healthy_percent")
|
|
9804
9903
|
return typing.cast(typing.Optional[jsii.Number], result)
|
|
9805
9904
|
|
|
9905
|
+
@builtins.property
|
|
9906
|
+
def strategy(self) -> typing.Optional[builtins.str]:
|
|
9907
|
+
'''
|
|
9908
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentconfiguration.html#cfn-ecs-service-deploymentconfiguration-strategy
|
|
9909
|
+
'''
|
|
9910
|
+
result = self._values.get("strategy")
|
|
9911
|
+
return typing.cast(typing.Optional[builtins.str], result)
|
|
9912
|
+
|
|
9806
9913
|
def __eq__(self, rhs: typing.Any) -> builtins.bool:
|
|
9807
9914
|
return isinstance(rhs, self.__class__) and rhs._values == self._values
|
|
9808
9915
|
|
|
@@ -9869,6 +9976,92 @@ class CfnService(
|
|
|
9869
9976
|
k + "=" + repr(v) for k, v in self._values.items()
|
|
9870
9977
|
)
|
|
9871
9978
|
|
|
9979
|
+
@jsii.data_type(
|
|
9980
|
+
jsii_type="aws-cdk-lib.aws_ecs.CfnService.DeploymentLifecycleHookProperty",
|
|
9981
|
+
jsii_struct_bases=[],
|
|
9982
|
+
name_mapping={
|
|
9983
|
+
"hook_target_arn": "hookTargetArn",
|
|
9984
|
+
"lifecycle_stages": "lifecycleStages",
|
|
9985
|
+
"role_arn": "roleArn",
|
|
9986
|
+
},
|
|
9987
|
+
)
|
|
9988
|
+
class DeploymentLifecycleHookProperty:
|
|
9989
|
+
def __init__(
|
|
9990
|
+
self,
|
|
9991
|
+
*,
|
|
9992
|
+
hook_target_arn: builtins.str,
|
|
9993
|
+
lifecycle_stages: typing.Sequence[builtins.str],
|
|
9994
|
+
role_arn: builtins.str,
|
|
9995
|
+
) -> None:
|
|
9996
|
+
'''
|
|
9997
|
+
:param hook_target_arn:
|
|
9998
|
+
:param lifecycle_stages:
|
|
9999
|
+
:param role_arn:
|
|
10000
|
+
|
|
10001
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentlifecyclehook.html
|
|
10002
|
+
:exampleMetadata: fixture=_generated
|
|
10003
|
+
|
|
10004
|
+
Example::
|
|
10005
|
+
|
|
10006
|
+
# The code below shows an example of how to instantiate this type.
|
|
10007
|
+
# The values are placeholders you should change.
|
|
10008
|
+
from aws_cdk import aws_ecs as ecs
|
|
10009
|
+
|
|
10010
|
+
deployment_lifecycle_hook_property = ecs.CfnService.DeploymentLifecycleHookProperty(
|
|
10011
|
+
hook_target_arn="hookTargetArn",
|
|
10012
|
+
lifecycle_stages=["lifecycleStages"],
|
|
10013
|
+
role_arn="roleArn"
|
|
10014
|
+
)
|
|
10015
|
+
'''
|
|
10016
|
+
if __debug__:
|
|
10017
|
+
type_hints = typing.get_type_hints(_typecheckingstub__81d51cf744a434ad2ba13fc9f3dea23611c28b28f4a9414d8324cf57768cea5e)
|
|
10018
|
+
check_type(argname="argument hook_target_arn", value=hook_target_arn, expected_type=type_hints["hook_target_arn"])
|
|
10019
|
+
check_type(argname="argument lifecycle_stages", value=lifecycle_stages, expected_type=type_hints["lifecycle_stages"])
|
|
10020
|
+
check_type(argname="argument role_arn", value=role_arn, expected_type=type_hints["role_arn"])
|
|
10021
|
+
self._values: typing.Dict[builtins.str, typing.Any] = {
|
|
10022
|
+
"hook_target_arn": hook_target_arn,
|
|
10023
|
+
"lifecycle_stages": lifecycle_stages,
|
|
10024
|
+
"role_arn": role_arn,
|
|
10025
|
+
}
|
|
10026
|
+
|
|
10027
|
+
@builtins.property
|
|
10028
|
+
def hook_target_arn(self) -> builtins.str:
|
|
10029
|
+
'''
|
|
10030
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentlifecyclehook.html#cfn-ecs-service-deploymentlifecyclehook-hooktargetarn
|
|
10031
|
+
'''
|
|
10032
|
+
result = self._values.get("hook_target_arn")
|
|
10033
|
+
assert result is not None, "Required property 'hook_target_arn' is missing"
|
|
10034
|
+
return typing.cast(builtins.str, result)
|
|
10035
|
+
|
|
10036
|
+
@builtins.property
|
|
10037
|
+
def lifecycle_stages(self) -> typing.List[builtins.str]:
|
|
10038
|
+
'''
|
|
10039
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentlifecyclehook.html#cfn-ecs-service-deploymentlifecyclehook-lifecyclestages
|
|
10040
|
+
'''
|
|
10041
|
+
result = self._values.get("lifecycle_stages")
|
|
10042
|
+
assert result is not None, "Required property 'lifecycle_stages' is missing"
|
|
10043
|
+
return typing.cast(typing.List[builtins.str], result)
|
|
10044
|
+
|
|
10045
|
+
@builtins.property
|
|
10046
|
+
def role_arn(self) -> builtins.str:
|
|
10047
|
+
'''
|
|
10048
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentlifecyclehook.html#cfn-ecs-service-deploymentlifecyclehook-rolearn
|
|
10049
|
+
'''
|
|
10050
|
+
result = self._values.get("role_arn")
|
|
10051
|
+
assert result is not None, "Required property 'role_arn' is missing"
|
|
10052
|
+
return typing.cast(builtins.str, result)
|
|
10053
|
+
|
|
10054
|
+
def __eq__(self, rhs: typing.Any) -> builtins.bool:
|
|
10055
|
+
return isinstance(rhs, self.__class__) and rhs._values == self._values
|
|
10056
|
+
|
|
10057
|
+
def __ne__(self, rhs: typing.Any) -> builtins.bool:
|
|
10058
|
+
return not (rhs == self)
|
|
10059
|
+
|
|
10060
|
+
def __repr__(self) -> str:
|
|
10061
|
+
return "DeploymentLifecycleHookProperty(%s)" % ", ".join(
|
|
10062
|
+
k + "=" + repr(v) for k, v in self._values.items()
|
|
10063
|
+
)
|
|
10064
|
+
|
|
9872
10065
|
@jsii.data_type(
|
|
9873
10066
|
jsii_type="aws-cdk-lib.aws_ecs.CfnService.EBSTagSpecificationProperty",
|
|
9874
10067
|
jsii_struct_bases=[],
|
|
@@ -9972,6 +10165,7 @@ class CfnService(
|
|
|
9972
10165
|
jsii_type="aws-cdk-lib.aws_ecs.CfnService.LoadBalancerProperty",
|
|
9973
10166
|
jsii_struct_bases=[],
|
|
9974
10167
|
name_mapping={
|
|
10168
|
+
"advanced_configuration": "advancedConfiguration",
|
|
9975
10169
|
"container_name": "containerName",
|
|
9976
10170
|
"container_port": "containerPort",
|
|
9977
10171
|
"load_balancer_name": "loadBalancerName",
|
|
@@ -9982,6 +10176,7 @@ class CfnService(
|
|
|
9982
10176
|
def __init__(
|
|
9983
10177
|
self,
|
|
9984
10178
|
*,
|
|
10179
|
+
advanced_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnService.AdvancedConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
|
|
9985
10180
|
container_name: typing.Optional[builtins.str] = None,
|
|
9986
10181
|
container_port: typing.Optional[jsii.Number] = None,
|
|
9987
10182
|
load_balancer_name: typing.Optional[builtins.str] = None,
|
|
@@ -9993,6 +10188,7 @@ class CfnService(
|
|
|
9993
10188
|
|
|
9994
10189
|
Services with tasks that use the ``awsvpc`` network mode (for example, those with the Fargate launch type) only support Application Load Balancers and Network Load Balancers. Classic Load Balancers are not supported. Also, when you create any target groups for these services, you must choose ``ip`` as the target type, not ``instance`` . Tasks that use the ``awsvpc`` network mode are associated with an elastic network interface, not an Amazon EC2 instance.
|
|
9995
10190
|
|
|
10191
|
+
:param advanced_configuration:
|
|
9996
10192
|
:param container_name: The name of the container (as it appears in a container definition) to associate with the load balancer. You need to specify the container name when configuring the target group for an Amazon ECS load balancer.
|
|
9997
10193
|
:param container_port: The port on the container to associate with the load balancer. This port must correspond to a ``containerPort`` in the task definition the tasks in the service are using. For tasks that use the EC2 launch type, the container instance they're launched on must allow ingress traffic on the ``hostPort`` of the port mapping.
|
|
9998
10194
|
:param load_balancer_name: The name of the load balancer to associate with the Amazon ECS service or task set. If you are using an Application Load Balancer or a Network Load Balancer the load balancer name parameter should be omitted.
|
|
@@ -10008,6 +10204,14 @@ class CfnService(
|
|
|
10008
10204
|
from aws_cdk import aws_ecs as ecs
|
|
10009
10205
|
|
|
10010
10206
|
load_balancer_property = ecs.CfnService.LoadBalancerProperty(
|
|
10207
|
+
advanced_configuration=ecs.CfnService.AdvancedConfigurationProperty(
|
|
10208
|
+
alternate_target_group_arn="alternateTargetGroupArn",
|
|
10209
|
+
|
|
10210
|
+
# the properties below are optional
|
|
10211
|
+
production_listener_rule="productionListenerRule",
|
|
10212
|
+
role_arn="roleArn",
|
|
10213
|
+
test_listener_rule="testListenerRule"
|
|
10214
|
+
),
|
|
10011
10215
|
container_name="containerName",
|
|
10012
10216
|
container_port=123,
|
|
10013
10217
|
load_balancer_name="loadBalancerName",
|
|
@@ -10016,11 +10220,14 @@ class CfnService(
|
|
|
10016
10220
|
'''
|
|
10017
10221
|
if __debug__:
|
|
10018
10222
|
type_hints = typing.get_type_hints(_typecheckingstub__251c3999c1586967f7c9091782e6a113831e05b5f853b910cad8c8e75f654def)
|
|
10223
|
+
check_type(argname="argument advanced_configuration", value=advanced_configuration, expected_type=type_hints["advanced_configuration"])
|
|
10019
10224
|
check_type(argname="argument container_name", value=container_name, expected_type=type_hints["container_name"])
|
|
10020
10225
|
check_type(argname="argument container_port", value=container_port, expected_type=type_hints["container_port"])
|
|
10021
10226
|
check_type(argname="argument load_balancer_name", value=load_balancer_name, expected_type=type_hints["load_balancer_name"])
|
|
10022
10227
|
check_type(argname="argument target_group_arn", value=target_group_arn, expected_type=type_hints["target_group_arn"])
|
|
10023
10228
|
self._values: typing.Dict[builtins.str, typing.Any] = {}
|
|
10229
|
+
if advanced_configuration is not None:
|
|
10230
|
+
self._values["advanced_configuration"] = advanced_configuration
|
|
10024
10231
|
if container_name is not None:
|
|
10025
10232
|
self._values["container_name"] = container_name
|
|
10026
10233
|
if container_port is not None:
|
|
@@ -10030,6 +10237,16 @@ class CfnService(
|
|
|
10030
10237
|
if target_group_arn is not None:
|
|
10031
10238
|
self._values["target_group_arn"] = target_group_arn
|
|
10032
10239
|
|
|
10240
|
+
@builtins.property
|
|
10241
|
+
def advanced_configuration(
|
|
10242
|
+
self,
|
|
10243
|
+
) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnService.AdvancedConfigurationProperty"]]:
|
|
10244
|
+
'''
|
|
10245
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-loadbalancer.html#cfn-ecs-service-loadbalancer-advancedconfiguration
|
|
10246
|
+
'''
|
|
10247
|
+
result = self._values.get("advanced_configuration")
|
|
10248
|
+
return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnService.AdvancedConfigurationProperty"]], result)
|
|
10249
|
+
|
|
10033
10250
|
@builtins.property
|
|
10034
10251
|
def container_name(self) -> typing.Optional[builtins.str]:
|
|
10035
10252
|
'''The name of the container (as it appears in a container definition) to associate with the load balancer.
|
|
@@ -10621,7 +10838,11 @@ class CfnService(
|
|
|
10621
10838
|
@jsii.data_type(
|
|
10622
10839
|
jsii_type="aws-cdk-lib.aws_ecs.CfnService.ServiceConnectClientAliasProperty",
|
|
10623
10840
|
jsii_struct_bases=[],
|
|
10624
|
-
name_mapping={
|
|
10841
|
+
name_mapping={
|
|
10842
|
+
"port": "port",
|
|
10843
|
+
"dns_name": "dnsName",
|
|
10844
|
+
"test_traffic_rules": "testTrafficRules",
|
|
10845
|
+
},
|
|
10625
10846
|
)
|
|
10626
10847
|
class ServiceConnectClientAliasProperty:
|
|
10627
10848
|
def __init__(
|
|
@@ -10629,6 +10850,7 @@ class CfnService(
|
|
|
10629
10850
|
*,
|
|
10630
10851
|
port: jsii.Number,
|
|
10631
10852
|
dns_name: typing.Optional[builtins.str] = None,
|
|
10853
|
+
test_traffic_rules: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnService.ServiceConnectTestTrafficRulesProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
|
|
10632
10854
|
) -> None:
|
|
10633
10855
|
'''Each alias ("endpoint") is a fully-qualified name and port number that other tasks ("clients") can use to connect to this service.
|
|
10634
10856
|
|
|
@@ -10638,6 +10860,7 @@ class CfnService(
|
|
|
10638
10860
|
|
|
10639
10861
|
:param port: The listening port number for the Service Connect proxy. This port is available inside of all of the tasks within the same namespace. To avoid changing your applications in client Amazon ECS services, set this to the same port that the client application uses by default. For more information, see `Service Connect <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html>`_ in the *Amazon Elastic Container Service Developer Guide* .
|
|
10640
10862
|
:param dns_name: The ``dnsName`` is the name that you use in the applications of client tasks to connect to this service. The name must be a valid DNS name but doesn't need to be fully-qualified. The name can include up to 127 characters. The name can include lowercase letters, numbers, underscores (_), hyphens (-), and periods (.). The name can't start with a hyphen. If this parameter isn't specified, the default value of ``discoveryName.namespace`` is used. If the ``discoveryName`` isn't specified, the port mapping name from the task definition is used in ``portName.namespace`` . To avoid changing your applications in client Amazon ECS services, set this to the same name that the client application uses by default. For example, a few common names are ``database`` , ``db`` , or the lowercase name of a database, such as ``mysql`` or ``redis`` . For more information, see `Service Connect <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html>`_ in the *Amazon Elastic Container Service Developer Guide* .
|
|
10863
|
+
:param test_traffic_rules:
|
|
10641
10864
|
|
|
10642
10865
|
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceconnectclientalias.html
|
|
10643
10866
|
:exampleMetadata: fixture=_generated
|
|
@@ -10652,18 +10875,31 @@ class CfnService(
|
|
|
10652
10875
|
port=123,
|
|
10653
10876
|
|
|
10654
10877
|
# the properties below are optional
|
|
10655
|
-
dns_name="dnsName"
|
|
10878
|
+
dns_name="dnsName",
|
|
10879
|
+
test_traffic_rules=ecs.CfnService.ServiceConnectTestTrafficRulesProperty(
|
|
10880
|
+
header=ecs.CfnService.ServiceConnectTestTrafficRulesHeaderProperty(
|
|
10881
|
+
name="name",
|
|
10882
|
+
|
|
10883
|
+
# the properties below are optional
|
|
10884
|
+
value=ecs.CfnService.ServiceConnectTestTrafficRulesHeaderValueProperty(
|
|
10885
|
+
exact="exact"
|
|
10886
|
+
)
|
|
10887
|
+
)
|
|
10888
|
+
)
|
|
10656
10889
|
)
|
|
10657
10890
|
'''
|
|
10658
10891
|
if __debug__:
|
|
10659
10892
|
type_hints = typing.get_type_hints(_typecheckingstub__7552e3d2b970cfb26552bec096b0680acf8bc8c7b59096bbf5a210dd3266fd35)
|
|
10660
10893
|
check_type(argname="argument port", value=port, expected_type=type_hints["port"])
|
|
10661
10894
|
check_type(argname="argument dns_name", value=dns_name, expected_type=type_hints["dns_name"])
|
|
10895
|
+
check_type(argname="argument test_traffic_rules", value=test_traffic_rules, expected_type=type_hints["test_traffic_rules"])
|
|
10662
10896
|
self._values: typing.Dict[builtins.str, typing.Any] = {
|
|
10663
10897
|
"port": port,
|
|
10664
10898
|
}
|
|
10665
10899
|
if dns_name is not None:
|
|
10666
10900
|
self._values["dns_name"] = dns_name
|
|
10901
|
+
if test_traffic_rules is not None:
|
|
10902
|
+
self._values["test_traffic_rules"] = test_traffic_rules
|
|
10667
10903
|
|
|
10668
10904
|
@builtins.property
|
|
10669
10905
|
def port(self) -> jsii.Number:
|
|
@@ -10694,6 +10930,16 @@ class CfnService(
|
|
|
10694
10930
|
result = self._values.get("dns_name")
|
|
10695
10931
|
return typing.cast(typing.Optional[builtins.str], result)
|
|
10696
10932
|
|
|
10933
|
+
@builtins.property
|
|
10934
|
+
def test_traffic_rules(
|
|
10935
|
+
self,
|
|
10936
|
+
) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnService.ServiceConnectTestTrafficRulesProperty"]]:
|
|
10937
|
+
'''
|
|
10938
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceconnectclientalias.html#cfn-ecs-service-serviceconnectclientalias-testtrafficrules
|
|
10939
|
+
'''
|
|
10940
|
+
result = self._values.get("test_traffic_rules")
|
|
10941
|
+
return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnService.ServiceConnectTestTrafficRulesProperty"]], result)
|
|
10942
|
+
|
|
10697
10943
|
def __eq__(self, rhs: typing.Any) -> builtins.bool:
|
|
10698
10944
|
return isinstance(rhs, self.__class__) and rhs._values == self._values
|
|
10699
10945
|
|
|
@@ -10767,7 +11013,17 @@ class CfnService(
|
|
|
10767
11013
|
port=123,
|
|
10768
11014
|
|
|
10769
11015
|
# the properties below are optional
|
|
10770
|
-
dns_name="dnsName"
|
|
11016
|
+
dns_name="dnsName",
|
|
11017
|
+
test_traffic_rules=ecs.CfnService.ServiceConnectTestTrafficRulesProperty(
|
|
11018
|
+
header=ecs.CfnService.ServiceConnectTestTrafficRulesHeaderProperty(
|
|
11019
|
+
name="name",
|
|
11020
|
+
|
|
11021
|
+
# the properties below are optional
|
|
11022
|
+
value=ecs.CfnService.ServiceConnectTestTrafficRulesHeaderValueProperty(
|
|
11023
|
+
exact="exact"
|
|
11024
|
+
)
|
|
11025
|
+
)
|
|
11026
|
+
)
|
|
10771
11027
|
)],
|
|
10772
11028
|
discovery_name="discoveryName",
|
|
10773
11029
|
ingress_port_override=123,
|
|
@@ -10930,7 +11186,17 @@ class CfnService(
|
|
|
10930
11186
|
port=123,
|
|
10931
11187
|
|
|
10932
11188
|
# the properties below are optional
|
|
10933
|
-
dns_name="dnsName"
|
|
11189
|
+
dns_name="dnsName",
|
|
11190
|
+
test_traffic_rules=ecs.CfnService.ServiceConnectTestTrafficRulesProperty(
|
|
11191
|
+
header=ecs.CfnService.ServiceConnectTestTrafficRulesHeaderProperty(
|
|
11192
|
+
name="name",
|
|
11193
|
+
|
|
11194
|
+
# the properties below are optional
|
|
11195
|
+
value=ecs.CfnService.ServiceConnectTestTrafficRulesHeaderValueProperty(
|
|
11196
|
+
exact="exact"
|
|
11197
|
+
)
|
|
11198
|
+
)
|
|
11199
|
+
)
|
|
10934
11200
|
)],
|
|
10935
11201
|
discovery_name="discoveryName",
|
|
10936
11202
|
ingress_port_override=123,
|
|
@@ -11059,6 +11325,193 @@ class CfnService(
|
|
|
11059
11325
|
k + "=" + repr(v) for k, v in self._values.items()
|
|
11060
11326
|
)
|
|
11061
11327
|
|
|
11328
|
+
@jsii.data_type(
|
|
11329
|
+
jsii_type="aws-cdk-lib.aws_ecs.CfnService.ServiceConnectTestTrafficRulesHeaderProperty",
|
|
11330
|
+
jsii_struct_bases=[],
|
|
11331
|
+
name_mapping={"name": "name", "value": "value"},
|
|
11332
|
+
)
|
|
11333
|
+
class ServiceConnectTestTrafficRulesHeaderProperty:
|
|
11334
|
+
def __init__(
|
|
11335
|
+
self,
|
|
11336
|
+
*,
|
|
11337
|
+
name: builtins.str,
|
|
11338
|
+
value: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnService.ServiceConnectTestTrafficRulesHeaderValueProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
|
|
11339
|
+
) -> None:
|
|
11340
|
+
'''
|
|
11341
|
+
:param name:
|
|
11342
|
+
:param value:
|
|
11343
|
+
|
|
11344
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceconnecttesttrafficrulesheader.html
|
|
11345
|
+
:exampleMetadata: fixture=_generated
|
|
11346
|
+
|
|
11347
|
+
Example::
|
|
11348
|
+
|
|
11349
|
+
# The code below shows an example of how to instantiate this type.
|
|
11350
|
+
# The values are placeholders you should change.
|
|
11351
|
+
from aws_cdk import aws_ecs as ecs
|
|
11352
|
+
|
|
11353
|
+
service_connect_test_traffic_rules_header_property = ecs.CfnService.ServiceConnectTestTrafficRulesHeaderProperty(
|
|
11354
|
+
name="name",
|
|
11355
|
+
|
|
11356
|
+
# the properties below are optional
|
|
11357
|
+
value=ecs.CfnService.ServiceConnectTestTrafficRulesHeaderValueProperty(
|
|
11358
|
+
exact="exact"
|
|
11359
|
+
)
|
|
11360
|
+
)
|
|
11361
|
+
'''
|
|
11362
|
+
if __debug__:
|
|
11363
|
+
type_hints = typing.get_type_hints(_typecheckingstub__95be6c123aaeddaea0658f43268bed3cd0c9fdafbb6f8eb86f2cfa3ece72131e)
|
|
11364
|
+
check_type(argname="argument name", value=name, expected_type=type_hints["name"])
|
|
11365
|
+
check_type(argname="argument value", value=value, expected_type=type_hints["value"])
|
|
11366
|
+
self._values: typing.Dict[builtins.str, typing.Any] = {
|
|
11367
|
+
"name": name,
|
|
11368
|
+
}
|
|
11369
|
+
if value is not None:
|
|
11370
|
+
self._values["value"] = value
|
|
11371
|
+
|
|
11372
|
+
@builtins.property
|
|
11373
|
+
def name(self) -> builtins.str:
|
|
11374
|
+
'''
|
|
11375
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceconnecttesttrafficrulesheader.html#cfn-ecs-service-serviceconnecttesttrafficrulesheader-name
|
|
11376
|
+
'''
|
|
11377
|
+
result = self._values.get("name")
|
|
11378
|
+
assert result is not None, "Required property 'name' is missing"
|
|
11379
|
+
return typing.cast(builtins.str, result)
|
|
11380
|
+
|
|
11381
|
+
@builtins.property
|
|
11382
|
+
def value(
|
|
11383
|
+
self,
|
|
11384
|
+
) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnService.ServiceConnectTestTrafficRulesHeaderValueProperty"]]:
|
|
11385
|
+
'''
|
|
11386
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceconnecttesttrafficrulesheader.html#cfn-ecs-service-serviceconnecttesttrafficrulesheader-value
|
|
11387
|
+
'''
|
|
11388
|
+
result = self._values.get("value")
|
|
11389
|
+
return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnService.ServiceConnectTestTrafficRulesHeaderValueProperty"]], result)
|
|
11390
|
+
|
|
11391
|
+
def __eq__(self, rhs: typing.Any) -> builtins.bool:
|
|
11392
|
+
return isinstance(rhs, self.__class__) and rhs._values == self._values
|
|
11393
|
+
|
|
11394
|
+
def __ne__(self, rhs: typing.Any) -> builtins.bool:
|
|
11395
|
+
return not (rhs == self)
|
|
11396
|
+
|
|
11397
|
+
def __repr__(self) -> str:
|
|
11398
|
+
return "ServiceConnectTestTrafficRulesHeaderProperty(%s)" % ", ".join(
|
|
11399
|
+
k + "=" + repr(v) for k, v in self._values.items()
|
|
11400
|
+
)
|
|
11401
|
+
|
|
11402
|
+
@jsii.data_type(
|
|
11403
|
+
jsii_type="aws-cdk-lib.aws_ecs.CfnService.ServiceConnectTestTrafficRulesHeaderValueProperty",
|
|
11404
|
+
jsii_struct_bases=[],
|
|
11405
|
+
name_mapping={"exact": "exact"},
|
|
11406
|
+
)
|
|
11407
|
+
class ServiceConnectTestTrafficRulesHeaderValueProperty:
|
|
11408
|
+
def __init__(self, *, exact: builtins.str) -> None:
|
|
11409
|
+
'''
|
|
11410
|
+
:param exact:
|
|
11411
|
+
|
|
11412
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceconnecttesttrafficrulesheadervalue.html
|
|
11413
|
+
:exampleMetadata: fixture=_generated
|
|
11414
|
+
|
|
11415
|
+
Example::
|
|
11416
|
+
|
|
11417
|
+
# The code below shows an example of how to instantiate this type.
|
|
11418
|
+
# The values are placeholders you should change.
|
|
11419
|
+
from aws_cdk import aws_ecs as ecs
|
|
11420
|
+
|
|
11421
|
+
service_connect_test_traffic_rules_header_value_property = ecs.CfnService.ServiceConnectTestTrafficRulesHeaderValueProperty(
|
|
11422
|
+
exact="exact"
|
|
11423
|
+
)
|
|
11424
|
+
'''
|
|
11425
|
+
if __debug__:
|
|
11426
|
+
type_hints = typing.get_type_hints(_typecheckingstub__00399c48ee323c2a3961b9504adf57d82b84cf123d2dd023433fc918ac78282f)
|
|
11427
|
+
check_type(argname="argument exact", value=exact, expected_type=type_hints["exact"])
|
|
11428
|
+
self._values: typing.Dict[builtins.str, typing.Any] = {
|
|
11429
|
+
"exact": exact,
|
|
11430
|
+
}
|
|
11431
|
+
|
|
11432
|
+
@builtins.property
|
|
11433
|
+
def exact(self) -> builtins.str:
|
|
11434
|
+
'''
|
|
11435
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceconnecttesttrafficrulesheadervalue.html#cfn-ecs-service-serviceconnecttesttrafficrulesheadervalue-exact
|
|
11436
|
+
'''
|
|
11437
|
+
result = self._values.get("exact")
|
|
11438
|
+
assert result is not None, "Required property 'exact' is missing"
|
|
11439
|
+
return typing.cast(builtins.str, result)
|
|
11440
|
+
|
|
11441
|
+
def __eq__(self, rhs: typing.Any) -> builtins.bool:
|
|
11442
|
+
return isinstance(rhs, self.__class__) and rhs._values == self._values
|
|
11443
|
+
|
|
11444
|
+
def __ne__(self, rhs: typing.Any) -> builtins.bool:
|
|
11445
|
+
return not (rhs == self)
|
|
11446
|
+
|
|
11447
|
+
def __repr__(self) -> str:
|
|
11448
|
+
return "ServiceConnectTestTrafficRulesHeaderValueProperty(%s)" % ", ".join(
|
|
11449
|
+
k + "=" + repr(v) for k, v in self._values.items()
|
|
11450
|
+
)
|
|
11451
|
+
|
|
11452
|
+
@jsii.data_type(
|
|
11453
|
+
jsii_type="aws-cdk-lib.aws_ecs.CfnService.ServiceConnectTestTrafficRulesProperty",
|
|
11454
|
+
jsii_struct_bases=[],
|
|
11455
|
+
name_mapping={"header": "header"},
|
|
11456
|
+
)
|
|
11457
|
+
class ServiceConnectTestTrafficRulesProperty:
|
|
11458
|
+
def __init__(
|
|
11459
|
+
self,
|
|
11460
|
+
*,
|
|
11461
|
+
header: typing.Union[_IResolvable_da3f097b, typing.Union["CfnService.ServiceConnectTestTrafficRulesHeaderProperty", typing.Dict[builtins.str, typing.Any]]],
|
|
11462
|
+
) -> None:
|
|
11463
|
+
'''
|
|
11464
|
+
:param header:
|
|
11465
|
+
|
|
11466
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceconnecttesttrafficrules.html
|
|
11467
|
+
:exampleMetadata: fixture=_generated
|
|
11468
|
+
|
|
11469
|
+
Example::
|
|
11470
|
+
|
|
11471
|
+
# The code below shows an example of how to instantiate this type.
|
|
11472
|
+
# The values are placeholders you should change.
|
|
11473
|
+
from aws_cdk import aws_ecs as ecs
|
|
11474
|
+
|
|
11475
|
+
service_connect_test_traffic_rules_property = ecs.CfnService.ServiceConnectTestTrafficRulesProperty(
|
|
11476
|
+
header=ecs.CfnService.ServiceConnectTestTrafficRulesHeaderProperty(
|
|
11477
|
+
name="name",
|
|
11478
|
+
|
|
11479
|
+
# the properties below are optional
|
|
11480
|
+
value=ecs.CfnService.ServiceConnectTestTrafficRulesHeaderValueProperty(
|
|
11481
|
+
exact="exact"
|
|
11482
|
+
)
|
|
11483
|
+
)
|
|
11484
|
+
)
|
|
11485
|
+
'''
|
|
11486
|
+
if __debug__:
|
|
11487
|
+
type_hints = typing.get_type_hints(_typecheckingstub__38ae0ce4b02d72c8b4b7583b571baf645aed5c2d7b9e970baefceb7ffc5abed3)
|
|
11488
|
+
check_type(argname="argument header", value=header, expected_type=type_hints["header"])
|
|
11489
|
+
self._values: typing.Dict[builtins.str, typing.Any] = {
|
|
11490
|
+
"header": header,
|
|
11491
|
+
}
|
|
11492
|
+
|
|
11493
|
+
@builtins.property
|
|
11494
|
+
def header(
|
|
11495
|
+
self,
|
|
11496
|
+
) -> typing.Union[_IResolvable_da3f097b, "CfnService.ServiceConnectTestTrafficRulesHeaderProperty"]:
|
|
11497
|
+
'''
|
|
11498
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceconnecttesttrafficrules.html#cfn-ecs-service-serviceconnecttesttrafficrules-header
|
|
11499
|
+
'''
|
|
11500
|
+
result = self._values.get("header")
|
|
11501
|
+
assert result is not None, "Required property 'header' is missing"
|
|
11502
|
+
return typing.cast(typing.Union[_IResolvable_da3f097b, "CfnService.ServiceConnectTestTrafficRulesHeaderProperty"], result)
|
|
11503
|
+
|
|
11504
|
+
def __eq__(self, rhs: typing.Any) -> builtins.bool:
|
|
11505
|
+
return isinstance(rhs, self.__class__) and rhs._values == self._values
|
|
11506
|
+
|
|
11507
|
+
def __ne__(self, rhs: typing.Any) -> builtins.bool:
|
|
11508
|
+
return not (rhs == self)
|
|
11509
|
+
|
|
11510
|
+
def __repr__(self) -> str:
|
|
11511
|
+
return "ServiceConnectTestTrafficRulesProperty(%s)" % ", ".join(
|
|
11512
|
+
k + "=" + repr(v) for k, v in self._values.items()
|
|
11513
|
+
)
|
|
11514
|
+
|
|
11062
11515
|
@jsii.data_type(
|
|
11063
11516
|
jsii_type="aws-cdk-lib.aws_ecs.CfnService.ServiceConnectTlsCertificateAuthorityProperty",
|
|
11064
11517
|
jsii_struct_bases=[],
|
|
@@ -12021,12 +12474,19 @@ class CfnServiceProps:
|
|
|
12021
12474
|
enable=False,
|
|
12022
12475
|
rollback=False
|
|
12023
12476
|
),
|
|
12477
|
+
bake_time_in_minutes=123,
|
|
12024
12478
|
deployment_circuit_breaker=ecs.CfnService.DeploymentCircuitBreakerProperty(
|
|
12025
12479
|
enable=False,
|
|
12026
12480
|
rollback=False
|
|
12027
12481
|
),
|
|
12482
|
+
lifecycle_hooks=[ecs.CfnService.DeploymentLifecycleHookProperty(
|
|
12483
|
+
hook_target_arn="hookTargetArn",
|
|
12484
|
+
lifecycle_stages=["lifecycleStages"],
|
|
12485
|
+
role_arn="roleArn"
|
|
12486
|
+
)],
|
|
12028
12487
|
maximum_percent=123,
|
|
12029
|
-
minimum_healthy_percent=123
|
|
12488
|
+
minimum_healthy_percent=123,
|
|
12489
|
+
strategy="strategy"
|
|
12030
12490
|
),
|
|
12031
12491
|
deployment_controller=ecs.CfnService.DeploymentControllerProperty(
|
|
12032
12492
|
type="type"
|
|
@@ -12037,6 +12497,14 @@ class CfnServiceProps:
|
|
|
12037
12497
|
health_check_grace_period_seconds=123,
|
|
12038
12498
|
launch_type="launchType",
|
|
12039
12499
|
load_balancers=[ecs.CfnService.LoadBalancerProperty(
|
|
12500
|
+
advanced_configuration=ecs.CfnService.AdvancedConfigurationProperty(
|
|
12501
|
+
alternate_target_group_arn="alternateTargetGroupArn",
|
|
12502
|
+
|
|
12503
|
+
# the properties below are optional
|
|
12504
|
+
production_listener_rule="productionListenerRule",
|
|
12505
|
+
role_arn="roleArn",
|
|
12506
|
+
test_listener_rule="testListenerRule"
|
|
12507
|
+
),
|
|
12040
12508
|
container_name="containerName",
|
|
12041
12509
|
container_port=123,
|
|
12042
12510
|
load_balancer_name="loadBalancerName",
|
|
@@ -12088,7 +12556,17 @@ class CfnServiceProps:
|
|
|
12088
12556
|
port=123,
|
|
12089
12557
|
|
|
12090
12558
|
# the properties below are optional
|
|
12091
|
-
dns_name="dnsName"
|
|
12559
|
+
dns_name="dnsName",
|
|
12560
|
+
test_traffic_rules=ecs.CfnService.ServiceConnectTestTrafficRulesProperty(
|
|
12561
|
+
header=ecs.CfnService.ServiceConnectTestTrafficRulesHeaderProperty(
|
|
12562
|
+
name="name",
|
|
12563
|
+
|
|
12564
|
+
# the properties below are optional
|
|
12565
|
+
value=ecs.CfnService.ServiceConnectTestTrafficRulesHeaderValueProperty(
|
|
12566
|
+
exact="exact"
|
|
12567
|
+
)
|
|
12568
|
+
)
|
|
12569
|
+
)
|
|
12092
12570
|
)],
|
|
12093
12571
|
discovery_name="discoveryName",
|
|
12094
12572
|
ingress_port_override=123,
|
|
@@ -27367,34 +27845,28 @@ class FargateServiceProps(BaseServiceOptions):
|
|
|
27367
27845
|
|
|
27368
27846
|
# cluster: ecs.Cluster
|
|
27369
27847
|
# task_definition: ecs.TaskDefinition
|
|
27848
|
+
# elb_alarm: cw.Alarm
|
|
27849
|
+
|
|
27370
27850
|
|
|
27371
|
-
service_name = "MyFargateService"
|
|
27372
27851
|
service = ecs.FargateService(self, "Service",
|
|
27373
|
-
service_name=service_name,
|
|
27374
27852
|
cluster=cluster,
|
|
27375
27853
|
task_definition=task_definition,
|
|
27376
|
-
min_healthy_percent=100
|
|
27854
|
+
min_healthy_percent=100,
|
|
27855
|
+
deployment_alarms=ecs.DeploymentAlarmConfig(
|
|
27856
|
+
alarm_names=[elb_alarm.alarm_name],
|
|
27857
|
+
behavior=ecs.AlarmBehavior.ROLLBACK_ON_ALARM
|
|
27858
|
+
)
|
|
27377
27859
|
)
|
|
27378
27860
|
|
|
27379
|
-
|
|
27380
|
-
|
|
27381
|
-
|
|
27382
|
-
|
|
27383
|
-
|
|
27384
|
-
dimensions_map={
|
|
27385
|
-
"ClusterName": cluster.cluster_name,
|
|
27386
|
-
# Using `service.serviceName` here will cause a circular dependency
|
|
27387
|
-
"ServiceName": service_name
|
|
27388
|
-
}
|
|
27389
|
-
)
|
|
27390
|
-
my_alarm = cw.Alarm(self, "CPUAlarm",
|
|
27391
|
-
alarm_name="cpuAlarmName",
|
|
27392
|
-
metric=cpu_metric,
|
|
27861
|
+
# Defining a deployment alarm after the service has been created
|
|
27862
|
+
cpu_alarm_name = "MyCpuMetricAlarm"
|
|
27863
|
+
cw.Alarm(self, "CPUAlarm",
|
|
27864
|
+
alarm_name=cpu_alarm_name,
|
|
27865
|
+
metric=service.metric_cpu_utilization(),
|
|
27393
27866
|
evaluation_periods=2,
|
|
27394
27867
|
threshold=80
|
|
27395
27868
|
)
|
|
27396
|
-
|
|
27397
|
-
service.enable_deployment_alarms([my_alarm.alarm_name],
|
|
27869
|
+
service.enable_deployment_alarms([cpu_alarm_name],
|
|
27398
27870
|
behavior=ecs.AlarmBehavior.FAIL_ON_ALARM
|
|
27399
27871
|
)
|
|
27400
27872
|
'''
|
|
@@ -42904,34 +43376,28 @@ class FargateService(
|
|
|
42904
43376
|
|
|
42905
43377
|
# cluster: ecs.Cluster
|
|
42906
43378
|
# task_definition: ecs.TaskDefinition
|
|
43379
|
+
# elb_alarm: cw.Alarm
|
|
43380
|
+
|
|
42907
43381
|
|
|
42908
|
-
service_name = "MyFargateService"
|
|
42909
43382
|
service = ecs.FargateService(self, "Service",
|
|
42910
|
-
service_name=service_name,
|
|
42911
43383
|
cluster=cluster,
|
|
42912
43384
|
task_definition=task_definition,
|
|
42913
|
-
min_healthy_percent=100
|
|
43385
|
+
min_healthy_percent=100,
|
|
43386
|
+
deployment_alarms=ecs.DeploymentAlarmConfig(
|
|
43387
|
+
alarm_names=[elb_alarm.alarm_name],
|
|
43388
|
+
behavior=ecs.AlarmBehavior.ROLLBACK_ON_ALARM
|
|
43389
|
+
)
|
|
42914
43390
|
)
|
|
42915
43391
|
|
|
42916
|
-
|
|
42917
|
-
|
|
42918
|
-
|
|
42919
|
-
|
|
42920
|
-
|
|
42921
|
-
dimensions_map={
|
|
42922
|
-
"ClusterName": cluster.cluster_name,
|
|
42923
|
-
# Using `service.serviceName` here will cause a circular dependency
|
|
42924
|
-
"ServiceName": service_name
|
|
42925
|
-
}
|
|
42926
|
-
)
|
|
42927
|
-
my_alarm = cw.Alarm(self, "CPUAlarm",
|
|
42928
|
-
alarm_name="cpuAlarmName",
|
|
42929
|
-
metric=cpu_metric,
|
|
43392
|
+
# Defining a deployment alarm after the service has been created
|
|
43393
|
+
cpu_alarm_name = "MyCpuMetricAlarm"
|
|
43394
|
+
cw.Alarm(self, "CPUAlarm",
|
|
43395
|
+
alarm_name=cpu_alarm_name,
|
|
43396
|
+
metric=service.metric_cpu_utilization(),
|
|
42930
43397
|
evaluation_periods=2,
|
|
42931
43398
|
threshold=80
|
|
42932
43399
|
)
|
|
42933
|
-
|
|
42934
|
-
service.enable_deployment_alarms([my_alarm.alarm_name],
|
|
43400
|
+
service.enable_deployment_alarms([cpu_alarm_name],
|
|
42935
43401
|
behavior=ecs.AlarmBehavior.FAIL_ON_ALARM
|
|
42936
43402
|
)
|
|
42937
43403
|
'''
|
|
@@ -44294,6 +44760,16 @@ def _typecheckingstub__e2af64fb9defca157f1246b9e5c27f87c21cd5930eb232ddeb8f17161
|
|
|
44294
44760
|
"""Type checking stubs"""
|
|
44295
44761
|
pass
|
|
44296
44762
|
|
|
44763
|
+
def _typecheckingstub__c3f25e48977935912f7b78499d7be554157bd31ec2fadc2d811e82880622bfdf(
|
|
44764
|
+
*,
|
|
44765
|
+
alternate_target_group_arn: builtins.str,
|
|
44766
|
+
production_listener_rule: typing.Optional[builtins.str] = None,
|
|
44767
|
+
role_arn: typing.Optional[builtins.str] = None,
|
|
44768
|
+
test_listener_rule: typing.Optional[builtins.str] = None,
|
|
44769
|
+
) -> None:
|
|
44770
|
+
"""Type checking stubs"""
|
|
44771
|
+
pass
|
|
44772
|
+
|
|
44297
44773
|
def _typecheckingstub__40010db1fb42b63f942b5b11b7277545c2a1bffc42369636da9c14f813a744c5(
|
|
44298
44774
|
*,
|
|
44299
44775
|
assign_public_ip: typing.Optional[builtins.str] = None,
|
|
@@ -44332,9 +44808,12 @@ def _typecheckingstub__b2dbcb552902e6050bf0a575d5654d1d6ff74c24d93692dd2b9a98d50
|
|
|
44332
44808
|
def _typecheckingstub__d809d14e704a11675cbface3b43579e5f8f2a29c9b48e27608c625a3f01cb3a6(
|
|
44333
44809
|
*,
|
|
44334
44810
|
alarms: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnService.DeploymentAlarmsProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
|
|
44811
|
+
bake_time_in_minutes: typing.Optional[jsii.Number] = None,
|
|
44335
44812
|
deployment_circuit_breaker: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnService.DeploymentCircuitBreakerProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
|
|
44813
|
+
lifecycle_hooks: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnService.DeploymentLifecycleHookProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
|
|
44336
44814
|
maximum_percent: typing.Optional[jsii.Number] = None,
|
|
44337
44815
|
minimum_healthy_percent: typing.Optional[jsii.Number] = None,
|
|
44816
|
+
strategy: typing.Optional[builtins.str] = None,
|
|
44338
44817
|
) -> None:
|
|
44339
44818
|
"""Type checking stubs"""
|
|
44340
44819
|
pass
|
|
@@ -44346,6 +44825,15 @@ def _typecheckingstub__e9921934df7686d8808e649b9ab979d2747a6f8cba336af2424f59783
|
|
|
44346
44825
|
"""Type checking stubs"""
|
|
44347
44826
|
pass
|
|
44348
44827
|
|
|
44828
|
+
def _typecheckingstub__81d51cf744a434ad2ba13fc9f3dea23611c28b28f4a9414d8324cf57768cea5e(
|
|
44829
|
+
*,
|
|
44830
|
+
hook_target_arn: builtins.str,
|
|
44831
|
+
lifecycle_stages: typing.Sequence[builtins.str],
|
|
44832
|
+
role_arn: builtins.str,
|
|
44833
|
+
) -> None:
|
|
44834
|
+
"""Type checking stubs"""
|
|
44835
|
+
pass
|
|
44836
|
+
|
|
44349
44837
|
def _typecheckingstub__ac73ec1d9d94d0e545ad276e88baeb61d67c664fed33ac2082b94f93d579944d(
|
|
44350
44838
|
*,
|
|
44351
44839
|
resource_type: builtins.str,
|
|
@@ -44357,6 +44845,7 @@ def _typecheckingstub__ac73ec1d9d94d0e545ad276e88baeb61d67c664fed33ac2082b94f93d
|
|
|
44357
44845
|
|
|
44358
44846
|
def _typecheckingstub__251c3999c1586967f7c9091782e6a113831e05b5f853b910cad8c8e75f654def(
|
|
44359
44847
|
*,
|
|
44848
|
+
advanced_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnService.AdvancedConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
|
|
44360
44849
|
container_name: typing.Optional[builtins.str] = None,
|
|
44361
44850
|
container_port: typing.Optional[jsii.Number] = None,
|
|
44362
44851
|
load_balancer_name: typing.Optional[builtins.str] = None,
|
|
@@ -44409,6 +44898,7 @@ def _typecheckingstub__7552e3d2b970cfb26552bec096b0680acf8bc8c7b59096bbf5a210dd3
|
|
|
44409
44898
|
*,
|
|
44410
44899
|
port: jsii.Number,
|
|
44411
44900
|
dns_name: typing.Optional[builtins.str] = None,
|
|
44901
|
+
test_traffic_rules: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnService.ServiceConnectTestTrafficRulesProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
|
|
44412
44902
|
) -> None:
|
|
44413
44903
|
"""Type checking stubs"""
|
|
44414
44904
|
pass
|
|
@@ -44435,6 +44925,28 @@ def _typecheckingstub__047411a3798b037ac5ad218c8ed5492e98c896db58ad86ac1acde082c
|
|
|
44435
44925
|
"""Type checking stubs"""
|
|
44436
44926
|
pass
|
|
44437
44927
|
|
|
44928
|
+
def _typecheckingstub__95be6c123aaeddaea0658f43268bed3cd0c9fdafbb6f8eb86f2cfa3ece72131e(
|
|
44929
|
+
*,
|
|
44930
|
+
name: builtins.str,
|
|
44931
|
+
value: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnService.ServiceConnectTestTrafficRulesHeaderValueProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
|
|
44932
|
+
) -> None:
|
|
44933
|
+
"""Type checking stubs"""
|
|
44934
|
+
pass
|
|
44935
|
+
|
|
44936
|
+
def _typecheckingstub__00399c48ee323c2a3961b9504adf57d82b84cf123d2dd023433fc918ac78282f(
|
|
44937
|
+
*,
|
|
44938
|
+
exact: builtins.str,
|
|
44939
|
+
) -> None:
|
|
44940
|
+
"""Type checking stubs"""
|
|
44941
|
+
pass
|
|
44942
|
+
|
|
44943
|
+
def _typecheckingstub__38ae0ce4b02d72c8b4b7583b571baf645aed5c2d7b9e970baefceb7ffc5abed3(
|
|
44944
|
+
*,
|
|
44945
|
+
header: typing.Union[_IResolvable_da3f097b, typing.Union[CfnService.ServiceConnectTestTrafficRulesHeaderProperty, typing.Dict[builtins.str, typing.Any]]],
|
|
44946
|
+
) -> None:
|
|
44947
|
+
"""Type checking stubs"""
|
|
44948
|
+
pass
|
|
44949
|
+
|
|
44438
44950
|
def _typecheckingstub__aced8e4b81fd8cb9c6f67cef173bec4d0f64dc88e3c16ebc23350b833639b2e1(
|
|
44439
44951
|
*,
|
|
44440
44952
|
aws_pca_authority_arn: typing.Optional[builtins.str] = None,
|