aws-cdk-lib 2.189.1__py3-none-any.whl → 2.191.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 (57) hide show
  1. aws_cdk/_jsii/__init__.py +1 -1
  2. aws_cdk/_jsii/{aws-cdk-lib@2.189.1.jsii.tgz → aws-cdk-lib@2.191.0.jsii.tgz} +0 -0
  3. aws_cdk/aws_acmpca/__init__.py +6 -6
  4. aws_cdk/aws_apigateway/__init__.py +18 -1
  5. aws_cdk/aws_apigatewayv2/__init__.py +374 -6
  6. aws_cdk/aws_applicationautoscaling/__init__.py +16 -10
  7. aws_cdk/aws_applicationsignals/__init__.py +204 -31
  8. aws_cdk/aws_aps/__init__.py +383 -2
  9. aws_cdk/aws_backup/__init__.py +0 -41
  10. aws_cdk/aws_batch/__init__.py +242 -5
  11. aws_cdk/aws_bedrock/__init__.py +963 -41
  12. aws_cdk/aws_cleanrooms/__init__.py +1392 -78
  13. aws_cdk/aws_cloudfront/__init__.py +1 -0
  14. aws_cdk/aws_cloudtrail/__init__.py +24 -26
  15. aws_cdk/aws_codebuild/__init__.py +107 -7
  16. aws_cdk/aws_datazone/__init__.py +23 -1
  17. aws_cdk/aws_dms/__init__.py +43 -0
  18. aws_cdk/aws_ec2/__init__.py +364 -30
  19. aws_cdk/aws_ecs/__init__.py +36 -5
  20. aws_cdk/aws_eks/__init__.py +2 -100
  21. aws_cdk/aws_elasticache/__init__.py +6 -11
  22. aws_cdk/aws_elasticloadbalancingv2/__init__.py +341 -0
  23. aws_cdk/aws_events/__init__.py +106 -13
  24. aws_cdk/aws_fsx/__init__.py +9 -21
  25. aws_cdk/aws_iam/__init__.py +1 -1
  26. aws_cdk/aws_iot/__init__.py +6 -6
  27. aws_cdk/aws_kafkaconnect/__init__.py +2 -2
  28. aws_cdk/aws_kinesis/__init__.py +44 -0
  29. aws_cdk/aws_launchwizard/__init__.py +49 -49
  30. aws_cdk/aws_lex/__init__.py +615 -39
  31. aws_cdk/aws_location/__init__.py +4 -4
  32. aws_cdk/aws_macie/__init__.py +14 -3
  33. aws_cdk/aws_memorydb/__init__.py +87 -0
  34. aws_cdk/aws_msk/__init__.py +226 -127
  35. aws_cdk/aws_neptune/__init__.py +0 -24
  36. aws_cdk/aws_opensearchservice/__init__.py +64 -56
  37. aws_cdk/aws_paymentcryptography/__init__.py +41 -0
  38. aws_cdk/aws_qbusiness/__init__.py +175 -3
  39. aws_cdk/aws_quicksight/__init__.py +393 -0
  40. aws_cdk/aws_rds/__init__.py +149 -120
  41. aws_cdk/aws_redshiftserverless/__init__.py +4 -14
  42. aws_cdk/aws_route53resolver/__init__.py +60 -9
  43. aws_cdk/aws_s3/__init__.py +34 -1
  44. aws_cdk/aws_s3_deployment/__init__.py +202 -5
  45. aws_cdk/aws_s3tables/__init__.py +142 -1
  46. aws_cdk/aws_sagemaker/__init__.py +40 -40
  47. aws_cdk/aws_ses/__init__.py +643 -18
  48. aws_cdk/aws_ssmquicksetup/__init__.py +3 -3
  49. aws_cdk/aws_stepfunctions/__init__.py +720 -45
  50. aws_cdk/aws_transfer/__init__.py +55 -2
  51. aws_cdk/pipelines/__init__.py +1 -2
  52. {aws_cdk_lib-2.189.1.dist-info → aws_cdk_lib-2.191.0.dist-info}/METADATA +1 -1
  53. {aws_cdk_lib-2.189.1.dist-info → aws_cdk_lib-2.191.0.dist-info}/RECORD +57 -57
  54. {aws_cdk_lib-2.189.1.dist-info → aws_cdk_lib-2.191.0.dist-info}/LICENSE +0 -0
  55. {aws_cdk_lib-2.189.1.dist-info → aws_cdk_lib-2.191.0.dist-info}/NOTICE +0 -0
  56. {aws_cdk_lib-2.189.1.dist-info → aws_cdk_lib-2.191.0.dist-info}/WHEEL +0 -0
  57. {aws_cdk_lib-2.189.1.dist-info → aws_cdk_lib-2.191.0.dist-info}/top_level.txt +0 -0
