aws-cdk-lib 2.154.0__py3-none-any.whl → 2.155.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of aws-cdk-lib might be problematic. Click here for more details.

Files changed (35) hide show
  1. aws_cdk/_jsii/__init__.py +1 -1
  2. aws_cdk/_jsii/{aws-cdk-lib@2.154.0.jsii.tgz → aws-cdk-lib@2.155.0.jsii.tgz} +0 -0
  3. aws_cdk/assertions/__init__.py +17 -17
  4. aws_cdk/aws_apigatewayv2/__init__.py +13 -14
  5. aws_cdk/aws_bedrock/__init__.py +2672 -306
  6. aws_cdk/aws_cloudfront/__init__.py +20 -5
  7. aws_cdk/aws_codebuild/__init__.py +384 -4
  8. aws_cdk/aws_ec2/__init__.py +246 -47
  9. aws_cdk/aws_ecs/__init__.py +5 -3
  10. aws_cdk/aws_eks/__init__.py +34 -4
  11. aws_cdk/aws_gamelift/__init__.py +52 -40
  12. aws_cdk/aws_glue/__init__.py +55 -4
  13. aws_cdk/aws_imagebuilder/__init__.py +6 -6
  14. aws_cdk/aws_ivs/__init__.py +460 -2
  15. aws_cdk/aws_kms/__init__.py +36 -0
  16. aws_cdk/aws_lambda/__init__.py +38 -23
  17. aws_cdk/aws_lambda_event_sources/__init__.py +27 -0
  18. aws_cdk/aws_medialive/__init__.py +41 -0
  19. aws_cdk/aws_msk/__init__.py +88 -0
  20. aws_cdk/aws_rds/__init__.py +6 -0
  21. aws_cdk/aws_sagemaker/__init__.py +2 -2
  22. aws_cdk/aws_secretsmanager/__init__.py +3 -2
  23. aws_cdk/aws_ses/__init__.py +7 -7
  24. aws_cdk/aws_ssm/__init__.py +5 -5
  25. aws_cdk/aws_ssmcontacts/__init__.py +12 -0
  26. aws_cdk/aws_stepfunctions/__init__.py +12 -14
  27. aws_cdk/aws_stepfunctions_tasks/__init__.py +76 -0
  28. aws_cdk/aws_synthetics/__init__.py +13 -0
  29. aws_cdk/custom_resources/__init__.py +113 -2
  30. {aws_cdk_lib-2.154.0.dist-info → aws_cdk_lib-2.155.0.dist-info}/METADATA +1 -1
  31. {aws_cdk_lib-2.154.0.dist-info → aws_cdk_lib-2.155.0.dist-info}/RECORD +35 -35
  32. {aws_cdk_lib-2.154.0.dist-info → aws_cdk_lib-2.155.0.dist-info}/LICENSE +0 -0
  33. {aws_cdk_lib-2.154.0.dist-info → aws_cdk_lib-2.155.0.dist-info}/NOTICE +0 -0
  34. {aws_cdk_lib-2.154.0.dist-info → aws_cdk_lib-2.155.0.dist-info}/WHEEL +0 -0
  35. {aws_cdk_lib-2.154.0.dist-info → aws_cdk_lib-2.155.0.dist-info}/top_level.txt +0 -0
@@ -39,6 +39,14 @@ key = kms.Key(self, "MyKey",
39
39
  )
