must-cdk 0.0.6__py3-none-any.whl → 0.0.8__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.
must_cdk/__init__.py CHANGED
@@ -33,19 +33,2771 @@ def check_type(argname: str, value: object, expected_type: typing.Any) -> typing
33
33
 
34
34
  from ._jsii import *
35
35
 
36
+ import aws_cdk as _aws_cdk_ceddda9d
36
37
  import aws_cdk.aws_apigateway as _aws_cdk_aws_apigateway_ceddda9d
37
38
  import aws_cdk.aws_certificatemanager as _aws_cdk_aws_certificatemanager_ceddda9d
39
+ import aws_cdk.aws_cloudwatch as _aws_cdk_aws_cloudwatch_ceddda9d
40
+ import aws_cdk.aws_codedeploy as _aws_cdk_aws_codedeploy_ceddda9d
41
+ import aws_cdk.aws_ec2 as _aws_cdk_aws_ec2_ceddda9d
42
+ import aws_cdk.aws_ecs as _aws_cdk_aws_ecs_ceddda9d
43
+ import aws_cdk.aws_ecs_patterns as _aws_cdk_aws_ecs_patterns_ceddda9d
44
+ import aws_cdk.aws_elasticloadbalancingv2 as _aws_cdk_aws_elasticloadbalancingv2_ceddda9d
38
45
  import aws_cdk.aws_iam as _aws_cdk_aws_iam_ceddda9d
39
46
  import aws_cdk.aws_lambda as _aws_cdk_aws_lambda_ceddda9d
40
47
  import aws_cdk.aws_logs as _aws_cdk_aws_logs_ceddda9d
41
48
  import aws_cdk.aws_route53 as _aws_cdk_aws_route53_ceddda9d
49
+ import aws_cdk.aws_s3 as _aws_cdk_aws_s3_ceddda9d
50
+ import aws_cdk.aws_synthetics as _aws_cdk_aws_synthetics_ceddda9d
42
51
  import constructs as _constructs_77d1e7e8
43
52
 
44
53
 