@@ -361,6 +361,31 @@ resource handler.
361
361
  > NOTE: a new AWS Lambda handler will be created in your stack for each combination
362
362
  > of memory and storage size.
363
363
 
364
+ ## JSON-Aware Source Processing
365
+
366
+ When using `Source.jsonData` with CDK Tokens (references to construct properties), you may need to enable the escaping option. This is particularly important when the referenced properties might contain special characters that require proper JSON escaping (like double quotes, line breaks, etc.).
367
+
368
+ ```python
369
+ # bucket: s3.Bucket
370
+ # param: ssm.StringParameter
371
+
372
+
373
+ # Example with a secret value that contains double quotes
374
+ deployment = s3deploy.BucketDeployment(self, "JsonDeployment",
375
+ sources=[
376
+ s3deploy.Source.json_data("config.json", {
377
+ "api_endpoint": "https://api.example.com",
378
+ "secret_value": param.string_value, # value with double quotes
379
+ "config": {
380
+ "enabled": True,
381
+ "features": ["feature1", "feature2"]
382
+ }
383
+ }, escape=True)
384
+ ],
385
+ destination_bucket=bucket
386
+ )
387
+ ```
388
+
364
389
  ## EFS Support
365
390
 
366
391
  If your workflow needs more disk space than default (512 MB) disk space, you may attach an EFS storage to underlying
@@ -1872,6 +1897,119 @@ class _ISourceProxy:
1872
1897
  typing.cast(typing.Any, ISource).__jsii_proxy_class__ = lambda : _ISourceProxy
1873
1898
 
1874
1899
 
1900
+ @jsii.data_type(
1901
+ jsii_type="aws-cdk-lib.aws_s3_deployment.JsonProcessingOptions",
1902
+ jsii_struct_bases=[],
1903
+ name_mapping={"escape": "escape"},
1904
+ )
1905
+ class JsonProcessingOptions:
1906
+ def __init__(self, *, escape: typing.Optional[builtins.bool] = None) -> None:
1907
+ '''Define options which can be passed using the method ``Source.jsonData()``.
1908
+
1909
+ :param escape: If set to ``true``, the marker substitution will make sure the value inserted in the file will be a valid JSON string. Default: - false
1910
+
1911
+ :exampleMetadata: infused
1912
+
1913
+ Example::
1914
+
1915
+ # bucket: s3.Bucket
1916
+ # param: ssm.StringParameter
1917
+
1918
+
1919
+ # Example with a secret value that contains double quotes
1920
+ deployment = s3deploy.BucketDeployment(self, "JsonDeployment",
1921
+ sources=[
1922
+ s3deploy.Source.json_data("config.json", {
1923
+ "api_endpoint": "https://api.example.com",
1924
+ "secret_value": param.string_value, # value with double quotes
1925
+ "config": {
1926
+ "enabled": True,
1927
+ "features": ["feature1", "feature2"]
1928
+ }
1929
+ }, escape=True)
1930
+ ],
1931
+ destination_bucket=bucket
1932
+ )
1933
+ '''
1934
+ if __debug__:
1935
+ type_hints = typing.get_type_hints(_typecheckingstub__fd3ea1f1e2f77d50d09982cb82214db60db317cbfc5d9891f173d39c88e742ff)
1936
+ check_type(argname="argument escape", value=escape, expected_type=type_hints["escape"])
1937
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
1938
+ if escape is not None:
1939
+ self._values["escape"] = escape
1940
+
1941
+ @builtins.property
1942
+ def escape(self) -> typing.Optional[builtins.bool]:
1943
+ '''If set to ``true``, the marker substitution will make sure the value inserted in the file will be a valid JSON string.
1944
+
1945
+ :default: - false
1946
+ '''
1947
+ result = self._values.get("escape")
1948
+ return typing.cast(typing.Optional[builtins.bool], result)
1949
+
1950
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
1951
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
1952
+
1953
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
1954
+ return not (rhs == self)
1955
+
1956
+ def __repr__(self) -> str:
1957
+ return "JsonProcessingOptions(%s)" % ", ".join(
1958
+ k + "=" + repr(v) for k, v in self._values.items()
1959
+ )
1960
+
1961
+
1962
+ @jsii.data_type(
1963
+ jsii_type="aws-cdk-lib.aws_s3_deployment.MarkersConfig",
1964
+ jsii_struct_bases=[],
1965
+ name_mapping={"json_escape": "jsonEscape"},
1966
+ )
1967
+ class MarkersConfig:
1968
+ def __init__(self, *, json_escape: typing.Optional[builtins.bool] = None) -> None:
1969
+ '''A configuration for markers substitution strategy.
1970
+
1971
+ :param json_escape: If set to ``true``, the marker substitution will make ure the value inserted in the file will be a valid JSON string. Default: - false
1972
+
1973
+ :exampleMetadata: fixture=_generated
1974
+
1975
+ Example::
1976
+
1977
+ # The code below shows an example of how to instantiate this type.
1978
+ # The values are placeholders you should change.
1979
+ from aws_cdk import aws_s3_deployment as s3_deployment
1980
+
1981
+ markers_config = s3_deployment.MarkersConfig(
1982
+ json_escape=False
1983
+ )
1984
+ '''
1985
+ if __debug__:
1986
+ type_hints = typing.get_type_hints(_typecheckingstub__c22b4c70cadefb9701fc5773d5fda6fec94ecfa3854d7d72003b50084bc4d20e)
1987
+ check_type(argname="argument json_escape", value=json_escape, expected_type=type_hints["json_escape"])
1988
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
1989
+ if json_escape is not None:
1990
+ self._values["json_escape"] = json_escape
1991
+
1992
+ @builtins.property
1993
+ def json_escape(self) -> typing.Optional[builtins.bool]:
1994
+ '''If set to ``true``, the marker substitution will make ure the value inserted in the file will be a valid JSON string.
1995
+
1996
+ :default: - false
1997
+ '''
1998
+ result = self._values.get("json_escape")
1999
+ return typing.cast(typing.Optional[builtins.bool], result)
2000
+
2001
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2002
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2003
+
2004
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2005
+ return not (rhs == self)
2006
+
2007
+ def __repr__(self) -> str:
2008
+ return "MarkersConfig(%s)" % ", ".join(
2009
+ k + "=" + repr(v) for k, v in self._values.items()
2010
+ )
2011
+
2012
+
1875
2013
  @jsii.enum(jsii_type="aws-cdk-lib.aws_s3_deployment.ServerSideEncryption")
