aws-cdk.aws-s3tables-alpha 2.208.0a0__py3-none-any.whl → 2.209.1a0__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.aws-s3tables-alpha might be problematic. Click here for more details.
- aws_cdk/aws_s3tables_alpha/__init__.py +1724 -42
- aws_cdk/aws_s3tables_alpha/_jsii/__init__.py +2 -2
- aws_cdk/aws_s3tables_alpha/_jsii/aws-s3tables-alpha@2.209.1-alpha.0.jsii.tgz +0 -0
- {aws_cdk_aws_s3tables_alpha-2.208.0a0.dist-info → aws_cdk_aws_s3tables_alpha-2.209.1a0.dist-info}/METADATA +55 -4
- aws_cdk_aws_s3tables_alpha-2.209.1a0.dist-info/RECORD +10 -0
- aws_cdk/aws_s3tables_alpha/_jsii/aws-s3tables-alpha@2.208.0-alpha.0.jsii.tgz +0 -0
- aws_cdk_aws_s3tables_alpha-2.208.0a0.dist-info/RECORD +0 -10
- {aws_cdk_aws_s3tables_alpha-2.208.0a0.dist-info → aws_cdk_aws_s3tables_alpha-2.209.1a0.dist-info}/LICENSE +0 -0
- {aws_cdk_aws_s3tables_alpha-2.208.0a0.dist-info → aws_cdk_aws_s3tables_alpha-2.209.1a0.dist-info}/NOTICE +0 -0
- {aws_cdk_aws_s3tables_alpha-2.208.0a0.dist-info → aws_cdk_aws_s3tables_alpha-2.209.1a0.dist-info}/WHEEL +0 -0
- {aws_cdk_aws_s3tables_alpha-2.208.0a0.dist-info → aws_cdk_aws_s3tables_alpha-2.209.1a0.dist-info}/top_level.txt +0 -0
|
@@ -38,6 +38,57 @@ sample_table_bucket = TableBucket(scope, "ExampleTableBucket",
|
|
|
38
38
|
)
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
+
### Define an S3 Tables Namespace
|
|
42
|
+
|
|
43
|
+
```python
|
|
44
|
+
# Build a namespace
|
|
45
|
+
sample_namespace = Namespace(scope, "ExampleNamespace",
|
|
46
|
+
namespace_name="example-namespace-1",
|
|
47
|
+
table_bucket=table_bucket
|
|
48
|
+
)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Define an S3 Table
|
|
52
|
+
|
|
53
|
+
```python
|
|
54
|
+
# Build a table
|
|
55
|
+
sample_table = Table(scope, "ExampleTable",
|
|
56
|
+
table_name="example_table",
|
|
57
|
+
namespace=namespace,
|
|
58
|
+
open_table_format=OpenTableFormat.ICEBERG,
|
|
59
|
+
without_metadata=True
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
# Build a table with an Iceberg Schema
|
|
63
|
+
sample_table_with_schema = Table(scope, "ExampleSchemaTable",
|
|
64
|
+
table_name="example_table_with_schema",
|
|
65
|
+
namespace=namespace,
|
|
66
|
+
open_table_format=OpenTableFormat.ICEBERG,
|
|
67
|
+
iceberg_metadata=IcebergMetadataProperty(
|
|
68
|
+
iceberg_schema=IcebergSchemaProperty(
|
|
69
|
+
schema_field_list=[SchemaFieldProperty(
|
|
70
|
+
name="id",
|
|
71
|
+
type="int",
|
|
72
|
+
required=True
|
|
73
|
+
), SchemaFieldProperty(
|
|
74
|
+
name="name",
|
|
75
|
+
type="string"
|
|
76
|
+
)
|
|
77
|
+
]
|
|
78
|
+
)
|
|
79
|
+
),
|
|
80
|
+
compaction=CompactionProperty(
|
|
81
|
+
status=Status.ENABLED,
|
|
82
|
+
target_file_size_mb=128
|
|
83
|
+
),
|
|
84
|
+
snapshot_management=SnapshotManagementProperty(
|
|
85
|
+
status=Status.ENABLED,
|
|
86
|
+
max_snapshot_age_hours=48,
|
|
87
|
+
min_snapshots_to_keep=5
|
|
88
|
+
)
|
|
89
|
+
)
|
|
90
|
+
```
|
|
91
|
+
|
|
41
92
|
Learn more about table buckets maintenance operations and default behavior from the [S3 Tables User Guide](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-table-buckets-maintenance.html)
|
|
42
93
|
|
|
43
94
|
### Controlling Table Bucket Permissions
|
|
@@ -109,8 +160,8 @@ encrypted_bucket_auto = TableBucket(scope, "EncryptedTableBucketAuto",
|
|
|
109
160
|
|
|
110
161
|
L2 Construct support for:
|
|
111
162
|
|
|
112
|
-
*
|
|
113
|
-
* Tables
|
|
163
|
+
* Table Policy
|
|
164
|
+
* KMS encryption support for Tables
|
|
114
165
|
'''
|
|
115
166
|
from pkgutil import extend_path
|
|
116
167
|
__path__ = extend_path(__path__, __name__)
|
|
@@ -150,6 +201,267 @@ import aws_cdk.aws_kms as _aws_cdk_aws_kms_ceddda9d
|
|
|
150
201
|
import constructs as _constructs_77d1e7e8
|
|
151
202
|
|
|
152
203
|
|
|
204
|
+
@jsii.data_type(
|
|
205
|
+
jsii_type="@aws-cdk/aws-s3tables-alpha.CompactionProperty",
|
|
206
|
+
jsii_struct_bases=[],
|
|
207
|
+
name_mapping={"status": "status", "target_file_size_mb": "targetFileSizeMb"},
|
|
208
|
+
)
|
|
209
|
+
class CompactionProperty:
|
|
210
|
+
def __init__(self, *, status: "Status", target_file_size_mb: jsii.Number) -> None:
|
|
211
|
+
'''(experimental) Settings governing the Compaction maintenance action.
|
|
212
|
+
|
|
213
|
+
:param status: (experimental) Status of the compaction maintenance action.
|
|
214
|
+
:param target_file_size_mb: (experimental) Target file size in megabytes for compaction.
|
|
215
|
+
|
|
216
|
+
:default: - No compaction settings
|
|
217
|
+
|
|
218
|
+
:stability: experimental
|
|
219
|
+
:exampleMetadata: infused
|
|
220
|
+
|
|
221
|
+
Example::
|
|
222
|
+
|
|
223
|
+
# Build a table
|
|
224
|
+
sample_table = Table(scope, "ExampleTable",
|
|
225
|
+
table_name="example_table",
|
|
226
|
+
namespace=namespace,
|
|
227
|
+
open_table_format=OpenTableFormat.ICEBERG,
|
|
228
|
+
without_metadata=True
|
|
229
|
+
)
|
|
230
|
+
|
|
231
|
+
# Build a table with an Iceberg Schema
|
|
232
|
+
sample_table_with_schema = Table(scope, "ExampleSchemaTable",
|
|
233
|
+
table_name="example_table_with_schema",
|
|
234
|
+
namespace=namespace,
|
|
235
|
+
open_table_format=OpenTableFormat.ICEBERG,
|
|
236
|
+
iceberg_metadata=IcebergMetadataProperty(
|
|
237
|
+
iceberg_schema=IcebergSchemaProperty(
|
|
238
|
+
schema_field_list=[SchemaFieldProperty(
|
|
239
|
+
name="id",
|
|
240
|
+
type="int",
|
|
241
|
+
required=True
|
|
242
|
+
), SchemaFieldProperty(
|
|
243
|
+
name="name",
|
|
244
|
+
type="string"
|
|
245
|
+
)
|
|
246
|
+
]
|
|
247
|
+
)
|
|
248
|
+
),
|
|
249
|
+
compaction=CompactionProperty(
|
|
250
|
+
status=Status.ENABLED,
|
|
251
|
+
target_file_size_mb=128
|
|
252
|
+
),
|
|
253
|
+
snapshot_management=SnapshotManagementProperty(
|
|
254
|
+
status=Status.ENABLED,
|
|
255
|
+
max_snapshot_age_hours=48,
|
|
256
|
+
min_snapshots_to_keep=5
|
|
257
|
+
)
|
|
258
|
+
)
|
|
259
|
+
'''
|
|
260
|
+
if __debug__:
|
|
261
|
+
type_hints = typing.get_type_hints(_typecheckingstub__ea606cde59917b73fdb198d73eabdbbe686fdbd73e01ef72284a9061ea612d80)
|
|
262
|
+
check_type(argname="argument status", value=status, expected_type=type_hints["status"])
|
|
263
|
+
check_type(argname="argument target_file_size_mb", value=target_file_size_mb, expected_type=type_hints["target_file_size_mb"])
|
|
264
|
+
self._values: typing.Dict[builtins.str, typing.Any] = {
|
|
265
|
+
"status": status,
|
|
266
|
+
"target_file_size_mb": target_file_size_mb,
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
@builtins.property
|
|
270
|
+
def status(self) -> "Status":
|
|
271
|
+
'''(experimental) Status of the compaction maintenance action.
|
|
272
|
+
|
|
273
|
+
:stability: experimental
|
|
274
|
+
'''
|
|
275
|
+
result = self._values.get("status")
|
|
276
|
+
assert result is not None, "Required property 'status' is missing"
|
|
277
|
+
return typing.cast("Status", result)
|
|
278
|
+
|
|
279
|
+
@builtins.property
|
|
280
|
+
def target_file_size_mb(self) -> jsii.Number:
|
|
281
|
+
'''(experimental) Target file size in megabytes for compaction.
|
|
282
|
+
|
|
283
|
+
:stability: experimental
|
|
284
|
+
'''
|
|
285
|
+
result = self._values.get("target_file_size_mb")
|
|
286
|
+
assert result is not None, "Required property 'target_file_size_mb' is missing"
|
|
287
|
+
return typing.cast(jsii.Number, result)
|
|
288
|
+
|
|
289
|
+
def __eq__(self, rhs: typing.Any) -> builtins.bool:
|
|
290
|
+
return isinstance(rhs, self.__class__) and rhs._values == self._values
|
|
291
|
+
|
|
292
|
+
def __ne__(self, rhs: typing.Any) -> builtins.bool:
|
|
293
|
+
return not (rhs == self)
|
|
294
|
+
|
|
295
|
+
def __repr__(self) -> str:
|
|
296
|
+
return "CompactionProperty(%s)" % ", ".join(
|
|
297
|
+
k + "=" + repr(v) for k, v in self._values.items()
|
|
298
|
+
)
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
@jsii.interface(jsii_type="@aws-cdk/aws-s3tables-alpha.INamespace")
|
|
302
|
+
class INamespace(_aws_cdk_ceddda9d.IResource, typing_extensions.Protocol):
|
|
303
|
+
'''(experimental) Represents an S3 Tables Namespace.
|
|
304
|
+
|
|
305
|
+
:stability: experimental
|
|
306
|
+
'''
|
|
307
|
+
|
|
308
|
+
@builtins.property
|
|
309
|
+
@jsii.member(jsii_name="namespaceName")
|
|
310
|
+
def namespace_name(self) -> builtins.str:
|
|
311
|
+
'''(experimental) The name of this namespace.
|
|
312
|
+
|
|
313
|
+
:stability: experimental
|
|
314
|
+
:attribute: true
|
|
315
|
+
'''
|
|
316
|
+
...
|
|
317
|
+
|
|
318
|
+
@builtins.property
|
|
319
|
+
@jsii.member(jsii_name="tableBucket")
|
|
320
|
+
def table_bucket(self) -> "ITableBucket":
|
|
321
|
+
'''(experimental) The table bucket which this namespace belongs to.
|
|
322
|
+
|
|
323
|
+
:stability: experimental
|
|
324
|
+
:attribute: true
|
|
325
|
+
'''
|
|
326
|
+
...
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
class _INamespaceProxy(
|
|
330
|
+
jsii.proxy_for(_aws_cdk_ceddda9d.IResource), # type: ignore[misc]
|
|
331
|
+
):
|
|
332
|
+
'''(experimental) Represents an S3 Tables Namespace.
|
|
333
|
+
|
|
334
|
+
:stability: experimental
|
|
335
|
+
'''
|
|
336
|
+
|
|
337
|
+
__jsii_type__: typing.ClassVar[str] = "@aws-cdk/aws-s3tables-alpha.INamespace"
|
|
338
|
+
|
|
339
|
+
@builtins.property
|
|
340
|
+
@jsii.member(jsii_name="namespaceName")
|
|
341
|
+
def namespace_name(self) -> builtins.str:
|
|
342
|
+
'''(experimental) The name of this namespace.
|
|
343
|
+
|
|
344
|
+
:stability: experimental
|
|
345
|
+
:attribute: true
|
|
346
|
+
'''
|
|
347
|
+
return typing.cast(builtins.str, jsii.get(self, "namespaceName"))
|
|
348
|
+
|
|
349
|
+
@builtins.property
|
|
350
|
+
@jsii.member(jsii_name="tableBucket")
|
|
351
|
+
def table_bucket(self) -> "ITableBucket":
|
|
352
|
+
'''(experimental) The table bucket which this namespace belongs to.
|
|
353
|
+
|
|
354
|
+
:stability: experimental
|
|
355
|
+
:attribute: true
|
|
356
|
+
'''
|
|
357
|
+
return typing.cast("ITableBucket", jsii.get(self, "tableBucket"))
|
|
358
|
+
|
|
359
|
+
# Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
|
|
360
|
+
typing.cast(typing.Any, INamespace).__jsii_proxy_class__ = lambda : _INamespaceProxy
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
@jsii.interface(jsii_type="@aws-cdk/aws-s3tables-alpha.ITable")
|
|
364
|
+
class ITable(_aws_cdk_ceddda9d.IResource, typing_extensions.Protocol):
|
|
365
|
+
'''(experimental) Represents an S3 Table.
|
|
366
|
+
|
|
367
|
+
:stability: experimental
|
|
368
|
+
'''
|
|
369
|
+
|
|
370
|
+
@builtins.property
|
|
371
|
+
@jsii.member(jsii_name="tableArn")
|
|
372
|
+
def table_arn(self) -> builtins.str:
|
|
373
|
+
'''(experimental) The ARN of this table.
|
|
374
|
+
|
|
375
|
+
:stability: experimental
|
|
376
|
+
:attribute: true
|
|
377
|
+
'''
|
|
378
|
+
...
|
|
379
|
+
|
|
380
|
+
@builtins.property
|
|
381
|
+
@jsii.member(jsii_name="tableName")
|
|
382
|
+
def table_name(self) -> builtins.str:
|
|
383
|
+
'''(experimental) The name of this table.
|
|
384
|
+
|
|
385
|
+
:stability: experimental
|
|
386
|
+
:attribute: true
|
|
387
|
+
'''
|
|
388
|
+
...
|
|
389
|
+
|
|
390
|
+
@builtins.property
|
|
391
|
+
@jsii.member(jsii_name="account")
|
|
392
|
+
def account(self) -> typing.Optional[builtins.str]:
|
|
393
|
+
'''(experimental) The accountId containing this table.
|
|
394
|
+
|
|
395
|
+
:stability: experimental
|
|
396
|
+
:attribute: true
|
|
397
|
+
'''
|
|
398
|
+
...
|
|
399
|
+
|
|
400
|
+
@builtins.property
|
|
401
|
+
@jsii.member(jsii_name="region")
|
|
402
|
+
def region(self) -> typing.Optional[builtins.str]:
|
|
403
|
+
'''(experimental) The region containing this table.
|
|
404
|
+
|
|
405
|
+
:stability: experimental
|
|
406
|
+
:attribute: true
|
|
407
|
+
'''
|
|
408
|
+
...
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
class _ITableProxy(
|
|
412
|
+
jsii.proxy_for(_aws_cdk_ceddda9d.IResource), # type: ignore[misc]
|
|
413
|
+
):
|
|
414
|
+
'''(experimental) Represents an S3 Table.
|
|
415
|
+
|
|
416
|
+
:stability: experimental
|
|
417
|
+
'''
|
|
418
|
+
|
|
419
|
+
__jsii_type__: typing.ClassVar[str] = "@aws-cdk/aws-s3tables-alpha.ITable"
|
|
420
|
+
|
|
421
|
+
@builtins.property
|
|
422
|
+
@jsii.member(jsii_name="tableArn")
|
|
423
|
+
def table_arn(self) -> builtins.str:
|
|
424
|
+
'''(experimental) The ARN of this table.
|
|
425
|
+
|
|
426
|
+
:stability: experimental
|
|
427
|
+
:attribute: true
|
|
428
|
+
'''
|
|
429
|
+
return typing.cast(builtins.str, jsii.get(self, "tableArn"))
|
|
430
|
+
|
|
431
|
+
@builtins.property
|
|
432
|
+
@jsii.member(jsii_name="tableName")
|
|
433
|
+
def table_name(self) -> builtins.str:
|
|
434
|
+
'''(experimental) The name of this table.
|
|
435
|
+
|
|
436
|
+
:stability: experimental
|
|
437
|
+
:attribute: true
|
|
438
|
+
'''
|
|
439
|
+
return typing.cast(builtins.str, jsii.get(self, "tableName"))
|
|
440
|
+
|
|
441
|
+
@builtins.property
|
|
442
|
+
@jsii.member(jsii_name="account")
|
|
443
|
+
def account(self) -> typing.Optional[builtins.str]:
|
|
444
|
+
'''(experimental) The accountId containing this table.
|
|
445
|
+
|
|
446
|
+
:stability: experimental
|
|
447
|
+
:attribute: true
|
|
448
|
+
'''
|
|
449
|
+
return typing.cast(typing.Optional[builtins.str], jsii.get(self, "account"))
|
|
450
|
+
|
|
451
|
+
@builtins.property
|
|
452
|
+
@jsii.member(jsii_name="region")
|
|
453
|
+
def region(self) -> typing.Optional[builtins.str]:
|
|
454
|
+
'''(experimental) The region containing this table.
|
|
455
|
+
|
|
456
|
+
:stability: experimental
|
|
457
|
+
:attribute: true
|
|
458
|
+
'''
|
|
459
|
+
return typing.cast(typing.Optional[builtins.str], jsii.get(self, "region"))
|
|
460
|
+
|
|
461
|
+
# Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
|
|
462
|
+
typing.cast(typing.Any, ITable).__jsii_proxy_class__ = lambda : _ITableProxy
|
|
463
|
+
|
|
464
|
+
|
|
153
465
|
@jsii.interface(jsii_type="@aws-cdk/aws-s3tables-alpha.ITableBucket")
|
|
154
466
|
class ITableBucket(_aws_cdk_ceddda9d.IResource, typing_extensions.Protocol):
|
|
155
467
|
'''(experimental) Interface definition for S3 Table Buckets.
|
|
@@ -388,63 +700,1066 @@ class _ITableBucketProxy(
|
|
|
388
700
|
If encryption is used, permission to use the key to decrypt the contents
|
|
389
701
|
of the bucket will also be granted to the same principal.
|
|
390
702
|
|
|
391
|
-
:param identity: The principal to allow read permissions to.
|
|
392
|
-
:param table_id: Allow the permissions to all tables using '*' or to single table by its unique ID.
|
|
703
|
+
:param identity: The principal to allow read permissions to.
|
|
704
|
+
:param table_id: Allow the permissions to all tables using '*' or to single table by its unique ID.
|
|
705
|
+
|
|
706
|
+
:stability: experimental
|
|
707
|
+
'''
|
|
708
|
+
if __debug__:
|
|
709
|
+
type_hints = typing.get_type_hints(_typecheckingstub__853d3e698d103ae1fe304d2239745ee798278fcd22f673c7ae8e9b33884c90a9)
|
|
710
|
+
check_type(argname="argument identity", value=identity, expected_type=type_hints["identity"])
|
|
711
|
+
check_type(argname="argument table_id", value=table_id, expected_type=type_hints["table_id"])
|
|
712
|
+
return typing.cast(_aws_cdk_aws_iam_ceddda9d.Grant, jsii.invoke(self, "grantRead", [identity, table_id]))
|
|
713
|
+
|
|
714
|
+
@jsii.member(jsii_name="grantReadWrite")
|
|
715
|
+
def grant_read_write(
|
|
716
|
+
self,
|
|
717
|
+
identity: _aws_cdk_aws_iam_ceddda9d.IGrantable,
|
|
718
|
+
table_id: builtins.str,
|
|
719
|
+
) -> _aws_cdk_aws_iam_ceddda9d.Grant:
|
|
720
|
+
'''(experimental) Grant read and write permissions for this table bucket and its tables to an IAM principal (Role/Group/User).
|
|
721
|
+
|
|
722
|
+
If encryption is used, permission to use the key to encrypt/decrypt the contents
|
|
723
|
+
of the bucket will also be granted to the same principal.
|
|
724
|
+
|
|
725
|
+
:param identity: The principal to allow read and write permissions to.
|
|
726
|
+
:param table_id: Allow the permissions to all tables using '*' or to single table by its unique ID.
|
|
727
|
+
|
|
728
|
+
:stability: experimental
|
|
729
|
+
'''
|
|
730
|
+
if __debug__:
|
|
731
|
+
type_hints = typing.get_type_hints(_typecheckingstub__1c9eb5186509f26b2c015223d6e2614c16cc34d5c2608ca3903b133360e23990)
|
|
732
|
+
check_type(argname="argument identity", value=identity, expected_type=type_hints["identity"])
|
|
733
|
+
check_type(argname="argument table_id", value=table_id, expected_type=type_hints["table_id"])
|
|
734
|
+
return typing.cast(_aws_cdk_aws_iam_ceddda9d.Grant, jsii.invoke(self, "grantReadWrite", [identity, table_id]))
|
|
735
|
+
|
|
736
|
+
@jsii.member(jsii_name="grantWrite")
|
|
737
|
+
def grant_write(
|
|
738
|
+
self,
|
|
739
|
+
identity: _aws_cdk_aws_iam_ceddda9d.IGrantable,
|
|
740
|
+
table_id: builtins.str,
|
|
741
|
+
) -> _aws_cdk_aws_iam_ceddda9d.Grant:
|
|
742
|
+
'''(experimental) Grant write permissions for this table bucket and its tables to an IAM principal (Role/Group/User).
|
|
743
|
+
|
|
744
|
+
If encryption is used, permission to use the key to encrypt the contents
|
|
745
|
+
of the bucket will also be granted to the same principal.
|
|
746
|
+
|
|
747
|
+
:param identity: The principal to allow write permissions to.
|
|
748
|
+
:param table_id: Allow the permissions to all tables using '*' or to single table by its unique ID.
|
|
749
|
+
|
|
750
|
+
:stability: experimental
|
|
751
|
+
'''
|
|
752
|
+
if __debug__:
|
|
753
|
+
type_hints = typing.get_type_hints(_typecheckingstub__65fa831e505e76e1fe23a8a8d8ce97bb97ebff683edbf67f37020df64c040fdb)
|
|
754
|
+
check_type(argname="argument identity", value=identity, expected_type=type_hints["identity"])
|
|
755
|
+
check_type(argname="argument table_id", value=table_id, expected_type=type_hints["table_id"])
|
|
756
|
+
return typing.cast(_aws_cdk_aws_iam_ceddda9d.Grant, jsii.invoke(self, "grantWrite", [identity, table_id]))
|
|
757
|
+
|
|
758
|
+
# Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
|
|
759
|
+
typing.cast(typing.Any, ITableBucket).__jsii_proxy_class__ = lambda : _ITableBucketProxy
|
|
760
|
+
|
|
761
|
+
|
|
762
|
+
@jsii.data_type(
|
|
763
|
+
jsii_type="@aws-cdk/aws-s3tables-alpha.IcebergMetadataProperty",
|
|
764
|
+
jsii_struct_bases=[],
|
|
765
|
+
name_mapping={"iceberg_schema": "icebergSchema"},
|
|
766
|
+
)
|
|
767
|
+
class IcebergMetadataProperty:
|
|
768
|
+
def __init__(
|
|
769
|
+
self,
|
|
770
|
+
*,
|
|
771
|
+
iceberg_schema: typing.Union["IcebergSchemaProperty", typing.Dict[builtins.str, typing.Any]],
|
|
772
|
+
) -> None:
|
|
773
|
+
'''(experimental) Contains details about the metadata for an Iceberg table.
|
|
774
|
+
|
|
775
|
+
:param iceberg_schema: (experimental) Contains details about the schema for an Iceberg table.
|
|
776
|
+
|
|
777
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3tables-table-icebergmetadata.html
|
|
778
|
+
:stability: experimental
|
|
779
|
+
:exampleMetadata: infused
|
|
780
|
+
|
|
781
|
+
Example::
|
|
782
|
+
|
|
783
|
+
# Build a table
|
|
784
|
+
sample_table = Table(scope, "ExampleTable",
|
|
785
|
+
table_name="example_table",
|
|
786
|
+
namespace=namespace,
|
|
787
|
+
open_table_format=OpenTableFormat.ICEBERG,
|
|
788
|
+
without_metadata=True
|
|
789
|
+
)
|
|
790
|
+
|
|
791
|
+
# Build a table with an Iceberg Schema
|
|
792
|
+
sample_table_with_schema = Table(scope, "ExampleSchemaTable",
|
|
793
|
+
table_name="example_table_with_schema",
|
|
794
|
+
namespace=namespace,
|
|
795
|
+
open_table_format=OpenTableFormat.ICEBERG,
|
|
796
|
+
iceberg_metadata=IcebergMetadataProperty(
|
|
797
|
+
iceberg_schema=IcebergSchemaProperty(
|
|
798
|
+
schema_field_list=[SchemaFieldProperty(
|
|
799
|
+
name="id",
|
|
800
|
+
type="int",
|
|
801
|
+
required=True
|
|
802
|
+
), SchemaFieldProperty(
|
|
803
|
+
name="name",
|
|
804
|
+
type="string"
|
|
805
|
+
)
|
|
806
|
+
]
|
|
807
|
+
)
|
|
808
|
+
),
|
|
809
|
+
compaction=CompactionProperty(
|
|
810
|
+
status=Status.ENABLED,
|
|
811
|
+
target_file_size_mb=128
|
|
812
|
+
),
|
|
813
|
+
snapshot_management=SnapshotManagementProperty(
|
|
814
|
+
status=Status.ENABLED,
|
|
815
|
+
max_snapshot_age_hours=48,
|
|
816
|
+
min_snapshots_to_keep=5
|
|
817
|
+
)
|
|
818
|
+
)
|
|
819
|
+
'''
|
|
820
|
+
if isinstance(iceberg_schema, dict):
|
|
821
|
+
iceberg_schema = IcebergSchemaProperty(**iceberg_schema)
|
|
822
|
+
if __debug__:
|
|
823
|
+
type_hints = typing.get_type_hints(_typecheckingstub__f8230e6a4eadd2193ba7389b1a23bde451e68a07c19bcda56cba1c321d75d5f0)
|
|
824
|
+
check_type(argname="argument iceberg_schema", value=iceberg_schema, expected_type=type_hints["iceberg_schema"])
|
|
825
|
+
self._values: typing.Dict[builtins.str, typing.Any] = {
|
|
826
|
+
"iceberg_schema": iceberg_schema,
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
@builtins.property
|
|
830
|
+
def iceberg_schema(self) -> "IcebergSchemaProperty":
|
|
831
|
+
'''(experimental) Contains details about the schema for an Iceberg table.
|
|
832
|
+
|
|
833
|
+
:see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3tables-table-icebergmetadata.html#cfn-s3tables-table-icebergmetadata-icebergschema
|
|
834
|
+
:stability: experimental
|
|
835
|
+
'''
|
|
836
|
+
result = self._values.get("iceberg_schema")
|
|
837
|
+
assert result is not None, "Required property 'iceberg_schema' is missing"
|
|
838
|
+
return typing.cast("IcebergSchemaProperty", result)
|
|
839
|
+
|
|
840
|
+
def __eq__(self, rhs: typing.Any) -> builtins.bool:
|
|
841
|
+
return isinstance(rhs, self.__class__) and rhs._values == self._values
|
|
842
|
+
|
|
843
|
+
def __ne__(self, rhs: typing.Any) -> builtins.bool:
|
|
844
|
+
return not (rhs == self)
|
|
845
|
+
|
|
846
|
+
def __repr__(self) -> str:
|
|
847
|
+
return "IcebergMetadataProperty(%s)" % ", ".join(
|
|
848
|
+
k + "=" + repr(v) for k, v in self._values.items()
|
|
849
|
+
)
|
|
850
|
+
|
|
851
|
+
|
|
852
|
+
@jsii.data_type(
|
|
853
|
+
jsii_type="@aws-cdk/aws-s3tables-alpha.IcebergSchemaProperty",
|
|
854
|
+
jsii_struct_bases=[],
|
|
855
|
+
name_mapping={"schema_field_list": "schemaFieldList"},
|
|
856
|
+
)
|
|
857
|
+
class IcebergSchemaProperty:
|
|
858
|
+
def __init__(
|
|
859
|
+
self,
|
|
860
|
+
*,
|
|
861
|
+
schema_field_list: typing.Sequence[typing.Union["SchemaFieldProperty", typing.Dict[builtins.str, typing.Any]]],
|
|
862
|
+
) -> None:
|
|
863
|
+
'''(experimental) Contains details about the schema for an Iceberg table.
|
|
864
|
+
|
|
865
|
+
:param schema_field_list: (experimental) Contains details about the schema for an Iceberg table.
|
|
866
|
+
|
|
867
|
+
:stability: experimental
|
|
868
|
+
:exampleMetadata: infused
|
|
869
|
+
|
|
870
|
+
Example::
|
|
871
|
+
|
|
872
|
+
# Build a table
|
|
873
|
+
sample_table = Table(scope, "ExampleTable",
|
|
874
|
+
table_name="example_table",
|
|
875
|
+
namespace=namespace,
|
|
876
|
+
open_table_format=OpenTableFormat.ICEBERG,
|
|
877
|
+
without_metadata=True
|
|
878
|
+
)
|
|
879
|
+
|
|
880
|
+
# Build a table with an Iceberg Schema
|
|
881
|
+
sample_table_with_schema = Table(scope, "ExampleSchemaTable",
|
|
882
|
+
table_name="example_table_with_schema",
|
|
883
|
+
namespace=namespace,
|
|
884
|
+
open_table_format=OpenTableFormat.ICEBERG,
|
|
885
|
+
iceberg_metadata=IcebergMetadataProperty(
|
|
886
|
+
iceberg_schema=IcebergSchemaProperty(
|
|
887
|
+
schema_field_list=[SchemaFieldProperty(
|
|
888
|
+
name="id",
|
|
889
|
+
type="int",
|
|
890
|
+
required=True
|
|
891
|
+
), SchemaFieldProperty(
|
|
892
|
+
name="name",
|
|
893
|
+
type="string"
|
|
894
|
+
)
|
|
895
|
+
]
|
|
896
|
+
)
|
|
897
|
+
),
|
|
898
|
+
compaction=CompactionProperty(
|
|
899
|
+
status=Status.ENABLED,
|
|
900
|
+
target_file_size_mb=128
|
|
901
|
+
),
|
|
902
|
+
snapshot_management=SnapshotManagementProperty(
|
|
903
|
+
status=Status.ENABLED,
|
|
904
|
+
max_snapshot_age_hours=48,
|
|
905
|
+
min_snapshots_to_keep=5
|
|
906
|
+
)
|
|
907
|
+
)
|
|
908
|
+
'''
|
|
909
|
+
if __debug__:
|
|
910
|
+
type_hints = typing.get_type_hints(_typecheckingstub__f4da2961c1ead632b855491f63cf76c4886c0e7a3d1795c1533655124a5dccb6)
|
|
911
|
+
check_type(argname="argument schema_field_list", value=schema_field_list, expected_type=type_hints["schema_field_list"])
|
|
912
|
+
self._values: typing.Dict[builtins.str, typing.Any] = {
|
|
913
|
+
"schema_field_list": schema_field_list,
|
|
914
|
+
}
|
|
915
|
+
|
|
916
|
+
@builtins.property
|
|
917
|
+
def schema_field_list(self) -> typing.List["SchemaFieldProperty"]:
|
|
918
|
+
'''(experimental) Contains details about the schema for an Iceberg table.
|
|
919
|
+
|
|
920
|
+
:stability: experimental
|
|
921
|
+
'''
|
|
922
|
+
result = self._values.get("schema_field_list")
|
|
923
|
+
assert result is not None, "Required property 'schema_field_list' is missing"
|
|
924
|
+
return typing.cast(typing.List["SchemaFieldProperty"], result)
|
|
925
|
+
|
|
926
|
+
def __eq__(self, rhs: typing.Any) -> builtins.bool:
|
|
927
|
+
return isinstance(rhs, self.__class__) and rhs._values == self._values
|
|
928
|
+
|
|
929
|
+
def __ne__(self, rhs: typing.Any) -> builtins.bool:
|
|
930
|
+
return not (rhs == self)
|
|
931
|
+
|
|
932
|
+
def __repr__(self) -> str:
|
|
933
|
+
return "IcebergSchemaProperty(%s)" % ", ".join(
|
|
934
|
+
k + "=" + repr(v) for k, v in self._values.items()
|
|
935
|
+
)
|
|
936
|
+
|
|
937
|
+
|
|
938
|
+
@jsii.implements(INamespace)
|
|
939
|
+
class Namespace(
|
|
940
|
+
_aws_cdk_ceddda9d.Resource,
|
|
941
|
+
metaclass=jsii.JSIIMeta,
|
|
942
|
+
jsii_type="@aws-cdk/aws-s3tables-alpha.Namespace",
|
|
943
|
+
):
|
|
944
|
+
'''(experimental) An S3 Tables Namespace with helpers.
|
|
945
|
+
|
|
946
|
+
A namespace is a logical container for tables within a table bucket.
|
|
947
|
+
|
|
948
|
+
:stability: experimental
|
|
949
|
+
:exampleMetadata: infused
|
|
950
|
+
|
|
951
|
+
Example::
|
|
952
|
+
|
|
953
|
+
# Build a namespace
|
|
954
|
+
sample_namespace = Namespace(scope, "ExampleNamespace",
|
|
955
|
+
namespace_name="example-namespace-1",
|
|
956
|
+
table_bucket=table_bucket
|
|
957
|
+
)
|
|
958
|
+
'''
|
|
959
|
+
|
|
960
|
+
def __init__(
|
|
961
|
+
self,
|
|
962
|
+
scope: _constructs_77d1e7e8.Construct,
|
|
963
|
+
id: builtins.str,
|
|
964
|
+
*,
|
|
965
|
+
namespace_name: builtins.str,
|
|
966
|
+
table_bucket: ITableBucket,
|
|
967
|
+
removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
|
|
968
|
+
) -> None:
|
|
969
|
+
'''
|
|
970
|
+
:param scope: -
|
|
971
|
+
:param id: -
|
|
972
|
+
:param namespace_name: (experimental) A name for the namespace.
|
|
973
|
+
:param table_bucket: (experimental) The table bucket this namespace belongs to.
|
|
974
|
+
:param removal_policy: (experimental) Policy to apply when the policy is removed from this stack. Default: RemovalPolicy.DESTROY
|
|
975
|
+
|
|
976
|
+
:stability: experimental
|
|
977
|
+
'''
|
|
978
|
+
if __debug__:
|
|
979
|
+
type_hints = typing.get_type_hints(_typecheckingstub__ea3444f2b1f25cee0bac27bf1e4c044f18ded5f025356448c35a47f4611915d5)
|
|
980
|
+
check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
|
|
981
|
+
check_type(argname="argument id", value=id, expected_type=type_hints["id"])
|
|
982
|
+
props = NamespaceProps(
|
|
983
|
+
namespace_name=namespace_name,
|
|
984
|
+
table_bucket=table_bucket,
|
|
985
|
+
removal_policy=removal_policy,
|
|
986
|
+
)
|
|
987
|
+
|
|
988
|
+
jsii.create(self.__class__, self, [scope, id, props])
|
|
989
|
+
|
|
990
|
+
@jsii.member(jsii_name="fromNamespaceAttributes")
|
|
991
|
+
@builtins.classmethod
|
|
992
|
+
def from_namespace_attributes(
|
|
993
|
+
cls,
|
|
994
|
+
scope: _constructs_77d1e7e8.Construct,
|
|
995
|
+
id: builtins.str,
|
|
996
|
+
*,
|
|
997
|
+
namespace_name: builtins.str,
|
|
998
|
+
table_bucket: ITableBucket,
|
|
999
|
+
) -> INamespace:
|
|
1000
|
+
'''(experimental) Import an existing namespace from its attributes.
|
|
1001
|
+
|
|
1002
|
+
:param scope: -
|
|
1003
|
+
:param id: -
|
|
1004
|
+
:param namespace_name: (experimental) The name of the namespace.
|
|
1005
|
+
:param table_bucket: (experimental) The table bucket this namespace belongs to.
|
|
1006
|
+
|
|
1007
|
+
:stability: experimental
|
|
1008
|
+
'''
|
|
1009
|
+
if __debug__:
|
|
1010
|
+
type_hints = typing.get_type_hints(_typecheckingstub__429e6100662356607de36bc4f09397c07482d4becdff99cdf1257c1b95547276)
|
|
1011
|
+
check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
|
|
1012
|
+
check_type(argname="argument id", value=id, expected_type=type_hints["id"])
|
|
1013
|
+
attrs = NamespaceAttributes(
|
|
1014
|
+
namespace_name=namespace_name, table_bucket=table_bucket
|
|
1015
|
+
)
|
|
1016
|
+
|
|
1017
|
+
return typing.cast(INamespace, jsii.sinvoke(cls, "fromNamespaceAttributes", [scope, id, attrs]))
|
|
1018
|
+
|
|
1019
|
+
@jsii.member(jsii_name="validateNamespaceName")
|
|
1020
|
+
@builtins.classmethod
|
|
1021
|
+
def validate_namespace_name(cls, namespace_name: builtins.str) -> None:
|
|
1022
|
+
'''(experimental) See https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets-naming.html.
|
|
1023
|
+
|
|
1024
|
+
:param namespace_name: Name of the namespace.
|
|
1025
|
+
|
|
1026
|
+
:stability: experimental
|
|
1027
|
+
:throws: UnscopedValidationError if any naming errors are detected
|
|
1028
|
+
'''
|
|
1029
|
+
if __debug__:
|
|
1030
|
+
type_hints = typing.get_type_hints(_typecheckingstub__4a07351eb257958d2290e548252c46a7c8963c7bc2f700e83671f819e4b7dbd5)
|
|
1031
|
+
check_type(argname="argument namespace_name", value=namespace_name, expected_type=type_hints["namespace_name"])
|
|
1032
|
+
return typing.cast(None, jsii.sinvoke(cls, "validateNamespaceName", [namespace_name]))
|
|
1033
|
+
|
|
1034
|
+
@jsii.python.classproperty
|
|
1035
|
+
@jsii.member(jsii_name="PROPERTY_INJECTION_ID")
|
|
1036
|
+
def PROPERTY_INJECTION_ID(cls) -> builtins.str:
|
|
1037
|
+
'''(experimental) Uniquely identifies this class.
|
|
1038
|
+
|
|
1039
|
+
:stability: experimental
|
|
1040
|
+
'''
|
|
1041
|
+
return typing.cast(builtins.str, jsii.sget(cls, "PROPERTY_INJECTION_ID"))
|
|
1042
|
+
|
|
1043
|
+
@builtins.property
|
|
1044
|
+
@jsii.member(jsii_name="namespaceName")
|
|
1045
|
+
def namespace_name(self) -> builtins.str:
|
|
1046
|
+
'''(experimental) The name of this namespace.
|
|
1047
|
+
|
|
1048
|
+
:stability: experimental
|
|
1049
|
+
'''
|
|
1050
|
+
return typing.cast(builtins.str, jsii.get(self, "namespaceName"))
|
|
1051
|
+
|
|
1052
|
+
@builtins.property
|
|
1053
|
+
@jsii.member(jsii_name="tableBucket")
|
|
1054
|
+
def table_bucket(self) -> ITableBucket:
|
|
1055
|
+
'''(experimental) The table bucket which this namespace belongs to.
|
|
1056
|
+
|
|
1057
|
+
:stability: experimental
|
|
1058
|
+
'''
|
|
1059
|
+
return typing.cast(ITableBucket, jsii.get(self, "tableBucket"))
|
|
1060
|
+
|
|
1061
|
+
|
|
1062
|
+
@jsii.data_type(
|
|
1063
|
+
jsii_type="@aws-cdk/aws-s3tables-alpha.NamespaceAttributes",
|
|
1064
|
+
jsii_struct_bases=[],
|
|
1065
|
+
name_mapping={"namespace_name": "namespaceName", "table_bucket": "tableBucket"},
|
|
1066
|
+
)
|
|
1067
|
+
class NamespaceAttributes:
|
|
1068
|
+
def __init__(
|
|
1069
|
+
self,
|
|
1070
|
+
*,
|
|
1071
|
+
namespace_name: builtins.str,
|
|
1072
|
+
table_bucket: ITableBucket,
|
|
1073
|
+
) -> None:
|
|
1074
|
+
'''(experimental) Attributes for importing an existing namespace.
|
|
1075
|
+
|
|
1076
|
+
:param namespace_name: (experimental) The name of the namespace.
|
|
1077
|
+
:param table_bucket: (experimental) The table bucket this namespace belongs to.
|
|
1078
|
+
|
|
1079
|
+
:stability: experimental
|
|
1080
|
+
:exampleMetadata: fixture=_generated
|
|
1081
|
+
|
|
1082
|
+
Example::
|
|
1083
|
+
|
|
1084
|
+
# The code below shows an example of how to instantiate this type.
|
|
1085
|
+
# The values are placeholders you should change.
|
|
1086
|
+
import aws_cdk.aws_s3tables_alpha as s3tables_alpha
|
|
1087
|
+
|
|
1088
|
+
# table_bucket: s3tables_alpha.TableBucket
|
|
1089
|
+
|
|
1090
|
+
namespace_attributes = s3tables_alpha.NamespaceAttributes(
|
|
1091
|
+
namespace_name="namespaceName",
|
|
1092
|
+
table_bucket=table_bucket
|
|
1093
|
+
)
|
|
1094
|
+
'''
|
|
1095
|
+
if __debug__:
|
|
1096
|
+
type_hints = typing.get_type_hints(_typecheckingstub__8f79f8c2998fe357462fbff82a75e82ed3236dd34caffcf6f6267cffcdda3275)
|
|
1097
|
+
check_type(argname="argument namespace_name", value=namespace_name, expected_type=type_hints["namespace_name"])
|
|
1098
|
+
check_type(argname="argument table_bucket", value=table_bucket, expected_type=type_hints["table_bucket"])
|
|
1099
|
+
self._values: typing.Dict[builtins.str, typing.Any] = {
|
|
1100
|
+
"namespace_name": namespace_name,
|
|
1101
|
+
"table_bucket": table_bucket,
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
@builtins.property
|
|
1105
|
+
def namespace_name(self) -> builtins.str:
|
|
1106
|
+
'''(experimental) The name of the namespace.
|
|
1107
|
+
|
|
1108
|
+
:stability: experimental
|
|
1109
|
+
'''
|
|
1110
|
+
result = self._values.get("namespace_name")
|
|
1111
|
+
assert result is not None, "Required property 'namespace_name' is missing"
|
|
1112
|
+
return typing.cast(builtins.str, result)
|
|
1113
|
+
|
|
1114
|
+
@builtins.property
|
|
1115
|
+
def table_bucket(self) -> ITableBucket:
|
|
1116
|
+
'''(experimental) The table bucket this namespace belongs to.
|
|
1117
|
+
|
|
1118
|
+
:stability: experimental
|
|
1119
|
+
'''
|
|
1120
|
+
result = self._values.get("table_bucket")
|
|
1121
|
+
assert result is not None, "Required property 'table_bucket' is missing"
|
|
1122
|
+
return typing.cast(ITableBucket, result)
|
|
1123
|
+
|
|
1124
|
+
def __eq__(self, rhs: typing.Any) -> builtins.bool:
|
|
1125
|
+
return isinstance(rhs, self.__class__) and rhs._values == self._values
|
|
1126
|
+
|
|
1127
|
+
def __ne__(self, rhs: typing.Any) -> builtins.bool:
|
|
1128
|
+
return not (rhs == self)
|
|
1129
|
+
|
|
1130
|
+
def __repr__(self) -> str:
|
|
1131
|
+
return "NamespaceAttributes(%s)" % ", ".join(
|
|
1132
|
+
k + "=" + repr(v) for k, v in self._values.items()
|
|
1133
|
+
)
|
|
1134
|
+
|
|
1135
|
+
|
|
1136
|
+
@jsii.data_type(
|
|
1137
|
+
jsii_type="@aws-cdk/aws-s3tables-alpha.NamespaceProps",
|
|
1138
|
+
jsii_struct_bases=[],
|
|
1139
|
+
name_mapping={
|
|
1140
|
+
"namespace_name": "namespaceName",
|
|
1141
|
+
"table_bucket": "tableBucket",
|
|
1142
|
+
"removal_policy": "removalPolicy",
|
|
1143
|
+
},
|
|
1144
|
+
)
|
|
1145
|
+
class NamespaceProps:
|
|
1146
|
+
def __init__(
|
|
1147
|
+
self,
|
|
1148
|
+
*,
|
|
1149
|
+
namespace_name: builtins.str,
|
|
1150
|
+
table_bucket: ITableBucket,
|
|
1151
|
+
removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
|
|
1152
|
+
) -> None:
|
|
1153
|
+
'''(experimental) Parameters for constructing a Namespace.
|
|
1154
|
+
|
|
1155
|
+
:param namespace_name: (experimental) A name for the namespace.
|
|
1156
|
+
:param table_bucket: (experimental) The table bucket this namespace belongs to.
|
|
1157
|
+
:param removal_policy: (experimental) Policy to apply when the policy is removed from this stack. Default: RemovalPolicy.DESTROY
|
|
1158
|
+
|
|
1159
|
+
:stability: experimental
|
|
1160
|
+
:exampleMetadata: infused
|
|
1161
|
+
|
|
1162
|
+
Example::
|
|
1163
|
+
|
|
1164
|
+
# Build a namespace
|
|
1165
|
+
sample_namespace = Namespace(scope, "ExampleNamespace",
|
|
1166
|
+
namespace_name="example-namespace-1",
|
|
1167
|
+
table_bucket=table_bucket
|
|
1168
|
+
)
|
|
1169
|
+
'''
|
|
1170
|
+
if __debug__:
|
|
1171
|
+
type_hints = typing.get_type_hints(_typecheckingstub__fd18f87a98f23ccaea0f0c36db6b294de2ffbbb509594c9bfa49f26b6b0d0e7a)
|
|
1172
|
+
check_type(argname="argument namespace_name", value=namespace_name, expected_type=type_hints["namespace_name"])
|
|
1173
|
+
check_type(argname="argument table_bucket", value=table_bucket, expected_type=type_hints["table_bucket"])
|
|
1174
|
+
check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
|
|
1175
|
+
self._values: typing.Dict[builtins.str, typing.Any] = {
|
|
1176
|
+
"namespace_name": namespace_name,
|
|
1177
|
+
"table_bucket": table_bucket,
|
|
1178
|
+
}
|
|
1179
|
+
if removal_policy is not None:
|
|
1180
|
+
self._values["removal_policy"] = removal_policy
|
|
1181
|
+
|
|
1182
|
+
@builtins.property
|
|
1183
|
+
def namespace_name(self) -> builtins.str:
|
|
1184
|
+
'''(experimental) A name for the namespace.
|
|
1185
|
+
|
|
1186
|
+
:stability: experimental
|
|
1187
|
+
'''
|
|
1188
|
+
result = self._values.get("namespace_name")
|
|
1189
|
+
assert result is not None, "Required property 'namespace_name' is missing"
|
|
1190
|
+
return typing.cast(builtins.str, result)
|
|
1191
|
+
|
|
1192
|
+
@builtins.property
|
|
1193
|
+
def table_bucket(self) -> ITableBucket:
|
|
1194
|
+
'''(experimental) The table bucket this namespace belongs to.
|
|
1195
|
+
|
|
1196
|
+
:stability: experimental
|
|
1197
|
+
'''
|
|
1198
|
+
result = self._values.get("table_bucket")
|
|
1199
|
+
assert result is not None, "Required property 'table_bucket' is missing"
|
|
1200
|
+
return typing.cast(ITableBucket, result)
|
|
1201
|
+
|
|
1202
|
+
@builtins.property
|
|
1203
|
+
def removal_policy(self) -> typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy]:
|
|
1204
|
+
'''(experimental) Policy to apply when the policy is removed from this stack.
|
|
1205
|
+
|
|
1206
|
+
:default: RemovalPolicy.DESTROY
|
|
1207
|
+
|
|
1208
|
+
:stability: experimental
|
|
1209
|
+
'''
|
|
1210
|
+
result = self._values.get("removal_policy")
|
|
1211
|
+
return typing.cast(typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy], result)
|
|
1212
|
+
|
|
1213
|
+
def __eq__(self, rhs: typing.Any) -> builtins.bool:
|
|
1214
|
+
return isinstance(rhs, self.__class__) and rhs._values == self._values
|
|
1215
|
+
|
|
1216
|
+
def __ne__(self, rhs: typing.Any) -> builtins.bool:
|
|
1217
|
+
return not (rhs == self)
|
|
1218
|
+
|
|
1219
|
+
def __repr__(self) -> str:
|
|
1220
|
+
return "NamespaceProps(%s)" % ", ".join(
|
|
1221
|
+
k + "=" + repr(v) for k, v in self._values.items()
|
|
1222
|
+
)
|
|
1223
|
+
|
|
1224
|
+
|
|
1225
|
+
@jsii.enum(jsii_type="@aws-cdk/aws-s3tables-alpha.OpenTableFormat")
|
|
1226
|
+
class OpenTableFormat(enum.Enum):
|
|
1227
|
+
'''(experimental) Supported open table formats.
|
|
1228
|
+
|
|
1229
|
+
:stability: experimental
|
|
1230
|
+
'''
|
|
1231
|
+
|
|
1232
|
+
ICEBERG = "ICEBERG"
|
|
1233
|
+
'''(experimental) Apache Iceberg table format.
|
|
1234
|
+
|
|
1235
|
+
:stability: experimental
|
|
1236
|
+
'''
|
|
1237
|
+
|
|
1238
|
+
|
|
1239
|
+
@jsii.data_type(
|
|
1240
|
+
jsii_type="@aws-cdk/aws-s3tables-alpha.SchemaFieldProperty",
|
|
1241
|
+
jsii_struct_bases=[],
|
|
1242
|
+
name_mapping={"name": "name", "type": "type", "required": "required"},
|
|
1243
|
+
)
|
|
1244
|
+
class SchemaFieldProperty:
|
|
1245
|
+
def __init__(
|
|
1246
|
+
self,
|
|
1247
|
+
*,
|
|
1248
|
+
name: builtins.str,
|
|
1249
|
+
type: builtins.str,
|
|
1250
|
+
required: typing.Optional[builtins.bool] = None,
|
|
1251
|
+
) -> None:
|
|
1252
|
+
'''(experimental) Contains details about a schema field.
|
|
1253
|
+
|
|
1254
|
+
:param name: (experimental) The name of the field.
|
|
1255
|
+
:param type: (experimental) The field type. S3 Tables supports all Apache Iceberg primitive types. For more information, see the `Apache Iceberg documentation <https://docs.aws.amazon.com/https://iceberg.apache.org/spec/#primitive-types>`_.
|
|
1256
|
+
:param required: (experimental) A Boolean value that specifies whether values are required for each row in this field. By default, this is ``false`` and null values are allowed in the field. If this is ``true``, the field does not allow null values. Default: false
|
|
1257
|
+
|
|
1258
|
+
:stability: experimental
|
|
1259
|
+
:exampleMetadata: fixture=_generated
|
|
1260
|
+
|
|
1261
|
+
Example::
|
|
1262
|
+
|
|
1263
|
+
# The code below shows an example of how to instantiate this type.
|
|
1264
|
+
# The values are placeholders you should change.
|
|
1265
|
+
import aws_cdk.aws_s3tables_alpha as s3tables_alpha
|
|
1266
|
+
|
|
1267
|
+
schema_field_property = s3tables_alpha.SchemaFieldProperty(
|
|
1268
|
+
name="name",
|
|
1269
|
+
type="type",
|
|
1270
|
+
|
|
1271
|
+
# the properties below are optional
|
|
1272
|
+
required=False
|
|
1273
|
+
)
|
|
1274
|
+
'''
|
|
1275
|
+
if __debug__:
|
|
1276
|
+
type_hints = typing.get_type_hints(_typecheckingstub__798c061a7214691172814263e161286845f9f56262e641ae55c93d363ce227c1)
|
|
1277
|
+
check_type(argname="argument name", value=name, expected_type=type_hints["name"])
|
|
1278
|
+
check_type(argname="argument type", value=type, expected_type=type_hints["type"])
|
|
1279
|
+
check_type(argname="argument required", value=required, expected_type=type_hints["required"])
|
|
1280
|
+
self._values: typing.Dict[builtins.str, typing.Any] = {
|
|
1281
|
+
"name": name,
|
|
1282
|
+
"type": type,
|
|
1283
|
+
}
|
|
1284
|
+
if required is not None:
|
|
1285
|
+
self._values["required"] = required
|
|
1286
|
+
|
|
1287
|
+
@builtins.property
|
|
1288
|
+
def name(self) -> builtins.str:
|
|
1289
|
+
'''(experimental) The name of the field.
|
|
1290
|
+
|
|
1291
|
+
:stability: experimental
|
|
1292
|
+
'''
|
|
1293
|
+
result = self._values.get("name")
|
|
1294
|
+
assert result is not None, "Required property 'name' is missing"
|
|
1295
|
+
return typing.cast(builtins.str, result)
|
|
1296
|
+
|
|
1297
|
+
@builtins.property
|
|
1298
|
+
def type(self) -> builtins.str:
|
|
1299
|
+
'''(experimental) The field type.
|
|
1300
|
+
|
|
1301
|
+
S3 Tables supports all Apache Iceberg primitive types. For more information, see the `Apache Iceberg documentation <https://docs.aws.amazon.com/https://iceberg.apache.org/spec/#primitive-types>`_.
|
|
1302
|
+
|
|
1303
|
+
:stability: experimental
|
|
1304
|
+
'''
|
|
1305
|
+
result = self._values.get("type")
|
|
1306
|
+
assert result is not None, "Required property 'type' is missing"
|
|
1307
|
+
return typing.cast(builtins.str, result)
|
|
1308
|
+
|
|
1309
|
+
@builtins.property
|
|
1310
|
+
def required(self) -> typing.Optional[builtins.bool]:
|
|
1311
|
+
'''(experimental) A Boolean value that specifies whether values are required for each row in this field.
|
|
1312
|
+
|
|
1313
|
+
By default, this is ``false`` and null values are allowed in the field. If this is ``true``, the field does not allow null values.
|
|
1314
|
+
|
|
1315
|
+
:default: false
|
|
1316
|
+
|
|
1317
|
+
:stability: experimental
|
|
1318
|
+
'''
|
|
1319
|
+
result = self._values.get("required")
|
|
1320
|
+
return typing.cast(typing.Optional[builtins.bool], result)
|
|
1321
|
+
|
|
1322
|
+
def __eq__(self, rhs: typing.Any) -> builtins.bool:
|
|
1323
|
+
return isinstance(rhs, self.__class__) and rhs._values == self._values
|
|
1324
|
+
|
|
1325
|
+
def __ne__(self, rhs: typing.Any) -> builtins.bool:
|
|
1326
|
+
return not (rhs == self)
|
|
1327
|
+
|
|
1328
|
+
def __repr__(self) -> str:
|
|
1329
|
+
return "SchemaFieldProperty(%s)" % ", ".join(
|
|
1330
|
+
k + "=" + repr(v) for k, v in self._values.items()
|
|
1331
|
+
)
|
|
1332
|
+
|
|
1333
|
+
|
|
1334
|
+
@jsii.data_type(
|
|
1335
|
+
jsii_type="@aws-cdk/aws-s3tables-alpha.SnapshotManagementProperty",
|
|
1336
|
+
jsii_struct_bases=[],
|
|
1337
|
+
name_mapping={
|
|
1338
|
+
"max_snapshot_age_hours": "maxSnapshotAgeHours",
|
|
1339
|
+
"min_snapshots_to_keep": "minSnapshotsToKeep",
|
|
1340
|
+
"status": "status",
|
|
1341
|
+
},
|
|
1342
|
+
)
|
|
1343
|
+
class SnapshotManagementProperty:
|
|
1344
|
+
def __init__(
|
|
1345
|
+
self,
|
|
1346
|
+
*,
|
|
1347
|
+
max_snapshot_age_hours: typing.Optional[jsii.Number] = None,
|
|
1348
|
+
min_snapshots_to_keep: typing.Optional[jsii.Number] = None,
|
|
1349
|
+
status: typing.Optional["Status"] = None,
|
|
1350
|
+
) -> None:
|
|
1351
|
+
'''(experimental) Contains details about the snapshot management settings for an Iceberg table.
|
|
1352
|
+
|
|
1353
|
+
A snapshot is expired when it exceeds MinSnapshotsToKeep and MaxSnapshotAgeHours.
|
|
1354
|
+
|
|
1355
|
+
:param max_snapshot_age_hours: (experimental) The maximum age of a snapshot before it can be expired. Default: - No maximum age
|
|
1356
|
+
:param min_snapshots_to_keep: (experimental) The minimum number of snapshots to keep. Default: - No minimum number
|
|
1357
|
+
:param status: (experimental) Indicates whether the SnapshotManagement maintenance action is enabled. Default: - Not specified
|
|
1358
|
+
|
|
1359
|
+
:default: - No snapshot management settings
|
|
1360
|
+
|
|
1361
|
+
:stability: experimental
|
|
1362
|
+
:exampleMetadata: infused
|
|
1363
|
+
|
|
1364
|
+
Example::
|
|
1365
|
+
|
|
1366
|
+
# Build a table
|
|
1367
|
+
sample_table = Table(scope, "ExampleTable",
|
|
1368
|
+
table_name="example_table",
|
|
1369
|
+
namespace=namespace,
|
|
1370
|
+
open_table_format=OpenTableFormat.ICEBERG,
|
|
1371
|
+
without_metadata=True
|
|
1372
|
+
)
|
|
1373
|
+
|
|
1374
|
+
# Build a table with an Iceberg Schema
|
|
1375
|
+
sample_table_with_schema = Table(scope, "ExampleSchemaTable",
|
|
1376
|
+
table_name="example_table_with_schema",
|
|
1377
|
+
namespace=namespace,
|
|
1378
|
+
open_table_format=OpenTableFormat.ICEBERG,
|
|
1379
|
+
iceberg_metadata=IcebergMetadataProperty(
|
|
1380
|
+
iceberg_schema=IcebergSchemaProperty(
|
|
1381
|
+
schema_field_list=[SchemaFieldProperty(
|
|
1382
|
+
name="id",
|
|
1383
|
+
type="int",
|
|
1384
|
+
required=True
|
|
1385
|
+
), SchemaFieldProperty(
|
|
1386
|
+
name="name",
|
|
1387
|
+
type="string"
|
|
1388
|
+
)
|
|
1389
|
+
]
|
|
1390
|
+
)
|
|
1391
|
+
),
|
|
1392
|
+
compaction=CompactionProperty(
|
|
1393
|
+
status=Status.ENABLED,
|
|
1394
|
+
target_file_size_mb=128
|
|
1395
|
+
),
|
|
1396
|
+
snapshot_management=SnapshotManagementProperty(
|
|
1397
|
+
status=Status.ENABLED,
|
|
1398
|
+
max_snapshot_age_hours=48,
|
|
1399
|
+
min_snapshots_to_keep=5
|
|
1400
|
+
)
|
|
1401
|
+
)
|
|
1402
|
+
'''
|
|
1403
|
+
if __debug__:
|
|
1404
|
+
type_hints = typing.get_type_hints(_typecheckingstub__74aebe9bead3fb2bce88d441c25d815202759baedd02c817c6e08d2e1dfad2b2)
|
|
1405
|
+
check_type(argname="argument max_snapshot_age_hours", value=max_snapshot_age_hours, expected_type=type_hints["max_snapshot_age_hours"])
|
|
1406
|
+
check_type(argname="argument min_snapshots_to_keep", value=min_snapshots_to_keep, expected_type=type_hints["min_snapshots_to_keep"])
|
|
1407
|
+
check_type(argname="argument status", value=status, expected_type=type_hints["status"])
|
|
1408
|
+
self._values: typing.Dict[builtins.str, typing.Any] = {}
|
|
1409
|
+
if max_snapshot_age_hours is not None:
|
|
1410
|
+
self._values["max_snapshot_age_hours"] = max_snapshot_age_hours
|
|
1411
|
+
if min_snapshots_to_keep is not None:
|
|
1412
|
+
self._values["min_snapshots_to_keep"] = min_snapshots_to_keep
|
|
1413
|
+
if status is not None:
|
|
1414
|
+
self._values["status"] = status
|
|
1415
|
+
|
|
1416
|
+
@builtins.property
|
|
1417
|
+
def max_snapshot_age_hours(self) -> typing.Optional[jsii.Number]:
|
|
1418
|
+
'''(experimental) The maximum age of a snapshot before it can be expired.
|
|
1419
|
+
|
|
1420
|
+
:default: - No maximum age
|
|
1421
|
+
|
|
1422
|
+
:stability: experimental
|
|
1423
|
+
'''
|
|
1424
|
+
result = self._values.get("max_snapshot_age_hours")
|
|
1425
|
+
return typing.cast(typing.Optional[jsii.Number], result)
|
|
1426
|
+
|
|
1427
|
+
@builtins.property
|
|
1428
|
+
def min_snapshots_to_keep(self) -> typing.Optional[jsii.Number]:
|
|
1429
|
+
'''(experimental) The minimum number of snapshots to keep.
|
|
1430
|
+
|
|
1431
|
+
:default: - No minimum number
|
|
1432
|
+
|
|
1433
|
+
:stability: experimental
|
|
1434
|
+
'''
|
|
1435
|
+
result = self._values.get("min_snapshots_to_keep")
|
|
1436
|
+
return typing.cast(typing.Optional[jsii.Number], result)
|
|
1437
|
+
|
|
1438
|
+
@builtins.property
|
|
1439
|
+
def status(self) -> typing.Optional["Status"]:
|
|
1440
|
+
'''(experimental) Indicates whether the SnapshotManagement maintenance action is enabled.
|
|
1441
|
+
|
|
1442
|
+
:default: - Not specified
|
|
1443
|
+
|
|
1444
|
+
:stability: experimental
|
|
1445
|
+
'''
|
|
1446
|
+
result = self._values.get("status")
|
|
1447
|
+
return typing.cast(typing.Optional["Status"], result)
|
|
1448
|
+
|
|
1449
|
+
def __eq__(self, rhs: typing.Any) -> builtins.bool:
|
|
1450
|
+
return isinstance(rhs, self.__class__) and rhs._values == self._values
|
|
1451
|
+
|
|
1452
|
+
def __ne__(self, rhs: typing.Any) -> builtins.bool:
|
|
1453
|
+
return not (rhs == self)
|
|
1454
|
+
|
|
1455
|
+
def __repr__(self) -> str:
|
|
1456
|
+
return "SnapshotManagementProperty(%s)" % ", ".join(
|
|
1457
|
+
k + "=" + repr(v) for k, v in self._values.items()
|
|
1458
|
+
)
|
|
1459
|
+
|
|
1460
|
+
|
|
1461
|
+
@jsii.enum(jsii_type="@aws-cdk/aws-s3tables-alpha.Status")
|
|
1462
|
+
class Status(enum.Enum):
|
|
1463
|
+
'''(experimental) Status values for maintenance actions.
|
|
1464
|
+
|
|
1465
|
+
:stability: experimental
|
|
1466
|
+
:exampleMetadata: infused
|
|
1467
|
+
|
|
1468
|
+
Example::
|
|
1469
|
+
|
|
1470
|
+
# Build a table
|
|
1471
|
+
sample_table = Table(scope, "ExampleTable",
|
|
1472
|
+
table_name="example_table",
|
|
1473
|
+
namespace=namespace,
|
|
1474
|
+
open_table_format=OpenTableFormat.ICEBERG,
|
|
1475
|
+
without_metadata=True
|
|
1476
|
+
)
|
|
1477
|
+
|
|
1478
|
+
# Build a table with an Iceberg Schema
|
|
1479
|
+
sample_table_with_schema = Table(scope, "ExampleSchemaTable",
|
|
1480
|
+
table_name="example_table_with_schema",
|
|
1481
|
+
namespace=namespace,
|
|
1482
|
+
open_table_format=OpenTableFormat.ICEBERG,
|
|
1483
|
+
iceberg_metadata=IcebergMetadataProperty(
|
|
1484
|
+
iceberg_schema=IcebergSchemaProperty(
|
|
1485
|
+
schema_field_list=[SchemaFieldProperty(
|
|
1486
|
+
name="id",
|
|
1487
|
+
type="int",
|
|
1488
|
+
required=True
|
|
1489
|
+
), SchemaFieldProperty(
|
|
1490
|
+
name="name",
|
|
1491
|
+
type="string"
|
|
1492
|
+
)
|
|
1493
|
+
]
|
|
1494
|
+
)
|
|
1495
|
+
),
|
|
1496
|
+
compaction=CompactionProperty(
|
|
1497
|
+
status=Status.ENABLED,
|
|
1498
|
+
target_file_size_mb=128
|
|
1499
|
+
),
|
|
1500
|
+
snapshot_management=SnapshotManagementProperty(
|
|
1501
|
+
status=Status.ENABLED,
|
|
1502
|
+
max_snapshot_age_hours=48,
|
|
1503
|
+
min_snapshots_to_keep=5
|
|
1504
|
+
)
|
|
1505
|
+
)
|
|
1506
|
+
'''
|
|
1507
|
+
|
|
1508
|
+
ENABLED = "ENABLED"
|
|
1509
|
+
'''(experimental) Enable the maintenance action.
|
|
1510
|
+
|
|
1511
|
+
:stability: experimental
|
|
1512
|
+
'''
|
|
1513
|
+
DISABLED = "DISABLED"
|
|
1514
|
+
'''(experimental) Disable the maintenance action.
|
|
1515
|
+
|
|
1516
|
+
:stability: experimental
|
|
1517
|
+
'''
|
|
1518
|
+
|
|
1519
|
+
|
|
1520
|
+
@jsii.implements(ITable)
|
|
1521
|
+
class Table(
|
|
1522
|
+
_aws_cdk_ceddda9d.Resource,
|
|
1523
|
+
metaclass=jsii.JSIIMeta,
|
|
1524
|
+
jsii_type="@aws-cdk/aws-s3tables-alpha.Table",
|
|
1525
|
+
):
|
|
1526
|
+
'''(experimental) An S3 Table with helpers.
|
|
1527
|
+
|
|
1528
|
+
:stability: experimental
|
|
1529
|
+
:exampleMetadata: infused
|
|
1530
|
+
|
|
1531
|
+
Example::
|
|
1532
|
+
|
|
1533
|
+
# Build a table
|
|
1534
|
+
sample_table = Table(scope, "ExampleTable",
|
|
1535
|
+
table_name="example_table",
|
|
1536
|
+
namespace=namespace,
|
|
1537
|
+
open_table_format=OpenTableFormat.ICEBERG,
|
|
1538
|
+
without_metadata=True
|
|
1539
|
+
)
|
|
1540
|
+
|
|
1541
|
+
# Build a table with an Iceberg Schema
|
|
1542
|
+
sample_table_with_schema = Table(scope, "ExampleSchemaTable",
|
|
1543
|
+
table_name="example_table_with_schema",
|
|
1544
|
+
namespace=namespace,
|
|
1545
|
+
open_table_format=OpenTableFormat.ICEBERG,
|
|
1546
|
+
iceberg_metadata=IcebergMetadataProperty(
|
|
1547
|
+
iceberg_schema=IcebergSchemaProperty(
|
|
1548
|
+
schema_field_list=[SchemaFieldProperty(
|
|
1549
|
+
name="id",
|
|
1550
|
+
type="int",
|
|
1551
|
+
required=True
|
|
1552
|
+
), SchemaFieldProperty(
|
|
1553
|
+
name="name",
|
|
1554
|
+
type="string"
|
|
1555
|
+
)
|
|
1556
|
+
]
|
|
1557
|
+
)
|
|
1558
|
+
),
|
|
1559
|
+
compaction=CompactionProperty(
|
|
1560
|
+
status=Status.ENABLED,
|
|
1561
|
+
target_file_size_mb=128
|
|
1562
|
+
),
|
|
1563
|
+
snapshot_management=SnapshotManagementProperty(
|
|
1564
|
+
status=Status.ENABLED,
|
|
1565
|
+
max_snapshot_age_hours=48,
|
|
1566
|
+
min_snapshots_to_keep=5
|
|
1567
|
+
)
|
|
1568
|
+
)
|
|
1569
|
+
'''
|
|
1570
|
+
|
|
1571
|
+
def __init__(
|
|
1572
|
+
self,
|
|
1573
|
+
scope: _constructs_77d1e7e8.Construct,
|
|
1574
|
+
id: builtins.str,
|
|
1575
|
+
*,
|
|
1576
|
+
namespace: INamespace,
|
|
1577
|
+
open_table_format: OpenTableFormat,
|
|
1578
|
+
table_name: builtins.str,
|
|
1579
|
+
compaction: typing.Optional[typing.Union[CompactionProperty, typing.Dict[builtins.str, typing.Any]]] = None,
|
|
1580
|
+
iceberg_metadata: typing.Optional[typing.Union[IcebergMetadataProperty, typing.Dict[builtins.str, typing.Any]]] = None,
|
|
1581
|
+
removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
|
|
1582
|
+
snapshot_management: typing.Optional[typing.Union[SnapshotManagementProperty, typing.Dict[builtins.str, typing.Any]]] = None,
|
|
1583
|
+
without_metadata: typing.Optional[builtins.bool] = None,
|
|
1584
|
+
) -> None:
|
|
1585
|
+
'''
|
|
1586
|
+
:param scope: -
|
|
1587
|
+
:param id: -
|
|
1588
|
+
:param namespace: (experimental) The namespace under which this table is created.
|
|
1589
|
+
:param open_table_format: (experimental) Format of this table. Currently, the only supported value is OpenTableFormat.ICEBERG.
|
|
1590
|
+
:param table_name: (experimental) Name of this table, unique within the namespace.
|
|
1591
|
+
:param compaction: (experimental) Settings governing the Compaction maintenance action. Default: Amazon S3 selects the best compaction strategy based on your table sort order.
|
|
1592
|
+
:param iceberg_metadata: (experimental) Contains details about the metadata for an Iceberg table. Default: table is created without any metadata
|
|
1593
|
+
:param removal_policy: (experimental) Controls what happens to this table it it stoped being managed by cloudformation. Default: RETAIN
|
|
1594
|
+
:param snapshot_management: (experimental) Contains details about the snapshot management settings for an Iceberg table. Default: enabled: MinimumSnapshots is 1 by default and MaximumSnapshotAge is 120 hours by default.
|
|
1595
|
+
:param without_metadata: (experimental) If true, indicates that you don't want to specify a schema for the table. This property is mutually exclusive to 'IcebergMetadata'. Default: false
|
|
1596
|
+
|
|
1597
|
+
:stability: experimental
|
|
1598
|
+
'''
|
|
1599
|
+
if __debug__:
|
|
1600
|
+
type_hints = typing.get_type_hints(_typecheckingstub__9e5378cdcc21935af950b3c144ea6d1e345b4c98cccbf5fe2a92dff410ed06cf)
|
|
1601
|
+
check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
|
|
1602
|
+
check_type(argname="argument id", value=id, expected_type=type_hints["id"])
|
|
1603
|
+
props = TableProps(
|
|
1604
|
+
namespace=namespace,
|
|
1605
|
+
open_table_format=open_table_format,
|
|
1606
|
+
table_name=table_name,
|
|
1607
|
+
compaction=compaction,
|
|
1608
|
+
iceberg_metadata=iceberg_metadata,
|
|
1609
|
+
removal_policy=removal_policy,
|
|
1610
|
+
snapshot_management=snapshot_management,
|
|
1611
|
+
without_metadata=without_metadata,
|
|
1612
|
+
)
|
|
1613
|
+
|
|
1614
|
+
jsii.create(self.__class__, self, [scope, id, props])
|
|
1615
|
+
|
|
1616
|
+
@jsii.member(jsii_name="fromTableAttributes")
|
|
1617
|
+
@builtins.classmethod
|
|
1618
|
+
def from_table_attributes(
|
|
1619
|
+
cls,
|
|
1620
|
+
scope: _constructs_77d1e7e8.Construct,
|
|
1621
|
+
id: builtins.str,
|
|
1622
|
+
*,
|
|
1623
|
+
table_arn: builtins.str,
|
|
1624
|
+
table_name: builtins.str,
|
|
1625
|
+
) -> ITable:
|
|
1626
|
+
'''(experimental) Defines a Table construct that represents an external table.
|
|
1627
|
+
|
|
1628
|
+
:param scope: The parent creating construct (usually ``this``).
|
|
1629
|
+
:param id: The construct's name.
|
|
1630
|
+
:param table_arn: (experimental) The table's ARN.
|
|
1631
|
+
:param table_name: (experimental) Name of this table.
|
|
1632
|
+
|
|
1633
|
+
:stability: experimental
|
|
1634
|
+
'''
|
|
1635
|
+
if __debug__:
|
|
1636
|
+
type_hints = typing.get_type_hints(_typecheckingstub__c92fbe73fcedcf34bbbc9a2359a274432437ec47317161e4c88ea9d209155ffd)
|
|
1637
|
+
check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
|
|
1638
|
+
check_type(argname="argument id", value=id, expected_type=type_hints["id"])
|
|
1639
|
+
attrs = TableAttributes(table_arn=table_arn, table_name=table_name)
|
|
1640
|
+
|
|
1641
|
+
return typing.cast(ITable, jsii.sinvoke(cls, "fromTableAttributes", [scope, id, attrs]))
|
|
1642
|
+
|
|
1643
|
+
@jsii.member(jsii_name="validateTableName")
|
|
1644
|
+
@builtins.classmethod
|
|
1645
|
+
def validate_table_name(cls, table_name: builtins.str) -> None:
|
|
1646
|
+
'''(experimental) See https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets-naming.html.
|
|
1647
|
+
|
|
1648
|
+
:param table_name: Name of the table.
|
|
1649
|
+
|
|
1650
|
+
:stability: experimental
|
|
1651
|
+
:throws: UnscopedValidationError if any naming errors are detected
|
|
1652
|
+
'''
|
|
1653
|
+
if __debug__:
|
|
1654
|
+
type_hints = typing.get_type_hints(_typecheckingstub__536e137c7e7454507b9ec796514d014c3913e8c528dfeba351b5e0e36ba8e228)
|
|
1655
|
+
check_type(argname="argument table_name", value=table_name, expected_type=type_hints["table_name"])
|
|
1656
|
+
return typing.cast(None, jsii.sinvoke(cls, "validateTableName", [table_name]))
|
|
1657
|
+
|
|
1658
|
+
@jsii.python.classproperty
|
|
1659
|
+
@jsii.member(jsii_name="PROPERTY_INJECTION_ID")
|
|
1660
|
+
def PROPERTY_INJECTION_ID(cls) -> builtins.str:
|
|
1661
|
+
'''(experimental) Uniquely identifies this class.
|
|
1662
|
+
|
|
1663
|
+
:stability: experimental
|
|
1664
|
+
'''
|
|
1665
|
+
return typing.cast(builtins.str, jsii.sget(cls, "PROPERTY_INJECTION_ID"))
|
|
1666
|
+
|
|
1667
|
+
@builtins.property
|
|
1668
|
+
@jsii.member(jsii_name="namespace")
|
|
1669
|
+
def namespace(self) -> INamespace:
|
|
1670
|
+
'''(experimental) The namespace containing this table.
|
|
1671
|
+
|
|
1672
|
+
:stability: experimental
|
|
1673
|
+
'''
|
|
1674
|
+
return typing.cast(INamespace, jsii.get(self, "namespace"))
|
|
1675
|
+
|
|
1676
|
+
@builtins.property
|
|
1677
|
+
@jsii.member(jsii_name="tableArn")
|
|
1678
|
+
def table_arn(self) -> builtins.str:
|
|
1679
|
+
'''(experimental) The unique Amazon Resource Name (arn) of this table.
|
|
1680
|
+
|
|
1681
|
+
:stability: experimental
|
|
1682
|
+
'''
|
|
1683
|
+
return typing.cast(builtins.str, jsii.get(self, "tableArn"))
|
|
1684
|
+
|
|
1685
|
+
@builtins.property
|
|
1686
|
+
@jsii.member(jsii_name="tableName")
|
|
1687
|
+
def table_name(self) -> builtins.str:
|
|
1688
|
+
'''(experimental) The name of this table.
|
|
393
1689
|
|
|
394
1690
|
:stability: experimental
|
|
395
1691
|
'''
|
|
396
|
-
|
|
397
|
-
type_hints = typing.get_type_hints(_typecheckingstub__853d3e698d103ae1fe304d2239745ee798278fcd22f673c7ae8e9b33884c90a9)
|
|
398
|
-
check_type(argname="argument identity", value=identity, expected_type=type_hints["identity"])
|
|
399
|
-
check_type(argname="argument table_id", value=table_id, expected_type=type_hints["table_id"])
|
|
400
|
-
return typing.cast(_aws_cdk_aws_iam_ceddda9d.Grant, jsii.invoke(self, "grantRead", [identity, table_id]))
|
|
1692
|
+
return typing.cast(builtins.str, jsii.get(self, "tableName"))
|
|
401
1693
|
|
|
402
|
-
@jsii.member(jsii_name="grantReadWrite")
|
|
403
|
-
def grant_read_write(
|
|
404
|
-
self,
|
|
405
|
-
identity: _aws_cdk_aws_iam_ceddda9d.IGrantable,
|
|
406
|
-
table_id: builtins.str,
|
|
407
|
-
) -> _aws_cdk_aws_iam_ceddda9d.Grant:
|
|
408
|
-
'''(experimental) Grant read and write permissions for this table bucket and its tables to an IAM principal (Role/Group/User).
|
|
409
1694
|
|
|
410
|
-
|
|
411
|
-
|
|
1695
|
+
@jsii.data_type(
|
|
1696
|
+
jsii_type="@aws-cdk/aws-s3tables-alpha.TableAttributes",
|
|
1697
|
+
jsii_struct_bases=[],
|
|
1698
|
+
name_mapping={"table_arn": "tableArn", "table_name": "tableName"},
|
|
1699
|
+
)
|
|
1700
|
+
class TableAttributes:
|
|
1701
|
+
def __init__(self, *, table_arn: builtins.str, table_name: builtins.str) -> None:
|
|
1702
|
+
'''(experimental) A reference to a table outside this stack.
|
|
412
1703
|
|
|
413
|
-
|
|
414
|
-
|
|
1704
|
+
The tableName, region, and account can be provided explicitly
|
|
1705
|
+
or will be inferred from the tableArn
|
|
1706
|
+
|
|
1707
|
+
:param table_arn: (experimental) The table's ARN.
|
|
1708
|
+
:param table_name: (experimental) Name of this table.
|
|
415
1709
|
|
|
416
1710
|
:stability: experimental
|
|
1711
|
+
:exampleMetadata: fixture=_generated
|
|
1712
|
+
|
|
1713
|
+
Example::
|
|
1714
|
+
|
|
1715
|
+
# The code below shows an example of how to instantiate this type.
|
|
1716
|
+
# The values are placeholders you should change.
|
|
1717
|
+
import aws_cdk.aws_s3tables_alpha as s3tables_alpha
|
|
1718
|
+
|
|
1719
|
+
table_attributes = s3tables_alpha.TableAttributes(
|
|
1720
|
+
table_arn="tableArn",
|
|
1721
|
+
table_name="tableName"
|
|
1722
|
+
)
|
|
417
1723
|
'''
|
|
418
1724
|
if __debug__:
|
|
419
|
-
type_hints = typing.get_type_hints(
|
|
420
|
-
check_type(argname="argument
|
|
421
|
-
check_type(argname="argument
|
|
422
|
-
|
|
1725
|
+
type_hints = typing.get_type_hints(_typecheckingstub__20a648b98b2aa2a4eec0f744feac0d8ec3ee06e18fb2a623e889d224bf8fec03)
|
|
1726
|
+
check_type(argname="argument table_arn", value=table_arn, expected_type=type_hints["table_arn"])
|
|
1727
|
+
check_type(argname="argument table_name", value=table_name, expected_type=type_hints["table_name"])
|
|
1728
|
+
self._values: typing.Dict[builtins.str, typing.Any] = {
|
|
1729
|
+
"table_arn": table_arn,
|
|
1730
|
+
"table_name": table_name,
|
|
1731
|
+
}
|
|
423
1732
|
|
|
424
|
-
@
|
|
425
|
-
def
|
|
426
|
-
|
|
427
|
-
identity: _aws_cdk_aws_iam_ceddda9d.IGrantable,
|
|
428
|
-
table_id: builtins.str,
|
|
429
|
-
) -> _aws_cdk_aws_iam_ceddda9d.Grant:
|
|
430
|
-
'''(experimental) Grant write permissions for this table bucket and its tables to an IAM principal (Role/Group/User).
|
|
1733
|
+
@builtins.property
|
|
1734
|
+
def table_arn(self) -> builtins.str:
|
|
1735
|
+
'''(experimental) The table's ARN.
|
|
431
1736
|
|
|
432
|
-
|
|
433
|
-
|
|
1737
|
+
:stability: experimental
|
|
1738
|
+
'''
|
|
1739
|
+
result = self._values.get("table_arn")
|
|
1740
|
+
assert result is not None, "Required property 'table_arn' is missing"
|
|
1741
|
+
return typing.cast(builtins.str, result)
|
|
434
1742
|
|
|
435
|
-
|
|
436
|
-
|
|
1743
|
+
@builtins.property
|
|
1744
|
+
def table_name(self) -> builtins.str:
|
|
1745
|
+
'''(experimental) Name of this table.
|
|
437
1746
|
|
|
438
1747
|
:stability: experimental
|
|
439
1748
|
'''
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
check_type(argname="argument table_id", value=table_id, expected_type=type_hints["table_id"])
|
|
444
|
-
return typing.cast(_aws_cdk_aws_iam_ceddda9d.Grant, jsii.invoke(self, "grantWrite", [identity, table_id]))
|
|
1749
|
+
result = self._values.get("table_name")
|
|
1750
|
+
assert result is not None, "Required property 'table_name' is missing"
|
|
1751
|
+
return typing.cast(builtins.str, result)
|
|
445
1752
|
|
|
446
|
-
|
|
447
|
-
|
|
1753
|
+
def __eq__(self, rhs: typing.Any) -> builtins.bool:
|
|
1754
|
+
return isinstance(rhs, self.__class__) and rhs._values == self._values
|
|
1755
|
+
|
|
1756
|
+
def __ne__(self, rhs: typing.Any) -> builtins.bool:
|
|
1757
|
+
return not (rhs == self)
|
|
1758
|
+
|
|
1759
|
+
def __repr__(self) -> str:
|
|
1760
|
+
return "TableAttributes(%s)" % ", ".join(
|
|
1761
|
+
k + "=" + repr(v) for k, v in self._values.items()
|
|
1762
|
+
)
|
|
448
1763
|
|
|
449
1764
|
|
|
450
1765
|
@jsii.implements(ITableBucket)
|
|
@@ -1317,6 +2632,220 @@ class TableBucketProps:
|
|
|
1317
2632
|
)
|
|
1318
2633
|
|
|
1319
2634
|
|
|
2635
|
+
@jsii.data_type(
|
|
2636
|
+
jsii_type="@aws-cdk/aws-s3tables-alpha.TableProps",
|
|
2637
|
+
jsii_struct_bases=[],
|
|
2638
|
+
name_mapping={
|
|
2639
|
+
"namespace": "namespace",
|
|
2640
|
+
"open_table_format": "openTableFormat",
|
|
2641
|
+
"table_name": "tableName",
|
|
2642
|
+
"compaction": "compaction",
|
|
2643
|
+
"iceberg_metadata": "icebergMetadata",
|
|
2644
|
+
"removal_policy": "removalPolicy",
|
|
2645
|
+
"snapshot_management": "snapshotManagement",
|
|
2646
|
+
"without_metadata": "withoutMetadata",
|
|
2647
|
+
},
|
|
2648
|
+
)
|
|
2649
|
+
class TableProps:
|
|
2650
|
+
def __init__(
|
|
2651
|
+
self,
|
|
2652
|
+
*,
|
|
2653
|
+
namespace: INamespace,
|
|
2654
|
+
open_table_format: OpenTableFormat,
|
|
2655
|
+
table_name: builtins.str,
|
|
2656
|
+
compaction: typing.Optional[typing.Union[CompactionProperty, typing.Dict[builtins.str, typing.Any]]] = None,
|
|
2657
|
+
iceberg_metadata: typing.Optional[typing.Union[IcebergMetadataProperty, typing.Dict[builtins.str, typing.Any]]] = None,
|
|
2658
|
+
removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
|
|
2659
|
+
snapshot_management: typing.Optional[typing.Union[SnapshotManagementProperty, typing.Dict[builtins.str, typing.Any]]] = None,
|
|
2660
|
+
without_metadata: typing.Optional[builtins.bool] = None,
|
|
2661
|
+
) -> None:
|
|
2662
|
+
'''(experimental) Properties for creating a new S3 Table.
|
|
2663
|
+
|
|
2664
|
+
:param namespace: (experimental) The namespace under which this table is created.
|
|
2665
|
+
:param open_table_format: (experimental) Format of this table. Currently, the only supported value is OpenTableFormat.ICEBERG.
|
|
2666
|
+
:param table_name: (experimental) Name of this table, unique within the namespace.
|
|
2667
|
+
:param compaction: (experimental) Settings governing the Compaction maintenance action. Default: Amazon S3 selects the best compaction strategy based on your table sort order.
|
|
2668
|
+
:param iceberg_metadata: (experimental) Contains details about the metadata for an Iceberg table. Default: table is created without any metadata
|
|
2669
|
+
:param removal_policy: (experimental) Controls what happens to this table it it stoped being managed by cloudformation. Default: RETAIN
|
|
2670
|
+
:param snapshot_management: (experimental) Contains details about the snapshot management settings for an Iceberg table. Default: enabled: MinimumSnapshots is 1 by default and MaximumSnapshotAge is 120 hours by default.
|
|
2671
|
+
:param without_metadata: (experimental) If true, indicates that you don't want to specify a schema for the table. This property is mutually exclusive to 'IcebergMetadata'. Default: false
|
|
2672
|
+
|
|
2673
|
+
:stability: experimental
|
|
2674
|
+
:exampleMetadata: infused
|
|
2675
|
+
|
|
2676
|
+
Example::
|
|
2677
|
+
|
|
2678
|
+
# Build a table
|
|
2679
|
+
sample_table = Table(scope, "ExampleTable",
|
|
2680
|
+
table_name="example_table",
|
|
2681
|
+
namespace=namespace,
|
|
2682
|
+
open_table_format=OpenTableFormat.ICEBERG,
|
|
2683
|
+
without_metadata=True
|
|
2684
|
+
)
|
|
2685
|
+
|
|
2686
|
+
# Build a table with an Iceberg Schema
|
|
2687
|
+
sample_table_with_schema = Table(scope, "ExampleSchemaTable",
|
|
2688
|
+
table_name="example_table_with_schema",
|
|
2689
|
+
namespace=namespace,
|
|
2690
|
+
open_table_format=OpenTableFormat.ICEBERG,
|
|
2691
|
+
iceberg_metadata=IcebergMetadataProperty(
|
|
2692
|
+
iceberg_schema=IcebergSchemaProperty(
|
|
2693
|
+
schema_field_list=[SchemaFieldProperty(
|
|
2694
|
+
name="id",
|
|
2695
|
+
type="int",
|
|
2696
|
+
required=True
|
|
2697
|
+
), SchemaFieldProperty(
|
|
2698
|
+
name="name",
|
|
2699
|
+
type="string"
|
|
2700
|
+
)
|
|
2701
|
+
]
|
|
2702
|
+
)
|
|
2703
|
+
),
|
|
2704
|
+
compaction=CompactionProperty(
|
|
2705
|
+
status=Status.ENABLED,
|
|
2706
|
+
target_file_size_mb=128
|
|
2707
|
+
),
|
|
2708
|
+
snapshot_management=SnapshotManagementProperty(
|
|
2709
|
+
status=Status.ENABLED,
|
|
2710
|
+
max_snapshot_age_hours=48,
|
|
2711
|
+
min_snapshots_to_keep=5
|
|
2712
|
+
)
|
|
2713
|
+
)
|
|
2714
|
+
'''
|
|
2715
|
+
if isinstance(compaction, dict):
|
|
2716
|
+
compaction = CompactionProperty(**compaction)
|
|
2717
|
+
if isinstance(iceberg_metadata, dict):
|
|
2718
|
+
iceberg_metadata = IcebergMetadataProperty(**iceberg_metadata)
|
|
2719
|
+
if isinstance(snapshot_management, dict):
|
|
2720
|
+
snapshot_management = SnapshotManagementProperty(**snapshot_management)
|
|
2721
|
+
if __debug__:
|
|
2722
|
+
type_hints = typing.get_type_hints(_typecheckingstub__adbbcc05d3dc39dfd296a872f006be429c733d0afc6f602e57bd2bede716f05e)
|
|
2723
|
+
check_type(argname="argument namespace", value=namespace, expected_type=type_hints["namespace"])
|
|
2724
|
+
check_type(argname="argument open_table_format", value=open_table_format, expected_type=type_hints["open_table_format"])
|
|
2725
|
+
check_type(argname="argument table_name", value=table_name, expected_type=type_hints["table_name"])
|
|
2726
|
+
check_type(argname="argument compaction", value=compaction, expected_type=type_hints["compaction"])
|
|
2727
|
+
check_type(argname="argument iceberg_metadata", value=iceberg_metadata, expected_type=type_hints["iceberg_metadata"])
|
|
2728
|
+
check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
|
|
2729
|
+
check_type(argname="argument snapshot_management", value=snapshot_management, expected_type=type_hints["snapshot_management"])
|
|
2730
|
+
check_type(argname="argument without_metadata", value=without_metadata, expected_type=type_hints["without_metadata"])
|
|
2731
|
+
self._values: typing.Dict[builtins.str, typing.Any] = {
|
|
2732
|
+
"namespace": namespace,
|
|
2733
|
+
"open_table_format": open_table_format,
|
|
2734
|
+
"table_name": table_name,
|
|
2735
|
+
}
|
|
2736
|
+
if compaction is not None:
|
|
2737
|
+
self._values["compaction"] = compaction
|
|
2738
|
+
if iceberg_metadata is not None:
|
|
2739
|
+
self._values["iceberg_metadata"] = iceberg_metadata
|
|
2740
|
+
if removal_policy is not None:
|
|
2741
|
+
self._values["removal_policy"] = removal_policy
|
|
2742
|
+
if snapshot_management is not None:
|
|
2743
|
+
self._values["snapshot_management"] = snapshot_management
|
|
2744
|
+
if without_metadata is not None:
|
|
2745
|
+
self._values["without_metadata"] = without_metadata
|
|
2746
|
+
|
|
2747
|
+
@builtins.property
|
|
2748
|
+
def namespace(self) -> INamespace:
|
|
2749
|
+
'''(experimental) The namespace under which this table is created.
|
|
2750
|
+
|
|
2751
|
+
:stability: experimental
|
|
2752
|
+
'''
|
|
2753
|
+
result = self._values.get("namespace")
|
|
2754
|
+
assert result is not None, "Required property 'namespace' is missing"
|
|
2755
|
+
return typing.cast(INamespace, result)
|
|
2756
|
+
|
|
2757
|
+
@builtins.property
|
|
2758
|
+
def open_table_format(self) -> OpenTableFormat:
|
|
2759
|
+
'''(experimental) Format of this table.
|
|
2760
|
+
|
|
2761
|
+
Currently, the only supported value is OpenTableFormat.ICEBERG.
|
|
2762
|
+
|
|
2763
|
+
:stability: experimental
|
|
2764
|
+
'''
|
|
2765
|
+
result = self._values.get("open_table_format")
|
|
2766
|
+
assert result is not None, "Required property 'open_table_format' is missing"
|
|
2767
|
+
return typing.cast(OpenTableFormat, result)
|
|
2768
|
+
|
|
2769
|
+
@builtins.property
|
|
2770
|
+
def table_name(self) -> builtins.str:
|
|
2771
|
+
'''(experimental) Name of this table, unique within the namespace.
|
|
2772
|
+
|
|
2773
|
+
:stability: experimental
|
|
2774
|
+
'''
|
|
2775
|
+
result = self._values.get("table_name")
|
|
2776
|
+
assert result is not None, "Required property 'table_name' is missing"
|
|
2777
|
+
return typing.cast(builtins.str, result)
|
|
2778
|
+
|
|
2779
|
+
@builtins.property
|
|
2780
|
+
def compaction(self) -> typing.Optional[CompactionProperty]:
|
|
2781
|
+
'''(experimental) Settings governing the Compaction maintenance action.
|
|
2782
|
+
|
|
2783
|
+
:default: Amazon S3 selects the best compaction strategy based on your table sort order.
|
|
2784
|
+
|
|
2785
|
+
:see: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-maintenance.html
|
|
2786
|
+
:stability: experimental
|
|
2787
|
+
'''
|
|
2788
|
+
result = self._values.get("compaction")
|
|
2789
|
+
return typing.cast(typing.Optional[CompactionProperty], result)
|
|
2790
|
+
|
|
2791
|
+
@builtins.property
|
|
2792
|
+
def iceberg_metadata(self) -> typing.Optional[IcebergMetadataProperty]:
|
|
2793
|
+
'''(experimental) Contains details about the metadata for an Iceberg table.
|
|
2794
|
+
|
|
2795
|
+
:default: table is created without any metadata
|
|
2796
|
+
|
|
2797
|
+
:stability: experimental
|
|
2798
|
+
'''
|
|
2799
|
+
result = self._values.get("iceberg_metadata")
|
|
2800
|
+
return typing.cast(typing.Optional[IcebergMetadataProperty], result)
|
|
2801
|
+
|
|
2802
|
+
@builtins.property
|
|
2803
|
+
def removal_policy(self) -> typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy]:
|
|
2804
|
+
'''(experimental) Controls what happens to this table it it stoped being managed by cloudformation.
|
|
2805
|
+
|
|
2806
|
+
:default: RETAIN
|
|
2807
|
+
|
|
2808
|
+
:stability: experimental
|
|
2809
|
+
'''
|
|
2810
|
+
result = self._values.get("removal_policy")
|
|
2811
|
+
return typing.cast(typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy], result)
|
|
2812
|
+
|
|
2813
|
+
@builtins.property
|
|
2814
|
+
def snapshot_management(self) -> typing.Optional[SnapshotManagementProperty]:
|
|
2815
|
+
'''(experimental) Contains details about the snapshot management settings for an Iceberg table.
|
|
2816
|
+
|
|
2817
|
+
:default: enabled: MinimumSnapshots is 1 by default and MaximumSnapshotAge is 120 hours by default.
|
|
2818
|
+
|
|
2819
|
+
:stability: experimental
|
|
2820
|
+
'''
|
|
2821
|
+
result = self._values.get("snapshot_management")
|
|
2822
|
+
return typing.cast(typing.Optional[SnapshotManagementProperty], result)
|
|
2823
|
+
|
|
2824
|
+
@builtins.property
|
|
2825
|
+
def without_metadata(self) -> typing.Optional[builtins.bool]:
|
|
2826
|
+
'''(experimental) If true, indicates that you don't want to specify a schema for the table.
|
|
2827
|
+
|
|
2828
|
+
This property is mutually exclusive to 'IcebergMetadata'.
|
|
2829
|
+
|
|
2830
|
+
:default: false
|
|
2831
|
+
|
|
2832
|
+
:stability: experimental
|
|
2833
|
+
'''
|
|
2834
|
+
result = self._values.get("without_metadata")
|
|
2835
|
+
return typing.cast(typing.Optional[builtins.bool], result)
|
|
2836
|
+
|
|
2837
|
+
def __eq__(self, rhs: typing.Any) -> builtins.bool:
|
|
2838
|
+
return isinstance(rhs, self.__class__) and rhs._values == self._values
|
|
2839
|
+
|
|
2840
|
+
def __ne__(self, rhs: typing.Any) -> builtins.bool:
|
|
2841
|
+
return not (rhs == self)
|
|
2842
|
+
|
|
2843
|
+
def __repr__(self) -> str:
|
|
2844
|
+
return "TableProps(%s)" % ", ".join(
|
|
2845
|
+
k + "=" + repr(v) for k, v in self._values.items()
|
|
2846
|
+
)
|
|
2847
|
+
|
|
2848
|
+
|
|
1320
2849
|
@jsii.data_type(
|
|
1321
2850
|
jsii_type="@aws-cdk/aws-s3tables-alpha.UnreferencedFileRemoval",
|
|
1322
2851
|
jsii_struct_bases=[],
|
|
@@ -1457,19 +2986,42 @@ class UnreferencedFileRemovalStatus(enum.Enum):
|
|
|
1457
2986
|
|
|
1458
2987
|
|
|
1459
2988
|
__all__ = [
|
|
2989
|
+
"CompactionProperty",
|
|
2990
|
+
"INamespace",
|
|
2991
|
+
"ITable",
|
|
1460
2992
|
"ITableBucket",
|
|
2993
|
+
"IcebergMetadataProperty",
|
|
2994
|
+
"IcebergSchemaProperty",
|
|
2995
|
+
"Namespace",
|
|
2996
|
+
"NamespaceAttributes",
|
|
2997
|
+
"NamespaceProps",
|
|
2998
|
+
"OpenTableFormat",
|
|
2999
|
+
"SchemaFieldProperty",
|
|
3000
|
+
"SnapshotManagementProperty",
|
|
3001
|
+
"Status",
|
|
3002
|
+
"Table",
|
|
3003
|
+
"TableAttributes",
|
|
1461
3004
|
"TableBucket",
|
|
1462
3005
|
"TableBucketAttributes",
|
|
1463
3006
|
"TableBucketEncryption",
|
|
1464
3007
|
"TableBucketPolicy",
|
|
1465
3008
|
"TableBucketPolicyProps",
|
|
1466
3009
|
"TableBucketProps",
|
|
3010
|
+
"TableProps",
|
|
1467
3011
|
"UnreferencedFileRemoval",
|
|
1468
3012
|
"UnreferencedFileRemovalStatus",
|
|
1469
3013
|
]
|
|
1470
3014
|
|
|
1471
3015
|
publication.publish()
|
|
1472
3016
|
|
|
3017
|
+
def _typecheckingstub__ea606cde59917b73fdb198d73eabdbbe686fdbd73e01ef72284a9061ea612d80(
|
|
3018
|
+
*,
|
|
3019
|
+
status: Status,
|
|
3020
|
+
target_file_size_mb: jsii.Number,
|
|
3021
|
+
) -> None:
|
|
3022
|
+
"""Type checking stubs"""
|
|
3023
|
+
pass
|
|
3024
|
+
|
|
1473
3025
|
def _typecheckingstub__a7c10542c60e15926bb4ef59925c4f6c0878400e041897780edddaa65054d627(
|
|
1474
3026
|
statement: _aws_cdk_aws_iam_ceddda9d.PolicyStatement,
|
|
1475
3027
|
) -> None:
|
|
@@ -1497,6 +3049,122 @@ def _typecheckingstub__65fa831e505e76e1fe23a8a8d8ce97bb97ebff683edbf67f37020df64
|
|
|
1497
3049
|
"""Type checking stubs"""
|
|
1498
3050
|
pass
|
|
1499
3051
|
|
|
3052
|
+
def _typecheckingstub__f8230e6a4eadd2193ba7389b1a23bde451e68a07c19bcda56cba1c321d75d5f0(
|
|
3053
|
+
*,
|
|
3054
|
+
iceberg_schema: typing.Union[IcebergSchemaProperty, typing.Dict[builtins.str, typing.Any]],
|
|
3055
|
+
) -> None:
|
|
3056
|
+
"""Type checking stubs"""
|
|
3057
|
+
pass
|
|
3058
|
+
|
|
3059
|
+
def _typecheckingstub__f4da2961c1ead632b855491f63cf76c4886c0e7a3d1795c1533655124a5dccb6(
|
|
3060
|
+
*,
|
|
3061
|
+
schema_field_list: typing.Sequence[typing.Union[SchemaFieldProperty, typing.Dict[builtins.str, typing.Any]]],
|
|
3062
|
+
) -> None:
|
|
3063
|
+
"""Type checking stubs"""
|
|
3064
|
+
pass
|
|
3065
|
+
|
|
3066
|
+
def _typecheckingstub__ea3444f2b1f25cee0bac27bf1e4c044f18ded5f025356448c35a47f4611915d5(
|
|
3067
|
+
scope: _constructs_77d1e7e8.Construct,
|
|
3068
|
+
id: builtins.str,
|
|
3069
|
+
*,
|
|
3070
|
+
namespace_name: builtins.str,
|
|
3071
|
+
table_bucket: ITableBucket,
|
|
3072
|
+
removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
|
|
3073
|
+
) -> None:
|
|
3074
|
+
"""Type checking stubs"""
|
|
3075
|
+
pass
|
|
3076
|
+
|
|
3077
|
+
def _typecheckingstub__429e6100662356607de36bc4f09397c07482d4becdff99cdf1257c1b95547276(
|
|
3078
|
+
scope: _constructs_77d1e7e8.Construct,
|
|
3079
|
+
id: builtins.str,
|
|
3080
|
+
*,
|
|
3081
|
+
namespace_name: builtins.str,
|
|
3082
|
+
table_bucket: ITableBucket,
|
|
3083
|
+
) -> None:
|
|
3084
|
+
"""Type checking stubs"""
|
|
3085
|
+
pass
|
|
3086
|
+
|
|
3087
|
+
def _typecheckingstub__4a07351eb257958d2290e548252c46a7c8963c7bc2f700e83671f819e4b7dbd5(
|
|
3088
|
+
namespace_name: builtins.str,
|
|
3089
|
+
) -> None:
|
|
3090
|
+
"""Type checking stubs"""
|
|
3091
|
+
pass
|
|
3092
|
+
|
|
3093
|
+
def _typecheckingstub__8f79f8c2998fe357462fbff82a75e82ed3236dd34caffcf6f6267cffcdda3275(
|
|
3094
|
+
*,
|
|
3095
|
+
namespace_name: builtins.str,
|
|
3096
|
+
table_bucket: ITableBucket,
|
|
3097
|
+
) -> None:
|
|
3098
|
+
"""Type checking stubs"""
|
|
3099
|
+
pass
|
|
3100
|
+
|
|
3101
|
+
def _typecheckingstub__fd18f87a98f23ccaea0f0c36db6b294de2ffbbb509594c9bfa49f26b6b0d0e7a(
|
|
3102
|
+
*,
|
|
3103
|
+
namespace_name: builtins.str,
|
|
3104
|
+
table_bucket: ITableBucket,
|
|
3105
|
+
removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
|
|
3106
|
+
) -> None:
|
|
3107
|
+
"""Type checking stubs"""
|
|
3108
|
+
pass
|
|
3109
|
+
|
|
3110
|
+
def _typecheckingstub__798c061a7214691172814263e161286845f9f56262e641ae55c93d363ce227c1(
|
|
3111
|
+
*,
|
|
3112
|
+
name: builtins.str,
|
|
3113
|
+
type: builtins.str,
|
|
3114
|
+
required: typing.Optional[builtins.bool] = None,
|
|
3115
|
+
) -> None:
|
|
3116
|
+
"""Type checking stubs"""
|
|
3117
|
+
pass
|
|
3118
|
+
|
|
3119
|
+
def _typecheckingstub__74aebe9bead3fb2bce88d441c25d815202759baedd02c817c6e08d2e1dfad2b2(
|
|
3120
|
+
*,
|
|
3121
|
+
max_snapshot_age_hours: typing.Optional[jsii.Number] = None,
|
|
3122
|
+
min_snapshots_to_keep: typing.Optional[jsii.Number] = None,
|
|
3123
|
+
status: typing.Optional[Status] = None,
|
|
3124
|
+
) -> None:
|
|
3125
|
+
"""Type checking stubs"""
|
|
3126
|
+
pass
|
|
3127
|
+
|
|
3128
|
+
def _typecheckingstub__9e5378cdcc21935af950b3c144ea6d1e345b4c98cccbf5fe2a92dff410ed06cf(
|
|
3129
|
+
scope: _constructs_77d1e7e8.Construct,
|
|
3130
|
+
id: builtins.str,
|
|
3131
|
+
*,
|
|
3132
|
+
namespace: INamespace,
|
|
3133
|
+
open_table_format: OpenTableFormat,
|
|
3134
|
+
table_name: builtins.str,
|
|
3135
|
+
compaction: typing.Optional[typing.Union[CompactionProperty, typing.Dict[builtins.str, typing.Any]]] = None,
|
|
3136
|
+
iceberg_metadata: typing.Optional[typing.Union[IcebergMetadataProperty, typing.Dict[builtins.str, typing.Any]]] = None,
|
|
3137
|
+
removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
|
|
3138
|
+
snapshot_management: typing.Optional[typing.Union[SnapshotManagementProperty, typing.Dict[builtins.str, typing.Any]]] = None,
|
|
3139
|
+
without_metadata: typing.Optional[builtins.bool] = None,
|
|
3140
|
+
) -> None:
|
|
3141
|
+
"""Type checking stubs"""
|
|
3142
|
+
pass
|
|
3143
|
+
|
|
3144
|
+
def _typecheckingstub__c92fbe73fcedcf34bbbc9a2359a274432437ec47317161e4c88ea9d209155ffd(
|
|
3145
|
+
scope: _constructs_77d1e7e8.Construct,
|
|
3146
|
+
id: builtins.str,
|
|
3147
|
+
*,
|
|
3148
|
+
table_arn: builtins.str,
|
|
3149
|
+
table_name: builtins.str,
|
|
3150
|
+
) -> None:
|
|
3151
|
+
"""Type checking stubs"""
|
|
3152
|
+
pass
|
|
3153
|
+
|
|
3154
|
+
def _typecheckingstub__536e137c7e7454507b9ec796514d014c3913e8c528dfeba351b5e0e36ba8e228(
|
|
3155
|
+
table_name: builtins.str,
|
|
3156
|
+
) -> None:
|
|
3157
|
+
"""Type checking stubs"""
|
|
3158
|
+
pass
|
|
3159
|
+
|
|
3160
|
+
def _typecheckingstub__20a648b98b2aa2a4eec0f744feac0d8ec3ee06e18fb2a623e889d224bf8fec03(
|
|
3161
|
+
*,
|
|
3162
|
+
table_arn: builtins.str,
|
|
3163
|
+
table_name: builtins.str,
|
|
3164
|
+
) -> None:
|
|
3165
|
+
"""Type checking stubs"""
|
|
3166
|
+
pass
|
|
3167
|
+
|
|
1500
3168
|
def _typecheckingstub__c8d9c0bf5c954c2a6797301b7dc6cb8abd812336f3507addc92f72b805ec0a1e(
|
|
1501
3169
|
scope: _constructs_77d1e7e8.Construct,
|
|
1502
3170
|
id: builtins.str,
|
|
@@ -1616,6 +3284,20 @@ def _typecheckingstub__aa14ccf904c2576c446af7122d6335d3a92b012274a231120ab28c942
|
|
|
1616
3284
|
"""Type checking stubs"""
|
|
1617
3285
|
pass
|
|
1618
3286
|
|
|
3287
|
+
def _typecheckingstub__adbbcc05d3dc39dfd296a872f006be429c733d0afc6f602e57bd2bede716f05e(
|
|
3288
|
+
*,
|
|
3289
|
+
namespace: INamespace,
|
|
3290
|
+
open_table_format: OpenTableFormat,
|
|
3291
|
+
table_name: builtins.str,
|
|
3292
|
+
compaction: typing.Optional[typing.Union[CompactionProperty, typing.Dict[builtins.str, typing.Any]]] = None,
|
|
3293
|
+
iceberg_metadata: typing.Optional[typing.Union[IcebergMetadataProperty, typing.Dict[builtins.str, typing.Any]]] = None,
|
|
3294
|
+
removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
|
|
3295
|
+
snapshot_management: typing.Optional[typing.Union[SnapshotManagementProperty, typing.Dict[builtins.str, typing.Any]]] = None,
|
|
3296
|
+
without_metadata: typing.Optional[builtins.bool] = None,
|
|
3297
|
+
) -> None:
|
|
3298
|
+
"""Type checking stubs"""
|
|
3299
|
+
pass
|
|
3300
|
+
|
|
1619
3301
|
def _typecheckingstub__b3c9fa2e0832ae26e721328d6c201e9e86774721d68903a6414d69d8a77a5675(
|
|
1620
3302
|
*,
|
|
1621
3303
|
noncurrent_days: typing.Optional[jsii.Number] = None,
|