aws-cdk-lib 2.204.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/__init__.py +170 -92
- aws_cdk/_jsii/__init__.py +1 -1
- aws_cdk/_jsii/{aws-cdk-lib@2.204.0.jsii.tgz → aws-cdk-lib@2.206.0.jsii.tgz} +0 -0
- aws_cdk/aws_aiops/__init__.py +89 -39
- aws_cdk/aws_applicationautoscaling/__init__.py +2 -2
- aws_cdk/aws_arczonalshift/__init__.py +4 -1
- aws_cdk/aws_b2bi/__init__.py +32 -16
- aws_cdk/aws_bedrock/__init__.py +198 -10
- aws_cdk/aws_cassandra/__init__.py +156 -0
- aws_cdk/aws_cloudformation/__init__.py +74 -72
- aws_cdk/aws_cloudfront/__init__.py +1181 -485
- aws_cdk/aws_cloudfront_origins/__init__.py +26 -21
- aws_cdk/aws_cloudwatch/__init__.py +61 -0
- aws_cdk/aws_codebuild/__init__.py +216 -36
- aws_cdk/aws_datasync/__init__.py +2 -2
- aws_cdk/aws_docdb/__init__.py +78 -0
- aws_cdk/aws_dynamodb/__init__.py +207 -35
- aws_cdk/aws_ec2/__init__.py +32 -30
- aws_cdk/aws_ecs/__init__.py +718 -213
- aws_cdk/aws_emrserverless/__init__.py +5 -5
- aws_cdk/aws_events/__init__.py +58 -3
- aws_cdk/aws_events_targets/__init__.py +7 -2
- aws_cdk/aws_evs/__init__.py +7 -7
- aws_cdk/aws_fsx/__init__.py +138 -78
- aws_cdk/aws_gamelift/__init__.py +19 -0
- aws_cdk/aws_glue/__init__.py +3 -3
- aws_cdk/aws_iot/__init__.py +1 -1
- aws_cdk/aws_kinesis/__init__.py +67 -13
- aws_cdk/aws_kinesisfirehose/__init__.py +28 -1
- aws_cdk/aws_lex/__init__.py +36 -19
- aws_cdk/aws_neptune/__init__.py +12 -12
- aws_cdk/aws_odb/__init__.py +4049 -0
- aws_cdk/aws_omics/__init__.py +1 -1
- aws_cdk/aws_qbusiness/__init__.py +471 -4
- aws_cdk/aws_quicksight/__init__.py +185 -16
- aws_cdk/aws_rds/__init__.py +169 -17
- aws_cdk/aws_redshiftserverless/__init__.py +72 -45
- aws_cdk/aws_route53/__init__.py +41 -19
- aws_cdk/aws_s3tables/__init__.py +1005 -0
- aws_cdk/aws_sagemaker/__init__.py +20 -0
- aws_cdk/aws_synthetics/__init__.py +141 -37
- aws_cdk/aws_transfer/__init__.py +23 -1
- aws_cdk/custom_resources/__init__.py +32 -4
- {aws_cdk_lib-2.204.0.dist-info → aws_cdk_lib-2.206.0.dist-info}/METADATA +1 -1
- {aws_cdk_lib-2.204.0.dist-info → aws_cdk_lib-2.206.0.dist-info}/RECORD +49 -48
- {aws_cdk_lib-2.204.0.dist-info → aws_cdk_lib-2.206.0.dist-info}/LICENSE +0 -0
- {aws_cdk_lib-2.204.0.dist-info → aws_cdk_lib-2.206.0.dist-info}/NOTICE +0 -0
- {aws_cdk_lib-2.204.0.dist-info → aws_cdk_lib-2.206.0.dist-info}/WHEEL +0 -0
- {aws_cdk_lib-2.204.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",
|
|
8649
|
+
# service: ecs.FargateService
|
|
8678
8650
|
|
|
8679
|
-
# the properties below are optional
|
|
8680
|
-
managed_ebs_volume=ecs.CfnService.ServiceManagedEBSVolumeConfigurationProperty(
|
|
8681
|
-
role_arn="roleArn",
|
|
8682
|
-
|
|
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
|
'''
|
|
@@ -8846,7 +8799,9 @@ class CfnService(
|
|
|
8846
8799
|
@builtins.property
|
|
8847
8800
|
@jsii.member(jsii_name="attrServiceArn")
|
|
8848
8801
|
def attr_service_arn(self) -> builtins.str:
|
|
8849
|
-
'''
|
|
8802
|
+
'''The ARN that identifies the service.
|
|
8803
|
+
|
|
8804
|
+
For more information about the ARN format, see `Amazon Resource Name (ARN) <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids>`_ in the *Amazon ECS Developer Guide* .
|
|
8850
8805
|
|
|
8851
8806
|
:cloudformationAttribute: ServiceArn
|
|
8852
8807
|
'''
|
|
@@ -9265,6 +9220,109 @@ class CfnService(
|
|
|
9265
9220
|
check_type(argname="argument value", value=value, expected_type=type_hints["value"])
|
|
9266
9221
|
jsii.set(self, "vpcLatticeConfigurations", value) # pyright: ignore[reportArgumentType]
|
|
9267
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
|
+
|
|
9268
9326
|
@jsii.data_type(
|
|
9269
9327
|
jsii_type="aws-cdk-lib.aws_ecs.CfnService.AwsVpcConfigurationProperty",
|
|
9270
9328
|
jsii_struct_bases=[],
|
|
@@ -9660,9 +9718,12 @@ class CfnService(
|
|
|
9660
9718
|
jsii_struct_bases=[],
|
|
9661
9719
|
name_mapping={
|
|
9662
9720
|
"alarms": "alarms",
|
|
9721
|
+
"bake_time_in_minutes": "bakeTimeInMinutes",
|
|
9663
9722
|
"deployment_circuit_breaker": "deploymentCircuitBreaker",
|
|
9723
|
+
"lifecycle_hooks": "lifecycleHooks",
|
|
9664
9724
|
"maximum_percent": "maximumPercent",
|
|
9665
9725
|
"minimum_healthy_percent": "minimumHealthyPercent",
|
|
9726
|
+
"strategy": "strategy",
|
|
9666
9727
|
},
|
|
9667
9728
|
)
|
|
9668
9729
|
class DeploymentConfigurationProperty:
|
|
@@ -9670,16 +9731,22 @@ class CfnService(
|
|
|
9670
9731
|
self,
|
|
9671
9732
|
*,
|
|
9672
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,
|
|
9673
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,
|
|
9674
9737
|
maximum_percent: typing.Optional[jsii.Number] = None,
|
|
9675
9738
|
minimum_healthy_percent: typing.Optional[jsii.Number] = None,
|
|
9739
|
+
strategy: typing.Optional[builtins.str] = None,
|
|
9676
9740
|
) -> None:
|
|
9677
9741
|
'''Optional deployment parameters that control how many tasks run during a deployment and the ordering of stopping and starting tasks.
|
|
9678
9742
|
|
|
9679
9743
|
:param alarms: Information about the CloudWatch alarms.
|
|
9744
|
+
:param bake_time_in_minutes:
|
|
9680
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:
|
|
9681
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.
|
|
9682
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:
|
|
9683
9750
|
|
|
9684
9751
|
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentconfiguration.html
|
|
9685
9752
|
:exampleMetadata: fixture=_generated
|
|
@@ -9696,29 +9763,45 @@ class CfnService(
|
|
|
9696
9763
|
enable=False,
|
|
9697
9764
|
rollback=False
|
|
9698
9765
|
),
|
|
9766
|
+
bake_time_in_minutes=123,
|
|
9699
9767
|
deployment_circuit_breaker=ecs.CfnService.DeploymentCircuitBreakerProperty(
|
|
9700
9768
|
enable=False,
|
|
9701
9769
|
rollback=False
|
|
9702
9770
|
),
|
|
9771
|
+
lifecycle_hooks=[ecs.CfnService.DeploymentLifecycleHookProperty(
|
|
9772
|
+
hook_target_arn="hookTargetArn",
|
|
9773
|
+
lifecycle_stages=["lifecycleStages"],
|
|
9774
|
+
role_arn="roleArn"
|
|
9775
|
+
)],
|
|
9703
9776
|
maximum_percent=123,
|
|
9704
|
-
minimum_healthy_percent=123
|
|
9777
|
+
minimum_healthy_percent=123,
|
|
9778
|
+
strategy="strategy"
|
|
9705
9779
|
)
|
|
9706
9780
|
'''
|
|
9707
9781
|
if __debug__:
|
|
9708
9782
|
type_hints = typing.get_type_hints(_typecheckingstub__d809d14e704a11675cbface3b43579e5f8f2a29c9b48e27608c625a3f01cb3a6)
|
|
9709
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"])
|
|
9710
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"])
|
|
9711
9787
|
check_type(argname="argument maximum_percent", value=maximum_percent, expected_type=type_hints["maximum_percent"])
|
|
9712
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"])
|
|
9713
9790
|
self._values: typing.Dict[builtins.str, typing.Any] = {}
|
|
9714
9791
|
if alarms is not None:
|
|
9715
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
|
|
9716
9795
|
if deployment_circuit_breaker is not None:
|
|
9717
9796
|
self._values["deployment_circuit_breaker"] = deployment_circuit_breaker
|
|
9797
|
+
if lifecycle_hooks is not None:
|
|
9798
|
+
self._values["lifecycle_hooks"] = lifecycle_hooks
|
|
9718
9799
|
if maximum_percent is not None:
|
|
9719
9800
|
self._values["maximum_percent"] = maximum_percent
|
|
9720
9801
|
if minimum_healthy_percent is not None:
|
|
9721
9802
|
self._values["minimum_healthy_percent"] = minimum_healthy_percent
|
|
9803
|
+
if strategy is not None:
|
|
9804
|
+
self._values["strategy"] = strategy
|
|
9722
9805
|
|
|
9723
9806
|
@builtins.property
|
|
9724
9807
|
def alarms(
|
|
@@ -9731,6 +9814,14 @@ class CfnService(
|
|
|
9731
9814
|
result = self._values.get("alarms")
|
|
9732
9815
|
return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnService.DeploymentAlarmsProperty"]], result)
|
|
9733
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
|
+
|
|
9734
9825
|
@builtins.property
|
|
9735
9826
|
def deployment_circuit_breaker(
|
|
9736
9827
|
self,
|
|
@@ -9746,6 +9837,16 @@ class CfnService(
|
|
|
9746
9837
|
result = self._values.get("deployment_circuit_breaker")
|
|
9747
9838
|
return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnService.DeploymentCircuitBreakerProperty"]], result)
|
|
9748
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
|
+
|
|
9749
9850
|
@builtins.property
|
|
9750
9851
|
def maximum_percent(self) -> typing.Optional[jsii.Number]:
|
|
9751
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).
|
|
@@ -9801,6 +9902,14 @@ class CfnService(
|
|
|
9801
9902
|
result = self._values.get("minimum_healthy_percent")
|
|
9802
9903
|
return typing.cast(typing.Optional[jsii.Number], result)
|
|
9803
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
|
+
|
|
9804
9913
|
def __eq__(self, rhs: typing.Any) -> builtins.bool:
|
|
9805
9914
|
return isinstance(rhs, self.__class__) and rhs._values == self._values
|
|
9806
9915
|
|
|
@@ -9867,6 +9976,92 @@ class CfnService(
|
|
|
9867
9976
|
k + "=" + repr(v) for k, v in self._values.items()
|
|
9868
9977
|
)
|
|
9869
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
|
+
|
|
9870
10065
|
@jsii.data_type(
|
|
9871
10066
|
jsii_type="aws-cdk-lib.aws_ecs.CfnService.EBSTagSpecificationProperty",
|
|
9872
10067
|
jsii_struct_bases=[],
|
|
@@ -9970,6 +10165,7 @@ class CfnService(
|
|
|
9970
10165
|
jsii_type="aws-cdk-lib.aws_ecs.CfnService.LoadBalancerProperty",
|
|
9971
10166
|
jsii_struct_bases=[],
|
|
9972
10167
|
name_mapping={
|
|
10168
|
+
"advanced_configuration": "advancedConfiguration",
|
|
9973
10169
|
"container_name": "containerName",
|
|
9974
10170
|
"container_port": "containerPort",
|
|
9975
10171
|
"load_balancer_name": "loadBalancerName",
|
|
@@ -9980,6 +10176,7 @@ class CfnService(
|
|
|
9980
10176
|
def __init__(
|
|
9981
10177
|
self,
|
|
9982
10178
|
*,
|
|
10179
|
+
advanced_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnService.AdvancedConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
|
|
9983
10180
|
container_name: typing.Optional[builtins.str] = None,
|
|
9984
10181
|
container_port: typing.Optional[jsii.Number] = None,
|
|
9985
10182
|
load_balancer_name: typing.Optional[builtins.str] = None,
|
|
@@ -9991,6 +10188,7 @@ class CfnService(
|
|
|
9991
10188
|
|
|
9992
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.
|
|
9993
10190
|
|
|
10191
|
+
:param advanced_configuration:
|
|
9994
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.
|
|
9995
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.
|
|
9996
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.
|
|
@@ -10006,6 +10204,14 @@ class CfnService(
|
|
|
10006
10204
|
from aws_cdk import aws_ecs as ecs
|
|
10007
10205
|
|
|
10008
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
|
+
),
|
|
10009
10215
|
container_name="containerName",
|
|
10010
10216
|
container_port=123,
|
|
10011
10217
|
load_balancer_name="loadBalancerName",
|
|
@@ -10014,11 +10220,14 @@ class CfnService(
|
|
|
10014
10220
|
'''
|
|
10015
10221
|
if __debug__:
|
|
10016
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"])
|
|
10017
10224
|
check_type(argname="argument container_name", value=container_name, expected_type=type_hints["container_name"])
|
|
10018
10225
|
check_type(argname="argument container_port", value=container_port, expected_type=type_hints["container_port"])
|
|
10019
10226
|
check_type(argname="argument load_balancer_name", value=load_balancer_name, expected_type=type_hints["load_balancer_name"])
|
|
10020
10227
|
check_type(argname="argument target_group_arn", value=target_group_arn, expected_type=type_hints["target_group_arn"])
|
|
10021
10228
|
self._values: typing.Dict[builtins.str, typing.Any] = {}
|
|
10229
|
+
if advanced_configuration is not None:
|
|
10230
|
+
self._values["advanced_configuration"] = advanced_configuration
|
|
10022
10231
|
if container_name is not None:
|
|
10023
10232
|
self._values["container_name"] = container_name
|
|
10024
10233
|
if container_port is not None:
|
|
@@ -10028,6 +10237,16 @@ class CfnService(
|
|
|
10028
10237
|
if target_group_arn is not None:
|
|
10029
10238
|
self._values["target_group_arn"] = target_group_arn
|
|
10030
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
|
+
|
|
10031
10250
|
@builtins.property
|
|
10032
10251
|
def container_name(self) -> typing.Optional[builtins.str]:
|
|
10033
10252
|
'''The name of the container (as it appears in a container definition) to associate with the load balancer.
|
|
@@ -10619,7 +10838,11 @@ class CfnService(
|
|
|
10619
10838
|
@jsii.data_type(
|
|
10620
10839
|
jsii_type="aws-cdk-lib.aws_ecs.CfnService.ServiceConnectClientAliasProperty",
|
|
10621
10840
|
jsii_struct_bases=[],
|
|
10622
|
-
name_mapping={
|
|
10841
|
+
name_mapping={
|
|
10842
|
+
"port": "port",
|
|
10843
|
+
"dns_name": "dnsName",
|
|
10844
|
+
"test_traffic_rules": "testTrafficRules",
|
|
10845
|
+
},
|
|
10623
10846
|
)
|
|
10624
10847
|
class ServiceConnectClientAliasProperty:
|
|
10625
10848
|
def __init__(
|
|
@@ -10627,6 +10850,7 @@ class CfnService(
|
|
|
10627
10850
|
*,
|
|
10628
10851
|
port: jsii.Number,
|
|
10629
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,
|
|
10630
10854
|
) -> None:
|
|
10631
10855
|
'''Each alias ("endpoint") is a fully-qualified name and port number that other tasks ("clients") can use to connect to this service.
|
|
10632
10856
|
|
|
@@ -10636,6 +10860,7 @@ class CfnService(
|
|
|
10636
10860
|
|
|
10637
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* .
|
|
10638
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:
|
|
10639
10864
|
|
|
10640
10865
|
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceconnectclientalias.html
|
|
10641
10866
|
:exampleMetadata: fixture=_generated
|
|
@@ -10650,18 +10875,31 @@ class CfnService(
|
|
|
10650
10875
|
port=123,
|
|
10651
10876
|
|
|
10652
10877
|
# the properties below are optional
|
|
10653
|
-
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
|
+
)
|
|
10654
10889
|
)
|
|
10655
10890
|
'''
|
|
10656
10891
|
if __debug__:
|
|
10657
10892
|
type_hints = typing.get_type_hints(_typecheckingstub__7552e3d2b970cfb26552bec096b0680acf8bc8c7b59096bbf5a210dd3266fd35)
|
|
10658
10893
|
check_type(argname="argument port", value=port, expected_type=type_hints["port"])
|
|
10659
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"])
|
|
10660
10896
|
self._values: typing.Dict[builtins.str, typing.Any] = {
|
|
10661
10897
|
"port": port,
|
|
10662
10898
|
}
|
|
10663
10899
|
if dns_name is not None:
|
|
10664
10900
|
self._values["dns_name"] = dns_name
|
|
10901
|
+
if test_traffic_rules is not None:
|
|
10902
|
+
self._values["test_traffic_rules"] = test_traffic_rules
|
|
10665
10903
|
|
|
10666
10904
|
@builtins.property
|
|
10667
10905
|
def port(self) -> jsii.Number:
|
|
@@ -10692,6 +10930,16 @@ class CfnService(
|
|
|
10692
10930
|
result = self._values.get("dns_name")
|
|
10693
10931
|
return typing.cast(typing.Optional[builtins.str], result)
|
|
10694
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
|
+
|
|
10695
10943
|
def __eq__(self, rhs: typing.Any) -> builtins.bool:
|
|
10696
10944
|
return isinstance(rhs, self.__class__) and rhs._values == self._values
|
|
10697
10945
|
|
|
@@ -10765,7 +11013,17 @@ class CfnService(
|
|
|
10765
11013
|
port=123,
|
|
10766
11014
|
|
|
10767
11015
|
# the properties below are optional
|
|
10768
|
-
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
|
+
)
|
|
10769
11027
|
)],
|
|
10770
11028
|
discovery_name="discoveryName",
|
|
10771
11029
|
ingress_port_override=123,
|
|
@@ -10928,7 +11186,17 @@ class CfnService(
|
|
|
10928
11186
|
port=123,
|
|
10929
11187
|
|
|
10930
11188
|
# the properties below are optional
|
|
10931
|
-
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
|
+
)
|
|
10932
11200
|
)],
|
|
10933
11201
|
discovery_name="discoveryName",
|
|
10934
11202
|
ingress_port_override=123,
|
|
@@ -11057,6 +11325,193 @@ class CfnService(
|
|
|
11057
11325
|
k + "=" + repr(v) for k, v in self._values.items()
|
|
11058
11326
|
)
|
|
11059
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
|
+
|
|
11060
11515
|
@jsii.data_type(
|
|
11061
11516
|
jsii_type="aws-cdk-lib.aws_ecs.CfnService.ServiceConnectTlsCertificateAuthorityProperty",
|
|
11062
11517
|
jsii_struct_bases=[],
|
|
@@ -12019,12 +12474,19 @@ class CfnServiceProps:
|
|
|
12019
12474
|
enable=False,
|
|
12020
12475
|
rollback=False
|
|
12021
12476
|
),
|
|
12477
|
+
bake_time_in_minutes=123,
|
|
12022
12478
|
deployment_circuit_breaker=ecs.CfnService.DeploymentCircuitBreakerProperty(
|
|
12023
12479
|
enable=False,
|
|
12024
12480
|
rollback=False
|
|
12025
12481
|
),
|
|
12482
|
+
lifecycle_hooks=[ecs.CfnService.DeploymentLifecycleHookProperty(
|
|
12483
|
+
hook_target_arn="hookTargetArn",
|
|
12484
|
+
lifecycle_stages=["lifecycleStages"],
|
|
12485
|
+
role_arn="roleArn"
|
|
12486
|
+
)],
|
|
12026
12487
|
maximum_percent=123,
|
|
12027
|
-
minimum_healthy_percent=123
|
|
12488
|
+
minimum_healthy_percent=123,
|
|
12489
|
+
strategy="strategy"
|
|
12028
12490
|
),
|
|
12029
12491
|
deployment_controller=ecs.CfnService.DeploymentControllerProperty(
|
|
12030
12492
|
type="type"
|
|
@@ -12035,6 +12497,14 @@ class CfnServiceProps:
|
|
|
12035
12497
|
health_check_grace_period_seconds=123,
|
|
12036
12498
|
launch_type="launchType",
|
|
12037
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
|
+
),
|
|
12038
12508
|
container_name="containerName",
|
|
12039
12509
|
container_port=123,
|
|
12040
12510
|
load_balancer_name="loadBalancerName",
|
|
@@ -12086,7 +12556,17 @@ class CfnServiceProps:
|
|
|
12086
12556
|
port=123,
|
|
12087
12557
|
|
|
12088
12558
|
# the properties below are optional
|
|
12089
|
-
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
|
+
)
|
|
12090
12570
|
)],
|
|
12091
12571
|
discovery_name="discoveryName",
|
|
12092
12572
|
ingress_port_override=123,
|
|
@@ -12885,7 +13365,7 @@ class CfnTaskDefinition(
|
|
|
12885
13365
|
:param ephemeral_storage: The ephemeral storage settings to use for tasks run with the task definition.
|
|
12886
13366
|
:param execution_role_arn: The Amazon Resource Name (ARN) of the task execution role that grants the Amazon ECS container agent permission to make AWS API calls on your behalf. For informationabout the required IAM roles for Amazon ECS, see `IAM roles for Amazon ECS <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-ecs-iam-role-overview.html>`_ in the *Amazon Elastic Container Service Developer Guide* .
|
|
12887
13367
|
:param family: The name of a family that this task definition is registered to. Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed. A family groups multiple versions of a task definition. Amazon ECS gives the first task definition that you registered to a family a revision number of 1. Amazon ECS gives sequential revision numbers to each task definition that you add. .. epigraph:: To use revision numbers when you update a task definition, specify this property. If you don't specify a value, AWS CloudFormation generates a new task definition each time that you update it.
|
|
12888
|
-
:param inference_accelerators:
|
|
13368
|
+
:param inference_accelerators:
|
|
12889
13369
|
:param ipc_mode: The IPC resource namespace to use for the containers in the task. The valid values are ``host`` , ``task`` , or ``none`` . If ``host`` is specified, then all containers within the tasks that specified the ``host`` IPC mode on the same container instance share the same IPC resources with the host Amazon EC2 instance. If ``task`` is specified, all containers within the specified task share the same IPC resources. If ``none`` is specified, then IPC resources within the containers of a task are private and not shared with other containers in a task or on the container instance. If no value is specified, then the IPC resource namespace sharing depends on the Docker daemon setting on the container instance. If the ``host`` IPC mode is used, be aware that there is a heightened risk of undesired IPC namespace expose. If you are setting namespaced kernel parameters using ``systemControls`` for the containers in the task, the following will apply to your IPC resource namespace. For more information, see `System Controls <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html>`_ in the *Amazon Elastic Container Service Developer Guide* . - For tasks that use the ``host`` IPC mode, IPC namespace related ``systemControls`` are not supported. - For tasks that use the ``task`` IPC mode, IPC namespace related ``systemControls`` will apply to all containers within a task. .. epigraph:: This parameter is not supported for Windows containers or tasks run on AWS Fargate .
|
|
12890
13370
|
:param memory: The amount (in MiB) of memory used by the task. If your tasks runs on Amazon EC2 instances, you must specify either a task-level memory value or a container-level memory value. This field is optional and any value can be used. If a task-level memory value is specified, the container-level memory value is optional. For more information regarding container-level memory and memory reservation, see `ContainerDefinition <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html>`_ . If your tasks runs on AWS Fargate , this field is required. You must use one of the following values. The value you choose determines your range of valid values for the ``cpu`` parameter. - 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available ``cpu`` values: 256 (.25 vCPU) - 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available ``cpu`` values: 512 (.5 vCPU) - 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available ``cpu`` values: 1024 (1 vCPU) - Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - Available ``cpu`` values: 2048 (2 vCPU) - Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - Available ``cpu`` values: 4096 (4 vCPU) - Between 16 GB and 60 GB in 4 GB increments - Available ``cpu`` values: 8192 (8 vCPU) This option requires Linux platform ``1.4.0`` or later. - Between 32GB and 120 GB in 8 GB increments - Available ``cpu`` values: 16384 (16 vCPU) This option requires Linux platform ``1.4.0`` or later.
|
|
12891
13371
|
:param network_mode: The Docker networking mode to use for the containers in the task. The valid values are ``none`` , ``bridge`` , ``awsvpc`` , and ``host`` . If no network mode is specified, the default is ``bridge`` . For Amazon ECS tasks on Fargate, the ``awsvpc`` network mode is required. For Amazon ECS tasks on Amazon EC2 Linux instances, any network mode can be used. For Amazon ECS tasks on Amazon EC2 Windows instances, ``<default>`` or ``awsvpc`` can be used. If the network mode is set to ``none`` , you cannot specify port mappings in your container definitions, and the tasks containers do not have external connectivity. The ``host`` and ``awsvpc`` network modes offer the highest networking performance for containers because they use the EC2 network stack instead of the virtualized network stack provided by the ``bridge`` mode. With the ``host`` and ``awsvpc`` network modes, exposed container ports are mapped directly to the corresponding host port (for the ``host`` network mode) or the attached elastic network interface port (for the ``awsvpc`` network mode), so you cannot take advantage of dynamic host port mappings. .. epigraph:: When using the ``host`` network mode, you should not run containers using the root user (UID 0). It is considered best practice to use a non-root user. If the network mode is ``awsvpc`` , the task is allocated an elastic network interface, and you must specify a `NetworkConfiguration <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_NetworkConfiguration.html>`_ value when you create a service or run a task with the task definition. For more information, see `Task Networking <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html>`_ in the *Amazon Elastic Container Service Developer Guide* . If the network mode is ``host`` , you cannot run multiple instantiations of the same task on a single container instance when port mappings are used.
|
|
@@ -13073,8 +13553,7 @@ class CfnTaskDefinition(
|
|
|
13073
13553
|
def inference_accelerators(
|
|
13074
13554
|
self,
|
|
13075
13555
|
) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnTaskDefinition.InferenceAcceleratorProperty"]]]]:
|
|
13076
|
-
'''
|
|
13077
|
-
|
|
13556
|
+
'''
|
|
13078
13557
|
:deprecated: this property has been deprecated
|
|
13079
13558
|
|
|
13080
13559
|
:stability: deprecated
|
|
@@ -15613,12 +16092,9 @@ class CfnTaskDefinition(
|
|
|
15613
16092
|
device_name: typing.Optional[builtins.str] = None,
|
|
15614
16093
|
device_type: typing.Optional[builtins.str] = None,
|
|
15615
16094
|
) -> None:
|
|
15616
|
-
'''
|
|
15617
|
-
|
|
15618
|
-
|
|
15619
|
-
|
|
15620
|
-
:param device_name: The Elastic Inference accelerator device name. The ``deviceName`` must also be referenced in a container definition as a `ResourceRequirement <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html>`_ .
|
|
15621
|
-
:param device_type: The Elastic Inference accelerator type to use.
|
|
16095
|
+
'''
|
|
16096
|
+
:param device_name:
|
|
16097
|
+
:param device_type:
|
|
15622
16098
|
|
|
15623
16099
|
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-inferenceaccelerator.html
|
|
15624
16100
|
:exampleMetadata: fixture=_generated
|
|
@@ -15646,10 +16122,7 @@ class CfnTaskDefinition(
|
|
|
15646
16122
|
|
|
15647
16123
|
@builtins.property
|
|
15648
16124
|
def device_name(self) -> typing.Optional[builtins.str]:
|
|
15649
|
-
'''
|
|
15650
|
-
|
|
15651
|
-
The ``deviceName`` must also be referenced in a container definition as a `ResourceRequirement <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html>`_ .
|
|
15652
|
-
|
|
16125
|
+
'''
|
|
15653
16126
|
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-inferenceaccelerator.html#cfn-ecs-taskdefinition-inferenceaccelerator-devicename
|
|
15654
16127
|
'''
|
|
15655
16128
|
result = self._values.get("device_name")
|
|
@@ -15657,8 +16130,7 @@ class CfnTaskDefinition(
|
|
|
15657
16130
|
|
|
15658
16131
|
@builtins.property
|
|
15659
16132
|
def device_type(self) -> typing.Optional[builtins.str]:
|
|
15660
|
-
'''
|
|
15661
|
-
|
|
16133
|
+
'''
|
|
15662
16134
|
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-inferenceaccelerator.html#cfn-ecs-taskdefinition-inferenceaccelerator-devicetype
|
|
15663
16135
|
'''
|
|
15664
16136
|
result = self._values.get("device_type")
|
|
@@ -17739,7 +18211,7 @@ class CfnTaskDefinitionProps:
|
|
|
17739
18211
|
:param ephemeral_storage: The ephemeral storage settings to use for tasks run with the task definition.
|
|
17740
18212
|
:param execution_role_arn: The Amazon Resource Name (ARN) of the task execution role that grants the Amazon ECS container agent permission to make AWS API calls on your behalf. For informationabout the required IAM roles for Amazon ECS, see `IAM roles for Amazon ECS <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-ecs-iam-role-overview.html>`_ in the *Amazon Elastic Container Service Developer Guide* .
|
|
17741
18213
|
:param family: The name of a family that this task definition is registered to. Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed. A family groups multiple versions of a task definition. Amazon ECS gives the first task definition that you registered to a family a revision number of 1. Amazon ECS gives sequential revision numbers to each task definition that you add. .. epigraph:: To use revision numbers when you update a task definition, specify this property. If you don't specify a value, AWS CloudFormation generates a new task definition each time that you update it.
|
|
17742
|
-
:param inference_accelerators:
|
|
18214
|
+
:param inference_accelerators:
|
|
17743
18215
|
:param ipc_mode: The IPC resource namespace to use for the containers in the task. The valid values are ``host`` , ``task`` , or ``none`` . If ``host`` is specified, then all containers within the tasks that specified the ``host`` IPC mode on the same container instance share the same IPC resources with the host Amazon EC2 instance. If ``task`` is specified, all containers within the specified task share the same IPC resources. If ``none`` is specified, then IPC resources within the containers of a task are private and not shared with other containers in a task or on the container instance. If no value is specified, then the IPC resource namespace sharing depends on the Docker daemon setting on the container instance. If the ``host`` IPC mode is used, be aware that there is a heightened risk of undesired IPC namespace expose. If you are setting namespaced kernel parameters using ``systemControls`` for the containers in the task, the following will apply to your IPC resource namespace. For more information, see `System Controls <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html>`_ in the *Amazon Elastic Container Service Developer Guide* . - For tasks that use the ``host`` IPC mode, IPC namespace related ``systemControls`` are not supported. - For tasks that use the ``task`` IPC mode, IPC namespace related ``systemControls`` will apply to all containers within a task. .. epigraph:: This parameter is not supported for Windows containers or tasks run on AWS Fargate .
|
|
17744
18216
|
:param memory: The amount (in MiB) of memory used by the task. If your tasks runs on Amazon EC2 instances, you must specify either a task-level memory value or a container-level memory value. This field is optional and any value can be used. If a task-level memory value is specified, the container-level memory value is optional. For more information regarding container-level memory and memory reservation, see `ContainerDefinition <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html>`_ . If your tasks runs on AWS Fargate , this field is required. You must use one of the following values. The value you choose determines your range of valid values for the ``cpu`` parameter. - 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available ``cpu`` values: 256 (.25 vCPU) - 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available ``cpu`` values: 512 (.5 vCPU) - 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available ``cpu`` values: 1024 (1 vCPU) - Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - Available ``cpu`` values: 2048 (2 vCPU) - Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - Available ``cpu`` values: 4096 (4 vCPU) - Between 16 GB and 60 GB in 4 GB increments - Available ``cpu`` values: 8192 (8 vCPU) This option requires Linux platform ``1.4.0`` or later. - Between 32GB and 120 GB in 8 GB increments - Available ``cpu`` values: 16384 (16 vCPU) This option requires Linux platform ``1.4.0`` or later.
|
|
17745
18217
|
:param network_mode: The Docker networking mode to use for the containers in the task. The valid values are ``none`` , ``bridge`` , ``awsvpc`` , and ``host`` . If no network mode is specified, the default is ``bridge`` . For Amazon ECS tasks on Fargate, the ``awsvpc`` network mode is required. For Amazon ECS tasks on Amazon EC2 Linux instances, any network mode can be used. For Amazon ECS tasks on Amazon EC2 Windows instances, ``<default>`` or ``awsvpc`` can be used. If the network mode is set to ``none`` , you cannot specify port mappings in your container definitions, and the tasks containers do not have external connectivity. The ``host`` and ``awsvpc`` network modes offer the highest networking performance for containers because they use the EC2 network stack instead of the virtualized network stack provided by the ``bridge`` mode. With the ``host`` and ``awsvpc`` network modes, exposed container ports are mapped directly to the corresponding host port (for the ``host`` network mode) or the attached elastic network interface port (for the ``awsvpc`` network mode), so you cannot take advantage of dynamic host port mappings. .. epigraph:: When using the ``host`` network mode, you should not run containers using the root user (UID 0). It is considered best practice to use a non-root user. If the network mode is ``awsvpc`` , the task is allocated an elastic network interface, and you must specify a `NetworkConfiguration <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_NetworkConfiguration.html>`_ value when you create a service or run a task with the task definition. For more information, see `Task Networking <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html>`_ in the *Amazon Elastic Container Service Developer Guide* . If the network mode is ``host`` , you cannot run multiple instantiations of the same task on a single container instance when port mappings are used.
|
|
@@ -18122,8 +18594,7 @@ class CfnTaskDefinitionProps:
|
|
|
18122
18594
|
def inference_accelerators(
|
|
18123
18595
|
self,
|
|
18124
18596
|
) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnTaskDefinition.InferenceAcceleratorProperty]]]]:
|
|
18125
|
-
'''
|
|
18126
|
-
|
|
18597
|
+
'''
|
|
18127
18598
|
:deprecated: this property has been deprecated
|
|
18128
18599
|
|
|
18129
18600
|
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html#cfn-ecs-taskdefinition-inferenceaccelerators
|
|
@@ -27374,34 +27845,28 @@ class FargateServiceProps(BaseServiceOptions):
|
|
|
27374
27845
|
|
|
27375
27846
|
# cluster: ecs.Cluster
|
|
27376
27847
|
# task_definition: ecs.TaskDefinition
|
|
27848
|
+
# elb_alarm: cw.Alarm
|
|
27849
|
+
|
|
27377
27850
|
|
|
27378
|
-
service_name = "MyFargateService"
|
|
27379
27851
|
service = ecs.FargateService(self, "Service",
|
|
27380
|
-
service_name=service_name,
|
|
27381
27852
|
cluster=cluster,
|
|
27382
27853
|
task_definition=task_definition,
|
|
27383
|
-
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
|
+
)
|
|
27384
27859
|
)
|
|
27385
27860
|
|
|
27386
|
-
|
|
27387
|
-
|
|
27388
|
-
|
|
27389
|
-
|
|
27390
|
-
|
|
27391
|
-
dimensions_map={
|
|
27392
|
-
"ClusterName": cluster.cluster_name,
|
|
27393
|
-
# Using `service.serviceName` here will cause a circular dependency
|
|
27394
|
-
"ServiceName": service_name
|
|
27395
|
-
}
|
|
27396
|
-
)
|
|
27397
|
-
my_alarm = cw.Alarm(self, "CPUAlarm",
|
|
27398
|
-
alarm_name="cpuAlarmName",
|
|
27399
|
-
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(),
|
|
27400
27866
|
evaluation_periods=2,
|
|
27401
27867
|
threshold=80
|
|
27402
27868
|
)
|
|
27403
|
-
|
|
27404
|
-
service.enable_deployment_alarms([my_alarm.alarm_name],
|
|
27869
|
+
service.enable_deployment_alarms([cpu_alarm_name],
|
|
27405
27870
|
behavior=ecs.AlarmBehavior.FAIL_ON_ALARM
|
|
27406
27871
|
)
|
|
27407
27872
|
'''
|
|
@@ -42911,34 +43376,28 @@ class FargateService(
|
|
|
42911
43376
|
|
|
42912
43377
|
# cluster: ecs.Cluster
|
|
42913
43378
|
# task_definition: ecs.TaskDefinition
|
|
43379
|
+
# elb_alarm: cw.Alarm
|
|
43380
|
+
|
|
42914
43381
|
|
|
42915
|
-
service_name = "MyFargateService"
|
|
42916
43382
|
service = ecs.FargateService(self, "Service",
|
|
42917
|
-
service_name=service_name,
|
|
42918
43383
|
cluster=cluster,
|
|
42919
43384
|
task_definition=task_definition,
|
|
42920
|
-
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
|
+
)
|
|
42921
43390
|
)
|
|
42922
43391
|
|
|
42923
|
-
|
|
42924
|
-
|
|
42925
|
-
|
|
42926
|
-
|
|
42927
|
-
|
|
42928
|
-
dimensions_map={
|
|
42929
|
-
"ClusterName": cluster.cluster_name,
|
|
42930
|
-
# Using `service.serviceName` here will cause a circular dependency
|
|
42931
|
-
"ServiceName": service_name
|
|
42932
|
-
}
|
|
42933
|
-
)
|
|
42934
|
-
my_alarm = cw.Alarm(self, "CPUAlarm",
|
|
42935
|
-
alarm_name="cpuAlarmName",
|
|
42936
|
-
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(),
|
|
42937
43397
|
evaluation_periods=2,
|
|
42938
43398
|
threshold=80
|
|
42939
43399
|
)
|
|
42940
|
-
|
|
42941
|
-
service.enable_deployment_alarms([my_alarm.alarm_name],
|
|
43400
|
+
service.enable_deployment_alarms([cpu_alarm_name],
|
|
42942
43401
|
behavior=ecs.AlarmBehavior.FAIL_ON_ALARM
|
|
42943
43402
|
)
|
|
42944
43403
|
'''
|
|
@@ -44301,6 +44760,16 @@ def _typecheckingstub__e2af64fb9defca157f1246b9e5c27f87c21cd5930eb232ddeb8f17161
|
|
|
44301
44760
|
"""Type checking stubs"""
|
|
44302
44761
|
pass
|
|
44303
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
|
+
|
|
44304
44773
|
def _typecheckingstub__40010db1fb42b63f942b5b11b7277545c2a1bffc42369636da9c14f813a744c5(
|
|
44305
44774
|
*,
|
|
44306
44775
|
assign_public_ip: typing.Optional[builtins.str] = None,
|
|
@@ -44339,9 +44808,12 @@ def _typecheckingstub__b2dbcb552902e6050bf0a575d5654d1d6ff74c24d93692dd2b9a98d50
|
|
|
44339
44808
|
def _typecheckingstub__d809d14e704a11675cbface3b43579e5f8f2a29c9b48e27608c625a3f01cb3a6(
|
|
44340
44809
|
*,
|
|
44341
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,
|
|
44342
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,
|
|
44343
44814
|
maximum_percent: typing.Optional[jsii.Number] = None,
|
|
44344
44815
|
minimum_healthy_percent: typing.Optional[jsii.Number] = None,
|
|
44816
|
+
strategy: typing.Optional[builtins.str] = None,
|
|
44345
44817
|
) -> None:
|
|
44346
44818
|
"""Type checking stubs"""
|
|
44347
44819
|
pass
|
|
@@ -44353,6 +44825,15 @@ def _typecheckingstub__e9921934df7686d8808e649b9ab979d2747a6f8cba336af2424f59783
|
|
|
44353
44825
|
"""Type checking stubs"""
|
|
44354
44826
|
pass
|
|
44355
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
|
+
|
|
44356
44837
|
def _typecheckingstub__ac73ec1d9d94d0e545ad276e88baeb61d67c664fed33ac2082b94f93d579944d(
|
|
44357
44838
|
*,
|
|
44358
44839
|
resource_type: builtins.str,
|
|
@@ -44364,6 +44845,7 @@ def _typecheckingstub__ac73ec1d9d94d0e545ad276e88baeb61d67c664fed33ac2082b94f93d
|
|
|
44364
44845
|
|
|
44365
44846
|
def _typecheckingstub__251c3999c1586967f7c9091782e6a113831e05b5f853b910cad8c8e75f654def(
|
|
44366
44847
|
*,
|
|
44848
|
+
advanced_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnService.AdvancedConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
|
|
44367
44849
|
container_name: typing.Optional[builtins.str] = None,
|
|
44368
44850
|
container_port: typing.Optional[jsii.Number] = None,
|
|
44369
44851
|
load_balancer_name: typing.Optional[builtins.str] = None,
|
|
@@ -44416,6 +44898,7 @@ def _typecheckingstub__7552e3d2b970cfb26552bec096b0680acf8bc8c7b59096bbf5a210dd3
|
|
|
44416
44898
|
*,
|
|
44417
44899
|
port: jsii.Number,
|
|
44418
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,
|
|
44419
44902
|
) -> None:
|
|
44420
44903
|
"""Type checking stubs"""
|
|
44421
44904
|
pass
|
|
@@ -44442,6 +44925,28 @@ def _typecheckingstub__047411a3798b037ac5ad218c8ed5492e98c896db58ad86ac1acde082c
|
|
|
44442
44925
|
"""Type checking stubs"""
|
|
44443
44926
|
pass
|
|
44444
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
|
+
|
|
44445
44950
|
def _typecheckingstub__aced8e4b81fd8cb9c6f67cef173bec4d0f64dc88e3c16ebc23350b833639b2e1(
|
|
44446
44951
|
*,
|
|
44447
44952
|
aws_pca_authority_arn: typing.Optional[builtins.str] = None,
|