1876
2014
  class ServerSideEncryption(enum.Enum):
1877
2015
  '''Indicates whether server-side encryption is enabled for the object, and whether that encryption is from the AWS Key Management Service (AWS KMS) or from Amazon S3 managed encryption (SSE-S3).
@@ -2038,7 +2176,13 @@ class Source(metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.aws_s3_deployment.S
2038
2176
 
2039
2177
  @jsii.member(jsii_name="data")
2040
2178
  @builtins.classmethod
2041
- def data(cls, object_key: builtins.str, data: builtins.str) -> ISource:
2179
+ def data(
2180
+ cls,
2181
+ object_key: builtins.str,
2182
+ data: builtins.str,
2183
+ *,
2184
+ json_escape: typing.Optional[builtins.bool] = None,
2185
+ ) -> ISource:
2042
2186
  '''Deploys an object with the specified string contents into the bucket.
2043
2187
 
2044
2188
  The
@@ -2050,16 +2194,25 @@ class Source(metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.aws_s3_deployment.S
2050
2194
 
2051
2195
  :param object_key: The destination S3 object key (relative to the root of the S3 deployment).
2052
2196
  :param data: The data to be stored in the object.
2197
+ :param json_escape: If set to ``true``, the marker substitution will make ure the value inserted in the file will be a valid JSON string. Default: - false
2053
2198
  '''
2054
2199
  if __debug__:
2055
2200
  type_hints = typing.get_type_hints(_typecheckingstub__798b55b643d389adf599acde4d214b0b843e07f8c7984ea0e848f2da7c62822c)
2056
2201
  check_type(argname="argument object_key", value=object_key, expected_type=type_hints["object_key"])
2057
2202
  check_type(argname="argument data", value=data, expected_type=type_hints["data"])
2058
- return typing.cast(ISource, jsii.sinvoke(cls, "data", [object_key, data]))
2203
+ markers_config = MarkersConfig(json_escape=json_escape)
2204
+
2205
+ return typing.cast(ISource, jsii.sinvoke(cls, "data", [object_key, data, markers_config]))
2059
2206
 
2060
2207
  @jsii.member(jsii_name="jsonData")
2061
2208
  @builtins.classmethod
2062
- def json_data(cls, object_key: builtins.str, obj: typing.Any) -> ISource:
2209
+ def json_data(
2210
+ cls,
2211
+ object_key: builtins.str,
2212
+ obj: typing.Any,
2213
+ *,
2214
+ escape: typing.Optional[builtins.bool] = None,
2215
+ ) -> ISource:
2063
2216
  '''Deploys an object with the specified JSON object into the bucket.
2064
2217
 
2065
2218
  The
@@ -2068,12 +2221,15 @@ class Source(metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.aws_s3_deployment.S
2068
2221
 
2069
2222
  :param object_key: The destination S3 object key (relative to the root of the S3 deployment).
2070
2223
  :param obj: A JSON object.
2224
+ :param escape: If set to ``true``, the marker substitution will make sure the value inserted in the file will be a valid JSON string. Default: - false
2071
2225
  '''
2072
2226
  if __debug__:
2073
2227
  type_hints = typing.get_type_hints(_typecheckingstub__34bf47f9cf16464b2d85173fbce8786a1afe889c23001b8c7575c49e0bf93ff9)
2074
2228
  check_type(argname="argument object_key", value=object_key, expected_type=type_hints["object_key"])
2075
2229
  check_type(argname="argument obj", value=obj, expected_type=type_hints["obj"])
2076
- return typing.cast(ISource, jsii.sinvoke(cls, "jsonData", [object_key, obj]))
2230
+ json_processing_options = JsonProcessingOptions(escape=escape)
2231
+
2232
+ return typing.cast(ISource, jsii.sinvoke(cls, "jsonData", [object_key, obj, json_processing_options]))
2077
2233
 
2078
2234
  @jsii.member(jsii_name="yamlData")
2079
2235
  @builtins.classmethod
@@ -2100,6 +2256,7 @@ class Source(metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.aws_s3_deployment.S
2100
2256
  "bucket": "bucket",
2101
2257
  "zip_object_key": "zipObjectKey",
2102
2258
  "markers": "markers",
2259
+ "markers_config": "markersConfig",
2103
2260
  },
2104
2261
  )
2105
2262
  class SourceConfig:
@@ -2109,12 +2266,14 @@ class SourceConfig:
2109
2266
  bucket: _IBucket_42e086fd,
2110
2267
  zip_object_key: builtins.str,
2111
2268
  markers: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
2269
+ markers_config: typing.Optional[typing.Union[MarkersConfig, typing.Dict[builtins.str, typing.Any]]] = None,
2112
2270
  ) -> None:
2113
2271
  '''Source information.
2114
2272
 
2115
2273
  :param bucket: The source bucket to deploy from.
2116
2274
  :param zip_object_key: An S3 object key in the source bucket that points to a zip file.
2117
2275
  :param markers: A set of markers to substitute in the source content. Default: - no markers
2276
+ :param markers_config: A configuration for markers substitution strategy. Default: - no configuration
2118
2277
 
2119
2278
  :exampleMetadata: fixture=_generated
2120
2279
 
@@ -2135,20 +2294,28 @@ class SourceConfig:
2135
2294
  # the properties below are optional
2136
2295
  markers={
2137
2296
  "markers_key": markers
2138
- }
2297
+ },
2298
+ markers_config=s3_deployment.MarkersConfig(
2299
+ json_escape=False
2300
+ )
2139
2301
  )