54
+ class ApiCanary(
55
+ _aws_cdk_aws_synthetics_ceddda9d.Canary,
56
+ metaclass=jsii.JSIIMeta,
57
+ jsii_type="must-cdk.ApiCanary",
58
+ ):
59
+ '''A CloudWatch Synthetic Canary for monitoring APIs.'''
60
+
61
+ def __init__(
62
+ self,
63
+ scope: _constructs_77d1e7e8.Construct,
64
+ id: builtins.str,
65
+ *,
66
+ base_url: builtins.str,
67
+ artifacts_bucket_location: typing.Optional[typing.Union[_aws_cdk_aws_synthetics_ceddda9d.ArtifactsBucketLocation, typing.Dict[builtins.str, typing.Any]]] = None,
68
+ canary_name: typing.Optional[builtins.str] = None,
69
+ duration_alarm_threshold: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
70
+ failure_retention_period: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
71
+ role: typing.Optional[_aws_cdk_aws_iam_ceddda9d.IRole] = None,
72
+ schedule: typing.Optional[_aws_cdk_aws_synthetics_ceddda9d.Schedule] = None,
73
+ security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
74
+ start_after_creation: typing.Optional[builtins.bool] = None,
75
+ steps: typing.Optional[typing.Sequence[typing.Union["ApiTestStep", typing.Dict[builtins.str, typing.Any]]]] = None,
76
+ success_retention_period: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
77
+ thread_count: typing.Optional[jsii.Number] = None,
78
+ time_to_live: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
79
+ vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
80
+ vpc_subnets: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
81
+ ) -> None:
82
+ '''
83
+ :param scope: -
84
+ :param id: -
85
+ :param base_url: The base URL to use for tests.
86
+ :param artifacts_bucket_location: The s3 location that stores the data of the canary runs. Default: - A new s3 bucket will be created without a prefix.
87
+ :param canary_name: The name of the canary. Be sure to give it a descriptive name that distinguishes it from other canaries in your account. Do not include secrets or proprietary information in your canary name. The canary name makes up part of the canary ARN, which is included in outbound calls over the internet. Default: - A unique name will be generated from the construct ID
88
+ :param duration_alarm_threshold: The threshold for triggering an alarm on the test duration. Default: - no alarm is created for duration
89
+ :param failure_retention_period: How many days should failed runs be retained. Default: Duration.days(31)
90
+ :param role: Canary execution role. This is the role that will be assumed by the canary upon execution. It controls the permissions that the canary will have. The role must be assumable by the AWS Lambda service principal. If not supplied, a role will be created with all the required permissions. If you provide a Role, you must add the required permissions. Default: - A unique role will be generated for this canary. You can add permissions to roles by calling 'addToRolePolicy'.
91
+ :param schedule: Specify the schedule for how often the canary runs. For example, if you set ``schedule`` to ``rate(10 minutes)``, then the canary will run every 10 minutes. You can set the schedule with ``Schedule.rate(Duration)`` (recommended) or you can specify an expression using ``Schedule.expression()``. Default: 'rate(5 minutes)'
92
+ :param security_groups: The list of security groups to associate with the canary's network interfaces. You must provide ``vpc`` when using this prop. Default: - If the canary is placed within a VPC and a security group is not specified a dedicated security group will be created for this canary.
93
+ :param start_after_creation: Whether or not the canary should start after creation. Default: true
94
+ :param steps: The steps to perform in the synthetic test.
95
+ :param success_retention_period: How many days should successful runs be retained. Default: Duration.days(31)
96
+ :param thread_count: The number of threads to run concurrently for the synthetic test. Default: - 20
97
+ :param time_to_live: How long the canary will be in a 'RUNNING' state. For example, if you set ``timeToLive`` to be 1 hour and ``schedule`` to be ``rate(10 minutes)``, your canary will run at 10 minute intervals for an hour, for a total of 6 times. Default: - no limit
98
+ :param vpc: The VPC where this canary is run. Specify this if the canary needs to access resources in a VPC. Default: - Not in VPC
99
+ :param vpc_subnets: Where to place the network interfaces within the VPC. You must provide ``vpc`` when using this prop. Default: - the Vpc default strategy if not specified
100
+ '''
101
+ if __debug__:
102
+ type_hints = typing.get_type_hints(_typecheckingstub__09d06c1c95daaaf23d076abac602f3a69682f6d183c18d319586c4a3ad15e539)
103
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
104
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
105
+ props = ApiCanaryProps(
106
+ base_url=base_url,
107
+ artifacts_bucket_location=artifacts_bucket_location,
108
+ canary_name=canary_name,
109
+ duration_alarm_threshold=duration_alarm_threshold,
110
+ failure_retention_period=failure_retention_period,
111
+ role=role,
112
+ schedule=schedule,
113
+ security_groups=security_groups,
114
+ start_after_creation=start_after_creation,
115
+ steps=steps,
116
+ success_retention_period=success_retention_period,
117
+ thread_count=thread_count,
118
+ time_to_live=time_to_live,
119
+ vpc=vpc,
120
+ vpc_subnets=vpc_subnets,
121
+ )
122
+
123
+ jsii.create(self.__class__, self, [scope, id, props])
124
+
125
+ @jsii.member(jsii_name="addTestStep")
126
+ def add_test_step(
127
+ self,
128
+ *,
129
+ name: builtins.str,
130
+ path: builtins.str,
131
+ body: typing.Optional[builtins.str] = None,
132
+ expected_value: typing.Any = None,
133
+ headers: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
134
+ jmes_path: typing.Optional[builtins.str] = None,
135
+ method: typing.Optional[builtins.str] = None,
136
+ ) -> None:
137
+ '''Add a new test step to this canary.
138
+
139
+ :param name: Name of test.
140
+ :param path: Path of HTTP request, relative to baseUrl.
141
+ :param body: Optional body to include in HTTP request. Default: - no body included.
142
+ :param expected_value: Expected value to compare against the jmesPath. Default: - undefined
143
+ :param headers: Optional headers to include in HTTP request. Default: - no headers included.
144
+ :param jmes_path: JMESPath to apply against the response from the HTTP request and compare against expected value. Default: - no JMESPath assertion will be performed.
145
+ :param method: Optional method to for HTTP request. Default: - GET
146
+ '''
147
+ step = ApiTestStep(
148
+ name=name,
149
+ path=path,
150
+ body=body,
151
+ expected_value=expected_value,
152
+ headers=headers,
153
+ jmes_path=jmes_path,
154
+ method=method,
155
+ )
156
+
157
+ return typing.cast(None, jsii.invoke(self, "addTestStep", [step]))
158
+
159
+ @builtins.property
160
+ @jsii.member(jsii_name="successAlarm")
161
+ def success_alarm(self) -> _aws_cdk_aws_cloudwatch_ceddda9d.Alarm:
162
+ '''A CloudWatch Alarm that triggers when the success rate falls below 100% over the past 2 periods.'''
163
+ return typing.cast(_aws_cdk_aws_cloudwatch_ceddda9d.Alarm, jsii.get(self, "successAlarm"))
164
+
165
+ @success_alarm.setter
166
+ def success_alarm(self, value: _aws_cdk_aws_cloudwatch_ceddda9d.Alarm) -> None:
167
+ if __debug__:
168
+ type_hints = typing.get_type_hints(_typecheckingstub__8725a15a28149bfb608a400e26cfbe5e4841d0766e308d94bd820bae8ef15018)
169
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
170
+ jsii.set(self, "successAlarm", value) # pyright: ignore[reportArgumentType]
171
+
172
+ @builtins.property
173
+ @jsii.member(jsii_name="durationAlarm")
174
+ def duration_alarm(self) -> typing.Optional[_aws_cdk_aws_cloudwatch_ceddda9d.Alarm]:
175
+ '''A CloudWatch Alarm that triggers when the duration of the tests exceeds the given threshold over the past 2 periods.'''
176
+ return typing.cast(typing.Optional[_aws_cdk_aws_cloudwatch_ceddda9d.Alarm], jsii.get(self, "durationAlarm"))
177
+
178
+ @duration_alarm.setter
179
+ def duration_alarm(
180
+ self,
181
+ value: typing.Optional[_aws_cdk_aws_cloudwatch_ceddda9d.Alarm],
182
+ ) -> None:
183
+ if __debug__:
184
+ type_hints = typing.get_type_hints(_typecheckingstub__5e693bebe82a00de7c7762fadb1e226601529313a62b3e1a2a8527584ea39940)
185
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
186
+ jsii.set(self, "durationAlarm", value) # pyright: ignore[reportArgumentType]
187
+
188
+
189
+ @jsii.data_type(
190
+ jsii_type="must-cdk.ApiCanaryProps",
191
+ jsii_struct_bases=[],
192
+ name_mapping={
193
+ "base_url": "baseUrl",
194
+ "artifacts_bucket_location": "artifactsBucketLocation",
195
+ "canary_name": "canaryName",
196
+ "duration_alarm_threshold": "durationAlarmThreshold",
197
+ "failure_retention_period": "failureRetentionPeriod",
198
+ "role": "role",
199
+ "schedule": "schedule",
200
+ "security_groups": "securityGroups",
201
+ "start_after_creation": "startAfterCreation",
202
+ "steps": "steps",
203
+ "success_retention_period": "successRetentionPeriod",
204
+ "thread_count": "threadCount",
205
+ "time_to_live": "timeToLive",
206
+ "vpc": "vpc",
207
+ "vpc_subnets": "vpcSubnets",
208
+ },
209
+ )
210
+ class ApiCanaryProps:
211
+ def __init__(
212
+ self,
213
+ *,
214
+ base_url: builtins.str,
215
+ artifacts_bucket_location: typing.Optional[typing.Union[_aws_cdk_aws_synthetics_ceddda9d.ArtifactsBucketLocation, typing.Dict[builtins.str, typing.Any]]] = None,
216
+ canary_name: typing.Optional[builtins.str] = None,
217
+ duration_alarm_threshold: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
218
+ failure_retention_period: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
219
+ role: typing.Optional[_aws_cdk_aws_iam_ceddda9d.IRole] = None,
220
+ schedule: typing.Optional[_aws_cdk_aws_synthetics_ceddda9d.Schedule] = None,
221
+ security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
222
+ start_after_creation: typing.Optional[builtins.bool] = None,
223
+ steps: typing.Optional[typing.Sequence[typing.Union["ApiTestStep", typing.Dict[builtins.str, typing.Any]]]] = None,
224
+ success_retention_period: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
225
+ thread_count: typing.Optional[jsii.Number] = None,
226
+ time_to_live: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
227
+ vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
228
+ vpc_subnets: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
229
+ ) -> None:
230
+ '''
231
+ :param base_url: The base URL to use for tests.
232
+ :param artifacts_bucket_location: The s3 location that stores the data of the canary runs. Default: - A new s3 bucket will be created without a prefix.
233
+ :param canary_name: The name of the canary. Be sure to give it a descriptive name that distinguishes it from other canaries in your account. Do not include secrets or proprietary information in your canary name. The canary name makes up part of the canary ARN, which is included in outbound calls over the internet. Default: - A unique name will be generated from the construct ID
234
+ :param duration_alarm_threshold: The threshold for triggering an alarm on the test duration. Default: - no alarm is created for duration
235
+ :param failure_retention_period: How many days should failed runs be retained. Default: Duration.days(31)
236
+ :param role: Canary execution role. This is the role that will be assumed by the canary upon execution. It controls the permissions that the canary will have. The role must be assumable by the AWS Lambda service principal. If not supplied, a role will be created with all the required permissions. If you provide a Role, you must add the required permissions. Default: - A unique role will be generated for this canary. You can add permissions to roles by calling 'addToRolePolicy'.
237
+ :param schedule: Specify the schedule for how often the canary runs. For example, if you set ``schedule`` to ``rate(10 minutes)``, then the canary will run every 10 minutes. You can set the schedule with ``Schedule.rate(Duration)`` (recommended) or you can specify an expression using ``Schedule.expression()``. Default: 'rate(5 minutes)'
238
+ :param security_groups: The list of security groups to associate with the canary's network interfaces. You must provide ``vpc`` when using this prop. Default: - If the canary is placed within a VPC and a security group is not specified a dedicated security group will be created for this canary.
239
+ :param start_after_creation: Whether or not the canary should start after creation. Default: true
240
+ :param steps: The steps to perform in the synthetic test.
241
+ :param success_retention_period: How many days should successful runs be retained. Default: Duration.days(31)
242
+ :param thread_count: The number of threads to run concurrently for the synthetic test. Default: - 20
243
+ :param time_to_live: How long the canary will be in a 'RUNNING' state. For example, if you set ``timeToLive`` to be 1 hour and ``schedule`` to be ``rate(10 minutes)``, your canary will run at 10 minute intervals for an hour, for a total of 6 times. Default: - no limit
244
+ :param vpc: The VPC where this canary is run. Specify this if the canary needs to access resources in a VPC. Default: - Not in VPC
245
+ :param vpc_subnets: Where to place the network interfaces within the VPC. You must provide ``vpc`` when using this prop. Default: - the Vpc default strategy if not specified
246
+ '''
247
+ if isinstance(artifacts_bucket_location, dict):
248
+ artifacts_bucket_location = _aws_cdk_aws_synthetics_ceddda9d.ArtifactsBucketLocation(**artifacts_bucket_location)
249
+ if isinstance(vpc_subnets, dict):
250
+ vpc_subnets = _aws_cdk_aws_ec2_ceddda9d.SubnetSelection(**vpc_subnets)
251
+ if __debug__:
252
+ type_hints = typing.get_type_hints(_typecheckingstub__b52b092204732a9d7b4031c2682b2facb0ffa90d719105c9d03ed168de7472f0)
253
+ check_type(argname="argument base_url", value=base_url, expected_type=type_hints["base_url"])
254
+ check_type(argname="argument artifacts_bucket_location", value=artifacts_bucket_location, expected_type=type_hints["artifacts_bucket_location"])
255
+ check_type(argname="argument canary_name", value=canary_name, expected_type=type_hints["canary_name"])
256
+ check_type(argname="argument duration_alarm_threshold", value=duration_alarm_threshold, expected_type=type_hints["duration_alarm_threshold"])
257
+ check_type(argname="argument failure_retention_period", value=failure_retention_period, expected_type=type_hints["failure_retention_period"])
258
+ check_type(argname="argument role", value=role, expected_type=type_hints["role"])
259
+ check_type(argname="argument schedule", value=schedule, expected_type=type_hints["schedule"])
260
+ check_type(argname="argument security_groups", value=security_groups, expected_type=type_hints["security_groups"])
261
+ check_type(argname="argument start_after_creation", value=start_after_creation, expected_type=type_hints["start_after_creation"])
262
+ check_type(argname="argument steps", value=steps, expected_type=type_hints["steps"])
263
+ check_type(argname="argument success_retention_period", value=success_retention_period, expected_type=type_hints["success_retention_period"])
264
+ check_type(argname="argument thread_count", value=thread_count, expected_type=type_hints["thread_count"])
265
+ check_type(argname="argument time_to_live", value=time_to_live, expected_type=type_hints["time_to_live"])
266
+ check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
267
+ check_type(argname="argument vpc_subnets", value=vpc_subnets, expected_type=type_hints["vpc_subnets"])
268
+ self._values: typing.Dict[builtins.str, typing.Any] = {
269
+ "base_url": base_url,
270
+ }
271
+ if artifacts_bucket_location is not None:
272
+ self._values["artifacts_bucket_location"] = artifacts_bucket_location
273
+ if canary_name is not None:
274
+ self._values["canary_name"] = canary_name
275
+ if duration_alarm_threshold is not None:
276
+ self._values["duration_alarm_threshold"] = duration_alarm_threshold
277
+ if failure_retention_period is not None:
278
+ self._values["failure_retention_period"] = failure_retention_period
279
+ if role is not None:
280
+ self._values["role"] = role
281
+ if schedule is not None:
282
+ self._values["schedule"] = schedule
283
+ if security_groups is not None:
284
+ self._values["security_groups"] = security_groups
285
+ if start_after_creation is not None:
286
+ self._values["start_after_creation"] = start_after_creation
287
+ if steps is not None:
288
+ self._values["steps"] = steps
289
+ if success_retention_period is not None:
290
+ self._values["success_retention_period"] = success_retention_period
291
+ if thread_count is not None:
292
+ self._values["thread_count"] = thread_count
293
+ if time_to_live is not None:
294
+ self._values["time_to_live"] = time_to_live
295
+ if vpc is not None:
296
+ self._values["vpc"] = vpc
297
+ if vpc_subnets is not None:
298
+ self._values["vpc_subnets"] = vpc_subnets
299
+
300
+ @builtins.property
301
+ def base_url(self) -> builtins.str:
302
+ '''The base URL to use for tests.'''
303
+ result = self._values.get("base_url")
304
+ assert result is not None, "Required property 'base_url' is missing"
305
+ return typing.cast(builtins.str, result)
306
+
307
+ @builtins.property
308
+ def artifacts_bucket_location(
309
+ self,
310
+ ) -> typing.Optional[_aws_cdk_aws_synthetics_ceddda9d.ArtifactsBucketLocation]:
311
+ '''The s3 location that stores the data of the canary runs.
312
+
313
+ :default: - A new s3 bucket will be created without a prefix.
314
+ '''
315
+ result = self._values.get("artifacts_bucket_location")
316
+ return typing.cast(typing.Optional[_aws_cdk_aws_synthetics_ceddda9d.ArtifactsBucketLocation], result)
317
+
318
+ @builtins.property
319
+ def canary_name(self) -> typing.Optional[builtins.str]:
320
+ '''The name of the canary.
321
+
322
+ Be sure to give it a descriptive name that distinguishes it from
323
+ other canaries in your account.
324
+
325
+ Do not include secrets or proprietary information in your canary name. The canary name
326
+ makes up part of the canary ARN, which is included in outbound calls over the internet.
327
+
328
+ :default: - A unique name will be generated from the construct ID
329
+
330
+ :see: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/servicelens_canaries_security.html
331
+ '''
332
+ result = self._values.get("canary_name")
333
+ return typing.cast(typing.Optional[builtins.str], result)
334
+
335
+ @builtins.property
336
+ def duration_alarm_threshold(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
337
+ '''The threshold for triggering an alarm on the test duration.
338
+
339
+ :default: - no alarm is created for duration
340
+ '''
341
+ result = self._values.get("duration_alarm_threshold")
342
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
343
+
344
+ @builtins.property
345
+ def failure_retention_period(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
346
+ '''How many days should failed runs be retained.
347
+
348
+ :default: Duration.days(31)
349
+ '''
350
+ result = self._values.get("failure_retention_period")
351
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
352
+
353
+ @builtins.property
354
+ def role(self) -> typing.Optional[_aws_cdk_aws_iam_ceddda9d.IRole]:
355
+ '''Canary execution role.
356
+
357
+ This is the role that will be assumed by the canary upon execution.
358
+ It controls the permissions that the canary will have. The role must
359
+ be assumable by the AWS Lambda service principal.
360
+
361
+ If not supplied, a role will be created with all the required permissions.
362
+ If you provide a Role, you must add the required permissions.
363
+
364
+ :default:
365
+
366
+ - A unique role will be generated for this canary.
367
+ You can add permissions to roles by calling 'addToRolePolicy'.
368
+
369
+ :see: required permissions: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-synthetics-canary.html#cfn-synthetics-canary-executionrolearn
370
+ '''
371
+ result = self._values.get("role")
372
+ return typing.cast(typing.Optional[_aws_cdk_aws_iam_ceddda9d.IRole], result)
373
+
374
+ @builtins.property
375
+ def schedule(self) -> typing.Optional[_aws_cdk_aws_synthetics_ceddda9d.Schedule]:
376
+ '''Specify the schedule for how often the canary runs.
377
+
378
+ For example, if you set ``schedule`` to ``rate(10 minutes)``, then the canary will run every 10 minutes.
379
+ You can set the schedule with ``Schedule.rate(Duration)`` (recommended) or you can specify an expression using ``Schedule.expression()``.
380
+
381
+ :default: 'rate(5 minutes)'
382
+ '''
383
+ result = self._values.get("schedule")
384
+ return typing.cast(typing.Optional[_aws_cdk_aws_synthetics_ceddda9d.Schedule], result)
385
+
386
+ @builtins.property
387
+ def security_groups(
388
+ self,
389
+ ) -> typing.Optional[typing.List[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]]:
390
+ '''The list of security groups to associate with the canary's network interfaces.
391
+
392
+ You must provide ``vpc`` when using this prop.
393
+
394
+ :default:
395
+
396
+ - If the canary is placed within a VPC and a security group is
397
+ not specified a dedicated security group will be created for this canary.
398
+ '''
399
+ result = self._values.get("security_groups")
400
+ return typing.cast(typing.Optional[typing.List[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]], result)
401
+
402
+ @builtins.property
403
+ def start_after_creation(self) -> typing.Optional[builtins.bool]:
404
+ '''Whether or not the canary should start after creation.
405
+
406
+ :default: true
407
+ '''
408
+ result = self._values.get("start_after_creation")
409
+ return typing.cast(typing.Optional[builtins.bool], result)
410
+
411
+ @builtins.property
412
+ def steps(self) -> typing.Optional[typing.List["ApiTestStep"]]:
413
+ '''The steps to perform in the synthetic test.'''
414
+ result = self._values.get("steps")
415
+ return typing.cast(typing.Optional[typing.List["ApiTestStep"]], result)
416
+
417
+ @builtins.property
418
+ def success_retention_period(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
419
+ '''How many days should successful runs be retained.
420
+
421
+ :default: Duration.days(31)
422
+ '''
423
+ result = self._values.get("success_retention_period")
424
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
425
+
426
+ @builtins.property
427
+ def thread_count(self) -> typing.Optional[jsii.Number]:
428
+ '''The number of threads to run concurrently for the synthetic test.
429
+
430
+ :default: - 20
431
+ '''
432
+ result = self._values.get("thread_count")
433
+ return typing.cast(typing.Optional[jsii.Number], result)
434
+
435
+ @builtins.property
436
+ def time_to_live(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
437
+ '''How long the canary will be in a 'RUNNING' state.
438
+
439
+ For example, if you set ``timeToLive`` to be 1 hour and ``schedule`` to be ``rate(10 minutes)``,
440
+ your canary will run at 10 minute intervals for an hour, for a total of 6 times.
441
+
442
+ :default: - no limit
443
+ '''
444
+ result = self._values.get("time_to_live")
445
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
446
+
447
+ @builtins.property
448
+ def vpc(self) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc]:
449
+ '''The VPC where this canary is run.
450
+
451
+ Specify this if the canary needs to access resources in a VPC.
452
+
453
+ :default: - Not in VPC
454
+ '''
455
+ result = self._values.get("vpc")
456
+ return typing.cast(typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc], result)
457
+
458
+ @builtins.property
459
+ def vpc_subnets(self) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection]:
460
+ '''Where to place the network interfaces within the VPC.
461
+
462
+ You must provide ``vpc`` when using this prop.
463
+
464
+ :default: - the Vpc default strategy if not specified
465
+ '''
466
+ result = self._values.get("vpc_subnets")
467
+ return typing.cast(typing.Optional[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection], result)
468
+
469
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
470
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
471
+
472
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
473
+ return not (rhs == self)
474
+
475
+ def __repr__(self) -> str:
476
+ return "ApiCanaryProps(%s)" % ", ".join(
477
+ k + "=" + repr(v) for k, v in self._values.items()
478
+ )
479
+
480
+
45
481
  class ApiGatewayToLambdaCustomDomain(
46
482
  _constructs_77d1e7e8.Construct,
47
483
  metaclass=jsii.JSIIMeta,
48
- jsii_type="must-cdk.ApiGatewayToLambdaCustomDomain",
484
+ jsii_type="must-cdk.ApiGatewayToLambdaCustomDomain",
485
+ ):
486
+ '''
487
+ :summary: The ApiGatewayToLambda class.
488
+ '''
489
+
490
+ def __init__(
491
+ self,
492
+ scope: _constructs_77d1e7e8.Construct,
493
+ id: builtins.str,
494
+ *,
495
+ api_gateway_props: typing.Any = None,
496
+ create_usage_plan: typing.Optional[builtins.bool] = None,
497
+ custom_domain_name: typing.Optional[builtins.str] = None,
498
+ existing_lambda_obj: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
499
+ hosted_zone: typing.Optional[_aws_cdk_aws_route53_ceddda9d.IHostedZone] = None,
500
+ lambda_function_props: typing.Optional[typing.Union[_aws_cdk_aws_lambda_ceddda9d.FunctionProps, typing.Dict[builtins.str, typing.Any]]] = None,
501
+ log_group_props: typing.Optional[typing.Union[_aws_cdk_aws_logs_ceddda9d.LogGroupProps, typing.Dict[builtins.str, typing.Any]]] = None,
502
+ ) -> None:
503
+ '''
504
+ :param scope: - represents the scope for all the resources.
505
+ :param id: - this is a a scope-unique id.
506
+ :param api_gateway_props: Optional user-provided props to override the default props for the API.
507
+ :param create_usage_plan: Whether to create a Usage Plan attached to the API. Must be true if apiGatewayProps.defaultMethodOptions.apiKeyRequired is true
508
+ :param custom_domain_name: Optional custom domain name for API Gateway, an ACM cert will also created. Default: - no custom domain
509
+ :param existing_lambda_obj: Existing instance of Lambda Function object, providing both this and ``lambdaFunctionProps`` will cause an error. Default: - None
510
+ :param hosted_zone: Optional Route53 hosted zone to create alias record for the custom domain. Default: - no Route53 alias record created
511
+ :param lambda_function_props: User provided props to override the default props for the Lambda function.
512
+ :param log_group_props:
513
+ '''
514
+ if __debug__:
515
+ type_hints = typing.get_type_hints(_typecheckingstub__d7036b176aa7b446813bdbc7672055bba27972db6a947684b57c6f8f02e0f9b6)
516
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
517
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
518
+ props = ApiGatewayToLambdaProps(
519
+ api_gateway_props=api_gateway_props,
520
+ create_usage_plan=create_usage_plan,
521
+ custom_domain_name=custom_domain_name,
522
+ existing_lambda_obj=existing_lambda_obj,
523
+ hosted_zone=hosted_zone,
524
+ lambda_function_props=lambda_function_props,
525
+ log_group_props=log_group_props,
526
+ )
527
+
528
+ jsii.create(self.__class__, self, [scope, id, props])
529
+
530
+ @builtins.property
531
+ @jsii.member(jsii_name="apiGateway")
532
+ def api_gateway(self) -> _aws_cdk_aws_apigateway_ceddda9d.RestApi:
533
+ return typing.cast(_aws_cdk_aws_apigateway_ceddda9d.RestApi, jsii.get(self, "apiGateway"))
534
+
535
+ @builtins.property
536
+ @jsii.member(jsii_name="apiGatewayLogGroup")
537
+ def api_gateway_log_group(self) -> _aws_cdk_aws_logs_ceddda9d.LogGroup:
538
+ return typing.cast(_aws_cdk_aws_logs_ceddda9d.LogGroup, jsii.get(self, "apiGatewayLogGroup"))
539
+
540
+ @builtins.property
541
+ @jsii.member(jsii_name="lambdaFunction")
542
+ def lambda_function(self) -> _aws_cdk_aws_lambda_ceddda9d.Function:
543
+ return typing.cast(_aws_cdk_aws_lambda_ceddda9d.Function, jsii.get(self, "lambdaFunction"))
544
+
545
+ @builtins.property
546
+ @jsii.member(jsii_name="apiGatewayCloudWatchRole")
547
+ def api_gateway_cloud_watch_role(
548
+ self,
549
+ ) -> typing.Optional[_aws_cdk_aws_iam_ceddda9d.Role]:
550
+ return typing.cast(typing.Optional[_aws_cdk_aws_iam_ceddda9d.Role], jsii.get(self, "apiGatewayCloudWatchRole"))
551
+
552
+ @builtins.property
553
+ @jsii.member(jsii_name="aRecord")
554
+ def a_record(self) -> typing.Optional[_aws_cdk_aws_route53_ceddda9d.ARecord]:
555
+ return typing.cast(typing.Optional[_aws_cdk_aws_route53_ceddda9d.ARecord], jsii.get(self, "aRecord"))
556
+
557
+ @builtins.property
558
+ @jsii.member(jsii_name="certificate")
559
+ def certificate(
560
+ self,
561
+ ) -> typing.Optional[_aws_cdk_aws_certificatemanager_ceddda9d.Certificate]:
562
+ return typing.cast(typing.Optional[_aws_cdk_aws_certificatemanager_ceddda9d.Certificate], jsii.get(self, "certificate"))
563
+
564
+ @builtins.property
565
+ @jsii.member(jsii_name="domain")
566
+ def domain(self) -> typing.Optional[_aws_cdk_aws_apigateway_ceddda9d.DomainName]:
567
+ return typing.cast(typing.Optional[_aws_cdk_aws_apigateway_ceddda9d.DomainName], jsii.get(self, "domain"))
568
+
569
+
570
+ @jsii.data_type(
571
+ jsii_type="must-cdk.ApiGatewayToLambdaProps",
572
+ jsii_struct_bases=[],
573
+ name_mapping={
574
+ "api_gateway_props": "apiGatewayProps",
575
+ "create_usage_plan": "createUsagePlan",
576
+ "custom_domain_name": "customDomainName",
577
+ "existing_lambda_obj": "existingLambdaObj",
578
+ "hosted_zone": "hostedZone",
579
+ "lambda_function_props": "lambdaFunctionProps",
580
+ "log_group_props": "logGroupProps",
581
+ },
582
+ )
583
+ class ApiGatewayToLambdaProps:
584
+ def __init__(
585
+ self,
586
+ *,
587
+ api_gateway_props: typing.Any = None,
588
+ create_usage_plan: typing.Optional[builtins.bool] = None,
589
+ custom_domain_name: typing.Optional[builtins.str] = None,
590
+ existing_lambda_obj: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
591
+ hosted_zone: typing.Optional[_aws_cdk_aws_route53_ceddda9d.IHostedZone] = None,
592
+ lambda_function_props: typing.Optional[typing.Union[_aws_cdk_aws_lambda_ceddda9d.FunctionProps, typing.Dict[builtins.str, typing.Any]]] = None,
593
+ log_group_props: typing.Optional[typing.Union[_aws_cdk_aws_logs_ceddda9d.LogGroupProps, typing.Dict[builtins.str, typing.Any]]] = None,
594
+ ) -> None:
595
+ '''
596
+ :param api_gateway_props: Optional user-provided props to override the default props for the API.
597
+ :param create_usage_plan: Whether to create a Usage Plan attached to the API. Must be true if apiGatewayProps.defaultMethodOptions.apiKeyRequired is true
598
+ :param custom_domain_name: Optional custom domain name for API Gateway, an ACM cert will also created. Default: - no custom domain
599
+ :param existing_lambda_obj: Existing instance of Lambda Function object, providing both this and ``lambdaFunctionProps`` will cause an error. Default: - None
600
+ :param hosted_zone: Optional Route53 hosted zone to create alias record for the custom domain. Default: - no Route53 alias record created
601
+ :param lambda_function_props: User provided props to override the default props for the Lambda function.
602
+ :param log_group_props:
603
+ '''
604
+ if isinstance(lambda_function_props, dict):
605
+ lambda_function_props = _aws_cdk_aws_lambda_ceddda9d.FunctionProps(**lambda_function_props)
606
+ if isinstance(log_group_props, dict):
607
+ log_group_props = _aws_cdk_aws_logs_ceddda9d.LogGroupProps(**log_group_props)
608
+ if __debug__:
609
+ type_hints = typing.get_type_hints(_typecheckingstub__7c51143b7da8fc50ffd3240aae88642c332f9ccc1136e275abf9d1065df7ea17)
610
+ check_type(argname="argument api_gateway_props", value=api_gateway_props, expected_type=type_hints["api_gateway_props"])
611
+ check_type(argname="argument create_usage_plan", value=create_usage_plan, expected_type=type_hints["create_usage_plan"])
612
+ check_type(argname="argument custom_domain_name", value=custom_domain_name, expected_type=type_hints["custom_domain_name"])
613
+ check_type(argname="argument existing_lambda_obj", value=existing_lambda_obj, expected_type=type_hints["existing_lambda_obj"])
614
+ check_type(argname="argument hosted_zone", value=hosted_zone, expected_type=type_hints["hosted_zone"])
615
+ check_type(argname="argument lambda_function_props", value=lambda_function_props, expected_type=type_hints["lambda_function_props"])
616
+ check_type(argname="argument log_group_props", value=log_group_props, expected_type=type_hints["log_group_props"])
617
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
618
+ if api_gateway_props is not None:
619
+ self._values["api_gateway_props"] = api_gateway_props
620
+ if create_usage_plan is not None:
621
+ self._values["create_usage_plan"] = create_usage_plan
622
+ if custom_domain_name is not None:
623
+ self._values["custom_domain_name"] = custom_domain_name
624
+ if existing_lambda_obj is not None:
625
+ self._values["existing_lambda_obj"] = existing_lambda_obj
626
+ if hosted_zone is not None:
627
+ self._values["hosted_zone"] = hosted_zone
628
+ if lambda_function_props is not None:
629
+ self._values["lambda_function_props"] = lambda_function_props
630
+ if log_group_props is not None:
631
+ self._values["log_group_props"] = log_group_props
632
+
633
+ @builtins.property
634
+ def api_gateway_props(self) -> typing.Any:
635
+ '''Optional user-provided props to override the default props for the API.'''
636
+ result = self._values.get("api_gateway_props")
637
+ return typing.cast(typing.Any, result)
638
+
639
+ @builtins.property
640
+ def create_usage_plan(self) -> typing.Optional[builtins.bool]:
641
+ '''Whether to create a Usage Plan attached to the API.
642
+
643
+ Must be true if
644
+ apiGatewayProps.defaultMethodOptions.apiKeyRequired is true
645
+ '''
646
+ result = self._values.get("create_usage_plan")
647
+ return typing.cast(typing.Optional[builtins.bool], result)
648
+
649
+ @builtins.property
650
+ def custom_domain_name(self) -> typing.Optional[builtins.str]:
651
+ '''Optional custom domain name for API Gateway, an ACM cert will also created.
652
+
653
+ :default: - no custom domain
654
+ '''
655
+ result = self._values.get("custom_domain_name")
656
+ return typing.cast(typing.Optional[builtins.str], result)
657
+
658
+ @builtins.property
659
+ def existing_lambda_obj(
660
+ self,
661
+ ) -> typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function]:
662
+ '''Existing instance of Lambda Function object, providing both this and ``lambdaFunctionProps`` will cause an error.
663
+
664
+ :default: - None
665
+ '''
666
+ result = self._values.get("existing_lambda_obj")
667
+ return typing.cast(typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function], result)
668
+
669
+ @builtins.property
670
+ def hosted_zone(self) -> typing.Optional[_aws_cdk_aws_route53_ceddda9d.IHostedZone]:
671
+ '''Optional Route53 hosted zone to create alias record for the custom domain.
672
+
673
+ :default: - no Route53 alias record created
674
+ '''
675
+ result = self._values.get("hosted_zone")
676
+ return typing.cast(typing.Optional[_aws_cdk_aws_route53_ceddda9d.IHostedZone], result)
677
+
678
+ @builtins.property
679
+ def lambda_function_props(
680
+ self,
681
+ ) -> typing.Optional[_aws_cdk_aws_lambda_ceddda9d.FunctionProps]:
682
+ '''User provided props to override the default props for the Lambda function.'''
683
+ result = self._values.get("lambda_function_props")
684
+ return typing.cast(typing.Optional[_aws_cdk_aws_lambda_ceddda9d.FunctionProps], result)
685
+
686
+ @builtins.property
687
+ def log_group_props(
688
+ self,
689
+ ) -> typing.Optional[_aws_cdk_aws_logs_ceddda9d.LogGroupProps]:
690
+ result = self._values.get("log_group_props")
691
+ return typing.cast(typing.Optional[_aws_cdk_aws_logs_ceddda9d.LogGroupProps], result)
692
+
693
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
694
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
695
+
696
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
697
+ return not (rhs == self)
698
+
699
+ def __repr__(self) -> str:
700
+ return "ApiGatewayToLambdaProps(%s)" % ", ".join(
701
+ k + "=" + repr(v) for k, v in self._values.items()
702
+ )
703
+
704
+
705
+ @jsii.data_type(
706
+ jsii_type="must-cdk.ApiTestStep",
707
+ jsii_struct_bases=[],
708
+ name_mapping={
709
+ "name": "name",
710
+ "path": "path",
711
+ "body": "body",
712
+ "expected_value": "expectedValue",
713
+ "headers": "headers",
714
+ "jmes_path": "jmesPath",
715
+ "method": "method",
716
+ },
717
+ )
718
+ class ApiTestStep:
719
+ def __init__(
720
+ self,
721
+ *,
722
+ name: builtins.str,
723
+ path: builtins.str,
724
+ body: typing.Optional[builtins.str] = None,
725
+ expected_value: typing.Any = None,
726
+ headers: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
727
+ jmes_path: typing.Optional[builtins.str] = None,
728
+ method: typing.Optional[builtins.str] = None,
729
+ ) -> None:
730
+ '''
731
+ :param name: Name of test.
732
+ :param path: Path of HTTP request, relative to baseUrl.
733
+ :param body: Optional body to include in HTTP request. Default: - no body included.
734
+ :param expected_value: Expected value to compare against the jmesPath. Default: - undefined
735
+ :param headers: Optional headers to include in HTTP request. Default: - no headers included.
736
+ :param jmes_path: JMESPath to apply against the response from the HTTP request and compare against expected value. Default: - no JMESPath assertion will be performed.
737
+ :param method: Optional method to for HTTP request. Default: - GET
738
+ '''
739
+ if __debug__:
740
+ type_hints = typing.get_type_hints(_typecheckingstub__171a53d32e45dddc3d74e9b9e98d60f757ac6028bcc531de07738ff4251515ed)
741
+ check_type(argname="argument name", value=name, expected_type=type_hints["name"])
742
+ check_type(argname="argument path", value=path, expected_type=type_hints["path"])
743
+ check_type(argname="argument body", value=body, expected_type=type_hints["body"])
744
+ check_type(argname="argument expected_value", value=expected_value, expected_type=type_hints["expected_value"])
745
+ check_type(argname="argument headers", value=headers, expected_type=type_hints["headers"])
746
+ check_type(argname="argument jmes_path", value=jmes_path, expected_type=type_hints["jmes_path"])
747
+ check_type(argname="argument method", value=method, expected_type=type_hints["method"])
748
+ self._values: typing.Dict[builtins.str, typing.Any] = {
749
+ "name": name,
750
+ "path": path,
751
+ }
752
+ if body is not None:
753
+ self._values["body"] = body
754
+ if expected_value is not None:
755
+ self._values["expected_value"] = expected_value
756
+ if headers is not None:
757
+ self._values["headers"] = headers
758
+ if jmes_path is not None:
759
+ self._values["jmes_path"] = jmes_path
760
+ if method is not None:
761
+ self._values["method"] = method
762
+
763
+ @builtins.property
764
+ def name(self) -> builtins.str:
765
+ '''Name of test.'''
766
+ result = self._values.get("name")
767
+ assert result is not None, "Required property 'name' is missing"
768
+ return typing.cast(builtins.str, result)
769
+
770
+ @builtins.property
771
+ def path(self) -> builtins.str:
772
+ '''Path of HTTP request, relative to baseUrl.'''
773
+ result = self._values.get("path")
774
+ assert result is not None, "Required property 'path' is missing"
775
+ return typing.cast(builtins.str, result)
776
+
777
+ @builtins.property
778
+ def body(self) -> typing.Optional[builtins.str]:
779
+ '''Optional body to include in HTTP request.
780
+
781
+ :default: - no body included.
782
+ '''
783
+ result = self._values.get("body")
784
+ return typing.cast(typing.Optional[builtins.str], result)
785
+
786
+ @builtins.property
787
+ def expected_value(self) -> typing.Any:
788
+ '''Expected value to compare against the jmesPath.
789
+
790
+ :default: - undefined
791
+ '''
792
+ result = self._values.get("expected_value")
793
+ return typing.cast(typing.Any, result)
794
+
795
+ @builtins.property
796
+ def headers(self) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
797
+ '''Optional headers to include in HTTP request.
798
+
799
+ :default: - no headers included.
800
+ '''
801
+ result = self._values.get("headers")
802
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
803
+
804
+ @builtins.property
805
+ def jmes_path(self) -> typing.Optional[builtins.str]:
806
+ '''JMESPath to apply against the response from the HTTP request and compare against expected value.
807
+
808
+ :default: - no JMESPath assertion will be performed.
809
+ '''
810
+ result = self._values.get("jmes_path")
811
+ return typing.cast(typing.Optional[builtins.str], result)
812
+
813
+ @builtins.property
814
+ def method(self) -> typing.Optional[builtins.str]:
815
+ '''Optional method to for HTTP request.
816
+
817
+ :default: - GET
818
+ '''
819
+ result = self._values.get("method")
820
+ return typing.cast(typing.Optional[builtins.str], result)
821
+
822
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
823
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
824
+
825
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
826
+ return not (rhs == self)
827
+
828
+ def __repr__(self) -> str:
829
+ return "ApiTestStep(%s)" % ", ".join(
830
+ k + "=" + repr(v) for k, v in self._values.items()
831
+ )
832
+
833
+
834
+ @jsii.data_type(
835
+ jsii_type="must-cdk.AppSpecHooks",
836
+ jsii_struct_bases=[],
837
+ name_mapping={
838
+ "after_allow_test_traffic": "afterAllowTestTraffic",
839
+ "after_allow_traffic": "afterAllowTraffic",
840
+ "after_install": "afterInstall",
841
+ "before_allow_traffic": "beforeAllowTraffic",
842
+ "before_install": "beforeInstall",
843
+ },
844
+ )
845
+ class AppSpecHooks:
846
+ def __init__(
847
+ self,
848
+ *,
849
+ after_allow_test_traffic: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
850
+ after_allow_traffic: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
851
+ after_install: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
852
+ before_allow_traffic: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
853
+ before_install: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
854
+ ) -> None:
855
+ '''Lifecycle hooks configuration.
856
+
857
+ :param after_allow_test_traffic: Lambda or ARN of a lambda to run tasks after the test listener serves traffic to the replacement task set.
858
+ :param after_allow_traffic: Lambda or ARN of a lambda to run tasks after the second target group serves traffic to the replacement task set.
859
+ :param after_install: Lambda or ARN of a lambda to run tasks after the replacement task set is created and one of the target groups is associated with it.
860
+ :param before_allow_traffic: Lambda or ARN of a lambda to run tasks after the second target group is associated with the replacement task set, but before traffic is shifted to the replacement task set.
861
+ :param before_install: Lambda or ARN of a lambda to run tasks before the replacement task set is created.
862
+ '''
863
+ if __debug__:
864
+ type_hints = typing.get_type_hints(_typecheckingstub__ff5030e61a5fd08fabf54e34ff261d6fa3b0a899cf455b923b66273d671d18f9)
865
+ check_type(argname="argument after_allow_test_traffic", value=after_allow_test_traffic, expected_type=type_hints["after_allow_test_traffic"])
866
+ check_type(argname="argument after_allow_traffic", value=after_allow_traffic, expected_type=type_hints["after_allow_traffic"])
867
+ check_type(argname="argument after_install", value=after_install, expected_type=type_hints["after_install"])
868
+ check_type(argname="argument before_allow_traffic", value=before_allow_traffic, expected_type=type_hints["before_allow_traffic"])
869
+ check_type(argname="argument before_install", value=before_install, expected_type=type_hints["before_install"])
870
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
871
+ if after_allow_test_traffic is not None:
872
+ self._values["after_allow_test_traffic"] = after_allow_test_traffic
873
+ if after_allow_traffic is not None:
874
+ self._values["after_allow_traffic"] = after_allow_traffic
875
+ if after_install is not None:
876
+ self._values["after_install"] = after_install
877
+ if before_allow_traffic is not None:
878
+ self._values["before_allow_traffic"] = before_allow_traffic
879
+ if before_install is not None:
880
+ self._values["before_install"] = before_install
881
+
882
+ @builtins.property
883
+ def after_allow_test_traffic(
884
+ self,
885
+ ) -> typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]]:
886
+ '''Lambda or ARN of a lambda to run tasks after the test listener serves traffic to the replacement task set.'''
887
+ result = self._values.get("after_allow_test_traffic")
888
+ return typing.cast(typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]], result)
889
+
890
+ @builtins.property
891
+ def after_allow_traffic(
892
+ self,
893
+ ) -> typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]]:
894
+ '''Lambda or ARN of a lambda to run tasks after the second target group serves traffic to the replacement task set.'''
895
+ result = self._values.get("after_allow_traffic")
896
+ return typing.cast(typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]], result)
897
+
898
+ @builtins.property
899
+ def after_install(
900
+ self,
901
+ ) -> typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]]:
902
+ '''Lambda or ARN of a lambda to run tasks after the replacement task set is created and one of the target groups is associated with it.'''
903
+ result = self._values.get("after_install")
904
+ return typing.cast(typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]], result)
905
+
906
+ @builtins.property
907
+ def before_allow_traffic(
908
+ self,
909
+ ) -> typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]]:
910
+ '''Lambda or ARN of a lambda to run tasks after the second target group is associated with the replacement task set, but before traffic is shifted to the replacement task set.'''
911
+ result = self._values.get("before_allow_traffic")
912
+ return typing.cast(typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]], result)
913
+
914
+ @builtins.property
915
+ def before_install(
916
+ self,
917
+ ) -> typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]]:
918
+ '''Lambda or ARN of a lambda to run tasks before the replacement task set is created.'''
919
+ result = self._values.get("before_install")
920
+ return typing.cast(typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]], result)
921
+
922
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
923
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
924
+
925
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
926
+ return not (rhs == self)
927
+
928
+ def __repr__(self) -> str:
929
+ return "AppSpecHooks(%s)" % ", ".join(
930
+ k + "=" + repr(v) for k, v in self._values.items()
931
+ )
932
+
933
+
934
+ class ApplicationLoadBalancedCodeDeployedFargateService(
935
+ _aws_cdk_aws_ecs_patterns_ceddda9d.ApplicationLoadBalancedFargateService,
936
+ metaclass=jsii.JSIIMeta,
937
+ jsii_type="must-cdk.ApplicationLoadBalancedCodeDeployedFargateService",
938
+ ):
939
+ '''A Fargate service running on an ECS cluster fronted by an application load balancer and deployed by CodeDeploy.'''
940
+
941
+ def __init__(
942
+ self,
943
+ scope: _constructs_77d1e7e8.Construct,
944
+ id: builtins.str,
945
+ *,
946
+ access_log_bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.IBucket] = None,
947
+ access_log_prefix: typing.Optional[builtins.str] = None,
948
+ api_canary_schedule: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
949
+ api_canary_thread_count: typing.Optional[jsii.Number] = None,
950
+ api_canary_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
951
+ api_test_steps: typing.Optional[typing.Sequence[typing.Union[ApiTestStep, typing.Dict[builtins.str, typing.Any]]]] = None,
952
+ application_name: typing.Optional[builtins.str] = None,
953
+ deployment_config: typing.Optional[_aws_cdk_aws_codedeploy_ceddda9d.IEcsDeploymentConfig] = None,
954
+ deployment_group_name: typing.Optional[builtins.str] = None,
955
+ deployment_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
956
+ deregistration_delay: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
957
+ hooks: typing.Optional[typing.Union[AppSpecHooks, typing.Dict[builtins.str, typing.Any]]] = None,
958
+ response_time_alarm_threshold: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
959
+ target_health_check: typing.Optional[typing.Union[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.HealthCheck, typing.Dict[builtins.str, typing.Any]]] = None,
960
+ termination_wait_time: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
961
+ test_port: typing.Optional[jsii.Number] = None,
962
+ assign_public_ip: typing.Optional[builtins.bool] = None,
963
+ container_cpu: typing.Optional[jsii.Number] = None,
964
+ container_memory_limit_mib: typing.Optional[jsii.Number] = None,
965
+ health_check: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.HealthCheck, typing.Dict[builtins.str, typing.Any]]] = None,
966
+ security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
967
+ task_subnets: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
968
+ capacity_provider_strategies: typing.Optional[typing.Sequence[typing.Union[_aws_cdk_aws_ecs_ceddda9d.CapacityProviderStrategy, typing.Dict[builtins.str, typing.Any]]]] = None,
969
+ certificate: typing.Optional[_aws_cdk_aws_certificatemanager_ceddda9d.ICertificate] = None,
970
+ circuit_breaker: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.DeploymentCircuitBreaker, typing.Dict[builtins.str, typing.Any]]] = None,
971
+ cloud_map_options: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.CloudMapOptions, typing.Dict[builtins.str, typing.Any]]] = None,
972
+ cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.ICluster] = None,
973
+ deployment_controller: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.DeploymentController, typing.Dict[builtins.str, typing.Any]]] = None,
974
+ desired_count: typing.Optional[jsii.Number] = None,
975
+ domain_name: typing.Optional[builtins.str] = None,
976
+ domain_zone: typing.Optional[_aws_cdk_aws_route53_ceddda9d.IHostedZone] = None,
977
+ enable_ecs_managed_tags: typing.Optional[builtins.bool] = None,
978
+ enable_execute_command: typing.Optional[builtins.bool] = None,
979
+ health_check_grace_period: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
980
+ idle_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
981
+ ip_address_type: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.IpAddressType] = None,
982
+ listener_port: typing.Optional[jsii.Number] = None,
983
+ load_balancer: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.IApplicationLoadBalancer] = None,
984
+ load_balancer_name: typing.Optional[builtins.str] = None,
985
+ max_healthy_percent: typing.Optional[jsii.Number] = None,
986
+ min_healthy_percent: typing.Optional[jsii.Number] = None,
987
+ open_listener: typing.Optional[builtins.bool] = None,
988
+ propagate_tags: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.PropagatedTagSource] = None,
989
+ protocol: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationProtocol] = None,
990
+ protocol_version: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationProtocolVersion] = None,
991
+ public_load_balancer: typing.Optional[builtins.bool] = None,
992
+ record_type: typing.Optional[_aws_cdk_aws_ecs_patterns_ceddda9d.ApplicationLoadBalancedServiceRecordType] = None,
993
+ redirect_http: typing.Optional[builtins.bool] = None,
994
+ service_name: typing.Optional[builtins.str] = None,
995
+ ssl_policy: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.SslPolicy] = None,
996
+ target_protocol: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationProtocol] = None,
997
+ task_image_options: typing.Optional[typing.Union[_aws_cdk_aws_ecs_patterns_ceddda9d.ApplicationLoadBalancedTaskImageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
998
+ vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
999
+ cpu: typing.Optional[jsii.Number] = None,
1000
+ ephemeral_storage_gib: typing.Optional[jsii.Number] = None,
1001
+ memory_limit_mib: typing.Optional[jsii.Number] = None,
1002
+ platform_version: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.FargatePlatformVersion] = None,
1003
+ runtime_platform: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.RuntimePlatform, typing.Dict[builtins.str, typing.Any]]] = None,
1004
+ task_definition: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.FargateTaskDefinition] = None,
1005
+ ) -> None:
1006
+ '''Constructs a new instance of the ApplicationLoadBalancedCodeDeployedFargateService class.
1007
+
1008
+ :param scope: -
1009
+ :param id: -
1010
+ :param access_log_bucket: The bucket to use for access logs from the Application Load Balancer. Default: - a new S3 bucket will be created
1011
+ :param access_log_prefix: The prefix to use for access logs from the Application Load Balancer. Default: - none
1012
+ :param api_canary_schedule: The frequency for running the api canaries. Default: - 5 minutes
1013
+ :param api_canary_thread_count: The number of threads to run concurrently for the synthetic test. Default: - 20
1014
+ :param api_canary_timeout: The threshold for how long a api canary can take to run. Default: - no alarm is created for test duration
1015
+ :param api_test_steps: The steps to run in the canary. Default: - no synthetic test will be created
1016
+ :param application_name: The physical, human-readable name of the CodeDeploy Application. Default: an auto-generated name will be used
1017
+ :param deployment_config: The deployment configuration to use for the deployment group. Default: - EcsDeploymentConfig.ALL_AT_ONCE
1018
+ :param deployment_group_name: The physical, human-readable name of the CodeDeploy Deployment Group. Default: An auto-generated name will be used.
1019
+ :param deployment_timeout: The timeout for a CodeDeploy deployment. Default: - 60 minutes
1020
+ :param deregistration_delay: The amount of time for ELB to wait before changing the state of a deregistering target from 'draining' to 'unused'. Default: - 300 seconds
1021
+ :param hooks: Optional lifecycle hooks. Default: - no lifecycle hooks
1022
+ :param response_time_alarm_threshold: The threshold for response time alarm. Default: - no alarm will be created
1023
+ :param target_health_check: The healthcheck to configure on the Application Load Balancer target groups. Default: - no health check is configured
1024
+ :param termination_wait_time: The time to wait before terminating the original (blue) task set. Default: - 10 minutes
1025
+ :param test_port: The port to use for test traffic on the listener. Default: - listenerPort + 1
1026
+ :param assign_public_ip: Determines whether the service will be assigned a public IP address. Default: false
1027
+ :param container_cpu: The minimum number of CPU units to reserve for the container. Default: - No minimum CPU units reserved.
1028
+ :param container_memory_limit_mib: The amount (in MiB) of memory to present to the container. If your container attempts to exceed the allocated memory, the container is terminated. Default: - No memory limit.
1029
+ :param health_check: The health check command and associated configuration parameters for the container. Default: - Health check configuration from container.
1030
+ :param security_groups: The security groups to associate with the service. If you do not specify a security group, a new security group is created. Default: - A new security group is created.
1031
+ :param task_subnets: The subnets to associate with the service. Default: - Public subnets if ``assignPublicIp`` is set, otherwise the first available one of Private, Isolated, Public, in that order.
1032
+ :param capacity_provider_strategies: A list of Capacity Provider strategies used to place a service. Default: - undefined
1033
+ :param certificate: Certificate Manager certificate to associate with the load balancer. Setting this option will set the load balancer protocol to HTTPS. Default: - No certificate associated with the load balancer, if using the HTTP protocol. For HTTPS, a DNS-validated certificate will be created for the load balancer's specified domain name if a domain name and domain zone are specified.
1034
+ :param circuit_breaker: Whether to enable the deployment circuit breaker. If this property is defined, circuit breaker will be implicitly enabled. Default: - disabled
1035
+ :param cloud_map_options: The options for configuring an Amazon ECS service to use service discovery. Default: - AWS Cloud Map service discovery is not enabled.
1036
+ :param cluster: The name of the cluster that hosts the service. If a cluster is specified, the vpc construct should be omitted. Alternatively, you can omit both cluster and vpc. Default: - create a new cluster; if both cluster and vpc are omitted, a new VPC will be created for you.
1037
+ :param deployment_controller: Specifies which deployment controller to use for the service. For more information, see `Amazon ECS Deployment Types <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html>`_ Default: - Rolling update (ECS)
1038
+ :param desired_count: The desired number of instantiations of the task definition to keep running on the service. The minimum value is 1 Default: - The default is 1 for all new services and uses the existing service's desired count when updating an existing service.
1039
+ :param domain_name: The domain name for the service, e.g. "api.example.com.". Default: - No domain name.
1040
+ :param domain_zone: The Route53 hosted zone for the domain, e.g. "example.com.". Default: - No Route53 hosted domain zone.
1041
+ :param enable_ecs_managed_tags: Specifies whether to enable Amazon ECS managed tags for the tasks within the service. For more information, see `Tagging Your Amazon ECS Resources <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html>`_ Default: false
1042
+ :param enable_execute_command: Whether ECS Exec should be enabled. Default: - false
1043
+ :param health_check_grace_period: The period of time, in seconds, that the Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing target health checks after a task has first started. Default: - defaults to 60 seconds if at least one load balancer is in-use and it is not already set
1044
+ :param idle_timeout: The load balancer idle timeout, in seconds. Can be between 1 and 4000 seconds Default: - CloudFormation sets idle timeout to 60 seconds
1045
+ :param ip_address_type: The type of IP address to use. Default: - IpAddressType.IPV4
1046
+ :param listener_port: Listener port of the application load balancer that will serve traffic to the service. Default: - The default listener port is determined from the protocol (port 80 for HTTP, port 443 for HTTPS). A domain name and zone must be also be specified if using HTTPS.
1047
+ :param load_balancer: The application load balancer that will serve traffic to the service. The VPC attribute of a load balancer must be specified for it to be used to create a new service with this pattern. [disable-awslint:ref-via-interface] Default: - a new load balancer will be created.
1048
+ :param load_balancer_name: Name of the load balancer. Default: - Automatically generated name.
1049
+ :param max_healthy_percent: The maximum number of tasks, specified as a percentage of the Amazon ECS service's DesiredCount value, that can run in a service during a deployment. Default: - 100 if daemon, otherwise 200
1050
+ :param min_healthy_percent: The minimum number of tasks, specified as a percentage of the Amazon ECS service's DesiredCount value, that must continue to run and remain healthy during a deployment. Default: - 0 if daemon, otherwise 50
1051
+ :param open_listener: Determines whether or not the Security Group for the Load Balancer's Listener will be open to all traffic by default. Default: true -- The security group allows ingress from all IP addresses.
1052
+ :param propagate_tags: Specifies whether to propagate the tags from the task definition or the service to the tasks in the service. Tags can only be propagated to the tasks within the service during service creation. Default: - none
1053
+ :param protocol: The protocol for connections from clients to the load balancer. The load balancer port is determined from the protocol (port 80 for HTTP, port 443 for HTTPS). If HTTPS, either a certificate or domain name and domain zone must also be specified. Default: HTTP. If a certificate is specified, the protocol will be set by default to HTTPS.
1054
+ :param protocol_version: The protocol version to use. Default: ApplicationProtocolVersion.HTTP1
1055
+ :param public_load_balancer: Determines whether the Load Balancer will be internet-facing. Default: true
1056
+ :param record_type: Specifies whether the Route53 record should be a CNAME, an A record using the Alias feature or no record at all. This is useful if you need to work with DNS systems that do not support alias records. Default: ApplicationLoadBalancedServiceRecordType.ALIAS
1057
+ :param redirect_http: Specifies whether the load balancer should redirect traffic on port 80 to the {@link listenerPort} to support HTTP->HTTPS redirects. This is only valid if the protocol of the ALB is HTTPS. Default: false
1058
+ :param service_name: The name of the service. Default: - CloudFormation-generated name.
1059
+ :param ssl_policy: The security policy that defines which ciphers and protocols are supported by the ALB Listener. Default: - The recommended elastic load balancing security policy
1060
+ :param target_protocol: The protocol for connections from the load balancer to the ECS tasks. The default target port is determined from the protocol (port 80 for HTTP, port 443 for HTTPS). Default: HTTP.
1061
+ :param task_image_options: The properties required to create a new task definition. TaskDefinition or TaskImageOptions must be specified, but not both. Default: none
1062
+ :param vpc: The VPC where the container instances will be launched or the elastic network interfaces (ENIs) will be deployed. If a vpc is specified, the cluster construct should be omitted. Alternatively, you can omit both vpc and cluster. Default: - uses the VPC defined in the cluster or creates a new VPC.
1063
+ :param cpu: The number of cpu units used by the task. Valid values, which determines your range of valid values for the memory parameter: 256 (.25 vCPU) - Available memory values: 0.5GB, 1GB, 2GB 512 (.5 vCPU) - Available memory values: 1GB, 2GB, 3GB, 4GB 1024 (1 vCPU) - Available memory values: 2GB, 3GB, 4GB, 5GB, 6GB, 7GB, 8GB 2048 (2 vCPU) - Available memory values: Between 4GB and 16GB in 1GB increments 4096 (4 vCPU) - Available memory values: Between 8GB and 30GB in 1GB increments 8192 (8 vCPU) - Available memory values: Between 16GB and 60GB in 4GB increments 16384 (16 vCPU) - Available memory values: Between 32GB and 120GB in 8GB increments This default is set in the underlying FargateTaskDefinition construct. Default: 256
1064
+ :param ephemeral_storage_gib: The amount (in GiB) of ephemeral storage to be allocated to the task. The minimum supported value is ``21`` GiB and the maximum supported value is ``200`` GiB. Only supported in Fargate platform version 1.4.0 or later. Default: Undefined, in which case, the task will receive 20GiB ephemeral storage.
1065
+ :param memory_limit_mib: The amount (in MiB) of memory used by the task. This field is required and you must use one of the following values, which 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 16384 (16 GB) and 61440 (60 GB) in increments of 4096 (4 GB) - Available cpu values: 8192 (8 vCPU) Between 32768 (32 GB) and 122880 (120 GB) in increments of 8192 (8 GB) - Available cpu values: 16384 (16 vCPU) This default is set in the underlying FargateTaskDefinition construct. Default: 512
1066
+ :param platform_version: The platform version on which to run your service. If one is not specified, the LATEST platform version is used by default. For more information, see `AWS Fargate Platform Versions <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html>`_ in the Amazon Elastic Container Service Developer Guide. Default: Latest
1067
+ :param runtime_platform: The runtime platform of the task definition. Default: - If the property is undefined, ``operatingSystemFamily`` is LINUX and ``cpuArchitecture`` is X86_64
1068
+ :param task_definition: The task definition to use for tasks in the service. TaskDefinition or TaskImageOptions must be specified, but not both. [disable-awslint:ref-via-interface] Default: - none
1069
+ '''
1070
+ if __debug__:
1071
+ type_hints = typing.get_type_hints(_typecheckingstub__cdc591d3fee959d6fc3e921fd142a865c9095fcaa7afe54cfab63ad9654b3069)
1072
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
1073
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
1074
+ props = ApplicationLoadBalancedCodeDeployedFargateServiceProps(
1075
+ access_log_bucket=access_log_bucket,
1076
+ access_log_prefix=access_log_prefix,
1077
+ api_canary_schedule=api_canary_schedule,
1078
+ api_canary_thread_count=api_canary_thread_count,
1079
+ api_canary_timeout=api_canary_timeout,
1080
+ api_test_steps=api_test_steps,
1081
+ application_name=application_name,
1082
+ deployment_config=deployment_config,
1083
+ deployment_group_name=deployment_group_name,
1084
+ deployment_timeout=deployment_timeout,
1085
+ deregistration_delay=deregistration_delay,
1086
+ hooks=hooks,
1087
+ response_time_alarm_threshold=response_time_alarm_threshold,
1088
+ target_health_check=target_health_check,
1089
+ termination_wait_time=termination_wait_time,
1090
+ test_port=test_port,
1091
+ assign_public_ip=assign_public_ip,
1092
+ container_cpu=container_cpu,
1093
+ container_memory_limit_mib=container_memory_limit_mib,
1094
+ health_check=health_check,
1095
+ security_groups=security_groups,
1096
+ task_subnets=task_subnets,
1097
+ capacity_provider_strategies=capacity_provider_strategies,
1098
+ certificate=certificate,
1099
+ circuit_breaker=circuit_breaker,
1100
+ cloud_map_options=cloud_map_options,
1101
+ cluster=cluster,
1102
+ deployment_controller=deployment_controller,
1103
+ desired_count=desired_count,
1104
+ domain_name=domain_name,
1105
+ domain_zone=domain_zone,
1106
+ enable_ecs_managed_tags=enable_ecs_managed_tags,
1107
+ enable_execute_command=enable_execute_command,
1108
+ health_check_grace_period=health_check_grace_period,
1109
+ idle_timeout=idle_timeout,
1110
+ ip_address_type=ip_address_type,
1111
+ listener_port=listener_port,
1112
+ load_balancer=load_balancer,
1113
+ load_balancer_name=load_balancer_name,
1114
+ max_healthy_percent=max_healthy_percent,
1115
+ min_healthy_percent=min_healthy_percent,
1116
+ open_listener=open_listener,
1117
+ propagate_tags=propagate_tags,
1118
+ protocol=protocol,
1119
+ protocol_version=protocol_version,
1120
+ public_load_balancer=public_load_balancer,
1121
+ record_type=record_type,
1122
+ redirect_http=redirect_http,
1123
+ service_name=service_name,
1124
+ ssl_policy=ssl_policy,
1125
+ target_protocol=target_protocol,
1126
+ task_image_options=task_image_options,
1127
+ vpc=vpc,
1128
+ cpu=cpu,
1129
+ ephemeral_storage_gib=ephemeral_storage_gib,
1130
+ memory_limit_mib=memory_limit_mib,
1131
+ platform_version=platform_version,
1132
+ runtime_platform=runtime_platform,
1133
+ task_definition=task_definition,
1134
+ )
1135
+
1136
+ jsii.create(self.__class__, self, [scope, id, props])
1137
+
1138
+ @jsii.member(jsii_name="addServiceAsTarget")
1139
+ def _add_service_as_target(
1140
+ self,
1141
+ service: _aws_cdk_aws_ecs_ceddda9d.BaseService,
1142
+ ) -> None:
1143
+ '''Adds service as a target of the target group.
1144
+
1145
+ :param service: -
1146
+ '''
1147
+ if __debug__:
1148
+ type_hints = typing.get_type_hints(_typecheckingstub__2e9ebe4d64205e08ed6953e0bfeed401797c431625ac1359c850bea7289fd3bd)
1149
+ check_type(argname="argument service", value=service, expected_type=type_hints["service"])
1150
+ return typing.cast(None, jsii.invoke(self, "addServiceAsTarget", [service]))
1151
+
1152
+ @builtins.property
1153
+ @jsii.member(jsii_name="accessLogBucket")
1154
+ def access_log_bucket(self) -> _aws_cdk_aws_s3_ceddda9d.IBucket:
1155
+ '''S3 Bucket used for access logs.'''
1156
+ return typing.cast(_aws_cdk_aws_s3_ceddda9d.IBucket, jsii.get(self, "accessLogBucket"))
1157
+
1158
+ @access_log_bucket.setter
1159
+ def access_log_bucket(self, value: _aws_cdk_aws_s3_ceddda9d.IBucket) -> None:
1160
+ if __debug__:
1161
+ type_hints = typing.get_type_hints(_typecheckingstub__04c27870fbc63c85094d295b9f732c20ae2ea852010c4ad421bcde70ea6317b9)
1162
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
1163
+ jsii.set(self, "accessLogBucket", value) # pyright: ignore[reportArgumentType]
1164
+
1165
+ @builtins.property
1166
+ @jsii.member(jsii_name="application")
1167
+ def application(self) -> _aws_cdk_aws_codedeploy_ceddda9d.EcsApplication:
1168
+ '''CodeDeploy application for this service.'''
1169
+ return typing.cast(_aws_cdk_aws_codedeploy_ceddda9d.EcsApplication, jsii.get(self, "application"))
1170
+
1171
+ @application.setter
1172
+ def application(
1173
+ self,
1174
+ value: _aws_cdk_aws_codedeploy_ceddda9d.EcsApplication,
1175
+ ) -> None:
1176
+ if __debug__:
1177
+ type_hints = typing.get_type_hints(_typecheckingstub__d9fc5156a1b8cf5bbc9b35e9b6746bb1f8400e7a99432fae8b3c01d42f18cf4f)
1178
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
1179
+ jsii.set(self, "application", value) # pyright: ignore[reportArgumentType]
1180
+
1181
+ @builtins.property
1182
+ @jsii.member(jsii_name="deployment")
1183
+ def deployment(self) -> "EcsDeployment":
1184
+ '''CodeDeploy deployment for this service.'''
1185
+ return typing.cast("EcsDeployment", jsii.get(self, "deployment"))
1186
+
1187
+ @deployment.setter
1188
+ def deployment(self, value: "EcsDeployment") -> None:
1189
+ if __debug__:
1190
+ type_hints = typing.get_type_hints(_typecheckingstub__272d02dc1b0a56f7951e43174a9099ef41f00eb05cc85b8c8467dfffa4c7b575)
1191
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
1192
+ jsii.set(self, "deployment", value) # pyright: ignore[reportArgumentType]
1193
+
1194
+ @builtins.property
1195
+ @jsii.member(jsii_name="deploymentGroup")
1196
+ def deployment_group(self) -> _aws_cdk_aws_codedeploy_ceddda9d.EcsDeploymentGroup:
1197
+ '''CodeDeploy deployment group for this service.'''
1198
+ return typing.cast(_aws_cdk_aws_codedeploy_ceddda9d.EcsDeploymentGroup, jsii.get(self, "deploymentGroup"))
1199
+
1200
+ @deployment_group.setter
1201
+ def deployment_group(
1202
+ self,
1203
+ value: _aws_cdk_aws_codedeploy_ceddda9d.EcsDeploymentGroup,
1204
+ ) -> None:
1205
+ if __debug__:
1206
+ type_hints = typing.get_type_hints(_typecheckingstub__447b00dfcf799fcb98a028b408aa3d1099e3032ff90cdfbf5edb60629924fa4f)
1207
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
1208
+ jsii.set(self, "deploymentGroup", value) # pyright: ignore[reportArgumentType]
1209
+
1210
+ @builtins.property
1211
+ @jsii.member(jsii_name="greenTargetGroup")
1212
+ def green_target_group(
1213
+ self,
1214
+ ) -> _aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationTargetGroup:
1215
+ '''Test target group to use for CodeDeploy deployments.'''
1216
+ return typing.cast(_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationTargetGroup, jsii.get(self, "greenTargetGroup"))
1217
+
1218
+ @green_target_group.setter
1219
+ def green_target_group(
1220
+ self,
1221
+ value: _aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationTargetGroup,
1222
+ ) -> None:
1223
+ if __debug__:
1224
+ type_hints = typing.get_type_hints(_typecheckingstub__aa3a26b4b04d4908d2ea2109d2b4d87bedc95a0fe8cd0a8d0540b8791158781c)
1225
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
1226
+ jsii.set(self, "greenTargetGroup", value) # pyright: ignore[reportArgumentType]
1227
+
1228
+ @builtins.property
1229
+ @jsii.member(jsii_name="testListener")
1230
+ def test_listener(
1231
+ self,
1232
+ ) -> _aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationListener:
1233
+ '''Test listener to use for CodeDeploy deployments.'''
1234
+ return typing.cast(_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationListener, jsii.get(self, "testListener"))
1235
+
1236
+ @test_listener.setter
1237
+ def test_listener(
1238
+ self,
1239
+ value: _aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationListener,
1240
+ ) -> None:
1241
+ if __debug__:
1242
+ type_hints = typing.get_type_hints(_typecheckingstub__a2ed1861141868939832c87d220366d1440d0ef23114460879e579d0433e3a14)
1243
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
1244
+ jsii.set(self, "testListener", value) # pyright: ignore[reportArgumentType]
1245
+
1246
+ @builtins.property
1247
+ @jsii.member(jsii_name="apiCanary")
1248
+ def api_canary(self) -> typing.Optional[ApiCanary]:
1249
+ '''API Canary for the service.'''
1250
+ return typing.cast(typing.Optional[ApiCanary], jsii.get(self, "apiCanary"))
1251
+
1252
+ @api_canary.setter
1253
+ def api_canary(self, value: typing.Optional[ApiCanary]) -> None:
1254
+ if __debug__:
1255
+ type_hints = typing.get_type_hints(_typecheckingstub__627a57fa5d3bba90628c374262020d7d1795c5bf62770ef75633f192fd5753d9)
1256
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
1257
+ jsii.set(self, "apiCanary", value) # pyright: ignore[reportArgumentType]
1258
+
1259
+ @builtins.property
1260
+ @jsii.member(jsii_name="healthAlarm")
1261
+ def health_alarm(self) -> typing.Optional[_aws_cdk_aws_cloudwatch_ceddda9d.IAlarm]:
1262
+ '''Composite alarm for monitoring health of service.'''
1263
+ return typing.cast(typing.Optional[_aws_cdk_aws_cloudwatch_ceddda9d.IAlarm], jsii.get(self, "healthAlarm"))
1264
+
1265
+ @health_alarm.setter
1266
+ def health_alarm(
1267
+ self,
1268
+ value: typing.Optional[_aws_cdk_aws_cloudwatch_ceddda9d.IAlarm],
1269
+ ) -> None:
1270
+ if __debug__:
1271
+ type_hints = typing.get_type_hints(_typecheckingstub__e070ffcc3fb27284424c9fd4af0ef70d9a50ac85df05cd34a1127edefb90d397)
1272
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
1273
+ jsii.set(self, "healthAlarm", value) # pyright: ignore[reportArgumentType]
1274
+
1275
+
1276
+ @jsii.data_type(
1277
+ jsii_type="must-cdk.ApplicationLoadBalancedCodeDeployedFargateServiceProps",
1278
+ jsii_struct_bases=[
1279
+ _aws_cdk_aws_ecs_patterns_ceddda9d.ApplicationLoadBalancedFargateServiceProps
1280
+ ],
1281
+ name_mapping={
1282
+ "capacity_provider_strategies": "capacityProviderStrategies",
1283
+ "certificate": "certificate",
1284
+ "circuit_breaker": "circuitBreaker",
1285
+ "cloud_map_options": "cloudMapOptions",
1286
+ "cluster": "cluster",
1287
+ "deployment_controller": "deploymentController",
1288
+ "desired_count": "desiredCount",
1289
+ "domain_name": "domainName",
1290
+ "domain_zone": "domainZone",
1291
+ "enable_ecs_managed_tags": "enableECSManagedTags",
1292
+ "enable_execute_command": "enableExecuteCommand",
1293
+ "health_check_grace_period": "healthCheckGracePeriod",
1294
+ "idle_timeout": "idleTimeout",
1295
+ "ip_address_type": "ipAddressType",
1296
+ "listener_port": "listenerPort",
1297
+ "load_balancer": "loadBalancer",
1298
+ "load_balancer_name": "loadBalancerName",
1299
+ "max_healthy_percent": "maxHealthyPercent",
1300
+ "min_healthy_percent": "minHealthyPercent",
1301
+ "open_listener": "openListener",
1302
+ "propagate_tags": "propagateTags",
1303
+ "protocol": "protocol",
1304
+ "protocol_version": "protocolVersion",
1305
+ "public_load_balancer": "publicLoadBalancer",
1306
+ "record_type": "recordType",
1307
+ "redirect_http": "redirectHTTP",
1308
+ "service_name": "serviceName",
1309
+ "ssl_policy": "sslPolicy",
1310
+ "target_protocol": "targetProtocol",
1311
+ "task_image_options": "taskImageOptions",
1312
+ "vpc": "vpc",
1313
+ "cpu": "cpu",
1314
+ "ephemeral_storage_gib": "ephemeralStorageGiB",
1315
+ "memory_limit_mib": "memoryLimitMiB",
1316
+ "platform_version": "platformVersion",
1317
+ "runtime_platform": "runtimePlatform",
1318
+ "task_definition": "taskDefinition",
1319
+ "assign_public_ip": "assignPublicIp",
1320
+ "container_cpu": "containerCpu",
1321
+ "container_memory_limit_mib": "containerMemoryLimitMiB",
1322
+ "health_check": "healthCheck",
1323
+ "security_groups": "securityGroups",
1324
+ "task_subnets": "taskSubnets",
1325
+ "access_log_bucket": "accessLogBucket",
1326
+ "access_log_prefix": "accessLogPrefix",
1327
+ "api_canary_schedule": "apiCanarySchedule",
1328
+ "api_canary_thread_count": "apiCanaryThreadCount",
1329
+ "api_canary_timeout": "apiCanaryTimeout",
1330
+ "api_test_steps": "apiTestSteps",
1331
+ "application_name": "applicationName",
1332
+ "deployment_config": "deploymentConfig",
1333
+ "deployment_group_name": "deploymentGroupName",
1334
+ "deployment_timeout": "deploymentTimeout",
1335
+ "deregistration_delay": "deregistrationDelay",
1336
+ "hooks": "hooks",
1337
+ "response_time_alarm_threshold": "responseTimeAlarmThreshold",
1338
+ "target_health_check": "targetHealthCheck",
1339
+ "termination_wait_time": "terminationWaitTime",
1340
+ "test_port": "testPort",
1341
+ },
1342
+ )
1343
+ class ApplicationLoadBalancedCodeDeployedFargateServiceProps(
1344
+ _aws_cdk_aws_ecs_patterns_ceddda9d.ApplicationLoadBalancedFargateServiceProps,
1345
+ ):
1346
+ def __init__(
1347
+ self,
1348
+ *,
1349
+ capacity_provider_strategies: typing.Optional[typing.Sequence[typing.Union[_aws_cdk_aws_ecs_ceddda9d.CapacityProviderStrategy, typing.Dict[builtins.str, typing.Any]]]] = None,
1350
+ certificate: typing.Optional[_aws_cdk_aws_certificatemanager_ceddda9d.ICertificate] = None,
1351
+ circuit_breaker: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.DeploymentCircuitBreaker, typing.Dict[builtins.str, typing.Any]]] = None,
1352
+ cloud_map_options: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.CloudMapOptions, typing.Dict[builtins.str, typing.Any]]] = None,
1353
+ cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.ICluster] = None,
1354
+ deployment_controller: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.DeploymentController, typing.Dict[builtins.str, typing.Any]]] = None,
1355
+ desired_count: typing.Optional[jsii.Number] = None,
1356
+ domain_name: typing.Optional[builtins.str] = None,
1357
+ domain_zone: typing.Optional[_aws_cdk_aws_route53_ceddda9d.IHostedZone] = None,
1358
+ enable_ecs_managed_tags: typing.Optional[builtins.bool] = None,
1359
+ enable_execute_command: typing.Optional[builtins.bool] = None,
1360
+ health_check_grace_period: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
1361
+ idle_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
1362
+ ip_address_type: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.IpAddressType] = None,
1363
+ listener_port: typing.Optional[jsii.Number] = None,
1364
+ load_balancer: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.IApplicationLoadBalancer] = None,
1365
+ load_balancer_name: typing.Optional[builtins.str] = None,
1366
+ max_healthy_percent: typing.Optional[jsii.Number] = None,
1367
+ min_healthy_percent: typing.Optional[jsii.Number] = None,
1368
+ open_listener: typing.Optional[builtins.bool] = None,
1369
+ propagate_tags: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.PropagatedTagSource] = None,
1370
+ protocol: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationProtocol] = None,
1371
+ protocol_version: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationProtocolVersion] = None,
1372
+ public_load_balancer: typing.Optional[builtins.bool] = None,
1373
+ record_type: typing.Optional[_aws_cdk_aws_ecs_patterns_ceddda9d.ApplicationLoadBalancedServiceRecordType] = None,
1374
+ redirect_http: typing.Optional[builtins.bool] = None,
1375
+ service_name: typing.Optional[builtins.str] = None,
1376
+ ssl_policy: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.SslPolicy] = None,
1377
+ target_protocol: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationProtocol] = None,
1378
+ task_image_options: typing.Optional[typing.Union[_aws_cdk_aws_ecs_patterns_ceddda9d.ApplicationLoadBalancedTaskImageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
1379
+ vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
1380
+ cpu: typing.Optional[jsii.Number] = None,
1381
+ ephemeral_storage_gib: typing.Optional[jsii.Number] = None,
1382
+ memory_limit_mib: typing.Optional[jsii.Number] = None,
1383
+ platform_version: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.FargatePlatformVersion] = None,
1384
+ runtime_platform: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.RuntimePlatform, typing.Dict[builtins.str, typing.Any]]] = None,
1385
+ task_definition: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.FargateTaskDefinition] = None,
1386
+ assign_public_ip: typing.Optional[builtins.bool] = None,
1387
+ container_cpu: typing.Optional[jsii.Number] = None,
1388
+ container_memory_limit_mib: typing.Optional[jsii.Number] = None,
1389
+ health_check: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.HealthCheck, typing.Dict[builtins.str, typing.Any]]] = None,
1390
+ security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
1391
+ task_subnets: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
1392
+ access_log_bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.IBucket] = None,
1393
+ access_log_prefix: typing.Optional[builtins.str] = None,
1394
+ api_canary_schedule: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
1395
+ api_canary_thread_count: typing.Optional[jsii.Number] = None,
1396
+ api_canary_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
1397
+ api_test_steps: typing.Optional[typing.Sequence[typing.Union[ApiTestStep, typing.Dict[builtins.str, typing.Any]]]] = None,
1398
+ application_name: typing.Optional[builtins.str] = None,
1399
+ deployment_config: typing.Optional[_aws_cdk_aws_codedeploy_ceddda9d.IEcsDeploymentConfig] = None,
1400
+ deployment_group_name: typing.Optional[builtins.str] = None,
1401
+ deployment_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
1402
+ deregistration_delay: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
1403
+ hooks: typing.Optional[typing.Union[AppSpecHooks, typing.Dict[builtins.str, typing.Any]]] = None,
1404
+ response_time_alarm_threshold: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
1405
+ target_health_check: typing.Optional[typing.Union[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.HealthCheck, typing.Dict[builtins.str, typing.Any]]] = None,
1406
+ termination_wait_time: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
1407
+ test_port: typing.Optional[jsii.Number] = None,
1408
+ ) -> None:
1409
+ '''The properties for the ApplicationLoadBalancedCodeDeployedFargateService service.
1410
+
1411
+ :param capacity_provider_strategies: A list of Capacity Provider strategies used to place a service. Default: - undefined
1412
+ :param certificate: Certificate Manager certificate to associate with the load balancer. Setting this option will set the load balancer protocol to HTTPS. Default: - No certificate associated with the load balancer, if using the HTTP protocol. For HTTPS, a DNS-validated certificate will be created for the load balancer's specified domain name if a domain name and domain zone are specified.
1413
+ :param circuit_breaker: Whether to enable the deployment circuit breaker. If this property is defined, circuit breaker will be implicitly enabled. Default: - disabled
1414
+ :param cloud_map_options: The options for configuring an Amazon ECS service to use service discovery. Default: - AWS Cloud Map service discovery is not enabled.
1415
+ :param cluster: The name of the cluster that hosts the service. If a cluster is specified, the vpc construct should be omitted. Alternatively, you can omit both cluster and vpc. Default: - create a new cluster; if both cluster and vpc are omitted, a new VPC will be created for you.
1416
+ :param deployment_controller: Specifies which deployment controller to use for the service. For more information, see `Amazon ECS Deployment Types <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html>`_ Default: - Rolling update (ECS)
1417
+ :param desired_count: The desired number of instantiations of the task definition to keep running on the service. The minimum value is 1 Default: - The default is 1 for all new services and uses the existing service's desired count when updating an existing service.
1418
+ :param domain_name: The domain name for the service, e.g. "api.example.com.". Default: - No domain name.
1419
+ :param domain_zone: The Route53 hosted zone for the domain, e.g. "example.com.". Default: - No Route53 hosted domain zone.
1420
+ :param enable_ecs_managed_tags: Specifies whether to enable Amazon ECS managed tags for the tasks within the service. For more information, see `Tagging Your Amazon ECS Resources <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html>`_ Default: false
1421
+ :param enable_execute_command: Whether ECS Exec should be enabled. Default: - false
1422
+ :param health_check_grace_period: The period of time, in seconds, that the Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing target health checks after a task has first started. Default: - defaults to 60 seconds if at least one load balancer is in-use and it is not already set
1423
+ :param idle_timeout: The load balancer idle timeout, in seconds. Can be between 1 and 4000 seconds Default: - CloudFormation sets idle timeout to 60 seconds
1424
+ :param ip_address_type: The type of IP address to use. Default: - IpAddressType.IPV4
1425
+ :param listener_port: Listener port of the application load balancer that will serve traffic to the service. Default: - The default listener port is determined from the protocol (port 80 for HTTP, port 443 for HTTPS). A domain name and zone must be also be specified if using HTTPS.
1426
+ :param load_balancer: The application load balancer that will serve traffic to the service. The VPC attribute of a load balancer must be specified for it to be used to create a new service with this pattern. [disable-awslint:ref-via-interface] Default: - a new load balancer will be created.
1427
+ :param load_balancer_name: Name of the load balancer. Default: - Automatically generated name.
1428
+ :param max_healthy_percent: The maximum number of tasks, specified as a percentage of the Amazon ECS service's DesiredCount value, that can run in a service during a deployment. Default: - 100 if daemon, otherwise 200
1429
+ :param min_healthy_percent: The minimum number of tasks, specified as a percentage of the Amazon ECS service's DesiredCount value, that must continue to run and remain healthy during a deployment. Default: - 0 if daemon, otherwise 50
1430
+ :param open_listener: Determines whether or not the Security Group for the Load Balancer's Listener will be open to all traffic by default. Default: true -- The security group allows ingress from all IP addresses.
1431
+ :param propagate_tags: Specifies whether to propagate the tags from the task definition or the service to the tasks in the service. Tags can only be propagated to the tasks within the service during service creation. Default: - none
1432
+ :param protocol: The protocol for connections from clients to the load balancer. The load balancer port is determined from the protocol (port 80 for HTTP, port 443 for HTTPS). If HTTPS, either a certificate or domain name and domain zone must also be specified. Default: HTTP. If a certificate is specified, the protocol will be set by default to HTTPS.
1433
+ :param protocol_version: The protocol version to use. Default: ApplicationProtocolVersion.HTTP1
1434
+ :param public_load_balancer: Determines whether the Load Balancer will be internet-facing. Default: true
1435
+ :param record_type: Specifies whether the Route53 record should be a CNAME, an A record using the Alias feature or no record at all. This is useful if you need to work with DNS systems that do not support alias records. Default: ApplicationLoadBalancedServiceRecordType.ALIAS
1436
+ :param redirect_http: Specifies whether the load balancer should redirect traffic on port 80 to the {@link listenerPort} to support HTTP->HTTPS redirects. This is only valid if the protocol of the ALB is HTTPS. Default: false
1437
+ :param service_name: The name of the service. Default: - CloudFormation-generated name.
1438
+ :param ssl_policy: The security policy that defines which ciphers and protocols are supported by the ALB Listener. Default: - The recommended elastic load balancing security policy
1439
+ :param target_protocol: The protocol for connections from the load balancer to the ECS tasks. The default target port is determined from the protocol (port 80 for HTTP, port 443 for HTTPS). Default: HTTP.
1440
+ :param task_image_options: The properties required to create a new task definition. TaskDefinition or TaskImageOptions must be specified, but not both. Default: none
1441
+ :param vpc: The VPC where the container instances will be launched or the elastic network interfaces (ENIs) will be deployed. If a vpc is specified, the cluster construct should be omitted. Alternatively, you can omit both vpc and cluster. Default: - uses the VPC defined in the cluster or creates a new VPC.
1442
+ :param cpu: The number of cpu units used by the task. Valid values, which determines your range of valid values for the memory parameter: 256 (.25 vCPU) - Available memory values: 0.5GB, 1GB, 2GB 512 (.5 vCPU) - Available memory values: 1GB, 2GB, 3GB, 4GB 1024 (1 vCPU) - Available memory values: 2GB, 3GB, 4GB, 5GB, 6GB, 7GB, 8GB 2048 (2 vCPU) - Available memory values: Between 4GB and 16GB in 1GB increments 4096 (4 vCPU) - Available memory values: Between 8GB and 30GB in 1GB increments 8192 (8 vCPU) - Available memory values: Between 16GB and 60GB in 4GB increments 16384 (16 vCPU) - Available memory values: Between 32GB and 120GB in 8GB increments This default is set in the underlying FargateTaskDefinition construct. Default: 256
1443
+ :param ephemeral_storage_gib: The amount (in GiB) of ephemeral storage to be allocated to the task. The minimum supported value is ``21`` GiB and the maximum supported value is ``200`` GiB. Only supported in Fargate platform version 1.4.0 or later. Default: Undefined, in which case, the task will receive 20GiB ephemeral storage.
1444
+ :param memory_limit_mib: The amount (in MiB) of memory used by the task. This field is required and you must use one of the following values, which 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 16384 (16 GB) and 61440 (60 GB) in increments of 4096 (4 GB) - Available cpu values: 8192 (8 vCPU) Between 32768 (32 GB) and 122880 (120 GB) in increments of 8192 (8 GB) - Available cpu values: 16384 (16 vCPU) This default is set in the underlying FargateTaskDefinition construct. Default: 512
1445
+ :param platform_version: The platform version on which to run your service. If one is not specified, the LATEST platform version is used by default. For more information, see `AWS Fargate Platform Versions <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html>`_ in the Amazon Elastic Container Service Developer Guide. Default: Latest
1446
+ :param runtime_platform: The runtime platform of the task definition. Default: - If the property is undefined, ``operatingSystemFamily`` is LINUX and ``cpuArchitecture`` is X86_64
1447
+ :param task_definition: The task definition to use for tasks in the service. TaskDefinition or TaskImageOptions must be specified, but not both. [disable-awslint:ref-via-interface] Default: - none
1448
+ :param assign_public_ip: Determines whether the service will be assigned a public IP address. Default: false
1449
+ :param container_cpu: The minimum number of CPU units to reserve for the container. Default: - No minimum CPU units reserved.
1450
+ :param container_memory_limit_mib: The amount (in MiB) of memory to present to the container. If your container attempts to exceed the allocated memory, the container is terminated. Default: - No memory limit.
1451
+ :param health_check: The health check command and associated configuration parameters for the container. Default: - Health check configuration from container.
1452
+ :param security_groups: The security groups to associate with the service. If you do not specify a security group, a new security group is created. Default: - A new security group is created.
1453
+ :param task_subnets: The subnets to associate with the service. Default: - Public subnets if ``assignPublicIp`` is set, otherwise the first available one of Private, Isolated, Public, in that order.
1454
+ :param access_log_bucket: The bucket to use for access logs from the Application Load Balancer. Default: - a new S3 bucket will be created
1455
+ :param access_log_prefix: The prefix to use for access logs from the Application Load Balancer. Default: - none
1456
+ :param api_canary_schedule: The frequency for running the api canaries. Default: - 5 minutes
1457
+ :param api_canary_thread_count: The number of threads to run concurrently for the synthetic test. Default: - 20
1458
+ :param api_canary_timeout: The threshold for how long a api canary can take to run. Default: - no alarm is created for test duration
1459
+ :param api_test_steps: The steps to run in the canary. Default: - no synthetic test will be created
1460
+ :param application_name: The physical, human-readable name of the CodeDeploy Application. Default: an auto-generated name will be used
1461
+ :param deployment_config: The deployment configuration to use for the deployment group. Default: - EcsDeploymentConfig.ALL_AT_ONCE
1462
+ :param deployment_group_name: The physical, human-readable name of the CodeDeploy Deployment Group. Default: An auto-generated name will be used.
1463
+ :param deployment_timeout: The timeout for a CodeDeploy deployment. Default: - 60 minutes
1464
+ :param deregistration_delay: The amount of time for ELB to wait before changing the state of a deregistering target from 'draining' to 'unused'. Default: - 300 seconds
1465
+ :param hooks: Optional lifecycle hooks. Default: - no lifecycle hooks
1466
+ :param response_time_alarm_threshold: The threshold for response time alarm. Default: - no alarm will be created
1467
+ :param target_health_check: The healthcheck to configure on the Application Load Balancer target groups. Default: - no health check is configured
1468
+ :param termination_wait_time: The time to wait before terminating the original (blue) task set. Default: - 10 minutes
1469
+ :param test_port: The port to use for test traffic on the listener. Default: - listenerPort + 1
1470
+ '''
1471
+ if isinstance(circuit_breaker, dict):
1472
+ circuit_breaker = _aws_cdk_aws_ecs_ceddda9d.DeploymentCircuitBreaker(**circuit_breaker)
1473
+ if isinstance(cloud_map_options, dict):
1474
+ cloud_map_options = _aws_cdk_aws_ecs_ceddda9d.CloudMapOptions(**cloud_map_options)
1475
+ if isinstance(deployment_controller, dict):
1476
+ deployment_controller = _aws_cdk_aws_ecs_ceddda9d.DeploymentController(**deployment_controller)
1477
+ if isinstance(task_image_options, dict):
1478
+ task_image_options = _aws_cdk_aws_ecs_patterns_ceddda9d.ApplicationLoadBalancedTaskImageOptions(**task_image_options)
1479
+ if isinstance(runtime_platform, dict):
1480
+ runtime_platform = _aws_cdk_aws_ecs_ceddda9d.RuntimePlatform(**runtime_platform)
1481
+ if isinstance(health_check, dict):
1482
+ health_check = _aws_cdk_aws_ecs_ceddda9d.HealthCheck(**health_check)
1483
+ if isinstance(task_subnets, dict):
1484
+ task_subnets = _aws_cdk_aws_ec2_ceddda9d.SubnetSelection(**task_subnets)
1485
+ if isinstance(hooks, dict):
1486
+ hooks = AppSpecHooks(**hooks)
1487
+ if isinstance(target_health_check, dict):
1488
+ target_health_check = _aws_cdk_aws_elasticloadbalancingv2_ceddda9d.HealthCheck(**target_health_check)
1489
+ if __debug__:
1490
+ type_hints = typing.get_type_hints(_typecheckingstub__62e1bd800b9cb43a4625242d7d85bd0154676bc19e69266aeb4ac5bdfd4d476f)
1491
+ check_type(argname="argument capacity_provider_strategies", value=capacity_provider_strategies, expected_type=type_hints["capacity_provider_strategies"])
1492
+ check_type(argname="argument certificate", value=certificate, expected_type=type_hints["certificate"])
1493
+ check_type(argname="argument circuit_breaker", value=circuit_breaker, expected_type=type_hints["circuit_breaker"])
1494
+ check_type(argname="argument cloud_map_options", value=cloud_map_options, expected_type=type_hints["cloud_map_options"])
1495
+ check_type(argname="argument cluster", value=cluster, expected_type=type_hints["cluster"])
1496
+ check_type(argname="argument deployment_controller", value=deployment_controller, expected_type=type_hints["deployment_controller"])
1497
+ check_type(argname="argument desired_count", value=desired_count, expected_type=type_hints["desired_count"])
1498
+ check_type(argname="argument domain_name", value=domain_name, expected_type=type_hints["domain_name"])
1499
+ check_type(argname="argument domain_zone", value=domain_zone, expected_type=type_hints["domain_zone"])
1500
+ check_type(argname="argument enable_ecs_managed_tags", value=enable_ecs_managed_tags, expected_type=type_hints["enable_ecs_managed_tags"])
1501
+ check_type(argname="argument enable_execute_command", value=enable_execute_command, expected_type=type_hints["enable_execute_command"])
1502
+ check_type(argname="argument health_check_grace_period", value=health_check_grace_period, expected_type=type_hints["health_check_grace_period"])
1503
+ check_type(argname="argument idle_timeout", value=idle_timeout, expected_type=type_hints["idle_timeout"])
1504
+ check_type(argname="argument ip_address_type", value=ip_address_type, expected_type=type_hints["ip_address_type"])
1505
+ check_type(argname="argument listener_port", value=listener_port, expected_type=type_hints["listener_port"])
1506
+ check_type(argname="argument load_balancer", value=load_balancer, expected_type=type_hints["load_balancer"])
1507
+ check_type(argname="argument load_balancer_name", value=load_balancer_name, expected_type=type_hints["load_balancer_name"])
1508
+ check_type(argname="argument max_healthy_percent", value=max_healthy_percent, expected_type=type_hints["max_healthy_percent"])
1509
+ check_type(argname="argument min_healthy_percent", value=min_healthy_percent, expected_type=type_hints["min_healthy_percent"])
1510
+ check_type(argname="argument open_listener", value=open_listener, expected_type=type_hints["open_listener"])
1511
+ check_type(argname="argument propagate_tags", value=propagate_tags, expected_type=type_hints["propagate_tags"])
1512
+ check_type(argname="argument protocol", value=protocol, expected_type=type_hints["protocol"])
1513
+ check_type(argname="argument protocol_version", value=protocol_version, expected_type=type_hints["protocol_version"])
1514
+ check_type(argname="argument public_load_balancer", value=public_load_balancer, expected_type=type_hints["public_load_balancer"])
1515
+ check_type(argname="argument record_type", value=record_type, expected_type=type_hints["record_type"])
1516
+ check_type(argname="argument redirect_http", value=redirect_http, expected_type=type_hints["redirect_http"])
1517
+ check_type(argname="argument service_name", value=service_name, expected_type=type_hints["service_name"])
1518
+ check_type(argname="argument ssl_policy", value=ssl_policy, expected_type=type_hints["ssl_policy"])
1519
+ check_type(argname="argument target_protocol", value=target_protocol, expected_type=type_hints["target_protocol"])
1520
+ check_type(argname="argument task_image_options", value=task_image_options, expected_type=type_hints["task_image_options"])
1521
+ check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
1522
+ check_type(argname="argument cpu", value=cpu, expected_type=type_hints["cpu"])
1523
+ check_type(argname="argument ephemeral_storage_gib", value=ephemeral_storage_gib, expected_type=type_hints["ephemeral_storage_gib"])
1524
+ check_type(argname="argument memory_limit_mib", value=memory_limit_mib, expected_type=type_hints["memory_limit_mib"])
1525
+ check_type(argname="argument platform_version", value=platform_version, expected_type=type_hints["platform_version"])
1526
+ check_type(argname="argument runtime_platform", value=runtime_platform, expected_type=type_hints["runtime_platform"])
1527
+ check_type(argname="argument task_definition", value=task_definition, expected_type=type_hints["task_definition"])
1528
+ check_type(argname="argument assign_public_ip", value=assign_public_ip, expected_type=type_hints["assign_public_ip"])
1529
+ check_type(argname="argument container_cpu", value=container_cpu, expected_type=type_hints["container_cpu"])
1530
+ check_type(argname="argument container_memory_limit_mib", value=container_memory_limit_mib, expected_type=type_hints["container_memory_limit_mib"])
1531
+ check_type(argname="argument health_check", value=health_check, expected_type=type_hints["health_check"])
1532
+ check_type(argname="argument security_groups", value=security_groups, expected_type=type_hints["security_groups"])
1533
+ check_type(argname="argument task_subnets", value=task_subnets, expected_type=type_hints["task_subnets"])
1534
+ check_type(argname="argument access_log_bucket", value=access_log_bucket, expected_type=type_hints["access_log_bucket"])
1535
+ check_type(argname="argument access_log_prefix", value=access_log_prefix, expected_type=type_hints["access_log_prefix"])
1536
+ check_type(argname="argument api_canary_schedule", value=api_canary_schedule, expected_type=type_hints["api_canary_schedule"])
1537
+ check_type(argname="argument api_canary_thread_count", value=api_canary_thread_count, expected_type=type_hints["api_canary_thread_count"])
1538
+ check_type(argname="argument api_canary_timeout", value=api_canary_timeout, expected_type=type_hints["api_canary_timeout"])
1539
+ check_type(argname="argument api_test_steps", value=api_test_steps, expected_type=type_hints["api_test_steps"])
1540
+ check_type(argname="argument application_name", value=application_name, expected_type=type_hints["application_name"])
1541
+ check_type(argname="argument deployment_config", value=deployment_config, expected_type=type_hints["deployment_config"])
1542
+ check_type(argname="argument deployment_group_name", value=deployment_group_name, expected_type=type_hints["deployment_group_name"])
1543
+ check_type(argname="argument deployment_timeout", value=deployment_timeout, expected_type=type_hints["deployment_timeout"])
1544
+ check_type(argname="argument deregistration_delay", value=deregistration_delay, expected_type=type_hints["deregistration_delay"])
1545
+ check_type(argname="argument hooks", value=hooks, expected_type=type_hints["hooks"])
1546
+ check_type(argname="argument response_time_alarm_threshold", value=response_time_alarm_threshold, expected_type=type_hints["response_time_alarm_threshold"])
1547
+ check_type(argname="argument target_health_check", value=target_health_check, expected_type=type_hints["target_health_check"])
1548
+ check_type(argname="argument termination_wait_time", value=termination_wait_time, expected_type=type_hints["termination_wait_time"])
1549
+ check_type(argname="argument test_port", value=test_port, expected_type=type_hints["test_port"])
1550
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
1551
+ if capacity_provider_strategies is not None:
1552
+ self._values["capacity_provider_strategies"] = capacity_provider_strategies
1553
+ if certificate is not None:
1554
+ self._values["certificate"] = certificate
1555
+ if circuit_breaker is not None:
1556
+ self._values["circuit_breaker"] = circuit_breaker
1557
+ if cloud_map_options is not None:
1558
+ self._values["cloud_map_options"] = cloud_map_options
1559
+ if cluster is not None:
1560
+ self._values["cluster"] = cluster
1561
+ if deployment_controller is not None:
1562
+ self._values["deployment_controller"] = deployment_controller
1563
+ if desired_count is not None:
1564
+ self._values["desired_count"] = desired_count
1565
+ if domain_name is not None:
1566
+ self._values["domain_name"] = domain_name
1567
+ if domain_zone is not None:
1568
+ self._values["domain_zone"] = domain_zone
1569
+ if enable_ecs_managed_tags is not None:
1570
+ self._values["enable_ecs_managed_tags"] = enable_ecs_managed_tags
1571
+ if enable_execute_command is not None:
1572
+ self._values["enable_execute_command"] = enable_execute_command
1573
+ if health_check_grace_period is not None:
1574
+ self._values["health_check_grace_period"] = health_check_grace_period
1575
+ if idle_timeout is not None:
1576
+ self._values["idle_timeout"] = idle_timeout
1577
+ if ip_address_type is not None:
1578
+ self._values["ip_address_type"] = ip_address_type
1579
+ if listener_port is not None:
1580
+ self._values["listener_port"] = listener_port
1581
+ if load_balancer is not None:
1582
+ self._values["load_balancer"] = load_balancer
1583
+ if load_balancer_name is not None:
1584
+ self._values["load_balancer_name"] = load_balancer_name
1585
+ if max_healthy_percent is not None:
1586
+ self._values["max_healthy_percent"] = max_healthy_percent
1587
+ if min_healthy_percent is not None:
1588
+ self._values["min_healthy_percent"] = min_healthy_percent
1589
+ if open_listener is not None:
1590
+ self._values["open_listener"] = open_listener
1591
+ if propagate_tags is not None:
1592
+ self._values["propagate_tags"] = propagate_tags
1593
+ if protocol is not None:
1594
+ self._values["protocol"] = protocol
1595
+ if protocol_version is not None:
1596
+ self._values["protocol_version"] = protocol_version
1597
+ if public_load_balancer is not None:
1598
+ self._values["public_load_balancer"] = public_load_balancer
1599
+ if record_type is not None:
1600
+ self._values["record_type"] = record_type
1601
+ if redirect_http is not None:
1602
+ self._values["redirect_http"] = redirect_http
1603
+ if service_name is not None:
1604
+ self._values["service_name"] = service_name
1605
+ if ssl_policy is not None:
1606
+ self._values["ssl_policy"] = ssl_policy
1607
+ if target_protocol is not None:
1608
+ self._values["target_protocol"] = target_protocol
1609
+ if task_image_options is not None:
1610
+ self._values["task_image_options"] = task_image_options
1611
+ if vpc is not None:
1612
+ self._values["vpc"] = vpc
1613
+ if cpu is not None:
1614
+ self._values["cpu"] = cpu
1615
+ if ephemeral_storage_gib is not None:
1616
+ self._values["ephemeral_storage_gib"] = ephemeral_storage_gib
1617
+ if memory_limit_mib is not None:
1618
+ self._values["memory_limit_mib"] = memory_limit_mib
1619
+ if platform_version is not None:
1620
+ self._values["platform_version"] = platform_version
1621
+ if runtime_platform is not None:
1622
+ self._values["runtime_platform"] = runtime_platform
1623
+ if task_definition is not None:
1624
+ self._values["task_definition"] = task_definition
1625
+ if assign_public_ip is not None:
1626
+ self._values["assign_public_ip"] = assign_public_ip
1627
+ if container_cpu is not None:
1628
+ self._values["container_cpu"] = container_cpu
1629
+ if container_memory_limit_mib is not None:
1630
+ self._values["container_memory_limit_mib"] = container_memory_limit_mib
1631
+ if health_check is not None:
1632
+ self._values["health_check"] = health_check
1633
+ if security_groups is not None:
1634
+ self._values["security_groups"] = security_groups
1635
+ if task_subnets is not None:
1636
+ self._values["task_subnets"] = task_subnets
1637
+ if access_log_bucket is not None:
1638
+ self._values["access_log_bucket"] = access_log_bucket
1639
+ if access_log_prefix is not None:
1640
+ self._values["access_log_prefix"] = access_log_prefix
1641
+ if api_canary_schedule is not None:
1642
+ self._values["api_canary_schedule"] = api_canary_schedule
1643
+ if api_canary_thread_count is not None:
1644
+ self._values["api_canary_thread_count"] = api_canary_thread_count
1645
+ if api_canary_timeout is not None:
1646
+ self._values["api_canary_timeout"] = api_canary_timeout
1647
+ if api_test_steps is not None:
1648
+ self._values["api_test_steps"] = api_test_steps
1649
+ if application_name is not None:
1650
+ self._values["application_name"] = application_name
1651
+ if deployment_config is not None:
1652
+ self._values["deployment_config"] = deployment_config
1653
+ if deployment_group_name is not None:
1654
+ self._values["deployment_group_name"] = deployment_group_name
1655
+ if deployment_timeout is not None:
1656
+ self._values["deployment_timeout"] = deployment_timeout
1657
+ if deregistration_delay is not None:
1658
+ self._values["deregistration_delay"] = deregistration_delay
1659
+ if hooks is not None:
1660
+ self._values["hooks"] = hooks
1661
+ if response_time_alarm_threshold is not None:
1662
+ self._values["response_time_alarm_threshold"] = response_time_alarm_threshold
1663
+ if target_health_check is not None:
1664
+ self._values["target_health_check"] = target_health_check
1665
+ if termination_wait_time is not None:
1666
+ self._values["termination_wait_time"] = termination_wait_time
1667
+ if test_port is not None:
1668
+ self._values["test_port"] = test_port
1669
+
1670
+ @builtins.property
1671
+ def capacity_provider_strategies(
1672
+ self,
1673
+ ) -> typing.Optional[typing.List[_aws_cdk_aws_ecs_ceddda9d.CapacityProviderStrategy]]:
1674
+ '''A list of Capacity Provider strategies used to place a service.
1675
+
1676
+ :default: - undefined
1677
+ '''
1678
+ result = self._values.get("capacity_provider_strategies")
1679
+ return typing.cast(typing.Optional[typing.List[_aws_cdk_aws_ecs_ceddda9d.CapacityProviderStrategy]], result)
1680
+
1681
+ @builtins.property
1682
+ def certificate(
1683
+ self,
1684
+ ) -> typing.Optional[_aws_cdk_aws_certificatemanager_ceddda9d.ICertificate]:
1685
+ '''Certificate Manager certificate to associate with the load balancer.
1686
+
1687
+ Setting this option will set the load balancer protocol to HTTPS.
1688
+
1689
+ :default:
1690
+
1691
+ - No certificate associated with the load balancer, if using
1692
+ the HTTP protocol. For HTTPS, a DNS-validated certificate will be
1693
+ created for the load balancer's specified domain name if a domain name
1694
+ and domain zone are specified.
1695
+ '''
1696
+ result = self._values.get("certificate")
1697
+ return typing.cast(typing.Optional[_aws_cdk_aws_certificatemanager_ceddda9d.ICertificate], result)
1698
+
1699
+ @builtins.property
1700
+ def circuit_breaker(
1701
+ self,
1702
+ ) -> typing.Optional[_aws_cdk_aws_ecs_ceddda9d.DeploymentCircuitBreaker]:
1703
+ '''Whether to enable the deployment circuit breaker.
1704
+
1705
+ If this property is defined, circuit breaker will be implicitly
1706
+ enabled.
1707
+
1708
+ :default: - disabled
1709
+ '''
1710
+ result = self._values.get("circuit_breaker")
1711
+ return typing.cast(typing.Optional[_aws_cdk_aws_ecs_ceddda9d.DeploymentCircuitBreaker], result)
1712
+
1713
+ @builtins.property
1714
+ def cloud_map_options(
1715
+ self,
1716
+ ) -> typing.Optional[_aws_cdk_aws_ecs_ceddda9d.CloudMapOptions]:
1717
+ '''The options for configuring an Amazon ECS service to use service discovery.
1718
+
1719
+ :default: - AWS Cloud Map service discovery is not enabled.
1720
+ '''
1721
+ result = self._values.get("cloud_map_options")
1722
+ return typing.cast(typing.Optional[_aws_cdk_aws_ecs_ceddda9d.CloudMapOptions], result)
1723
+
1724
+ @builtins.property
1725
+ def cluster(self) -> typing.Optional[_aws_cdk_aws_ecs_ceddda9d.ICluster]:
1726
+ '''The name of the cluster that hosts the service.
1727
+
1728
+ If a cluster is specified, the vpc construct should be omitted. Alternatively, you can omit both cluster and vpc.
1729
+
1730
+ :default: - create a new cluster; if both cluster and vpc are omitted, a new VPC will be created for you.
1731
+ '''
1732
+ result = self._values.get("cluster")
1733
+ return typing.cast(typing.Optional[_aws_cdk_aws_ecs_ceddda9d.ICluster], result)
1734
+
1735
+ @builtins.property
1736
+ def deployment_controller(
1737
+ self,
1738
+ ) -> typing.Optional[_aws_cdk_aws_ecs_ceddda9d.DeploymentController]:
1739
+ '''Specifies which deployment controller to use for the service.
1740
+
1741
+ For more information, see
1742
+ `Amazon ECS Deployment Types <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html>`_
1743
+
1744
+ :default: - Rolling update (ECS)
1745
+ '''
1746
+ result = self._values.get("deployment_controller")
1747
+ return typing.cast(typing.Optional[_aws_cdk_aws_ecs_ceddda9d.DeploymentController], result)
1748
+
1749
+ @builtins.property
1750
+ def desired_count(self) -> typing.Optional[jsii.Number]:
1751
+ '''The desired number of instantiations of the task definition to keep running on the service.
1752
+
1753
+ The minimum value is 1
1754
+
1755
+ :default:
1756
+
1757
+ - The default is 1 for all new services and uses the existing service's desired count
1758
+ when updating an existing service.
1759
+ '''
1760
+ result = self._values.get("desired_count")
1761
+ return typing.cast(typing.Optional[jsii.Number], result)
1762
+
1763
+ @builtins.property
1764
+ def domain_name(self) -> typing.Optional[builtins.str]:
1765
+ '''The domain name for the service, e.g. "api.example.com.".
1766
+
1767
+ :default: - No domain name.
1768
+ '''
1769
+ result = self._values.get("domain_name")
1770
+ return typing.cast(typing.Optional[builtins.str], result)
1771
+
1772
+ @builtins.property
1773
+ def domain_zone(self) -> typing.Optional[_aws_cdk_aws_route53_ceddda9d.IHostedZone]:
1774
+ '''The Route53 hosted zone for the domain, e.g. "example.com.".
1775
+
1776
+ :default: - No Route53 hosted domain zone.
1777
+ '''
1778
+ result = self._values.get("domain_zone")
1779
+ return typing.cast(typing.Optional[_aws_cdk_aws_route53_ceddda9d.IHostedZone], result)
1780
+
1781
+ @builtins.property
1782
+ def enable_ecs_managed_tags(self) -> typing.Optional[builtins.bool]:
1783
+ '''Specifies whether to enable Amazon ECS managed tags for the tasks within the service.
1784
+
1785
+ For more information, see
1786
+ `Tagging Your Amazon ECS Resources <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html>`_
1787
+
1788
+ :default: false
1789
+ '''
1790
+ result = self._values.get("enable_ecs_managed_tags")
1791
+ return typing.cast(typing.Optional[builtins.bool], result)
1792
+
1793
+ @builtins.property
1794
+ def enable_execute_command(self) -> typing.Optional[builtins.bool]:
1795
+ '''Whether ECS Exec should be enabled.
1796
+
1797
+ :default: - false
1798
+ '''
1799
+ result = self._values.get("enable_execute_command")
1800
+ return typing.cast(typing.Optional[builtins.bool], result)
1801
+
1802
+ @builtins.property
1803
+ def health_check_grace_period(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
1804
+ '''The period of time, in seconds, that the Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing target health checks after a task has first started.
1805
+
1806
+ :default: - defaults to 60 seconds if at least one load balancer is in-use and it is not already set
1807
+ '''
1808
+ result = self._values.get("health_check_grace_period")
1809
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
1810
+
1811
+ @builtins.property
1812
+ def idle_timeout(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
1813
+ '''The load balancer idle timeout, in seconds.
1814
+
1815
+ Can be between 1 and 4000 seconds
1816
+
1817
+ :default: - CloudFormation sets idle timeout to 60 seconds
1818
+ '''
1819
+ result = self._values.get("idle_timeout")
1820
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
1821
+
1822
+ @builtins.property
1823
+ def ip_address_type(
1824
+ self,
1825
+ ) -> typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.IpAddressType]:
1826
+ '''The type of IP address to use.
1827
+
1828
+ :default: - IpAddressType.IPV4
1829
+ '''
1830
+ result = self._values.get("ip_address_type")
1831
+ return typing.cast(typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.IpAddressType], result)
1832
+
1833
+ @builtins.property
1834
+ def listener_port(self) -> typing.Optional[jsii.Number]:
1835
+ '''Listener port of the application load balancer that will serve traffic to the service.
1836
+
1837
+ :default:
1838
+
1839
+ - The default listener port is determined from the protocol (port 80 for HTTP,
1840
+ port 443 for HTTPS). A domain name and zone must be also be specified if using HTTPS.
1841
+ '''
1842
+ result = self._values.get("listener_port")
1843
+ return typing.cast(typing.Optional[jsii.Number], result)
1844
+
1845
+ @builtins.property
1846
+ def load_balancer(
1847
+ self,
1848
+ ) -> typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.IApplicationLoadBalancer]:
1849
+ '''The application load balancer that will serve traffic to the service.
1850
+
1851
+ The VPC attribute of a load balancer must be specified for it to be used
1852
+ to create a new service with this pattern.
1853
+
1854
+ [disable-awslint:ref-via-interface]
1855
+
1856
+ :default: - a new load balancer will be created.
1857
+ '''
1858
+ result = self._values.get("load_balancer")
1859
+ return typing.cast(typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.IApplicationLoadBalancer], result)
1860
+
1861
+ @builtins.property
1862
+ def load_balancer_name(self) -> typing.Optional[builtins.str]:
1863
+ '''Name of the load balancer.
1864
+
1865
+ :default: - Automatically generated name.
1866
+ '''
1867
+ result = self._values.get("load_balancer_name")
1868
+ return typing.cast(typing.Optional[builtins.str], result)
1869
+
1870
+ @builtins.property
1871
+ def max_healthy_percent(self) -> typing.Optional[jsii.Number]:
1872
+ '''The maximum number of tasks, specified as a percentage of the Amazon ECS service's DesiredCount value, that can run in a service during a deployment.
1873
+
1874
+ :default: - 100 if daemon, otherwise 200
1875
+ '''
1876
+ result = self._values.get("max_healthy_percent")
1877
+ return typing.cast(typing.Optional[jsii.Number], result)
1878
+
1879
+ @builtins.property
1880
+ def min_healthy_percent(self) -> typing.Optional[jsii.Number]:
1881
+ '''The minimum number of tasks, specified as a percentage of the Amazon ECS service's DesiredCount value, that must continue to run and remain healthy during a deployment.
1882
+
1883
+ :default: - 0 if daemon, otherwise 50
1884
+ '''
1885
+ result = self._values.get("min_healthy_percent")
1886
+ return typing.cast(typing.Optional[jsii.Number], result)
1887
+
1888
+ @builtins.property
1889
+ def open_listener(self) -> typing.Optional[builtins.bool]:
1890
+ '''Determines whether or not the Security Group for the Load Balancer's Listener will be open to all traffic by default.
1891
+
1892
+ :default: true -- The security group allows ingress from all IP addresses.
1893
+ '''
1894
+ result = self._values.get("open_listener")
1895
+ return typing.cast(typing.Optional[builtins.bool], result)
1896
+
1897
+ @builtins.property
1898
+ def propagate_tags(
1899
+ self,
1900
+ ) -> typing.Optional[_aws_cdk_aws_ecs_ceddda9d.PropagatedTagSource]:
1901
+ '''Specifies whether to propagate the tags from the task definition or the service to the tasks in the service.
1902
+
1903
+ Tags can only be propagated to the tasks within the service during service creation.
1904
+
1905
+ :default: - none
1906
+ '''
1907
+ result = self._values.get("propagate_tags")
1908
+ return typing.cast(typing.Optional[_aws_cdk_aws_ecs_ceddda9d.PropagatedTagSource], result)
1909
+
1910
+ @builtins.property
1911
+ def protocol(
1912
+ self,
1913
+ ) -> typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationProtocol]:
1914
+ '''The protocol for connections from clients to the load balancer.
1915
+
1916
+ The load balancer port is determined from the protocol (port 80 for
1917
+ HTTP, port 443 for HTTPS). If HTTPS, either a certificate or domain
1918
+ name and domain zone must also be specified.
1919
+
1920
+ :default:
1921
+
1922
+ HTTP. If a certificate is specified, the protocol will be
1923
+ set by default to HTTPS.
1924
+ '''
1925
+ result = self._values.get("protocol")
1926
+ return typing.cast(typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationProtocol], result)
1927
+
1928
+ @builtins.property
1929
+ def protocol_version(
1930
+ self,
1931
+ ) -> typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationProtocolVersion]:
1932
+ '''The protocol version to use.
1933
+
1934
+ :default: ApplicationProtocolVersion.HTTP1
1935
+ '''
1936
+ result = self._values.get("protocol_version")
1937
+ return typing.cast(typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationProtocolVersion], result)
1938
+
1939
+ @builtins.property
1940
+ def public_load_balancer(self) -> typing.Optional[builtins.bool]:
1941
+ '''Determines whether the Load Balancer will be internet-facing.
1942
+
1943
+ :default: true
1944
+ '''
1945
+ result = self._values.get("public_load_balancer")
1946
+ return typing.cast(typing.Optional[builtins.bool], result)
1947
+
1948
+ @builtins.property
1949
+ def record_type(
1950
+ self,
1951
+ ) -> typing.Optional[_aws_cdk_aws_ecs_patterns_ceddda9d.ApplicationLoadBalancedServiceRecordType]:
1952
+ '''Specifies whether the Route53 record should be a CNAME, an A record using the Alias feature or no record at all.
1953
+
1954
+ This is useful if you need to work with DNS systems that do not support alias records.
1955
+
1956
+ :default: ApplicationLoadBalancedServiceRecordType.ALIAS
1957
+ '''
1958
+ result = self._values.get("record_type")
1959
+ return typing.cast(typing.Optional[_aws_cdk_aws_ecs_patterns_ceddda9d.ApplicationLoadBalancedServiceRecordType], result)
1960
+
1961
+ @builtins.property
1962
+ def redirect_http(self) -> typing.Optional[builtins.bool]:
1963
+ '''Specifies whether the load balancer should redirect traffic on port 80 to the {@link listenerPort} to support HTTP->HTTPS redirects.
1964
+
1965
+ This is only valid if the protocol of the ALB is HTTPS.
1966
+
1967
+ :default: false
1968
+ '''
1969
+ result = self._values.get("redirect_http")
1970
+ return typing.cast(typing.Optional[builtins.bool], result)
1971
+
1972
+ @builtins.property
1973
+ def service_name(self) -> typing.Optional[builtins.str]:
1974
+ '''The name of the service.
1975
+
1976
+ :default: - CloudFormation-generated name.
1977
+ '''
1978
+ result = self._values.get("service_name")
1979
+ return typing.cast(typing.Optional[builtins.str], result)
1980
+
1981
+ @builtins.property
1982
+ def ssl_policy(
1983
+ self,
1984
+ ) -> typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.SslPolicy]:
1985
+ '''The security policy that defines which ciphers and protocols are supported by the ALB Listener.
1986
+
1987
+ :default: - The recommended elastic load balancing security policy
1988
+ '''
1989
+ result = self._values.get("ssl_policy")
1990
+ return typing.cast(typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.SslPolicy], result)
1991
+
1992
+ @builtins.property
1993
+ def target_protocol(
1994
+ self,
1995
+ ) -> typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationProtocol]:
1996
+ '''The protocol for connections from the load balancer to the ECS tasks.
1997
+
1998
+ The default target port is determined from the protocol (port 80 for
1999
+ HTTP, port 443 for HTTPS).
2000
+
2001
+ :default: HTTP.
2002
+ '''
2003
+ result = self._values.get("target_protocol")
2004
+ return typing.cast(typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationProtocol], result)
2005
+
2006
+ @builtins.property
2007
+ def task_image_options(
2008
+ self,
2009
+ ) -> typing.Optional[_aws_cdk_aws_ecs_patterns_ceddda9d.ApplicationLoadBalancedTaskImageOptions]:
2010
+ '''The properties required to create a new task definition.
2011
+
2012
+ TaskDefinition or TaskImageOptions must be specified, but not both.
2013
+
2014
+ :default: none
2015
+ '''
2016
+ result = self._values.get("task_image_options")
2017
+ return typing.cast(typing.Optional[_aws_cdk_aws_ecs_patterns_ceddda9d.ApplicationLoadBalancedTaskImageOptions], result)
2018
+
2019
+ @builtins.property
2020
+ def vpc(self) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc]:
2021
+ '''The VPC where the container instances will be launched or the elastic network interfaces (ENIs) will be deployed.
2022
+
2023
+ If a vpc is specified, the cluster construct should be omitted. Alternatively, you can omit both vpc and cluster.
2024
+
2025
+ :default: - uses the VPC defined in the cluster or creates a new VPC.
2026
+ '''
2027
+ result = self._values.get("vpc")
2028
+ return typing.cast(typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc], result)
2029
+
2030
+ @builtins.property
2031
+ def cpu(self) -> typing.Optional[jsii.Number]:
2032
+ '''The number of cpu units used by the task.
2033
+
2034
+ Valid values, which determines your range of valid values for the memory parameter:
2035
+
2036
+ 256 (.25 vCPU) - Available memory values: 0.5GB, 1GB, 2GB
2037
+
2038
+ 512 (.5 vCPU) - Available memory values: 1GB, 2GB, 3GB, 4GB
2039
+
2040
+ 1024 (1 vCPU) - Available memory values: 2GB, 3GB, 4GB, 5GB, 6GB, 7GB, 8GB
2041
+
2042
+ 2048 (2 vCPU) - Available memory values: Between 4GB and 16GB in 1GB increments
2043
+
2044
+ 4096 (4 vCPU) - Available memory values: Between 8GB and 30GB in 1GB increments
2045
+
2046
+ 8192 (8 vCPU) - Available memory values: Between 16GB and 60GB in 4GB increments
2047
+
2048
+ 16384 (16 vCPU) - Available memory values: Between 32GB and 120GB in 8GB increments
2049
+
2050
+ This default is set in the underlying FargateTaskDefinition construct.
2051
+
2052
+ :default: 256
2053
+ '''
2054
+ result = self._values.get("cpu")
2055
+ return typing.cast(typing.Optional[jsii.Number], result)
2056
+
2057
+ @builtins.property
2058
+ def ephemeral_storage_gib(self) -> typing.Optional[jsii.Number]:
2059
+ '''The amount (in GiB) of ephemeral storage to be allocated to the task.
2060
+
2061
+ The minimum supported value is ``21`` GiB and the maximum supported value is ``200`` GiB.
2062
+
2063
+ Only supported in Fargate platform version 1.4.0 or later.
2064
+
2065
+ :default: Undefined, in which case, the task will receive 20GiB ephemeral storage.
2066
+ '''
2067
+ result = self._values.get("ephemeral_storage_gib")
2068
+ return typing.cast(typing.Optional[jsii.Number], result)
2069
+
2070
+ @builtins.property
2071
+ def memory_limit_mib(self) -> typing.Optional[jsii.Number]:
2072
+ '''The amount (in MiB) of memory used by the task.
2073
+
2074
+ This field is required and you must use one of the following values, which determines your range of valid values
2075
+ for the cpu parameter:
2076
+
2077
+ 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu values: 256 (.25 vCPU)
2078
+
2079
+ 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available cpu values: 512 (.5 vCPU)
2080
+
2081
+ 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)
2082
+
2083
+ Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - Available cpu values: 2048 (2 vCPU)
2084
+
2085
+ Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - Available cpu values: 4096 (4 vCPU)
2086
+
2087
+ Between 16384 (16 GB) and 61440 (60 GB) in increments of 4096 (4 GB) - Available cpu values: 8192 (8 vCPU)
2088
+
2089
+ Between 32768 (32 GB) and 122880 (120 GB) in increments of 8192 (8 GB) - Available cpu values: 16384 (16 vCPU)
2090
+
2091
+ This default is set in the underlying FargateTaskDefinition construct.
2092
+
2093
+ :default: 512
2094
+ '''
2095
+ result = self._values.get("memory_limit_mib")
2096
+ return typing.cast(typing.Optional[jsii.Number], result)
2097
+
2098
+ @builtins.property
2099
+ def platform_version(
2100
+ self,
2101
+ ) -> typing.Optional[_aws_cdk_aws_ecs_ceddda9d.FargatePlatformVersion]:
2102
+ '''The platform version on which to run your service.
2103
+
2104
+ If one is not specified, the LATEST platform version is used by default. For more information, see
2105
+ `AWS Fargate Platform Versions <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html>`_
2106
+ in the Amazon Elastic Container Service Developer Guide.
2107
+
2108
+ :default: Latest
2109
+ '''
2110
+ result = self._values.get("platform_version")
2111
+ return typing.cast(typing.Optional[_aws_cdk_aws_ecs_ceddda9d.FargatePlatformVersion], result)
2112
+
2113
+ @builtins.property
2114
+ def runtime_platform(
2115
+ self,
2116
+ ) -> typing.Optional[_aws_cdk_aws_ecs_ceddda9d.RuntimePlatform]:
2117
+ '''The runtime platform of the task definition.
2118
+
2119
+ :default: - If the property is undefined, ``operatingSystemFamily`` is LINUX and ``cpuArchitecture`` is X86_64
2120
+ '''
2121
+ result = self._values.get("runtime_platform")
2122
+ return typing.cast(typing.Optional[_aws_cdk_aws_ecs_ceddda9d.RuntimePlatform], result)
2123
+
2124
+ @builtins.property
2125
+ def task_definition(
2126
+ self,
2127
+ ) -> typing.Optional[_aws_cdk_aws_ecs_ceddda9d.FargateTaskDefinition]:
2128
+ '''The task definition to use for tasks in the service. TaskDefinition or TaskImageOptions must be specified, but not both.
2129
+
2130
+ [disable-awslint:ref-via-interface]
2131
+
2132
+ :default: - none
2133
+ '''
2134
+ result = self._values.get("task_definition")
2135
+ return typing.cast(typing.Optional[_aws_cdk_aws_ecs_ceddda9d.FargateTaskDefinition], result)
2136
+
2137
+ @builtins.property
2138
+ def assign_public_ip(self) -> typing.Optional[builtins.bool]:
2139
+ '''Determines whether the service will be assigned a public IP address.
2140
+
2141
+ :default: false
2142
+ '''
2143
+ result = self._values.get("assign_public_ip")
2144
+ return typing.cast(typing.Optional[builtins.bool], result)
2145
+
2146
+ @builtins.property
2147
+ def container_cpu(self) -> typing.Optional[jsii.Number]:
2148
+ '''The minimum number of CPU units to reserve for the container.
2149
+
2150
+ :default: - No minimum CPU units reserved.
2151
+ '''
2152
+ result = self._values.get("container_cpu")
2153
+ return typing.cast(typing.Optional[jsii.Number], result)
2154
+
2155
+ @builtins.property
2156
+ def container_memory_limit_mib(self) -> typing.Optional[jsii.Number]:
2157
+ '''The amount (in MiB) of memory to present to the container.
2158
+
2159
+ If your container attempts to exceed the allocated memory, the container
2160
+ is terminated.
2161
+
2162
+ :default: - No memory limit.
2163
+ '''
2164
+ result = self._values.get("container_memory_limit_mib")
2165
+ return typing.cast(typing.Optional[jsii.Number], result)
2166
+
2167
+ @builtins.property
2168
+ def health_check(self) -> typing.Optional[_aws_cdk_aws_ecs_ceddda9d.HealthCheck]:
2169
+ '''The health check command and associated configuration parameters for the container.
2170
+
2171
+ :default: - Health check configuration from container.
2172
+ '''
2173
+ result = self._values.get("health_check")
2174
+ return typing.cast(typing.Optional[_aws_cdk_aws_ecs_ceddda9d.HealthCheck], result)
2175
+
2176
+ @builtins.property
2177
+ def security_groups(
2178
+ self,
2179
+ ) -> typing.Optional[typing.List[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]]:
2180
+ '''The security groups to associate with the service.
2181
+
2182
+ If you do not specify a security group, a new security group is created.
2183
+
2184
+ :default: - A new security group is created.
2185
+ '''
2186
+ result = self._values.get("security_groups")
2187
+ return typing.cast(typing.Optional[typing.List[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]], result)
2188
+
2189
+ @builtins.property
2190
+ def task_subnets(
2191
+ self,
2192
+ ) -> typing.Optional[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection]:
2193
+ '''The subnets to associate with the service.
2194
+
2195
+ :default: - Public subnets if ``assignPublicIp`` is set, otherwise the first available one of Private, Isolated, Public, in that order.
2196
+ '''
2197
+ result = self._values.get("task_subnets")
2198
+ return typing.cast(typing.Optional[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection], result)
2199
+
2200
+ @builtins.property
2201
+ def access_log_bucket(self) -> typing.Optional[_aws_cdk_aws_s3_ceddda9d.IBucket]:
2202
+ '''The bucket to use for access logs from the Application Load Balancer.
2203
+
2204
+ :default: - a new S3 bucket will be created
2205
+ '''
2206
+ result = self._values.get("access_log_bucket")
2207
+ return typing.cast(typing.Optional[_aws_cdk_aws_s3_ceddda9d.IBucket], result)
2208
+
2209
+ @builtins.property
2210
+ def access_log_prefix(self) -> typing.Optional[builtins.str]:
2211
+ '''The prefix to use for access logs from the Application Load Balancer.
2212
+
2213
+ :default: - none
2214
+ '''
2215
+ result = self._values.get("access_log_prefix")
2216
+ return typing.cast(typing.Optional[builtins.str], result)
2217
+
2218
+ @builtins.property
2219
+ def api_canary_schedule(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
2220
+ '''The frequency for running the api canaries.
2221
+
2222
+ :default: - 5 minutes
2223
+ '''
2224
+ result = self._values.get("api_canary_schedule")
2225
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
2226
+
2227
+ @builtins.property
2228
+ def api_canary_thread_count(self) -> typing.Optional[jsii.Number]:
2229
+ '''The number of threads to run concurrently for the synthetic test.
2230
+
2231
+ :default: - 20
2232
+ '''
2233
+ result = self._values.get("api_canary_thread_count")
2234
+ return typing.cast(typing.Optional[jsii.Number], result)
2235
+
2236
+ @builtins.property
2237
+ def api_canary_timeout(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
2238
+ '''The threshold for how long a api canary can take to run.
2239
+
2240
+ :default: - no alarm is created for test duration
2241
+ '''
2242
+ result = self._values.get("api_canary_timeout")
2243
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
2244
+
2245
+ @builtins.property
2246
+ def api_test_steps(self) -> typing.Optional[typing.List[ApiTestStep]]:
2247
+ '''The steps to run in the canary.
2248
+
2249
+ :default: - no synthetic test will be created
2250
+ '''
2251
+ result = self._values.get("api_test_steps")
2252
+ return typing.cast(typing.Optional[typing.List[ApiTestStep]], result)
2253
+
2254
+ @builtins.property
2255
+ def application_name(self) -> typing.Optional[builtins.str]:
2256
+ '''The physical, human-readable name of the CodeDeploy Application.
2257
+
2258
+ :default: an auto-generated name will be used
2259
+ '''
2260
+ result = self._values.get("application_name")
2261
+ return typing.cast(typing.Optional[builtins.str], result)
2262
+
2263
+ @builtins.property
2264
+ def deployment_config(
2265
+ self,
2266
+ ) -> typing.Optional[_aws_cdk_aws_codedeploy_ceddda9d.IEcsDeploymentConfig]:
2267
+ '''The deployment configuration to use for the deployment group.
2268
+
2269
+ :default: - EcsDeploymentConfig.ALL_AT_ONCE
2270
+ '''
2271
+ result = self._values.get("deployment_config")
2272
+ return typing.cast(typing.Optional[_aws_cdk_aws_codedeploy_ceddda9d.IEcsDeploymentConfig], result)
2273
+
2274
+ @builtins.property
2275
+ def deployment_group_name(self) -> typing.Optional[builtins.str]:
2276
+ '''The physical, human-readable name of the CodeDeploy Deployment Group.
2277
+
2278
+ :default: An auto-generated name will be used.
2279
+ '''
2280
+ result = self._values.get("deployment_group_name")
2281
+ return typing.cast(typing.Optional[builtins.str], result)
2282
+
2283
+ @builtins.property
2284
+ def deployment_timeout(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
2285
+ '''The timeout for a CodeDeploy deployment.
2286
+
2287
+ :default: - 60 minutes
2288
+ '''
2289
+ result = self._values.get("deployment_timeout")
2290
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
2291
+
2292
+ @builtins.property
2293
+ def deregistration_delay(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
2294
+ '''The amount of time for ELB to wait before changing the state of a deregistering target from 'draining' to 'unused'.
2295
+
2296
+ :default: - 300 seconds
2297
+ '''
2298
+ result = self._values.get("deregistration_delay")
2299
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
2300
+
2301
+ @builtins.property
2302
+ def hooks(self) -> typing.Optional[AppSpecHooks]:
2303
+ '''Optional lifecycle hooks.
2304
+
2305
+ :default: - no lifecycle hooks
2306
+ '''
2307
+ result = self._values.get("hooks")
2308
+ return typing.cast(typing.Optional[AppSpecHooks], result)
2309
+
2310
+ @builtins.property
2311
+ def response_time_alarm_threshold(
2312
+ self,
2313
+ ) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
2314
+ '''The threshold for response time alarm.
2315
+
2316
+ :default: - no alarm will be created
2317
+ '''
2318
+ result = self._values.get("response_time_alarm_threshold")
2319
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
2320
+
2321
+ @builtins.property
2322
+ def target_health_check(
2323
+ self,
2324
+ ) -> typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.HealthCheck]:
2325
+ '''The healthcheck to configure on the Application Load Balancer target groups.
2326
+
2327
+ :default: - no health check is configured
2328
+ '''
2329
+ result = self._values.get("target_health_check")
2330
+ return typing.cast(typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.HealthCheck], result)
2331
+
2332
+ @builtins.property
2333
+ def termination_wait_time(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
2334
+ '''The time to wait before terminating the original (blue) task set.
2335
+
2336
+ :default: - 10 minutes
2337
+ '''
2338
+ result = self._values.get("termination_wait_time")
2339
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
2340
+
2341
+ @builtins.property
2342
+ def test_port(self) -> typing.Optional[jsii.Number]:
2343
+ '''The port to use for test traffic on the listener.
2344
+
2345
+ :default: - listenerPort + 1
2346
+ '''
2347
+ result = self._values.get("test_port")
2348
+ return typing.cast(typing.Optional[jsii.Number], result)
2349
+
2350
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2351
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2352
+
2353
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2354
+ return not (rhs == self)
2355
+
2356
+ def __repr__(self) -> str:
2357
+ return "ApplicationLoadBalancedCodeDeployedFargateServiceProps(%s)" % ", ".join(
2358
+ k + "=" + repr(v) for k, v in self._values.items()
2359
+ )
2360
+
2361
+
2362
+ @jsii.data_type(
2363
+ jsii_type="must-cdk.AwsvpcConfiguration",
2364
+ jsii_struct_bases=[],
2365
+ name_mapping={
2366
+ "assign_public_ip": "assignPublicIp",
2367
+ "security_groups": "securityGroups",
2368
+ "vpc": "vpc",
2369
+ "vpc_subnets": "vpcSubnets",
2370
+ },
2371
+ )
2372
+ class AwsvpcConfiguration:
2373
+ def __init__(
2374
+ self,
2375
+ *,
2376
+ assign_public_ip: builtins.bool,
2377
+ security_groups: typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup],
2378
+ vpc: _aws_cdk_aws_ec2_ceddda9d.IVpc,
2379
+ vpc_subnets: typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]],
2380
+ ) -> None:
2381
+ '''Network configuration for ECS services that have a network type of ``awsvpc``.
2382
+
2383
+ :param assign_public_ip: Assign a public IP address to the task.
2384
+ :param security_groups: The Security Groups to use for the task.
2385
+ :param vpc: The VPC to use for the task.
2386
+ :param vpc_subnets: The Subnets to use for the task.
2387
+ '''
2388
+ if isinstance(vpc_subnets, dict):
2389
+ vpc_subnets = _aws_cdk_aws_ec2_ceddda9d.SubnetSelection(**vpc_subnets)
2390
+ if __debug__:
2391
+ type_hints = typing.get_type_hints(_typecheckingstub__118fc20114c4ef938b334440fbc2357c4fa373cddf068764a9bcfcda49fe2c32)
2392
+ check_type(argname="argument assign_public_ip", value=assign_public_ip, expected_type=type_hints["assign_public_ip"])
2393
+ check_type(argname="argument security_groups", value=security_groups, expected_type=type_hints["security_groups"])
2394
+ check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
2395
+ check_type(argname="argument vpc_subnets", value=vpc_subnets, expected_type=type_hints["vpc_subnets"])
2396
+ self._values: typing.Dict[builtins.str, typing.Any] = {
2397
+ "assign_public_ip": assign_public_ip,
2398
+ "security_groups": security_groups,
2399
+ "vpc": vpc,
2400
+ "vpc_subnets": vpc_subnets,
2401
+ }
2402
+
2403
+ @builtins.property
2404
+ def assign_public_ip(self) -> builtins.bool:
2405
+ '''Assign a public IP address to the task.'''
2406
+ result = self._values.get("assign_public_ip")
2407
+ assert result is not None, "Required property 'assign_public_ip' is missing"
2408
+ return typing.cast(builtins.bool, result)
2409
+
2410
+ @builtins.property
2411
+ def security_groups(self) -> typing.List[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]:
2412
+ '''The Security Groups to use for the task.'''
2413
+ result = self._values.get("security_groups")
2414
+ assert result is not None, "Required property 'security_groups' is missing"
2415
+ return typing.cast(typing.List[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup], result)
2416
+
2417
+ @builtins.property
2418
+ def vpc(self) -> _aws_cdk_aws_ec2_ceddda9d.IVpc:
2419
+ '''The VPC to use for the task.'''
2420
+ result = self._values.get("vpc")
2421
+ assert result is not None, "Required property 'vpc' is missing"
2422
+ return typing.cast(_aws_cdk_aws_ec2_ceddda9d.IVpc, result)
2423
+
2424
+ @builtins.property
2425
+ def vpc_subnets(self) -> _aws_cdk_aws_ec2_ceddda9d.SubnetSelection:
2426
+ '''The Subnets to use for the task.'''
2427
+ result = self._values.get("vpc_subnets")
2428
+ assert result is not None, "Required property 'vpc_subnets' is missing"
2429
+ return typing.cast(_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, result)
2430
+
2431
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2432
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2433
+
2434
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2435
+ return not (rhs == self)
2436
+
2437
+ def __repr__(self) -> str:
2438
+ return "AwsvpcConfiguration(%s)" % ", ".join(
2439
+ k + "=" + repr(v) for k, v in self._values.items()
2440
+ )
2441
+
2442
+
2443
+ class EcsAppSpec(metaclass=jsii.JSIIMeta, jsii_type="must-cdk.EcsAppSpec"):
2444
+ '''Represents an AppSpec to be used for ECS services.
2445
+
2446
+ see: https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-resources.html#reference-appspec-file-structure-resources-ecs
2447
+ '''
2448
+
2449
+ def __init__(
2450
+ self,
2451
+ target_service: typing.Union["TargetService", typing.Dict[builtins.str, typing.Any]],
2452
+ *,
2453
+ after_allow_test_traffic: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
2454
+ after_allow_traffic: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
2455
+ after_install: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
2456
+ before_allow_traffic: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
2457
+ before_install: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
2458
+ ) -> None:
2459
+ '''
2460
+ :param target_service: -
2461
+ :param after_allow_test_traffic: Lambda or ARN of a lambda to run tasks after the test listener serves traffic to the replacement task set.
2462
+ :param after_allow_traffic: Lambda or ARN of a lambda to run tasks after the second target group serves traffic to the replacement task set.
2463
+ :param after_install: Lambda or ARN of a lambda to run tasks after the replacement task set is created and one of the target groups is associated with it.
2464
+ :param before_allow_traffic: Lambda or ARN of a lambda to run tasks after the second target group is associated with the replacement task set, but before traffic is shifted to the replacement task set.
2465
+ :param before_install: Lambda or ARN of a lambda to run tasks before the replacement task set is created.
2466
+ '''
2467
+ if __debug__:
2468
+ type_hints = typing.get_type_hints(_typecheckingstub__488a8c9ea1d87bab23875ab658b9bdf8db1aab92975455fe1eac82c979bbf1f2)
2469
+ check_type(argname="argument target_service", value=target_service, expected_type=type_hints["target_service"])
2470
+ hooks = AppSpecHooks(
2471
+ after_allow_test_traffic=after_allow_test_traffic,
2472
+ after_allow_traffic=after_allow_traffic,
2473
+ after_install=after_install,
2474
+ before_allow_traffic=before_allow_traffic,
2475
+ before_install=before_install,
2476
+ )
2477
+
2478
+ jsii.create(self.__class__, self, [target_service, hooks])
2479
+
2480
+ @jsii.member(jsii_name="toString")
2481
+ def to_string(self) -> builtins.str:
2482
+ '''Render JSON string for this AppSpec to be used.
2483
+
2484
+ :return: string representation of this AppSpec
2485
+ '''
2486
+ return typing.cast(builtins.str, jsii.invoke(self, "toString", []))
2487
+
2488
+
2489
+ class EcsDeployment(
2490
+ _constructs_77d1e7e8.Construct,
2491
+ metaclass=jsii.JSIIMeta,
2492
+ jsii_type="must-cdk.EcsDeployment",
2493
+ ):
2494
+ '''A CodeDeploy Deployment for a Amazon ECS service DeploymentGroup.
2495
+
2496
+ An EcsDeploymentGroup
2497
+ must only have 1 EcsDeployment. This limit is enforced by removing the scope and id
2498
+ from the constructor. The scope will always be set to the EcsDeploymentGroup
2499
+ and the id will always be set to the string 'Deployment' to force an error if mulitiple
2500
+ EcsDeployment constructs are created for a single EcsDeploymentGroup.
2501
+ '''
2502
+
2503
+ def __init__(
2504
+ self,
2505
+ *,
2506
+ deployment_group: _aws_cdk_aws_codedeploy_ceddda9d.IEcsDeploymentGroup,
2507
+ target_service: typing.Union["TargetService", typing.Dict[builtins.str, typing.Any]],
2508
+ auto_rollback: typing.Optional[typing.Union[_aws_cdk_aws_codedeploy_ceddda9d.AutoRollbackConfig, typing.Dict[builtins.str, typing.Any]]] = None,
2509
+ description: typing.Optional[builtins.str] = None,
2510
+ hooks: typing.Optional[typing.Union[AppSpecHooks, typing.Dict[builtins.str, typing.Any]]] = None,
2511
+ timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
2512
+ ) -> None:
2513
+ '''
2514
+ :param deployment_group: The deployment group to target for this deployment.
2515
+ :param target_service: The ECS service to target for the deployment. see: https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-resources.html#reference-appspec-file-structure-resources-ecs
2516
+ :param auto_rollback: The configuration for rollback in the event that a deployment fails. Default: : no automatic rollback triggered
2517
+ :param description: The description for the deployment. Default: no description
2518
+ :param hooks: Optional lifecycle hooks. Default: - no lifecycle hooks
2519
+ :param timeout: The timeout for the deployment. If the timeout is reached, it will trigger a rollback of the stack. Default: 30 minutes
2520
+ '''
2521
+ props = EcsDeploymentProps(
2522
+ deployment_group=deployment_group,
2523
+ target_service=target_service,
2524
+ auto_rollback=auto_rollback,
2525
+ description=description,
2526
+ hooks=hooks,
2527
+ timeout=timeout,
2528
+ )
2529
+
2530
+ jsii.create(self.__class__, self, [props])
2531
+
2532
+ @builtins.property
2533
+ @jsii.member(jsii_name="deploymentId")
2534
+ def deployment_id(self) -> builtins.str:
2535
+ '''The id of the deployment that was created.'''
2536
+ return typing.cast(builtins.str, jsii.get(self, "deploymentId"))
2537
+
2538
+ @deployment_id.setter
2539
+ def deployment_id(self, value: builtins.str) -> None:
2540
+ if __debug__:
2541
+ type_hints = typing.get_type_hints(_typecheckingstub__28e8902615907bdb53576907b6cdb76c47c97856f7ea9ce53d222e02a06cc4ca)
2542
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
2543
+ jsii.set(self, "deploymentId", value) # pyright: ignore[reportArgumentType]
2544
+
2545
+
2546
+ @jsii.data_type(
2547
+ jsii_type="must-cdk.EcsDeploymentProps",
2548
+ jsii_struct_bases=[],
2549
+ name_mapping={
2550
+ "deployment_group": "deploymentGroup",
2551
+ "target_service": "targetService",
2552
+ "auto_rollback": "autoRollback",
2553
+ "description": "description",
2554
+ "hooks": "hooks",
2555
+ "timeout": "timeout",
2556
+ },
2557
+ )
2558
+ class EcsDeploymentProps:
2559
+ def __init__(
2560
+ self,
2561
+ *,
2562
+ deployment_group: _aws_cdk_aws_codedeploy_ceddda9d.IEcsDeploymentGroup,
2563
+ target_service: typing.Union["TargetService", typing.Dict[builtins.str, typing.Any]],
2564
+ auto_rollback: typing.Optional[typing.Union[_aws_cdk_aws_codedeploy_ceddda9d.AutoRollbackConfig, typing.Dict[builtins.str, typing.Any]]] = None,
2565
+ description: typing.Optional[builtins.str] = None,
2566
+ hooks: typing.Optional[typing.Union[AppSpecHooks, typing.Dict[builtins.str, typing.Any]]] = None,
2567
+ timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
2568
+ ) -> None:
2569
+ '''Construction properties of EcsDeployment.
2570
+
2571
+ :param deployment_group: The deployment group to target for this deployment.
2572
+ :param target_service: The ECS service to target for the deployment. see: https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-resources.html#reference-appspec-file-structure-resources-ecs
2573
+ :param auto_rollback: The configuration for rollback in the event that a deployment fails. Default: : no automatic rollback triggered
2574
+ :param description: The description for the deployment. Default: no description
2575
+ :param hooks: Optional lifecycle hooks. Default: - no lifecycle hooks
2576
+ :param timeout: The timeout for the deployment. If the timeout is reached, it will trigger a rollback of the stack. Default: 30 minutes
2577
+ '''
2578
+ if isinstance(target_service, dict):
2579
+ target_service = TargetService(**target_service)
2580
+ if isinstance(auto_rollback, dict):
2581
+ auto_rollback = _aws_cdk_aws_codedeploy_ceddda9d.AutoRollbackConfig(**auto_rollback)
2582
+ if isinstance(hooks, dict):
2583
+ hooks = AppSpecHooks(**hooks)
2584
+ if __debug__:
2585
+ type_hints = typing.get_type_hints(_typecheckingstub__e121135b1d585b3e9510378a53b6a2461e246ab5696337264b1a36d29e1a99eb)
2586
+ check_type(argname="argument deployment_group", value=deployment_group, expected_type=type_hints["deployment_group"])
2587
+ check_type(argname="argument target_service", value=target_service, expected_type=type_hints["target_service"])
2588
+ check_type(argname="argument auto_rollback", value=auto_rollback, expected_type=type_hints["auto_rollback"])
2589
+ check_type(argname="argument description", value=description, expected_type=type_hints["description"])
2590
+ check_type(argname="argument hooks", value=hooks, expected_type=type_hints["hooks"])
2591
+ check_type(argname="argument timeout", value=timeout, expected_type=type_hints["timeout"])
2592
+ self._values: typing.Dict[builtins.str, typing.Any] = {
2593
+ "deployment_group": deployment_group,
2594
+ "target_service": target_service,
2595
+ }
2596
+ if auto_rollback is not None:
2597
+ self._values["auto_rollback"] = auto_rollback
2598
+ if description is not None:
2599
+ self._values["description"] = description
2600
+ if hooks is not None:
2601
+ self._values["hooks"] = hooks
2602
+ if timeout is not None:
2603
+ self._values["timeout"] = timeout
2604
+
2605
+ @builtins.property
2606
+ def deployment_group(self) -> _aws_cdk_aws_codedeploy_ceddda9d.IEcsDeploymentGroup:
2607
+ '''The deployment group to target for this deployment.'''
2608
+ result = self._values.get("deployment_group")
2609
+ assert result is not None, "Required property 'deployment_group' is missing"
2610
+ return typing.cast(_aws_cdk_aws_codedeploy_ceddda9d.IEcsDeploymentGroup, result)
2611
+
2612
+ @builtins.property
2613
+ def target_service(self) -> "TargetService":
2614
+ '''The ECS service to target for the deployment.
2615
+
2616
+ see: https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-resources.html#reference-appspec-file-structure-resources-ecs
2617
+ '''
2618
+ result = self._values.get("target_service")
2619
+ assert result is not None, "Required property 'target_service' is missing"
2620
+ return typing.cast("TargetService", result)
2621
+
2622
+ @builtins.property
2623
+ def auto_rollback(
2624
+ self,
2625
+ ) -> typing.Optional[_aws_cdk_aws_codedeploy_ceddda9d.AutoRollbackConfig]:
2626
+ '''The configuration for rollback in the event that a deployment fails.
2627
+
2628
+ :default: : no automatic rollback triggered
2629
+ '''
2630
+ result = self._values.get("auto_rollback")
2631
+ return typing.cast(typing.Optional[_aws_cdk_aws_codedeploy_ceddda9d.AutoRollbackConfig], result)
2632
+
2633
+ @builtins.property
2634
+ def description(self) -> typing.Optional[builtins.str]:
2635
+ '''The description for the deployment.
2636
+
2637
+ :default: no description
2638
+ '''
2639
+ result = self._values.get("description")
2640
+ return typing.cast(typing.Optional[builtins.str], result)
2641
+
2642
+ @builtins.property
2643
+ def hooks(self) -> typing.Optional[AppSpecHooks]:
2644
+ '''Optional lifecycle hooks.
2645
+
2646
+ :default: - no lifecycle hooks
2647
+ '''
2648
+ result = self._values.get("hooks")
2649
+ return typing.cast(typing.Optional[AppSpecHooks], result)
2650
+
2651
+ @builtins.property
2652
+ def timeout(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
2653
+ '''The timeout for the deployment.
2654
+
2655
+ If the timeout is reached, it will trigger a rollback of the stack.
2656
+
2657
+ :default: 30 minutes
2658
+ '''
2659
+ result = self._values.get("timeout")
2660
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
2661
+
2662
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2663
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2664
+
2665
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2666
+ return not (rhs == self)
2667
+
2668
+ def __repr__(self) -> str:
2669
+ return "EcsDeploymentProps(%s)" % ", ".join(
2670
+ k + "=" + repr(v) for k, v in self._values.items()
2671
+ )
2672
+
2673
+
2674
+ @jsii.data_type(
2675
+ jsii_type="must-cdk.TargetService",
2676
+ jsii_struct_bases=[],
2677
+ name_mapping={
2678
+ "container_name": "containerName",
2679
+ "container_port": "containerPort",
2680
+ "task_definition": "taskDefinition",
2681
+ "awsvpc_configuration": "awsvpcConfiguration",
2682
+ "capacity_provider_strategy": "capacityProviderStrategy",
2683
+ "platform_version": "platformVersion",
2684
+ },
2685
+ )
2686
+ class TargetService:
2687
+ def __init__(
2688
+ self,
2689
+ *,
2690
+ container_name: builtins.str,
2691
+ container_port: jsii.Number,
2692
+ task_definition: _aws_cdk_aws_ecs_ceddda9d.ITaskDefinition,
2693
+ awsvpc_configuration: typing.Optional[typing.Union[AwsvpcConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
2694
+ capacity_provider_strategy: typing.Optional[typing.Sequence[typing.Union[_aws_cdk_aws_ecs_ceddda9d.CapacityProviderStrategy, typing.Dict[builtins.str, typing.Any]]]] = None,
2695
+ platform_version: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.FargatePlatformVersion] = None,
2696
+ ) -> None:
2697
+ '''Describe the target for CodeDeploy to use when creating a deployment for an ecs.EcsDeploymentGroup.
2698
+
2699
+ :param container_name: The name of the Amazon ECS container that contains your Amazon ECS application. It must be a container specified in your Amazon ECS task definition.
2700
+ :param container_port: The port on the container where traffic will be routed to.
2701
+ :param task_definition: The TaskDefintion to deploy to the target services.
2702
+ :param awsvpc_configuration: Network configuration for ECS services that have a network type of ``awsvpc``. Default: reuse current network settings for ECS service.
2703
+ :param capacity_provider_strategy: A list of Amazon ECS capacity providers to use for the deployment. Default: reuse current capcity provider strategy for ECS service.
2704
+ :param platform_version: The platform version of the Fargate tasks in the deployed Amazon ECS service. see: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html Default: LATEST
2705
+ '''
2706
+ if isinstance(awsvpc_configuration, dict):
2707
+ awsvpc_configuration = AwsvpcConfiguration(**awsvpc_configuration)
2708
+ if __debug__:
2709
+ type_hints = typing.get_type_hints(_typecheckingstub__eb8c14516b2286bf2acba8700d5b4bce897297c7f7cc3991153665908d8eff67)
2710
+ check_type(argname="argument container_name", value=container_name, expected_type=type_hints["container_name"])
2711
+ check_type(argname="argument container_port", value=container_port, expected_type=type_hints["container_port"])
2712
+ check_type(argname="argument task_definition", value=task_definition, expected_type=type_hints["task_definition"])
2713
+ check_type(argname="argument awsvpc_configuration", value=awsvpc_configuration, expected_type=type_hints["awsvpc_configuration"])
2714
+ check_type(argname="argument capacity_provider_strategy", value=capacity_provider_strategy, expected_type=type_hints["capacity_provider_strategy"])
2715
+ check_type(argname="argument platform_version", value=platform_version, expected_type=type_hints["platform_version"])
2716
+ self._values: typing.Dict[builtins.str, typing.Any] = {
2717
+ "container_name": container_name,
2718
+ "container_port": container_port,
2719
+ "task_definition": task_definition,
2720
+ }
2721
+ if awsvpc_configuration is not None:
2722
+ self._values["awsvpc_configuration"] = awsvpc_configuration
2723
+ if capacity_provider_strategy is not None:
2724
+ self._values["capacity_provider_strategy"] = capacity_provider_strategy
2725
+ if platform_version is not None:
2726
+ self._values["platform_version"] = platform_version
2727
+
2728
+ @builtins.property
2729
+ def container_name(self) -> builtins.str:
2730
+ '''The name of the Amazon ECS container that contains your Amazon ECS application.
2731
+
2732
+ It must be a container specified in your Amazon ECS task definition.
2733
+ '''
2734
+ result = self._values.get("container_name")
2735
+ assert result is not None, "Required property 'container_name' is missing"
2736
+ return typing.cast(builtins.str, result)
2737
+
2738
+ @builtins.property
2739
+ def container_port(self) -> jsii.Number:
2740
+ '''The port on the container where traffic will be routed to.'''
2741
+ result = self._values.get("container_port")
2742
+ assert result is not None, "Required property 'container_port' is missing"
2743
+ return typing.cast(jsii.Number, result)
2744
+
2745
+ @builtins.property
2746
+ def task_definition(self) -> _aws_cdk_aws_ecs_ceddda9d.ITaskDefinition:
2747
+ '''The TaskDefintion to deploy to the target services.'''
2748
+ result = self._values.get("task_definition")
2749
+ assert result is not None, "Required property 'task_definition' is missing"
2750
+ return typing.cast(_aws_cdk_aws_ecs_ceddda9d.ITaskDefinition, result)
2751
+
2752
+ @builtins.property
2753
+ def awsvpc_configuration(self) -> typing.Optional[AwsvpcConfiguration]:
2754
+ '''Network configuration for ECS services that have a network type of ``awsvpc``.
2755
+
2756
+ :default: reuse current network settings for ECS service.
2757
+ '''
2758
+ result = self._values.get("awsvpc_configuration")
2759
+ return typing.cast(typing.Optional[AwsvpcConfiguration], result)
2760
+
2761
+ @builtins.property
2762
+ def capacity_provider_strategy(
2763
+ self,
2764
+ ) -> typing.Optional[typing.List[_aws_cdk_aws_ecs_ceddda9d.CapacityProviderStrategy]]:
2765
+ '''A list of Amazon ECS capacity providers to use for the deployment.
2766
+
2767
+ :default: reuse current capcity provider strategy for ECS service.
2768
+ '''
2769
+ result = self._values.get("capacity_provider_strategy")
2770
+ return typing.cast(typing.Optional[typing.List[_aws_cdk_aws_ecs_ceddda9d.CapacityProviderStrategy]], result)
2771
+
2772
+ @builtins.property
2773
+ def platform_version(
2774
+ self,
2775
+ ) -> typing.Optional[_aws_cdk_aws_ecs_ceddda9d.FargatePlatformVersion]:
2776
+ '''The platform version of the Fargate tasks in the deployed Amazon ECS service.
2777
+
2778
+ see: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html
2779
+
2780
+ :default: LATEST
2781
+ '''
2782
+ result = self._values.get("platform_version")
2783
+ return typing.cast(typing.Optional[_aws_cdk_aws_ecs_ceddda9d.FargatePlatformVersion], result)
2784
+
2785
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2786
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2787
+
2788
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2789
+ return not (rhs == self)
2790
+
2791
+ def __repr__(self) -> str:
2792
+ return "TargetService(%s)" % ", ".join(
2793
+ k + "=" + repr(v) for k, v in self._values.items()
2794
+ )
2795
+
2796
+
2797
+ class WebsocketApiGatewayToLambdaCustomDomain(
2798
+ _constructs_77d1e7e8.Construct,
2799
+ metaclass=jsii.JSIIMeta,
2800
+ jsii_type="must-cdk.WebsocketApiGatewayToLambdaCustomDomain",
49
2801
  ):
50
2802
  '''
51
2803
  :summary: The ApiGatewayToLambda class.
@@ -76,10 +2828,10 @@ class ApiGatewayToLambdaCustomDomain(
76
2828
  :param log_group_props:
77
2829
  '''
78
2830
  if __debug__:
79
- type_hints = typing.get_type_hints(_typecheckingstub__d7036b176aa7b446813bdbc7672055bba27972db6a947684b57c6f8f02e0f9b6)
2831
+ type_hints = typing.get_type_hints(_typecheckingstub__448d9aeeae459df879203fad12fb34ff1b12039929f0a465891bedcfc130f38c)
80
2832
  check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
81
2833
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
82
- props = ApiGatewayToLambdaProps(
2834
+ props = WebsocketApiGatewayToLambdaProps(
83
2835
  api_gateway_props=api_gateway_props,
84
2836
  create_usage_plan=create_usage_plan,
85
2837
  custom_domain_name=custom_domain_name,
@@ -132,7 +2884,7 @@ class ApiGatewayToLambdaCustomDomain(
132
2884
 
133
2885
 
134
2886
  @jsii.data_type(
135
- jsii_type="must-cdk.ApiGatewayToLambdaProps",
2887
+ jsii_type="must-cdk.WebsocketApiGatewayToLambdaProps",
136
2888
  jsii_struct_bases=[],
137
2889
  name_mapping={
138
2890
  "api_gateway_props": "apiGatewayProps",
@@ -144,7 +2896,7 @@ class ApiGatewayToLambdaCustomDomain(
144
2896
  "log_group_props": "logGroupProps",
145
2897
  },
146
2898
  )
147
- class ApiGatewayToLambdaProps:
2899
+ class WebsocketApiGatewayToLambdaProps:
148
2900
  def __init__(
149
2901
  self,
150
2902
  *,
@@ -170,7 +2922,7 @@ class ApiGatewayToLambdaProps:
170
2922
  if isinstance(log_group_props, dict):
171
2923
  log_group_props = _aws_cdk_aws_logs_ceddda9d.LogGroupProps(**log_group_props)
172
2924
  if __debug__:
173
- type_hints = typing.get_type_hints(_typecheckingstub__7c51143b7da8fc50ffd3240aae88642c332f9ccc1136e275abf9d1065df7ea17)
2925
+ type_hints = typing.get_type_hints(_typecheckingstub__109c686be15dfacf97f31b8340ac53463b8369382aaf60b63405ca329516af4d)
174
2926
  check_type(argname="argument api_gateway_props", value=api_gateway_props, expected_type=type_hints["api_gateway_props"])
175
2927
  check_type(argname="argument create_usage_plan", value=create_usage_plan, expected_type=type_hints["create_usage_plan"])
176
2928
  check_type(argname="argument custom_domain_name", value=custom_domain_name, expected_type=type_hints["custom_domain_name"])
@@ -261,18 +3013,87 @@ class ApiGatewayToLambdaProps:
261
3013
  return not (rhs == self)
262
3014
 
263
3015
  def __repr__(self) -> str:
264
- return "ApiGatewayToLambdaProps(%s)" % ", ".join(
3016
+ return "WebsocketApiGatewayToLambdaProps(%s)" % ", ".join(
265
3017
  k + "=" + repr(v) for k, v in self._values.items()
266
3018
  )
267
3019
 
268
3020
 
269
3021
  __all__ = [
3022
+ "ApiCanary",
3023
+ "ApiCanaryProps",
270
3024
  "ApiGatewayToLambdaCustomDomain",
271
3025
  "ApiGatewayToLambdaProps",
3026
+ "ApiTestStep",
3027
+ "AppSpecHooks",
3028
+ "ApplicationLoadBalancedCodeDeployedFargateService",
3029
+ "ApplicationLoadBalancedCodeDeployedFargateServiceProps",
3030
+ "AwsvpcConfiguration",
3031
+ "EcsAppSpec",
3032
+ "EcsDeployment",
3033
+ "EcsDeploymentProps",
3034
+ "TargetService",
3035
+ "WebsocketApiGatewayToLambdaCustomDomain",
3036
+ "WebsocketApiGatewayToLambdaProps",
272
3037
  ]
273
3038
 
274
3039
  publication.publish()
275
3040
 
3041
+ def _typecheckingstub__09d06c1c95daaaf23d076abac602f3a69682f6d183c18d319586c4a3ad15e539(
3042
+ scope: _constructs_77d1e7e8.Construct,
3043
+ id: builtins.str,
3044
+ *,
3045
+ base_url: builtins.str,
3046
+ artifacts_bucket_location: typing.Optional[typing.Union[_aws_cdk_aws_synthetics_ceddda9d.ArtifactsBucketLocation, typing.Dict[builtins.str, typing.Any]]] = None,
3047
+ canary_name: typing.Optional[builtins.str] = None,
3048
+ duration_alarm_threshold: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3049
+ failure_retention_period: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3050
+ role: typing.Optional[_aws_cdk_aws_iam_ceddda9d.IRole] = None,
3051
+ schedule: typing.Optional[_aws_cdk_aws_synthetics_ceddda9d.Schedule] = None,
3052
+ security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
3053
+ start_after_creation: typing.Optional[builtins.bool] = None,
3054
+ steps: typing.Optional[typing.Sequence[typing.Union[ApiTestStep, typing.Dict[builtins.str, typing.Any]]]] = None,
3055
+ success_retention_period: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3056
+ thread_count: typing.Optional[jsii.Number] = None,
3057
+ time_to_live: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3058
+ vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
3059
+ vpc_subnets: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
3060
+ ) -> None:
3061
+ """Type checking stubs"""
3062
+ pass
3063
+
3064
+ def _typecheckingstub__8725a15a28149bfb608a400e26cfbe5e4841d0766e308d94bd820bae8ef15018(
3065
+ value: _aws_cdk_aws_cloudwatch_ceddda9d.Alarm,
3066
+ ) -> None:
3067
+ """Type checking stubs"""
3068
+ pass
3069
+
3070
+ def _typecheckingstub__5e693bebe82a00de7c7762fadb1e226601529313a62b3e1a2a8527584ea39940(
3071
+ value: typing.Optional[_aws_cdk_aws_cloudwatch_ceddda9d.Alarm],
3072
+ ) -> None:
3073
+ """Type checking stubs"""
3074
+ pass
3075
+
3076
+ def _typecheckingstub__b52b092204732a9d7b4031c2682b2facb0ffa90d719105c9d03ed168de7472f0(
3077
+ *,
3078
+ base_url: builtins.str,
3079
+ artifacts_bucket_location: typing.Optional[typing.Union[_aws_cdk_aws_synthetics_ceddda9d.ArtifactsBucketLocation, typing.Dict[builtins.str, typing.Any]]] = None,
3080
+ canary_name: typing.Optional[builtins.str] = None,
3081
+ duration_alarm_threshold: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3082
+ failure_retention_period: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3083
+ role: typing.Optional[_aws_cdk_aws_iam_ceddda9d.IRole] = None,
3084
+ schedule: typing.Optional[_aws_cdk_aws_synthetics_ceddda9d.Schedule] = None,
3085
+ security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
3086
+ start_after_creation: typing.Optional[builtins.bool] = None,
3087
+ steps: typing.Optional[typing.Sequence[typing.Union[ApiTestStep, typing.Dict[builtins.str, typing.Any]]]] = None,
3088
+ success_retention_period: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3089
+ thread_count: typing.Optional[jsii.Number] = None,
3090
+ time_to_live: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3091
+ vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
3092
+ vpc_subnets: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
3093
+ ) -> None:
3094
+ """Type checking stubs"""
3095
+ pass
3096
+
276
3097
  def _typecheckingstub__d7036b176aa7b446813bdbc7672055bba27972db6a947684b57c6f8f02e0f9b6(
277
3098
  scope: _constructs_77d1e7e8.Construct,
278
3099
  id: builtins.str,
@@ -300,3 +3121,293 @@ def _typecheckingstub__7c51143b7da8fc50ffd3240aae88642c332f9ccc1136e275abf9d1065
300
3121
  ) -> None:
301
3122
  """Type checking stubs"""
302
3123
  pass
3124
+
3125
+ def _typecheckingstub__171a53d32e45dddc3d74e9b9e98d60f757ac6028bcc531de07738ff4251515ed(
3126
+ *,
3127
+ name: builtins.str,
3128
+ path: builtins.str,
3129
+ body: typing.Optional[builtins.str] = None,
3130
+ expected_value: typing.Any = None,
3131
+ headers: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
3132
+ jmes_path: typing.Optional[builtins.str] = None,
3133
+ method: typing.Optional[builtins.str] = None,
3134
+ ) -> None:
3135
+ """Type checking stubs"""
3136
+ pass
3137
+
3138
+ def _typecheckingstub__ff5030e61a5fd08fabf54e34ff261d6fa3b0a899cf455b923b66273d671d18f9(
3139
+ *,
3140
+ after_allow_test_traffic: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
3141
+ after_allow_traffic: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
3142
+ after_install: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
3143
+ before_allow_traffic: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
3144
+ before_install: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
3145
+ ) -> None:
3146
+ """Type checking stubs"""
3147
+ pass
3148
+
3149
+ def _typecheckingstub__cdc591d3fee959d6fc3e921fd142a865c9095fcaa7afe54cfab63ad9654b3069(
3150
+ scope: _constructs_77d1e7e8.Construct,
3151
+ id: builtins.str,
3152
+ *,
3153
+ access_log_bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.IBucket] = None,
3154
+ access_log_prefix: typing.Optional[builtins.str] = None,
3155
+ api_canary_schedule: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3156
+ api_canary_thread_count: typing.Optional[jsii.Number] = None,
3157
+ api_canary_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3158
+ api_test_steps: typing.Optional[typing.Sequence[typing.Union[ApiTestStep, typing.Dict[builtins.str, typing.Any]]]] = None,
3159
+ application_name: typing.Optional[builtins.str] = None,
3160
+ deployment_config: typing.Optional[_aws_cdk_aws_codedeploy_ceddda9d.IEcsDeploymentConfig] = None,
3161
+ deployment_group_name: typing.Optional[builtins.str] = None,
3162
+ deployment_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3163
+ deregistration_delay: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3164
+ hooks: typing.Optional[typing.Union[AppSpecHooks, typing.Dict[builtins.str, typing.Any]]] = None,
3165
+ response_time_alarm_threshold: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3166
+ target_health_check: typing.Optional[typing.Union[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.HealthCheck, typing.Dict[builtins.str, typing.Any]]] = None,
3167
+ termination_wait_time: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3168
+ test_port: typing.Optional[jsii.Number] = None,
3169
+ assign_public_ip: typing.Optional[builtins.bool] = None,
3170
+ container_cpu: typing.Optional[jsii.Number] = None,
3171
+ container_memory_limit_mib: typing.Optional[jsii.Number] = None,
3172
+ health_check: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.HealthCheck, typing.Dict[builtins.str, typing.Any]]] = None,
3173
+ security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
3174
+ task_subnets: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
3175
+ capacity_provider_strategies: typing.Optional[typing.Sequence[typing.Union[_aws_cdk_aws_ecs_ceddda9d.CapacityProviderStrategy, typing.Dict[builtins.str, typing.Any]]]] = None,
3176
+ certificate: typing.Optional[_aws_cdk_aws_certificatemanager_ceddda9d.ICertificate] = None,
3177
+ circuit_breaker: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.DeploymentCircuitBreaker, typing.Dict[builtins.str, typing.Any]]] = None,
3178
+ cloud_map_options: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.CloudMapOptions, typing.Dict[builtins.str, typing.Any]]] = None,
3179
+ cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.ICluster] = None,
3180
+ deployment_controller: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.DeploymentController, typing.Dict[builtins.str, typing.Any]]] = None,
3181
+ desired_count: typing.Optional[jsii.Number] = None,
3182
+ domain_name: typing.Optional[builtins.str] = None,
3183
+ domain_zone: typing.Optional[_aws_cdk_aws_route53_ceddda9d.IHostedZone] = None,
3184
+ enable_ecs_managed_tags: typing.Optional[builtins.bool] = None,
3185
+ enable_execute_command: typing.Optional[builtins.bool] = None,
3186
+ health_check_grace_period: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3187
+ idle_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3188
+ ip_address_type: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.IpAddressType] = None,
3189
+ listener_port: typing.Optional[jsii.Number] = None,
3190
+ load_balancer: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.IApplicationLoadBalancer] = None,
3191
+ load_balancer_name: typing.Optional[builtins.str] = None,
3192
+ max_healthy_percent: typing.Optional[jsii.Number] = None,
3193
+ min_healthy_percent: typing.Optional[jsii.Number] = None,
3194
+ open_listener: typing.Optional[builtins.bool] = None,
3195
+ propagate_tags: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.PropagatedTagSource] = None,
3196
+ protocol: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationProtocol] = None,
3197
+ protocol_version: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationProtocolVersion] = None,
3198
+ public_load_balancer: typing.Optional[builtins.bool] = None,
3199
+ record_type: typing.Optional[_aws_cdk_aws_ecs_patterns_ceddda9d.ApplicationLoadBalancedServiceRecordType] = None,
3200
+ redirect_http: typing.Optional[builtins.bool] = None,
3201
+ service_name: typing.Optional[builtins.str] = None,
3202
+ ssl_policy: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.SslPolicy] = None,
3203
+ target_protocol: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationProtocol] = None,
3204
+ task_image_options: typing.Optional[typing.Union[_aws_cdk_aws_ecs_patterns_ceddda9d.ApplicationLoadBalancedTaskImageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
3205
+ vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
3206
+ cpu: typing.Optional[jsii.Number] = None,
3207
+ ephemeral_storage_gib: typing.Optional[jsii.Number] = None,
3208
+ memory_limit_mib: typing.Optional[jsii.Number] = None,
3209
+ platform_version: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.FargatePlatformVersion] = None,
3210
+ runtime_platform: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.RuntimePlatform, typing.Dict[builtins.str, typing.Any]]] = None,
3211
+ task_definition: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.FargateTaskDefinition] = None,
3212
+ ) -> None:
3213
+ """Type checking stubs"""
3214
+ pass
3215
+
3216
+ def _typecheckingstub__2e9ebe4d64205e08ed6953e0bfeed401797c431625ac1359c850bea7289fd3bd(
3217
+ service: _aws_cdk_aws_ecs_ceddda9d.BaseService,
3218
+ ) -> None:
3219
+ """Type checking stubs"""
3220
+ pass
3221
+
3222
+ def _typecheckingstub__04c27870fbc63c85094d295b9f732c20ae2ea852010c4ad421bcde70ea6317b9(
3223
+ value: _aws_cdk_aws_s3_ceddda9d.IBucket,
3224
+ ) -> None:
3225
+ """Type checking stubs"""
3226
+ pass
3227
+
3228
+ def _typecheckingstub__d9fc5156a1b8cf5bbc9b35e9b6746bb1f8400e7a99432fae8b3c01d42f18cf4f(
3229
+ value: _aws_cdk_aws_codedeploy_ceddda9d.EcsApplication,
3230
+ ) -> None:
3231
+ """Type checking stubs"""
3232
+ pass
3233
+
3234
+ def _typecheckingstub__272d02dc1b0a56f7951e43174a9099ef41f00eb05cc85b8c8467dfffa4c7b575(
3235
+ value: EcsDeployment,
3236
+ ) -> None:
3237
+ """Type checking stubs"""
3238
+ pass
3239
+
3240
+ def _typecheckingstub__447b00dfcf799fcb98a028b408aa3d1099e3032ff90cdfbf5edb60629924fa4f(
3241
+ value: _aws_cdk_aws_codedeploy_ceddda9d.EcsDeploymentGroup,
3242
+ ) -> None:
3243
+ """Type checking stubs"""
3244
+ pass
3245
+
3246
+ def _typecheckingstub__aa3a26b4b04d4908d2ea2109d2b4d87bedc95a0fe8cd0a8d0540b8791158781c(
3247
+ value: _aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationTargetGroup,
3248
+ ) -> None:
3249
+ """Type checking stubs"""
3250
+ pass
3251
+
3252
+ def _typecheckingstub__a2ed1861141868939832c87d220366d1440d0ef23114460879e579d0433e3a14(
3253
+ value: _aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationListener,
3254
+ ) -> None:
3255
+ """Type checking stubs"""
3256
+ pass
3257
+
3258
+ def _typecheckingstub__627a57fa5d3bba90628c374262020d7d1795c5bf62770ef75633f192fd5753d9(
3259
+ value: typing.Optional[ApiCanary],
3260
+ ) -> None:
3261
+ """Type checking stubs"""
3262
+ pass
3263
+
3264
+ def _typecheckingstub__e070ffcc3fb27284424c9fd4af0ef70d9a50ac85df05cd34a1127edefb90d397(
3265
+ value: typing.Optional[_aws_cdk_aws_cloudwatch_ceddda9d.IAlarm],
3266
+ ) -> None:
3267
+ """Type checking stubs"""
3268
+ pass
3269
+
3270
+ def _typecheckingstub__62e1bd800b9cb43a4625242d7d85bd0154676bc19e69266aeb4ac5bdfd4d476f(
3271
+ *,
3272
+ capacity_provider_strategies: typing.Optional[typing.Sequence[typing.Union[_aws_cdk_aws_ecs_ceddda9d.CapacityProviderStrategy, typing.Dict[builtins.str, typing.Any]]]] = None,
3273
+ certificate: typing.Optional[_aws_cdk_aws_certificatemanager_ceddda9d.ICertificate] = None,
3274
+ circuit_breaker: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.DeploymentCircuitBreaker, typing.Dict[builtins.str, typing.Any]]] = None,
3275
+ cloud_map_options: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.CloudMapOptions, typing.Dict[builtins.str, typing.Any]]] = None,
3276
+ cluster: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.ICluster] = None,
3277
+ deployment_controller: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.DeploymentController, typing.Dict[builtins.str, typing.Any]]] = None,
3278
+ desired_count: typing.Optional[jsii.Number] = None,
3279
+ domain_name: typing.Optional[builtins.str] = None,
3280
+ domain_zone: typing.Optional[_aws_cdk_aws_route53_ceddda9d.IHostedZone] = None,
3281
+ enable_ecs_managed_tags: typing.Optional[builtins.bool] = None,
3282
+ enable_execute_command: typing.Optional[builtins.bool] = None,
3283
+ health_check_grace_period: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3284
+ idle_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3285
+ ip_address_type: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.IpAddressType] = None,
3286
+ listener_port: typing.Optional[jsii.Number] = None,
3287
+ load_balancer: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.IApplicationLoadBalancer] = None,
3288
+ load_balancer_name: typing.Optional[builtins.str] = None,
3289
+ max_healthy_percent: typing.Optional[jsii.Number] = None,
3290
+ min_healthy_percent: typing.Optional[jsii.Number] = None,
3291
+ open_listener: typing.Optional[builtins.bool] = None,
3292
+ propagate_tags: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.PropagatedTagSource] = None,
3293
+ protocol: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationProtocol] = None,
3294
+ protocol_version: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationProtocolVersion] = None,
3295
+ public_load_balancer: typing.Optional[builtins.bool] = None,
3296
+ record_type: typing.Optional[_aws_cdk_aws_ecs_patterns_ceddda9d.ApplicationLoadBalancedServiceRecordType] = None,
3297
+ redirect_http: typing.Optional[builtins.bool] = None,
3298
+ service_name: typing.Optional[builtins.str] = None,
3299
+ ssl_policy: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.SslPolicy] = None,
3300
+ target_protocol: typing.Optional[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.ApplicationProtocol] = None,
3301
+ task_image_options: typing.Optional[typing.Union[_aws_cdk_aws_ecs_patterns_ceddda9d.ApplicationLoadBalancedTaskImageOptions, typing.Dict[builtins.str, typing.Any]]] = None,
3302
+ vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
3303
+ cpu: typing.Optional[jsii.Number] = None,
3304
+ ephemeral_storage_gib: typing.Optional[jsii.Number] = None,
3305
+ memory_limit_mib: typing.Optional[jsii.Number] = None,
3306
+ platform_version: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.FargatePlatformVersion] = None,
3307
+ runtime_platform: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.RuntimePlatform, typing.Dict[builtins.str, typing.Any]]] = None,
3308
+ task_definition: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.FargateTaskDefinition] = None,
3309
+ assign_public_ip: typing.Optional[builtins.bool] = None,
3310
+ container_cpu: typing.Optional[jsii.Number] = None,
3311
+ container_memory_limit_mib: typing.Optional[jsii.Number] = None,
3312
+ health_check: typing.Optional[typing.Union[_aws_cdk_aws_ecs_ceddda9d.HealthCheck, typing.Dict[builtins.str, typing.Any]]] = None,
3313
+ security_groups: typing.Optional[typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup]] = None,
3314
+ task_subnets: typing.Optional[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]] = None,
3315
+ access_log_bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.IBucket] = None,
3316
+ access_log_prefix: typing.Optional[builtins.str] = None,
3317
+ api_canary_schedule: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3318
+ api_canary_thread_count: typing.Optional[jsii.Number] = None,
3319
+ api_canary_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3320
+ api_test_steps: typing.Optional[typing.Sequence[typing.Union[ApiTestStep, typing.Dict[builtins.str, typing.Any]]]] = None,
3321
+ application_name: typing.Optional[builtins.str] = None,
3322
+ deployment_config: typing.Optional[_aws_cdk_aws_codedeploy_ceddda9d.IEcsDeploymentConfig] = None,
3323
+ deployment_group_name: typing.Optional[builtins.str] = None,
3324
+ deployment_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3325
+ deregistration_delay: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3326
+ hooks: typing.Optional[typing.Union[AppSpecHooks, typing.Dict[builtins.str, typing.Any]]] = None,
3327
+ response_time_alarm_threshold: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3328
+ target_health_check: typing.Optional[typing.Union[_aws_cdk_aws_elasticloadbalancingv2_ceddda9d.HealthCheck, typing.Dict[builtins.str, typing.Any]]] = None,
3329
+ termination_wait_time: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3330
+ test_port: typing.Optional[jsii.Number] = None,
3331
+ ) -> None:
3332
+ """Type checking stubs"""
3333
+ pass
3334
+
3335
+ def _typecheckingstub__118fc20114c4ef938b334440fbc2357c4fa373cddf068764a9bcfcda49fe2c32(
3336
+ *,
3337
+ assign_public_ip: builtins.bool,
3338
+ security_groups: typing.Sequence[_aws_cdk_aws_ec2_ceddda9d.ISecurityGroup],
3339
+ vpc: _aws_cdk_aws_ec2_ceddda9d.IVpc,
3340
+ vpc_subnets: typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]],
3341
+ ) -> None:
3342
+ """Type checking stubs"""
3343
+ pass
3344
+
3345
+ def _typecheckingstub__488a8c9ea1d87bab23875ab658b9bdf8db1aab92975455fe1eac82c979bbf1f2(
3346
+ target_service: typing.Union[TargetService, typing.Dict[builtins.str, typing.Any]],
3347
+ *,
3348
+ after_allow_test_traffic: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
3349
+ after_allow_traffic: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
3350
+ after_install: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
3351
+ before_allow_traffic: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
3352
+ before_install: typing.Optional[typing.Union[builtins.str, _aws_cdk_aws_lambda_ceddda9d.IFunction]] = None,
3353
+ ) -> None:
3354
+ """Type checking stubs"""
3355
+ pass
3356
+
3357
+ def _typecheckingstub__28e8902615907bdb53576907b6cdb76c47c97856f7ea9ce53d222e02a06cc4ca(
3358
+ value: builtins.str,
3359
+ ) -> None:
3360
+ """Type checking stubs"""
3361
+ pass
3362
+
3363
+ def _typecheckingstub__e121135b1d585b3e9510378a53b6a2461e246ab5696337264b1a36d29e1a99eb(
3364
+ *,
3365
+ deployment_group: _aws_cdk_aws_codedeploy_ceddda9d.IEcsDeploymentGroup,
3366
+ target_service: typing.Union[TargetService, typing.Dict[builtins.str, typing.Any]],
3367
+ auto_rollback: typing.Optional[typing.Union[_aws_cdk_aws_codedeploy_ceddda9d.AutoRollbackConfig, typing.Dict[builtins.str, typing.Any]]] = None,
3368
+ description: typing.Optional[builtins.str] = None,
3369
+ hooks: typing.Optional[typing.Union[AppSpecHooks, typing.Dict[builtins.str, typing.Any]]] = None,
3370
+ timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
3371
+ ) -> None:
3372
+ """Type checking stubs"""
3373
+ pass
3374
+
3375
+ def _typecheckingstub__eb8c14516b2286bf2acba8700d5b4bce897297c7f7cc3991153665908d8eff67(
3376
+ *,
3377
+ container_name: builtins.str,
3378
+ container_port: jsii.Number,
3379
+ task_definition: _aws_cdk_aws_ecs_ceddda9d.ITaskDefinition,
3380
+ awsvpc_configuration: typing.Optional[typing.Union[AwsvpcConfiguration, typing.Dict[builtins.str, typing.Any]]] = None,
3381
+ capacity_provider_strategy: typing.Optional[typing.Sequence[typing.Union[_aws_cdk_aws_ecs_ceddda9d.CapacityProviderStrategy, typing.Dict[builtins.str, typing.Any]]]] = None,
3382
+ platform_version: typing.Optional[_aws_cdk_aws_ecs_ceddda9d.FargatePlatformVersion] = None,
3383
+ ) -> None:
3384
+ """Type checking stubs"""
3385
+ pass
3386
+
3387
+ def _typecheckingstub__448d9aeeae459df879203fad12fb34ff1b12039929f0a465891bedcfc130f38c(
3388
+ scope: _constructs_77d1e7e8.Construct,
3389
+ id: builtins.str,
3390
+ *,
3391
+ api_gateway_props: typing.Any = None,
3392
+ create_usage_plan: typing.Optional[builtins.bool] = None,
3393
+ custom_domain_name: typing.Optional[builtins.str] = None,
3394
+ existing_lambda_obj: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
3395
+ hosted_zone: typing.Optional[_aws_cdk_aws_route53_ceddda9d.IHostedZone] = None,
3396
+ lambda_function_props: typing.Optional[typing.Union[_aws_cdk_aws_lambda_ceddda9d.FunctionProps, typing.Dict[builtins.str, typing.Any]]] = None,
3397
+ log_group_props: typing.Optional[typing.Union[_aws_cdk_aws_logs_ceddda9d.LogGroupProps, typing.Dict[builtins.str, typing.Any]]] = None,
3398
+ ) -> None:
3399
+ """Type checking stubs"""
3400
+ pass
3401
+
3402
+ def _typecheckingstub__109c686be15dfacf97f31b8340ac53463b8369382aaf60b63405ca329516af4d(
3403
+ *,
3404
+ api_gateway_props: typing.Any = None,
3405
+ create_usage_plan: typing.Optional[builtins.bool] = None,
3406
+ custom_domain_name: typing.Optional[builtins.str] = None,
3407
+ existing_lambda_obj: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
3408
+ hosted_zone: typing.Optional[_aws_cdk_aws_route53_ceddda9d.IHostedZone] = None,
3409
+ lambda_function_props: typing.Optional[typing.Union[_aws_cdk_aws_lambda_ceddda9d.FunctionProps, typing.Dict[builtins.str, typing.Any]]] = None,
3410
+ log_group_props: typing.Optional[typing.Union[_aws_cdk_aws_logs_ceddda9d.LogGroupProps, typing.Dict[builtins.str, typing.Any]]] = None,
3411
+ ) -> None:
3412
+ """Type checking stubs"""
3413
+ pass