Skip to content
v2.277.0

Experimental

@aws-cdk/aws-s3tables-alpha is an experimental (alpha) package: its API may change in any release, without a major version bump.

TableProps Struct ​

Properties for creating a new S3 Table.

Example ​

ts
// Build a table with partition spec (minimal configuration)
const partitionedTable = new Table(scope, 'PartitionedTable', {
    tableName: 'partitioned_table',
    namespace: namespace,
    openTableFormat: OpenTableFormat.ICEBERG,
    icebergMetadata: {
        icebergSchema: {
            schemaFieldList: [
                { name: 'event_date', type: 'date', required: true },
                { name: 'event_name', type: 'string' },
            ],
        },
        icebergPartitionSpec: {
            fields: [
                {
                    sourceId: 1,
                    transform: IcebergTransform.IDENTITY,
                    name: 'date_partition',
                },
            ],
        },
    },
});
python
from aws_cdk.aws_s3tables_alpha import IcebergMetadataProperty, IcebergSchemaProperty, SchemaFieldProperty, SchemaFieldProperty, IcebergPartitionSpec, IcebergPartitionField
# Build a table with partition spec (minimal configuration)
partitioned_table = Table(scope, "PartitionedTable",
    table_name="partitioned_table",
    namespace=namespace,
    open_table_format=OpenTableFormat.ICEBERG,
    iceberg_metadata=IcebergMetadataProperty(
        iceberg_schema=IcebergSchemaProperty(
            schema_field_list=[SchemaFieldProperty(name="event_date", type="date", required=True), SchemaFieldProperty(name="event_name", type="string")
            ]
        ),
        iceberg_partition_spec=IcebergPartitionSpec(
            fields=[IcebergPartitionField(
                source_id=1,
                transform=IcebergTransform.IDENTITY,
                name="date_partition"
            )
            ]
        )
    )
)
java
// Build a table with partition spec (minimal configuration)
Table partitionedTable = Table.Builder.create(scope, "PartitionedTable")
        .tableName("partitioned_table")
        .namespace(namespace)
        .openTableFormat(OpenTableFormat.ICEBERG)
        .icebergMetadata(IcebergMetadataProperty.builder()
                .icebergSchema(IcebergSchemaProperty.builder()
                        .schemaFieldList(List.of(SchemaFieldProperty.builder().name("event_date").type("date").required(true).build(), SchemaFieldProperty.builder().name("event_name").type("string").build()))
                        .build())
                .icebergPartitionSpec(IcebergPartitionSpec.builder()
                        .fields(List.of(IcebergPartitionField.builder()
                                .sourceId(1)
                                .transform(IcebergTransform.IDENTITY)
                                .name("date_partition")
                                .build()))
                        .build())
                .build())
        .build();
csharp
// Install: dotnet add package Amazon.CDK.AWS.S3Tables.Alpha
// Build a table with partition spec (minimal configuration)
var partitionedTable = new Table(scope, "PartitionedTable", new TableProps {
    TableName = "partitioned_table",
    Namespace = namespace,
    OpenTableFormat = OpenTableFormat.ICEBERG,
    IcebergMetadata = new IcebergMetadataProperty {
        IcebergSchema = new IcebergSchemaProperty {
            SchemaFieldList = new [] { new SchemaFieldProperty { Name = "event_date", Type = "date", Required = true }, new SchemaFieldProperty { Name = "event_name", Type = "string" } }
        },
        IcebergPartitionSpec = new IcebergPartitionSpec {
            Fields = new [] { new IcebergPartitionField {
                SourceId = 1,
                Transform = IcebergTransform.IDENTITY,
                Name = "date_partition"
            } }
        }
    }
});
go
// Build a table with partition spec (minimal configuration)
partitionedTable := awscdkawss3tablesalpha.NewTable(*scope, jsii.String("PartitionedTable"), &TableProps{
	TableName: jsii.String("partitioned_table"),
	Namespace: namespace,
	OpenTableFormat: *awscdkawss3tablesalpha.OpenTableFormat_ICEBERG,
	IcebergMetadata: &IcebergMetadataProperty{
		IcebergSchema: &IcebergSchemaProperty{
			SchemaFieldList: []SchemaFieldProperty{
				&SchemaFieldProperty{
					Name: jsii.String("event_date"),
					Type: jsii.String("date"),
					Required: jsii.Boolean(true),
				},
				&SchemaFieldProperty{
					Name: jsii.String("event_name"),
					Type: jsii.String("string"),
				},
			},
		},
		IcebergPartitionSpec: &IcebergPartitionSpec{
			Fields: []IcebergPartitionField{
				&IcebergPartitionField{
					SourceId: jsii.Number(1),
					Transform: *awscdkawss3tablesalpha.IcebergTransform_IDENTITY(),
					Name: jsii.String("date_partition"),
				},
			},
		},
	},
})

Properties ​

compactionoptionalCompactionPropertycompactionoptionalCompactionPropertycompactionoptionalCompactionPropertyCompactionoptionalCompactionPropertyCompactionoptionalCompactionProperty#
Settings governing the Compaction maintenance action.

Default: Amazon S3 selects the best compaction strategy based on your table sort order.

icebergMetadataoptionalIcebergMetadataPropertyiceberg_metadataoptionalIcebergMetadataPropertyicebergMetadataoptionalIcebergMetadataPropertyIcebergMetadataoptionalIcebergMetadataPropertyIcebergMetadataoptionalIcebergMetadataProperty#
Contains details about the metadata for an Iceberg table.

Default: table is created without any metadata

namespaceINamespacenamespaceINamespacenamespaceINamespaceNamespaceINamespaceNamespaceINamespacerequired#
The namespace under which this table is created.
openTableFormatOpenTableFormatopen_table_formatOpenTableFormatopenTableFormatOpenTableFormatOpenTableFormatOpenTableFormatOpenTableFormatOpenTableFormatrequired#
Format of this table.

Currently, the only supported value is OpenTableFormat.ICEBERG.

removalPolicyoptionalRemovalPolicyremoval_policyoptionalRemovalPolicyremovalPolicyoptionalRemovalPolicyRemovalPolicyoptionalRemovalPolicyRemovalPolicyoptionalRemovalPolicy= RETAIN#
Controls what happens to this table it it stoped being managed by cloudformation.
snapshotManagementoptionalSnapshotManagementPropertysnapshot_managementoptionalSnapshotManagementPropertysnapshotManagementoptionalSnapshotManagementPropertySnapshotManagementoptionalSnapshotManagementPropertySnapshotManagementoptionalSnapshotManagementProperty#
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.

storageClassoptionalStorageClassstorage_classoptionalStorageClassstorageClassoptionalStorageClassStorageClassoptionalStorageClassStorageClassoptionalStorageClass#
The storage class for the table.

Default: Inherits from the table bucket's storage class configuration

Determines the storage tier used for table data, allowing optimization for different access patterns and cost profiles.

Note: This is a create-only property and cannot be changed after the table is created.

tableNamestringtable_namestrtableNameStringTableNamestringTableName*stringrequired#
Name of this table, unique within the namespace.
withoutMetadataoptionalbooleanwithout_metadataoptionalboolwithoutMetadataoptionalBooleanWithoutMetadataoptionalboolWithoutMetadataoptional*bool= false#
If true, indicates that you don't want to specify a schema for the table.

This property is mutually exclusive to 'IcebergMetadata'.