2140
2302
  '''
2303
+ if isinstance(markers_config, dict):
2304
+ markers_config = MarkersConfig(**markers_config)
2141
2305
  if __debug__:
2142
2306
  type_hints = typing.get_type_hints(_typecheckingstub__dafa1619bb92595ec0ff7aa95e55221719ed81eb6d2f7d44a84193d810c4265c)
2143
2307
  check_type(argname="argument bucket", value=bucket, expected_type=type_hints["bucket"])
2144
2308
  check_type(argname="argument zip_object_key", value=zip_object_key, expected_type=type_hints["zip_object_key"])
2145
2309
  check_type(argname="argument markers", value=markers, expected_type=type_hints["markers"])
2310
+ check_type(argname="argument markers_config", value=markers_config, expected_type=type_hints["markers_config"])
2146
2311
  self._values: typing.Dict[builtins.str, typing.Any] = {
2147
2312
  "bucket": bucket,
2148
2313
  "zip_object_key": zip_object_key,
2149
2314
  }
2150
2315
  if markers is not None:
2151
2316
  self._values["markers"] = markers
2317
+ if markers_config is not None:
2318
+ self._values["markers_config"] = markers_config
2152
2319
 
2153
2320
  @builtins.property
2154
2321
  def bucket(self) -> _IBucket_42e086fd:
@@ -2173,6 +2340,15 @@ class SourceConfig:
2173
2340
  result = self._values.get("markers")
2174
2341
  return typing.cast(typing.Optional[typing.Mapping[builtins.str, typing.Any]], result)
2175
2342
 
2343
+ @builtins.property
2344
+ def markers_config(self) -> typing.Optional[MarkersConfig]:
2345
+ '''A configuration for markers substitution strategy.
2346
+
2347
+ :default: - no configuration
2348
+ '''
2349
+ result = self._values.get("markers_config")
2350
+ return typing.cast(typing.Optional[MarkersConfig], result)
2351
+
2176
2352
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
2177
2353
  return isinstance(rhs, self.__class__) and rhs._values == self._values
2178
2354
 
@@ -2278,6 +2454,8 @@ __all__ = [
2278
2454
  "DeployTimeSubstitutedFileProps",
2279
2455
  "DeploymentSourceContext",
2280
2456
  "ISource",
2457
+ "JsonProcessingOptions",
2458
+ "MarkersConfig",
2281
2459
  "ServerSideEncryption",
2282
2460
  "Source",
2283
2461
  "SourceConfig",
@@ -2442,6 +2620,20 @@ def _typecheckingstub__09970416699f317cf422c30f785da12ff6ed72f1358bc0e3e4adcf6e6
2442
2620
  """Type checking stubs"""
2443
2621
  pass
2444
2622
 
2623
+ def _typecheckingstub__fd3ea1f1e2f77d50d09982cb82214db60db317cbfc5d9891f173d39c88e742ff(
2624
+ *,
2625
+ escape: typing.Optional[builtins.bool] = None,
2626
+ ) -> None:
2627
+ """Type checking stubs"""
2628
+ pass
2629
+
2630
+ def _typecheckingstub__c22b4c70cadefb9701fc5773d5fda6fec94ecfa3854d7d72003b50084bc4d20e(
2631
+ *,
2632
+ json_escape: typing.Optional[builtins.bool] = None,
2633
+ ) -> None:
2634
+ """Type checking stubs"""
2635
+ pass
2636
+
2445
2637
  def _typecheckingstub__fc877c69568cee7364ec77003356fc6818118602dda64adf3dbf38ff7eec10b2(
2446
2638
  path: builtins.str,
2447
2639
  *,
@@ -2469,6 +2661,8 @@ def _typecheckingstub__bcaba123a95f1aa9d99f9f5af319da23dd5f345454e757ba925736432
2469
2661
  def _typecheckingstub__798b55b643d389adf599acde4d214b0b843e07f8c7984ea0e848f2da7c62822c(
2470
2662
  object_key: builtins.str,
2471
2663
  data: builtins.str,
2664
+ *,
2665
+ json_escape: typing.Optional[builtins.bool] = None,
2472
2666
  ) -> None:
2473
2667
  """Type checking stubs"""
2474
2668
  pass
@@ -2476,6 +2670,8 @@ def _typecheckingstub__798b55b643d389adf599acde4d214b0b843e07f8c7984ea0e848f2da7
2476
2670
  def _typecheckingstub__34bf47f9cf16464b2d85173fbce8786a1afe889c23001b8c7575c49e0bf93ff9(
2477
2671
  object_key: builtins.str,
2478
2672
  obj: typing.Any,
2673
+ *,
2674
+ escape: typing.Optional[builtins.bool] = None,
2479
2675
  ) -> None:
2480
2676
  """Type checking stubs"""
2481
2677
  pass
@@ -2492,6 +2688,7 @@ def _typecheckingstub__dafa1619bb92595ec0ff7aa95e55221719ed81eb6d2f7d44a84193d81
2492
2688
  bucket: _IBucket_42e086fd,
2493
2689
  zip_object_key: builtins.str,
2494
2690
  markers: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
2691
+ markers_config: typing.Optional[typing.Union[MarkersConfig, typing.Dict[builtins.str, typing.Any]]] = None,
2495
2692
  ) -> None:
2496
2693
  """Type checking stubs"""
2497
2694
  pass
@@ -86,7 +86,8 @@ class CfnTableBucket(
86
86
 
87
87
  For more information, see `Creating a table bucket <https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets-create.html>`_ in the *Amazon Simple Storage Service User Guide* .
88
88
 
89
- - **Permissions** - You must have the ``s3tables:CreateTableBucket`` permission to use this operation.
89
+ - **Permissions** - - You must have the ``s3tables:CreateTableBucket`` permission to use this operation.
90
+ - If you use this operation with the optional ``encryptionConfiguration`` parameter you must have the ``s3tables:PutTableBucketEncryption`` permission.
90
91
 
91
92
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3tables-tablebucket.html
92
93
  :cloudformationResource: AWS::S3Tables::TableBucket
@@ -102,6 +103,10 @@ class CfnTableBucket(
102
103
  table_bucket_name="tableBucketName",
103
104
 
104
105
  # the properties below are optional
106
+ encryption_configuration=s3tables.CfnTableBucket.EncryptionConfigurationProperty(
107
+ kms_key_arn="kmsKeyArn",
108
+ sse_algorithm="sseAlgorithm"
109
+ ),
105
110
  unreferenced_file_removal=s3tables.CfnTableBucket.UnreferencedFileRemovalProperty(
106
111
  noncurrent_days=123,
107
112
  status="status",
@@ -116,12 +121,14 @@ class CfnTableBucket(
116
121
  id: builtins.str,
117
122
  *,
118
123
  table_bucket_name: builtins.str,
124
+ encryption_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnTableBucket.EncryptionConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
119
125
  unreferenced_file_removal: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnTableBucket.UnreferencedFileRemovalProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
120
126
  ) -> None:
121
127
  '''