40
40
  ```
41
41
 
42
+ Create a multi-Region primary key:
43
+
44
+ ```python
45
+ key = kms.Key(self, "MyKey",
46
+ multi_region=True
47
+ )
48
+ ```
49
+
42
50
  ## Sharing keys between stacks
43
51
 
44
52
  To use a KMS key in a different stack in the same CDK application,
@@ -2102,6 +2110,7 @@ class Key(
2102
2110
  enable_key_rotation: typing.Optional[builtins.bool] = None,
2103
2111
  key_spec: typing.Optional["KeySpec"] = None,
2104
2112
  key_usage: typing.Optional["KeyUsage"] = None,
2113
+ multi_region: typing.Optional[builtins.bool] = None,
2105
2114
  pending_window: typing.Optional[_Duration_4839e8c3] = None,
2106
2115
  policy: typing.Optional[_PolicyDocument_3ac34393] = None,
2107
2116
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
@@ -2117,6 +2126,7 @@ class Key(
2117
2126
  :param enable_key_rotation: Indicates whether AWS KMS rotates the key. Default: false
2118
2127
  :param key_spec: The cryptographic configuration of the key. The valid value depends on usage of the key. IMPORTANT: If you change this property of an existing key, the existing key is scheduled for deletion and a new key is created with the specified value. Default: KeySpec.SYMMETRIC_DEFAULT
2119
2128
  :param key_usage: The cryptographic operations for which the key can be used. IMPORTANT: If you change this property of an existing key, the existing key is scheduled for deletion and a new key is created with the specified value. Default: KeyUsage.ENCRYPT_DECRYPT
2129
+ :param multi_region: Creates a multi-Region primary key that you can replicate in other AWS Regions. You can't change the ``multiRegion`` value after the KMS key is created. IMPORTANT: If you change the value of the ``multiRegion`` property on an existing KMS key, the update request fails, regardless of the value of the UpdateReplacePolicy attribute. This prevents you from accidentally deleting a KMS key by changing an immutable property value. Default: false
2120
2130
  :param pending_window: Specifies the number of days in the waiting period before AWS KMS deletes a CMK that has been removed from a CloudFormation stack. When you remove a customer master key (CMK) from a CloudFormation stack, AWS KMS schedules the CMK for deletion and starts the mandatory waiting period. The PendingWindowInDays property determines the length of waiting period. During the waiting period, the key state of CMK is Pending Deletion, which prevents the CMK from being used in cryptographic operations. When the waiting period expires, AWS KMS permanently deletes the CMK. Enter a value between 7 and 30 days. Default: - 30 days
2121
2131
  :param policy: Custom policy document to attach to the KMS key. NOTE - If the ``@aws-cdk/aws-kms:defaultKeyPolicies`` feature flag is set (the default for new projects), this policy will *override* the default key policy and become the only key policy for the key. If the feature flag is not set, this policy will be appended to the default key policy. Default: - A policy document with permissions for the account root to administer the key will be created.
2122
2132
  :param removal_policy: Whether the encryption key should be retained when it is removed from the Stack. This is useful when one wants to retain access to data that was encrypted with a key that is being retired. Default: RemovalPolicy.Retain
@@ -2134,6 +2144,7 @@ class Key(
2134
2144
  enable_key_rotation=enable_key_rotation,
2135
2145
  key_spec=key_spec,
2136
2146
  key_usage=key_usage,
2147
+ multi_region=multi_region,
2137
2148
  pending_window=pending_window,
2138
2149
  policy=policy,
2139
2150
  removal_policy=removal_policy,
@@ -2439,6 +2450,7 @@ class KeyLookupOptions:
2439
2450
  "enable_key_rotation": "enableKeyRotation",
2440
2451
  "key_spec": "keySpec",
2441
2452
  "key_usage": "keyUsage",
2453
+ "multi_region": "multiRegion",
2442
2454
  "pending_window": "pendingWindow",
2443
2455
  "policy": "policy",
2444
2456
  "removal_policy": "removalPolicy",
@@ -2456,6 +2468,7 @@ class KeyProps:
2456
2468
  enable_key_rotation: typing.Optional[builtins.bool] = None,
2457
2469
  key_spec: typing.Optional["KeySpec"] = None,
2458
2470
  key_usage: typing.Optional["KeyUsage"] = None,
2471
+ multi_region: typing.Optional[builtins.bool] = None,
2459
2472
  pending_window: typing.Optional[_Duration_4839e8c3] = None,
2460
2473
  policy: typing.Optional[_PolicyDocument_3ac34393] = None,
2461
2474
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
@@ -2470,6 +2483,7 @@ class KeyProps:
2470
2483
  :param enable_key_rotation: Indicates whether AWS KMS rotates the key. Default: false
2471
2484
  :param key_spec: The cryptographic configuration of the key. The valid value depends on usage of the key. IMPORTANT: If you change this property of an existing key, the existing key is scheduled for deletion and a new key is created with the specified value. Default: KeySpec.SYMMETRIC_DEFAULT
2472
2485
  :param key_usage: The cryptographic operations for which the key can be used. IMPORTANT: If you change this property of an existing key, the existing key is scheduled for deletion and a new key is created with the specified value. Default: KeyUsage.ENCRYPT_DECRYPT
2486
+ :param multi_region: Creates a multi-Region primary key that you can replicate in other AWS Regions. You can't change the ``multiRegion`` value after the KMS key is created. IMPORTANT: If you change the value of the ``multiRegion`` property on an existing KMS key, the update request fails, regardless of the value of the UpdateReplacePolicy attribute. This prevents you from accidentally deleting a KMS key by changing an immutable property value. Default: false
2473
2487
  :param pending_window: Specifies the number of days in the waiting period before AWS KMS deletes a CMK that has been removed from a CloudFormation stack. When you remove a customer master key (CMK) from a CloudFormation stack, AWS KMS schedules the CMK for deletion and starts the mandatory waiting period. The PendingWindowInDays property determines the length of waiting period. During the waiting period, the key state of CMK is Pending Deletion, which prevents the CMK from being used in cryptographic operations. When the waiting period expires, AWS KMS permanently deletes the CMK. Enter a value between 7 and 30 days. Default: - 30 days
2474
2488
  :param policy: Custom policy document to attach to the KMS key. NOTE - If the ``@aws-cdk/aws-kms:defaultKeyPolicies`` feature flag is set (the default for new projects), this policy will *override* the default key policy and become the only key policy for the key. If the feature flag is not set, this policy will be appended to the default key policy. Default: - A policy document with permissions for the account root to administer the key will be created.
2475
2489
  :param removal_policy: Whether the encryption key should be retained when it is removed from the Stack. This is useful when one wants to retain access to data that was encrypted with a key that is being retired. Default: RemovalPolicy.Retain
@@ -2509,6 +2523,7 @@ class KeyProps:
2509
2523
  check_type(argname="argument enable_key_rotation", value=enable_key_rotation, expected_type=type_hints["enable_key_rotation"])
2510
2524
  check_type(argname="argument key_spec", value=key_spec, expected_type=type_hints["key_spec"])
2511
2525
  check_type(argname="argument key_usage", value=key_usage, expected_type=type_hints["key_usage"])
2526
+ check_type(argname="argument multi_region", value=multi_region, expected_type=type_hints["multi_region"])
2512
2527
  check_type(argname="argument pending_window", value=pending_window, expected_type=type_hints["pending_window"])
2513
2528
  check_type(argname="argument policy", value=policy, expected_type=type_hints["policy"])
2514
2529
  check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
@@ -2528,6 +2543,8 @@ class KeyProps:
2528
2543
  self._values["key_spec"] = key_spec
2529
2544
  if key_usage is not None:
2530
2545
  self._values["key_usage"] = key_usage
2546
+ if multi_region is not None:
2547
+ self._values["multi_region"] = multi_region
2531
2548
  if pending_window is not None:
2532
2549
  self._values["pending_window"] = pending_window
2533
2550
  if policy is not None:
@@ -2616,6 +2633,23 @@ class KeyProps:
2616
2633
  result = self._values.get("key_usage")
2617
2634
  return typing.cast(typing.Optional["KeyUsage"], result)
2618
2635
 
2636
+ @builtins.property
2637
+ def multi_region(self) -> typing.Optional[builtins.bool]:
2638
+ '''Creates a multi-Region primary key that you can replicate in other AWS Regions.
2639
+
2640
+ You can't change the ``multiRegion`` value after the KMS key is created.
2641
+
2642
+ IMPORTANT: If you change the value of the ``multiRegion`` property on an existing KMS key, the update request fails,
2643
+ regardless of the value of the UpdateReplacePolicy attribute.
2644
+ This prevents you from accidentally deleting a KMS key by changing an immutable property value.
2645
+
2646
+ :default: false
2647
+
2648
+ :see: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html
2649
+ '''
2650
+ result = self._values.get("multi_region")
2651
+ return typing.cast(typing.Optional[builtins.bool], result)
2652
+
2619
2653
  @builtins.property
2620
2654
  def pending_window(self) -> typing.Optional[_Duration_4839e8c3]:
2621
2655
  '''Specifies the number of days in the waiting period before AWS KMS deletes a CMK that has been removed from a CloudFormation stack.
@@ -3491,6 +3525,7 @@ def _typecheckingstub__2cde9534bdfe7c19d6e24354f8a0de8ca349632d3f565addcaed7e86a
3491
3525
  enable_key_rotation: typing.Optional[builtins.bool] = None,
3492
3526
  key_spec: typing.Optional[KeySpec] = None,
3493
3527
  key_usage: typing.Optional[KeyUsage] = None,
3528
+ multi_region: typing.Optional[builtins.bool] = None,
3494
3529
  pending_window: typing.Optional[_Duration_4839e8c3] = None,
3495
3530
  policy: typing.Optional[_PolicyDocument_3ac34393] = None,
3496
3531
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
@@ -3594,6 +3629,7 @@ def _typecheckingstub__b3cbd21baa1113e5b2864ce6b440a0d87704642442943c3a554ab23ae
3594
3629
  enable_key_rotation: typing.Optional[builtins.bool] = None,
3595
3630
  key_spec: typing.Optional[KeySpec] = None,
3596
3631
  key_usage: typing.Optional[KeyUsage] = None,
3632
+ multi_region: typing.Optional[builtins.bool] = None,
3597
3633
  pending_window: typing.Optional[_Duration_4839e8c3] = None,
3598
3634
  policy: typing.Optional[_PolicyDocument_3ac34393] = None,
3599
3635
  removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
@@ -85,6 +85,10 @@ configurations as well as choosing a specific tag or digest. See their docs for
85
85
  To deploy a `DockerImageFunction` on Lambda `arm64` architecture, specify `Architecture.ARM_64` in `architecture`.
86
86
  This will bundle docker image assets for `arm64` architecture with `--platform linux/arm64` even if build within an `x86_64` host.
87
87
 
88
+ With that being said, if you are bundling `DockerImageFunction` for Lambda `amd64` architecture from a `arm64` machine like a Macbook with `arm64` CPU, you would
89
+ need to specify `architecture: lambda.Architecture.X86_64` as well. This ensures the `--platform` argument is passed to the image assets
90
+ bundling process so you can bundle up `X86_64` images from the `arm64` machine.
91
+
88
92
  ```python