122
128
  :param scope: Scope in which this resource is defined.
123
129
  :param id: Construct identifier for this resource (unique in its scope).
124
130
  :param table_bucket_name: The name for the table bucket.
131
+ :param encryption_configuration: Configuration specifying how data should be encrypted. This structure defines the encryption algorithm and optional KMS key to be used for server-side encryption.
125
132
  :param unreferenced_file_removal: The unreferenced file removal settings for your table bucket. Unreferenced file removal identifies and deletes all objects that are not referenced by any table snapshots. For more information, see the `*Amazon S3 User Guide* <https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-table-buckets-maintenance.html>`_ .
126
133
  '''
127
134
  if __debug__:
@@ -130,6 +137,7 @@ class CfnTableBucket(
130
137
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
131
138
  props = CfnTableBucketProps(
132
139
  table_bucket_name=table_bucket_name,
140
+ encryption_configuration=encryption_configuration,
133
141
  unreferenced_file_removal=unreferenced_file_removal,
134
142
  )
135
143
 
@@ -192,6 +200,24 @@ class CfnTableBucket(
192
200
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
193
201
  jsii.set(self, "tableBucketName", value) # pyright: ignore[reportArgumentType]
194
202
 
203
+ @builtins.property
204
+ @jsii.member(jsii_name="encryptionConfiguration")
205
+ def encryption_configuration(
206
+ self,
207
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnTableBucket.EncryptionConfigurationProperty"]]:
208
+ '''Configuration specifying how data should be encrypted.'''
209
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnTableBucket.EncryptionConfigurationProperty"]], jsii.get(self, "encryptionConfiguration"))
210
+
211
+ @encryption_configuration.setter
212
+ def encryption_configuration(
213
+ self,
214
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnTableBucket.EncryptionConfigurationProperty"]],
215
+ ) -> None:
216
+ if __debug__:
217
+ type_hints = typing.get_type_hints(_typecheckingstub__61499f569b4e5dc20b99defd26e29c6e9b7761b6630e1adec9c20e97e099dd4a)
218
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
219
+ jsii.set(self, "encryptionConfiguration", value) # pyright: ignore[reportArgumentType]
220
+
195
221
  @builtins.property
196
222
  @jsii.member(jsii_name="unreferencedFileRemoval")
197
223
  def unreferenced_file_removal(
@@ -210,6 +236,82 @@ class CfnTableBucket(
210
236
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
211
237
  jsii.set(self, "unreferencedFileRemoval", value) # pyright: ignore[reportArgumentType]
212
238
 
239
+ @jsii.data_type(
240
+ jsii_type="aws-cdk-lib.aws_s3tables.CfnTableBucket.EncryptionConfigurationProperty",
241
+ jsii_struct_bases=[],
242
+ name_mapping={"kms_key_arn": "kmsKeyArn", "sse_algorithm": "sseAlgorithm"},
243
+ )
244
+ class EncryptionConfigurationProperty:
245
+ def __init__(
246
+ self,
247
+ *,
248
+ kms_key_arn: typing.Optional[builtins.str] = None,
249
+ sse_algorithm: typing.Optional[builtins.str] = None,
250
+ ) -> None:
251
+ '''Configuration specifying how data should be encrypted.
252
+
253
+ This structure defines the encryption algorithm and optional KMS key to be used for server-side encryption.
254
+
255
+ :param kms_key_arn: The Amazon Resource Name (ARN) of the KMS key to use for encryption. This field is required only when ``sseAlgorithm`` is set to ``aws:kms`` .
256
+ :param sse_algorithm: The server-side encryption algorithm to use. Valid values are ``AES256`` for S3-managed encryption keys, or ``aws:kms`` for AWS KMS-managed encryption keys. If you choose SSE-KMS encryption you must grant the S3 Tables maintenance principal access to your KMS key. For more information, see `Permissions requirements for S3 Tables SSE-KMS encryption <https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-tables-kms-permissions.html>`_ .
257
+
258
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3tables-tablebucket-encryptionconfiguration.html
259
+ :exampleMetadata: fixture=_generated
260
+
261
+ Example::
262
+
263
+ # The code below shows an example of how to instantiate this type.
264
+ # The values are placeholders you should change.
265
+ from aws_cdk import aws_s3tables as s3tables
266
+
267
+ encryption_configuration_property = s3tables.CfnTableBucket.EncryptionConfigurationProperty(
268
+ kms_key_arn="kmsKeyArn",
269
+ sse_algorithm="sseAlgorithm"
270
+ )
271
+ '''
272
+ if __debug__:
273
+ type_hints = typing.get_type_hints(_typecheckingstub__659e946ab1ee4bc0eb13a519adc57d2cb4431347d47a9e6cb4d4086a87be1b2a)
274
+ check_type(argname="argument kms_key_arn", value=kms_key_arn, expected_type=type_hints["kms_key_arn"])
275
+ check_type(argname="argument sse_algorithm", value=sse_algorithm, expected_type=type_hints["sse_algorithm"])
276
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
277
+ if kms_key_arn is not None:
278
+ self._values["kms_key_arn"] = kms_key_arn
279
+ if sse_algorithm is not None:
280
+ self._values["sse_algorithm"] = sse_algorithm
281
+
282
+ @builtins.property
283
+ def kms_key_arn(self) -> typing.Optional[builtins.str]:
284
+ '''The Amazon Resource Name (ARN) of the KMS key to use for encryption.
285
+
286
+ This field is required only when ``sseAlgorithm`` is set to ``aws:kms`` .
287
+
288
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3tables-tablebucket-encryptionconfiguration.html#cfn-s3tables-tablebucket-encryptionconfiguration-kmskeyarn
289
+ '''
290
+ result = self._values.get("kms_key_arn")
291
+ return typing.cast(typing.Optional[builtins.str], result)
292
+
293
+ @builtins.property
294
+ def sse_algorithm(self) -> typing.Optional[builtins.str]:
295
+ '''The server-side encryption algorithm to use.
296
+
297
+ Valid values are ``AES256`` for S3-managed encryption keys, or ``aws:kms`` for AWS KMS-managed encryption keys. If you choose SSE-KMS encryption you must grant the S3 Tables maintenance principal access to your KMS key. For more information, see `Permissions requirements for S3 Tables SSE-KMS encryption <https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-tables-kms-permissions.html>`_ .
298
+
299
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3tables-tablebucket-encryptionconfiguration.html#cfn-s3tables-tablebucket-encryptionconfiguration-ssealgorithm
300
+ '''
301
+ result = self._values.get("sse_algorithm")
302
+ return typing.cast(typing.Optional[builtins.str], result)
303
+
304
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
305
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
306
+
307
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
308
+ return not (rhs == self)
309
+
310
+ def __repr__(self) -> str:
311
+ return "EncryptionConfigurationProperty(%s)" % ", ".join(
312
+ k + "=" + repr(v) for k, v in self._values.items()
313
+ )
314
+
213
315
  @jsii.data_type(
214
316
  jsii_type="aws-cdk-lib.aws_s3tables.CfnTableBucket.UnreferencedFileRemovalProperty",
215
317
  jsii_struct_bases=[],
@@ -500,6 +602,7 @@ class CfnTableBucketPolicyProps:
500
602
  jsii_struct_bases=[],
501
603
  name_mapping={
502
604
  "table_bucket_name": "tableBucketName",
605
+ "encryption_configuration": "encryptionConfiguration",
503
606
  "unreferenced_file_removal": "unreferencedFileRemoval",
504
607
  },
505
608
  )
@@ -508,11 +611,13 @@ class CfnTableBucketProps:
508
611
  self,
509
612
  *,
510
613
  table_bucket_name: builtins.str,
614
+ encryption_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnTableBucket.EncryptionConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
511
615
  unreferenced_file_removal: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnTableBucket.UnreferencedFileRemovalProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
512
616
  ) -> None:
513
617
  '''Properties for defining a ``CfnTableBucket``.