89
93
  lambda_.DockerImageFunction(self, "AssetFunction",
90
94
  code=lambda_.DockerImageCode.from_image_asset(path.join(__dirname, "docker-arm64-handler")),
@@ -10120,7 +10124,7 @@ class CfnVersion(
10120
10124
  @builtins.property
10121
10125
  @jsii.member(jsii_name="attrFunctionArn")
10122
10126
  def attr_function_arn(self) -> builtins.str:
10123
- '''The ARN of the version.
10127
+ '''The ARN of the function.
10124
10128
 
10125
10129
  :cloudformationAttribute: FunctionArn
10126
10130
  '''
@@ -13774,21 +13778,25 @@ class FilterCriteria(
13774
13778
 
13775
13779
  Example::
13776
13780
 
13777
- import aws_cdk.aws_lambda_event_sources as eventsources
13778
13781
  import aws_cdk.aws_dynamodb as dynamodb
13782
+ from aws_cdk.aws_lambda_event_sources import DynamoEventSource
13783
+
13784
+ # table: dynamodb.Table
13779
13785
 
13780
13786
  # fn: lambda.Function
13781
13787
 
13782
- table = dynamodb.Table(self, "Table",
13783
- partition_key=dynamodb.Attribute(
13784
- name="id",
13785
- type=dynamodb.AttributeType.STRING
13786
- ),
13787
- stream=dynamodb.StreamViewType.NEW_IMAGE
13788
- )
13789
- fn.add_event_source(eventsources.DynamoEventSource(table,
13788
+ fn.add_event_source(DynamoEventSource(table,
13790
13789
  starting_position=lambda_.StartingPosition.LATEST,
13791
- filters=[lambda_.FilterCriteria.filter({"event_name": lambda_.FilterRule.is_equal("INSERT")})]
13790
+ filters=[
13791
+ lambda_.FilterCriteria.filter({
13792
+ "event_name": lambda_.FilterRule.is_equal("INSERT"),
13793
+ "dynamodb": {
13794
+ "NewImage": {
13795
+ "id": {"BOOL": lambda_.FilterRule.is_equal(True)}
13796
+ }
13797
+ }
13798
+ })
13799
+ ]
13792
13800
  ))
13793
13801
  '''
13794
13802
 
@@ -13821,21 +13829,25 @@ class FilterRule(
13821
13829
 
13822
13830
  Example::
13823
13831
 
13824
- import aws_cdk.aws_lambda_event_sources as eventsources
13825
13832
  import aws_cdk.aws_dynamodb as dynamodb
13833
+ from aws_cdk.aws_lambda_event_sources import DynamoEventSource
13834
+
13835
+ # table: dynamodb.Table
13826
13836
 
13827
13837
  # fn: lambda.Function
13828
13838
 
13829
- table = dynamodb.Table(self, "Table",
13830
- partition_key=dynamodb.Attribute(
13831
- name="id",
13832
- type=dynamodb.AttributeType.STRING
13833
- ),
13834
- stream=dynamodb.StreamViewType.NEW_IMAGE
13835
- )
13836
- fn.add_event_source(eventsources.DynamoEventSource(table,
13839
+ fn.add_event_source(DynamoEventSource(table,
13837
13840
  starting_position=lambda_.StartingPosition.LATEST,
13838
- filters=[lambda_.FilterCriteria.filter({"event_name": lambda_.FilterRule.is_equal("INSERT")})]
13841
+ filters=[
13842
+ lambda_.FilterCriteria.filter({
13843
+ "event_name": lambda_.FilterRule.is_equal("INSERT"),
13844
+ "dynamodb": {
13845
+ "NewImage": {
13846
+ "id": {"BOOL": lambda_.FilterRule.is_equal(True)}
13847
+ }
13848
+ }
13849
+ })
13850
+ ]
13839
13851
  ))
13840
13852
  '''
13841
13853
 
@@ -13889,7 +13901,10 @@ class FilterRule(
13889
13901
 
13890
13902
  @jsii.member(jsii_name="isEqual")
13891
13903
  @builtins.classmethod
13892
- def is_equal(cls, item: typing.Union[builtins.str, jsii.Number]) -> typing.Any:
13904
+ def is_equal(
13905
+ cls,
13906
+ item: typing.Union[builtins.str, jsii.Number, builtins.bool],
13907
+ ) -> typing.Any:
13893
13908
  '''Equals comparison operator.
13894
13909
 
13895
13910
  :param item: -
@@ -29506,7 +29521,7 @@ def _typecheckingstub__e532ccec0d2d2a11fd00b0da70142d367dca7a52eb785533bf0fe354f
29506
29521
  pass
29507
29522
 
29508
29523
  def _typecheckingstub__6ffacf0ca301bfbc6a30c7fc32201cecba4e3530eb53e51d1b21c3349a4e5ba5(
29509
- item: typing.Union[builtins.str, jsii.Number],
29524
+ item: typing.Union[builtins.str, jsii.Number, builtins.bool],
29510
29525
  ) -> None:
29511
29526
  """Type checking stubs"""
29512
29527
  pass
@@ -175,6 +175,7 @@ and add it to your Lambda function. The following parameters will impact Amazon
175
175
  * **startingPosition**: Will determine where to being consumption, either at the most recent ('LATEST') record or the oldest record ('TRIM_HORIZON'). 'TRIM_HORIZON' will ensure you process all available data, while 'LATEST' will ignore all records that arrived prior to attaching the event source.
176
176
  * **tumblingWindow**: The duration in seconds of a processing window when using streams.
177
177
  * **enabled**: If the DynamoDB Streams event source mapping should be enabled. The default is true.
178
+ * **filters**: Filters to apply before sending a change event from a DynamoDB table to a Lambda function. Events that are filtered out are not sent to the Lambda function.
178
179
 
179
180
  ```python
180
181
  import aws_cdk.aws_dynamodb as dynamodb
@@ -195,6 +196,32 @@ fn.add_event_source(DynamoEventSource(table,
195
196
  ))
196
197
  ```
197
198
 
199
+ The following code sets up a Lambda function with a DynamoDB event source. A filter is applied to only send DynamoDB events to
200
+ the Lambda function when the `id` column is a boolean that equals `true`.
201
+
202
+ ```python
203
+ import aws_cdk.aws_dynamodb as dynamodb
204
+ from aws_cdk.aws_lambda_event_sources import DynamoEventSource
205
+
206
+ # table: dynamodb.Table
207
+
208
+ # fn: lambda.Function
209
+
210
+ fn.add_event_source(DynamoEventSource(table,
211
+ starting_position=lambda_.StartingPosition.LATEST,
212
+ filters=[
213
+ lambda_.FilterCriteria.filter({
214
+ "event_name": lambda_.FilterRule.is_equal("INSERT"),
215
+ "dynamodb": {
216
+ "NewImage": {
217
+ "id": {"BOOL": lambda_.FilterRule.is_equal(True)}
218
+ }
219
+ }
220
+ })
221
+ ]
222
+ ))
223
+ ```
224
+
198
225
  ## Kinesis
199
226
 
200
227
  You can write Lambda functions to process streaming data in Amazon Kinesis Streams. For more information about Amazon Kinesis, see [Amazon Kinesis
@@ -24191,6 +24191,7 @@ class CfnMultiplexprogram(
24191
24191
  from aws_cdk import aws_medialive as medialive
24192
24192
 
24193
24193
  cfn_multiplexprogram = medialive.CfnMultiplexprogram(self, "MyCfnMultiplexprogram",
24194
+ channel_id="channelId",
24194
24195
  multiplex_id="multiplexId",
24195
24196
  multiplex_program_settings=medialive.CfnMultiplexprogram.MultiplexProgramSettingsProperty(
24196
24197
  program_number=123,
@@ -24239,6 +24240,7 @@ class CfnMultiplexprogram(
24239
24240
  scope: _constructs_77d1e7e8.Construct,
24240
24241
  id: builtins.str,
24241
24242
  *,
24243
+ channel_id: typing.Optional[builtins.str] = None,
24242
24244
  multiplex_id: typing.Optional[builtins.str] = None,
24243
24245
  multiplex_program_settings: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnMultiplexprogram.MultiplexProgramSettingsProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
24244
24246
  packet_identifiers_map: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnMultiplexprogram.MultiplexProgramPacketIdentifiersMapProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -24249,6 +24251,7 @@ class CfnMultiplexprogram(
24249
24251
  '''
24250
24252
  :param scope: Scope in which this resource is defined.
24251
24253
  :param id: Construct identifier for this resource (unique in its scope).
24254
+ :param channel_id: The MediaLive channel associated with the program.
24252
24255
  :param multiplex_id: The unique id of the multiplex.
24253
24256
  :param multiplex_program_settings: Multiplex Program settings configuration.
24254
24257
  :param packet_identifiers_map: Packet identifiers map for a given Multiplex program.
@@ -24261,6 +24264,7 @@ class CfnMultiplexprogram(
24261
24264
  check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
24262
24265
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
24263
24266
  props = CfnMultiplexprogramProps(
24267
+ channel_id=channel_id,
24264
24268
  multiplex_id=multiplex_id,
24265
24269
  multiplex_program_settings=multiplex_program_settings,
24266
24270
  packet_identifiers_map=packet_identifiers_map,
@@ -24315,6 +24319,19 @@ class CfnMultiplexprogram(
24315
24319
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
24316
24320
  return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.get(self, "cfnProperties"))
24317
24321
 
24322
+ @builtins.property
24323
+ @jsii.member(jsii_name="channelId")
24324
+ def channel_id(self) -> typing.Optional[builtins.str]:
24325
+ '''The MediaLive channel associated with the program.'''
24326
+ return typing.cast(typing.Optional[builtins.str], jsii.get(self, "channelId"))
24327
+
24328
+ @channel_id.setter
24329
+ def channel_id(self, value: typing.Optional[builtins.str]) -> None:
24330
+ if __debug__:
24331
+ type_hints = typing.get_type_hints(_typecheckingstub__9561e3405511ef7da3fca8bead238e3b87bcd0ff2f533806ddb3f276557fd66e)
24332
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
24333
+ jsii.set(self, "channelId", value) # pyright: ignore[reportArgumentType]
24334
+
24318
24335
  @builtins.property
24319
24336
  @jsii.member(jsii_name="multiplexId")
24320
24337
  def multiplex_id(self) -> typing.Optional[builtins.str]:
@@ -25097,6 +25114,7 @@ class CfnMultiplexprogram(
25097
25114
  jsii_type="aws-cdk-lib.aws_medialive.CfnMultiplexprogramProps",
25098
25115
  jsii_struct_bases=[],
25099
25116
  name_mapping={
25117
+ "channel_id": "channelId",
25100
25118
  "multiplex_id": "multiplexId",
25101
25119
  "multiplex_program_settings": "multiplexProgramSettings",
25102
25120
  "packet_identifiers_map": "packetIdentifiersMap",
@@ -25109,6 +25127,7 @@ class CfnMultiplexprogramProps:
25109
25127
  def __init__(
25110
25128
  self,
25111
25129
  *,
25130
+ channel_id: typing.Optional[builtins.str] = None,
25112
25131
  multiplex_id: typing.Optional[builtins.str] = None,
25113
25132
  multiplex_program_settings: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnMultiplexprogram.MultiplexProgramSettingsProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
25114
25133
  packet_identifiers_map: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnMultiplexprogram.MultiplexProgramPacketIdentifiersMapProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -25118,6 +25137,7 @@ class CfnMultiplexprogramProps:
25118
25137
  ) -> None:
25119
25138
  '''Properties for defining a ``CfnMultiplexprogram``.
25120
25139
 
25140
+ :param channel_id: The MediaLive channel associated with the program.
25121
25141
  :param multiplex_id: The unique id of the multiplex.
25122
25142
  :param multiplex_program_settings: Multiplex Program settings configuration.
25123
25143
  :param packet_identifiers_map: Packet identifiers map for a given Multiplex program.
@@ -25135,6 +25155,7 @@ class CfnMultiplexprogramProps:
25135
25155
  from aws_cdk import aws_medialive as medialive
25136
25156
 
25137
25157
  cfn_multiplexprogram_props = medialive.CfnMultiplexprogramProps(
25158
+ channel_id="channelId",
25138
25159
  multiplex_id="multiplexId",
25139
25160
  multiplex_program_settings=medialive.CfnMultiplexprogram.MultiplexProgramSettingsProperty(
25140
25161
  program_number=123,
@@ -25179,6 +25200,7 @@ class CfnMultiplexprogramProps:
25179
25200
  '''
25180
25201
  if __debug__:
25181
25202
  type_hints = typing.get_type_hints(_typecheckingstub__f73df2de9c8f0593b389bf604ffaf3d1b093165585c8988cb33c99e1826cb730)
25203
+ check_type(argname="argument channel_id", value=channel_id, expected_type=type_hints["channel_id"])
25182
25204
  check_type(argname="argument multiplex_id", value=multiplex_id, expected_type=type_hints["multiplex_id"])
25183
25205
  check_type(argname="argument multiplex_program_settings", value=multiplex_program_settings, expected_type=type_hints["multiplex_program_settings"])
25184
25206
  check_type(argname="argument packet_identifiers_map", value=packet_identifiers_map, expected_type=type_hints["packet_identifiers_map"])
@@ -25186,6 +25208,8 @@ class CfnMultiplexprogramProps:
25186
25208
  check_type(argname="argument preferred_channel_pipeline", value=preferred_channel_pipeline, expected_type=type_hints["preferred_channel_pipeline"])
25187
25209
  check_type(argname="argument program_name", value=program_name, expected_type=type_hints["program_name"])
25188
25210
  self._values: typing.Dict[builtins.str, typing.Any] = {}
25211
+ if channel_id is not None:
25212
+ self._values["channel_id"] = channel_id
25189
25213
  if multiplex_id is not None:
25190
25214
  self._values["multiplex_id"] = multiplex_id
25191
25215
  if multiplex_program_settings is not None:
@@ -25199,6 +25223,15 @@ class CfnMultiplexprogramProps:
25199
25223
  if program_name is not None:
25200
25224
  self._values["program_name"] = program_name
25201
25225
 
25226
+ @builtins.property
25227
+ def channel_id(self) -> typing.Optional[builtins.str]:
25228
+ '''The MediaLive channel associated with the program.
25229
+
25230
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-multiplexprogram.html#cfn-medialive-multiplexprogram-channelid
25231
+ '''
25232
+ result = self._values.get("channel_id")
25233
+ return typing.cast(typing.Optional[builtins.str], result)
25234
+
25202
25235
  @builtins.property
25203
25236
  def multiplex_id(self) -> typing.Optional[builtins.str]:
25204
25237
  '''The unique id of the multiplex.
@@ -27300,6 +27333,7 @@ def _typecheckingstub__1e8cee4de488a1e3af5984f421ac406fb3ce2264e4688ae568997c405
27300
27333
  scope: _constructs_77d1e7e8.Construct,
27301
27334
  id: builtins.str,
27302
27335
  *,
27336
+ channel_id: typing.Optional[builtins.str] = None,
27303
27337
  multiplex_id: typing.Optional[builtins.str] = None,
27304
27338
  multiplex_program_settings: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnMultiplexprogram.MultiplexProgramSettingsProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
27305
27339
  packet_identifiers_map: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnMultiplexprogram.MultiplexProgramPacketIdentifiersMapProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -27322,6 +27356,12 @@ def _typecheckingstub__acad53db30a2a5e33a6f5a6711d6d6ce106a80011ec9feff43990953e
27322
27356
  """Type checking stubs"""
27323
27357
  pass
27324
27358
 
27359
+ def _typecheckingstub__9561e3405511ef7da3fca8bead238e3b87bcd0ff2f533806ddb3f276557fd66e(
27360
+ value: typing.Optional[builtins.str],
27361
+ ) -> None:
27362
+ """Type checking stubs"""
27363
+ pass
27364
+
27325
27365
  def _typecheckingstub__b94a917cbdd17ac18baea629f9c49823350870af7f009295dbe06082a0515154(
27326
27366
  value: typing.Optional[builtins.str],
27327
27367
  ) -> None:
@@ -27422,6 +27462,7 @@ def _typecheckingstub__97bea0267704f0addfd06d5672cbe39ebea79dbcc03e14eb7dd6ebdab
27422
27462
 
27423
27463
  def _typecheckingstub__f73df2de9c8f0593b389bf604ffaf3d1b093165585c8988cb33c99e1826cb730(
27424
27464
  *,
27465
+ channel_id: typing.Optional[builtins.str] = None,
27425
27466
  multiplex_id: typing.Optional[builtins.str] = None,
27426
27467
  multiplex_program_settings: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnMultiplexprogram.MultiplexProgramSettingsProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
27427
27468
  packet_identifiers_map: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnMultiplexprogram.MultiplexProgramPacketIdentifiersMapProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -4084,6 +4084,9 @@ class CfnReplicator(
4084
4084
  starting_position=msk.CfnReplicator.ReplicationStartingPositionProperty(
4085
4085
  type="type"
4086
4086
  ),
4087
+ topic_name_configuration=msk.CfnReplicator.ReplicationTopicNameConfigurationProperty(
4088
+ type="type"
4089
+ ),
4087
4090
  topics_to_exclude=["topicsToExclude"]
4088
4091
  )
4089
4092
  )],
@@ -4682,6 +4685,9 @@ class CfnReplicator(
4682
4685
  starting_position=msk.CfnReplicator.ReplicationStartingPositionProperty(
4683
4686
  type="type"
4684
4687
  ),
4688
+ topic_name_configuration=msk.CfnReplicator.ReplicationTopicNameConfigurationProperty(
4689
+ type="type"
4690
+ ),
4685
4691
  topics_to_exclude=["topicsToExclude"]
4686
4692
  )
4687
4693
  )
@@ -4816,6 +4822,57 @@ class CfnReplicator(
4816
4822
  k + "=" + repr(v) for k, v in self._values.items()
4817
4823
  )
4818
4824
 
4825
+ @jsii.data_type(
4826
+ jsii_type="aws-cdk-lib.aws_msk.CfnReplicator.ReplicationTopicNameConfigurationProperty",
4827
+ jsii_struct_bases=[],
4828
+ name_mapping={"type": "type"},
4829
+ )
4830
+ class ReplicationTopicNameConfigurationProperty:
4831
+ def __init__(self, *, type: typing.Optional[builtins.str] = None) -> None:
4832
+ '''Configuration for specifying replicated topic names should be the same as their corresponding upstream topics or prefixed with source cluster alias.
4833
+
4834
+ :param type: The type of replicated topic name.
4835
+
4836
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-replicator-replicationtopicnameconfiguration.html
4837
+ :exampleMetadata: fixture=_generated
4838
+
4839
+ Example::
4840
+
4841
+ # The code below shows an example of how to instantiate this type.
4842
+ # The values are placeholders you should change.
4843
+ from aws_cdk import aws_msk as msk
4844
+
4845
+ replication_topic_name_configuration_property = msk.CfnReplicator.ReplicationTopicNameConfigurationProperty(
4846
+ type="type"
4847
+ )
4848
+ '''
4849
+ if __debug__:
4850
+ type_hints = typing.get_type_hints(_typecheckingstub__9f42794dadb7055f47c6b1d4ac38c1e97c2d772710d83250815945ce778bce1c)
4851
+ check_type(argname="argument type", value=type, expected_type=type_hints["type"])
4852
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
4853
+ if type is not None:
4854
+ self._values["type"] = type
4855
+
4856
+ @builtins.property
4857
+ def type(self) -> typing.Optional[builtins.str]:
4858
+ '''The type of replicated topic name.
4859
+
4860
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-replicator-replicationtopicnameconfiguration.html#cfn-msk-replicator-replicationtopicnameconfiguration-type
4861
+ '''
4862
+ result = self._values.get("type")
4863
+ return typing.cast(typing.Optional[builtins.str], result)
4864
+
4865
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
4866
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
4867
+
4868
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
4869
+ return not (rhs == self)
4870
+
4871
+ def __repr__(self) -> str:
4872
+ return "ReplicationTopicNameConfigurationProperty(%s)" % ", ".join(
4873
+ k + "=" + repr(v) for k, v in self._values.items()
4874
+ )
4875
+
4819
4876
  @jsii.data_type(
4820
4877
  jsii_type="aws-cdk-lib.aws_msk.CfnReplicator.TopicReplicationProperty",
4821
4878
  jsii_struct_bases=[],
@@ -4825,6 +4882,7 @@ class CfnReplicator(
4825
4882
  "copy_topic_configurations": "copyTopicConfigurations",
4826
4883
  "detect_and_copy_new_topics": "detectAndCopyNewTopics",
4827
4884
  "starting_position": "startingPosition",
4885
+ "topic_name_configuration": "topicNameConfiguration",
4828
4886
  "topics_to_exclude": "topicsToExclude",
4829
4887
  },
4830
4888
  )
@@ -4837,6 +4895,7 @@ class CfnReplicator(
4837
4895
  copy_topic_configurations: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
4838
4896
  detect_and_copy_new_topics: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
4839
4897
  starting_position: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnReplicator.ReplicationStartingPositionProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4898
+ topic_name_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnReplicator.ReplicationTopicNameConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4840
4899
  topics_to_exclude: typing.Optional[typing.Sequence[builtins.str]] = None,
4841
4900
  ) -> None:
4842
4901
  '''
@@ -4845,6 +4904,7 @@ class CfnReplicator(
4845
4904
  :param copy_topic_configurations: Whether to periodically configure remote topics to match their corresponding upstream topics.
4846
4905
  :param detect_and_copy_new_topics: Whether to periodically check for new topics and partitions.
4847
4906
  :param starting_position: Configuration for specifying the position in the topics to start replicating from.
4907
+ :param topic_name_configuration: Configuration for specifying replicated topic names should be the same as their corresponding upstream topics or prefixed with source cluster alias.
4848
4908
  :param topics_to_exclude: List of regular expression patterns indicating the topics that should not be replicated.
4849
4909
 
4850
4910
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-replicator-topicreplication.html
@@ -4866,6 +4926,9 @@ class CfnReplicator(
4866
4926
  starting_position=msk.CfnReplicator.ReplicationStartingPositionProperty(
4867
4927
  type="type"
4868
4928
  ),
4929
+ topic_name_configuration=msk.CfnReplicator.ReplicationTopicNameConfigurationProperty(
4930
+ type="type"
4931
+ ),
4869
4932
  topics_to_exclude=["topicsToExclude"]
4870
4933
  )
4871
4934
  '''
@@ -4876,6 +4939,7 @@ class CfnReplicator(
4876
4939
  check_type(argname="argument copy_topic_configurations", value=copy_topic_configurations, expected_type=type_hints["copy_topic_configurations"])
4877
4940
  check_type(argname="argument detect_and_copy_new_topics", value=detect_and_copy_new_topics, expected_type=type_hints["detect_and_copy_new_topics"])
4878
4941
  check_type(argname="argument starting_position", value=starting_position, expected_type=type_hints["starting_position"])
4942
+ check_type(argname="argument topic_name_configuration", value=topic_name_configuration, expected_type=type_hints["topic_name_configuration"])
4879
4943
  check_type(argname="argument topics_to_exclude", value=topics_to_exclude, expected_type=type_hints["topics_to_exclude"])
4880
4944
  self._values: typing.Dict[builtins.str, typing.Any] = {
4881
4945
  "topics_to_replicate": topics_to_replicate,
@@ -4888,6 +4952,8 @@ class CfnReplicator(
4888
4952
  self._values["detect_and_copy_new_topics"] = detect_and_copy_new_topics
4889
4953
  if starting_position is not None:
4890
4954
  self._values["starting_position"] = starting_position
4955
+ if topic_name_configuration is not None:
4956
+ self._values["topic_name_configuration"] = topic_name_configuration
4891
4957
  if topics_to_exclude is not None:
4892
4958
  self._values["topics_to_exclude"] = topics_to_exclude
4893
4959
 
@@ -4945,6 +5011,17 @@ class CfnReplicator(
4945
5011
  result = self._values.get("starting_position")
4946
5012
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnReplicator.ReplicationStartingPositionProperty"]], result)
4947
5013
 
5014
+ @builtins.property
5015
+ def topic_name_configuration(
5016
+ self,
5017
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnReplicator.ReplicationTopicNameConfigurationProperty"]]:
5018
+ '''Configuration for specifying replicated topic names should be the same as their corresponding upstream topics or prefixed with source cluster alias.
5019
+
5020
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-replicator-topicreplication.html#cfn-msk-replicator-topicreplication-topicnameconfiguration
5021
+ '''
5022
+ result = self._values.get("topic_name_configuration")
5023
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnReplicator.ReplicationTopicNameConfigurationProperty"]], result)
5024
+
4948
5025
  @builtins.property
4949
5026
  def topics_to_exclude(self) -> typing.Optional[typing.List[builtins.str]]:
4950
5027
  '''List of regular expression patterns indicating the topics that should not be replicated.
@@ -5044,6 +5121,9 @@ class CfnReplicatorProps:
5044
5121
  starting_position=msk.CfnReplicator.ReplicationStartingPositionProperty(
5045
5122
  type="type"
5046
5123
  ),
5124
+ topic_name_configuration=msk.CfnReplicator.ReplicationTopicNameConfigurationProperty(
5125
+ type="type"
5126
+ ),
5047
5127
  topics_to_exclude=["topicsToExclude"]
5048
5128
  )
5049
5129
  )],
@@ -6738,6 +6818,13 @@ def _typecheckingstub__5867862d62f899b15989ba1bdfade827bc8239f7341776ead0babb821
6738
6818
  """Type checking stubs"""
6739
6819
  pass
6740
6820
 
6821
+ def _typecheckingstub__9f42794dadb7055f47c6b1d4ac38c1e97c2d772710d83250815945ce778bce1c(
6822
+ *,
6823
+ type: typing.Optional[builtins.str] = None,
6824
+ ) -> None:
6825
+ """Type checking stubs"""
6826
+ pass
6827
+
6741
6828
  def _typecheckingstub__0c30cafe96a0d51060e8bc61471dbbee1baf46133c8ecfbc997c5305121f3d6d(
6742
6829
  *,
6743
6830
  topics_to_replicate: typing.Sequence[builtins.str],
@@ -6745,6 +6832,7 @@ def _typecheckingstub__0c30cafe96a0d51060e8bc61471dbbee1baf46133c8ecfbc997c53051
6745
6832
  copy_topic_configurations: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
6746
6833
  detect_and_copy_new_topics: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
6747
6834
  starting_position: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnReplicator.ReplicationStartingPositionProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
6835
+ topic_name_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnReplicator.ReplicationTopicNameConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
6748
6836
  topics_to_exclude: typing.Optional[typing.Sequence[builtins.str]] = None,
6749
6837
  ) -> None:
6750
6838
  """Type checking stubs"""
@@ -33229,6 +33229,12 @@ class PostgresEngineVersion(
33229
33229
  '''Version "11.22-rds.20240509".'''
33230
33230
  return typing.cast("PostgresEngineVersion", jsii.sget(cls, "VER_11_22_RDS_20240509"))
33231
33231
 
33232
+ @jsii.python.classproperty
33233
+ @jsii.member(jsii_name="VER_11_22_RDS_20240808")
33234
+ def VER_11_22_RDS_20240808(cls) -> "PostgresEngineVersion":
33235
+ '''Version "11.22-rds.20240808".'''
33236
+ return typing.cast("PostgresEngineVersion", jsii.sget(cls, "VER_11_22_RDS_20240808"))
33237
+
33232
33238
  @jsii.python.classproperty
33233
33239
  @jsii.member(jsii_name="VER_11_4")
33234
33240
  def VER_11_4(cls) -> "PostgresEngineVersion":
@@ -18022,7 +18022,7 @@ class CfnModel(
18022
18022
  '''Describes the container, as part of model definition.
18023
18023
 
18024
18024
  :param container_hostname: This parameter is ignored for models that contain only a ``PrimaryContainer`` . When a ``ContainerDefinition`` is part of an inference pipeline, the value of the parameter uniquely identifies the container for the purposes of logging and metrics. For information, see `Use Logs and Metrics to Monitor an Inference Pipeline <https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipeline-logs-metrics.html>`_ . If you don't specify a value for this parameter for a ``ContainerDefinition`` that is part of an inference pipeline, a unique name is automatically assigned based on the position of the ``ContainerDefinition`` in the pipeline. If you specify a value for the ``ContainerHostName`` for any ``ContainerDefinition`` that is part of an inference pipeline, you must specify a value for the ``ContainerHostName`` parameter of every ``ContainerDefinition`` in that pipeline.
18025
- :param environment: The environment variables to set in the Docker container. The maximum length of each key and value in the ``Environment`` map is 1024 bytes. The maximum length of all keys and values in the map, combined, is 32 KB. If you pass multiple containers to a ``CreateModel`` request, then the maximum length of all of their maps, combined, is also 32 KB.
18025
+ :param environment: The environment variables to set in the Docker container. Don't include any sensitive data in your environment variables. The maximum length of each key and value in the ``Environment`` map is 1024 bytes. The maximum length of all keys and values in the map, combined, is 32 KB. If you pass multiple containers to a ``CreateModel`` request, then the maximum length of all of their maps, combined, is also 32 KB.
18026
18026
  :param image: The path where inference code is stored. This can be either in Amazon EC2 Container Registry or in a Docker registry that is accessible from the same VPC that you configure for your endpoint. If you are using your own custom algorithm instead of an algorithm provided by SageMaker, the inference code must meet SageMaker requirements. SageMaker supports both ``registry/repository[:tag]`` and ``registry/repository[@digest]`` image path formats. For more information, see `Using Your Own Algorithms with Amazon SageMaker <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html>`_ . .. epigraph:: The model artifacts in an Amazon S3 bucket and the Docker image for inference container in Amazon EC2 Container Registry must be in the same region as the model or endpoint you are creating.
18027
18027
  :param image_config: Specifies whether the model container is in Amazon ECR or a private Docker registry accessible from your Amazon Virtual Private Cloud (VPC). For information about storing containers in a private Docker registry, see `Use a Private Docker Registry for Real-Time Inference Containers <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-containers-inference-private.html>`_ . .. epigraph:: The model artifacts in an Amazon S3 bucket and the Docker image for inference container in Amazon EC2 Container Registry must be in the same region as the model or endpoint you are creating.
18028
18028
  :param inference_specification_name: The inference specification name in the model package version.
@@ -18126,7 +18126,7 @@ class CfnModel(
18126
18126
 
18127
18127
  @builtins.property
18128
18128
  def environment(self) -> typing.Any:
18129
- '''The environment variables to set in the Docker container.
18129
+ '''The environment variables to set in the Docker container. Don't include any sensitive data in your environment variables.
18130
18130
 
18131
18131
  The maximum length of each key and value in the ``Environment`` map is 1024 bytes. The maximum length of all keys and values in the map, combined, is 32 KB. If you pass multiple containers to a ``CreateModel`` request, then the maximum length of all of their maps, combined, is also 32 KB.
18132
18132