514
618
 
515
619
  :param table_bucket_name: The name for the table bucket.
620
+ :param encryption_configuration: Configuration specifying how data should be encrypted. This structure defines the encryption algorithm and optional KMS key to be used for server-side encryption.
516
621
  :param unreferenced_file_removal: The unreferenced file removal settings for your table bucket. Unreferenced file removal identifies and deletes all objects that are not referenced by any table snapshots. For more information, see the `*Amazon S3 User Guide* <https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-table-buckets-maintenance.html>`_ .
517
622
 
518
623
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3tables-tablebucket.html
@@ -528,6 +633,10 @@ class CfnTableBucketProps:
528
633
  table_bucket_name="tableBucketName",
529
634
 
530
635
  # the properties below are optional
636
+ encryption_configuration=s3tables.CfnTableBucket.EncryptionConfigurationProperty(
637
+ kms_key_arn="kmsKeyArn",
638
+ sse_algorithm="sseAlgorithm"
639
+ ),
531
640
  unreferenced_file_removal=s3tables.CfnTableBucket.UnreferencedFileRemovalProperty(
532
641
  noncurrent_days=123,
533
642
  status="status",
@@ -538,10 +647,13 @@ class CfnTableBucketProps:
538
647
  if __debug__:
539
648
  type_hints = typing.get_type_hints(_typecheckingstub__6fb9342a13c0e9f7b21679814e793d7ccc0964ccfe53bc5e0916676b628d20f3)
540
649
  check_type(argname="argument table_bucket_name", value=table_bucket_name, expected_type=type_hints["table_bucket_name"])
650
+ check_type(argname="argument encryption_configuration", value=encryption_configuration, expected_type=type_hints["encryption_configuration"])
541
651
  check_type(argname="argument unreferenced_file_removal", value=unreferenced_file_removal, expected_type=type_hints["unreferenced_file_removal"])
542
652
  self._values: typing.Dict[builtins.str, typing.Any] = {
543
653
  "table_bucket_name": table_bucket_name,
544
654
  }
655
+ if encryption_configuration is not None:
656
+ self._values["encryption_configuration"] = encryption_configuration
545
657
  if unreferenced_file_removal is not None:
546
658
  self._values["unreferenced_file_removal"] = unreferenced_file_removal
547
659
 
@@ -555,6 +667,19 @@ class CfnTableBucketProps:
555
667
  assert result is not None, "Required property 'table_bucket_name' is missing"
556
668
  return typing.cast(builtins.str, result)
557
669
 
670
+ @builtins.property
671
+ def encryption_configuration(
672
+ self,
673
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, CfnTableBucket.EncryptionConfigurationProperty]]:
674
+ '''Configuration specifying how data should be encrypted.
675
+
676
+ This structure defines the encryption algorithm and optional KMS key to be used for server-side encryption.
677
+
678
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3tables-tablebucket.html#cfn-s3tables-tablebucket-encryptionconfiguration
679
+ '''
680
+ result = self._values.get("encryption_configuration")
681
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, CfnTableBucket.EncryptionConfigurationProperty]], result)
682
+
558
683
  @builtins.property
559
684
  def unreferenced_file_removal(
560
685
  self,
@@ -594,6 +719,7 @@ def _typecheckingstub__de433918cd34eecbcaab0e81b6a287f71a48dd308c2f4d42e07a0e19c
594
719
  id: builtins.str,
595
720
  *,
596
721
  table_bucket_name: builtins.str,
722
+ encryption_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnTableBucket.EncryptionConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
597
723
  unreferenced_file_removal: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnTableBucket.UnreferencedFileRemovalProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
598
724
  ) -> None:
599
725
  """Type checking stubs"""
@@ -617,12 +743,26 @@ def _typecheckingstub__42ef5079e6a92822a2e6ccbb91b02661f493a7d44dc79dfba0916840d
617
743
  """Type checking stubs"""
618
744
  pass
619
745
 
746
+ def _typecheckingstub__61499f569b4e5dc20b99defd26e29c6e9b7761b6630e1adec9c20e97e099dd4a(
747
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, CfnTableBucket.EncryptionConfigurationProperty]],
748
+ ) -> None:
749
+ """Type checking stubs"""
750
+ pass
751
+
620
752
  def _typecheckingstub__02bf42691243dcbc8ea49c2499d3414260e70a80c4e38a371b64664c49f17e6e(
621
753
  value: typing.Optional[typing.Union[_IResolvable_da3f097b, CfnTableBucket.UnreferencedFileRemovalProperty]],
622
754
  ) -> None:
623
755
  """Type checking stubs"""
624
756
  pass
625
757
 
758
+ def _typecheckingstub__659e946ab1ee4bc0eb13a519adc57d2cb4431347d47a9e6cb4d4086a87be1b2a(
759
+ *,
760
+ kms_key_arn: typing.Optional[builtins.str] = None,
761
+ sse_algorithm: typing.Optional[builtins.str] = None,
762
+ ) -> None:
763
+ """Type checking stubs"""
764
+ pass
765
+
626
766
  def _typecheckingstub__e5a5e0b11a3cbe8be01a72f3ac6efc85af9472104c94585d26f630d3354c816b(
627
767
  *,
628
768
  noncurrent_days: typing.Optional[jsii.Number] = None,
@@ -677,6 +817,7 @@ def _typecheckingstub__df8972559ed3d0ff90d01d70d1cf8f77869398b91f03a408d49a7b5be
677
817
  def _typecheckingstub__6fb9342a13c0e9f7b21679814e793d7ccc0964ccfe53bc5e0916676b628d20f3(
678
818
  *,
679
819
  table_bucket_name: builtins.str,
820
+ encryption_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnTableBucket.EncryptionConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
680
821
  unreferenced_file_removal: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnTableBucket.UnreferencedFileRemovalProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
681
822
  ) -> None:
682
823
  """Type checking stubs"""