

This is the new *CloudFormation Template Reference Guide*. Please update your bookmarks and links. For help getting started with CloudFormation, see the [AWS CloudFormation User Guide](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

# AWS::S3Tables::Table
<a name="aws-resource-s3tables-table"></a>

Creates a new table associated with the given namespace in a table bucket. For more information, see [Creating an Amazon S3 table](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-create.html) in the *Amazon Simple Storage Service User Guide*.

Permissions  
+ You must have the `s3tables:CreateTable` permission to use this operation. 
+ If you use this operation with the optional `metadata` request parameter you must have the `s3tables:PutTableData` permission. 
+ If you use this operation with the optional `encryptionConfiguration` request parameter you must have the `s3tables:PutTableEncryption` permission. 
Additionally, 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). 

 AWS Cloud Development Kit (AWS CDK)   
To use S3 Tables AWS CDK constructs, add the `@aws-cdk/aws-s3tables-alpha` dependency with one of the following options:  
+ NPM: `npm i @aws-cdk/aws-s3tables-alpha`
+ Yarn:`yarn add @aws-cdk/aws-s3tables-alpha`

## Syntax
<a name="aws-resource-s3tables-table-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-resource-s3tables-table-syntax.json"></a>

```
{
  "Type" : "AWS::S3Tables::Table",
  "Properties" : {
      "[Compaction](#cfn-s3tables-table-compaction)" : Compaction,
      "[IcebergMetadata](#cfn-s3tables-table-icebergmetadata)" : IcebergMetadata,
      "[Namespace](#cfn-s3tables-table-namespace)" : String,
      "[OpenTableFormat](#cfn-s3tables-table-opentableformat)" : String,
      "[SnapshotManagement](#cfn-s3tables-table-snapshotmanagement)" : SnapshotManagement,
      "[StorageClassConfiguration](#cfn-s3tables-table-storageclassconfiguration)" : StorageClassConfiguration,
      "[TableBucketARN](#cfn-s3tables-table-tablebucketarn)" : String,
      "[TableName](#cfn-s3tables-table-tablename)" : String,
      "[Tags](#cfn-s3tables-table-tags)" : [ Tag, ... ],
      "[WithoutMetadata](#cfn-s3tables-table-withoutmetadata)" : String
    }
}
```

### YAML
<a name="aws-resource-s3tables-table-syntax.yaml"></a>

```
Type: AWS::S3Tables::Table
Properties:
  [Compaction](#cfn-s3tables-table-compaction): 
    Compaction
  [IcebergMetadata](#cfn-s3tables-table-icebergmetadata): 
    IcebergMetadata
  [Namespace](#cfn-s3tables-table-namespace): String
  [OpenTableFormat](#cfn-s3tables-table-opentableformat): String
  [SnapshotManagement](#cfn-s3tables-table-snapshotmanagement): 
    SnapshotManagement
  [StorageClassConfiguration](#cfn-s3tables-table-storageclassconfiguration): 
    StorageClassConfiguration
  [TableBucketARN](#cfn-s3tables-table-tablebucketarn): String
  [TableName](#cfn-s3tables-table-tablename): String
  [Tags](#cfn-s3tables-table-tags): 
    - Tag
  [WithoutMetadata](#cfn-s3tables-table-withoutmetadata): String
```

## Properties
<a name="aws-resource-s3tables-table-properties"></a>

`Compaction`  <a name="cfn-s3tables-table-compaction"></a>
Contains details about the compaction settings for an Iceberg table.  
*Required*: No  
*Type*: [Compaction](aws-properties-s3tables-table-compaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`IcebergMetadata`  <a name="cfn-s3tables-table-icebergmetadata"></a>
Contains details about the metadata for an Iceberg table.  
*Required*: No  
*Type*: [IcebergMetadata](aws-properties-s3tables-table-icebergmetadata.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Namespace`  <a name="cfn-s3tables-table-namespace"></a>
The name of the namespace.  
*Required*: Yes  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`OpenTableFormat`  <a name="cfn-s3tables-table-opentableformat"></a>
The format of the table.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `ICEBERG`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`SnapshotManagement`  <a name="cfn-s3tables-table-snapshotmanagement"></a>
Contains details about the Iceberg snapshot management settings for the table.  
*Required*: No  
*Type*: [SnapshotManagement](aws-properties-s3tables-table-snapshotmanagement.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`StorageClassConfiguration`  <a name="cfn-s3tables-table-storageclassconfiguration"></a>
The configuration details for the storage class of tables or table buckets. This allows you to optimize storage costs by selecting the appropriate storage class based on your access patterns and performance requirements.  
*Required*: No  
*Type*: [StorageClassConfiguration](aws-properties-s3tables-table-storageclassconfiguration.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`TableBucketARN`  <a name="cfn-s3tables-table-tablebucketarn"></a>
The Amazon Resource Name (ARN) of the table bucket to create the table in.  
*Required*: Yes  
*Type*: String  
*Pattern*: `(arn:aws[-a-z0-9]*:[a-z0-9]+:[-a-z0-9]*:[0-9]{12}:bucket/[a-z0-9_-]{3,63})`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`TableName`  <a name="cfn-s3tables-table-tablename"></a>
The name for the table.  
*Required*: Yes  
*Type*: String  
*Pattern*: `[0-9a-z_]*`  
*Minimum*: `1`  
*Maximum*: `255`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Tags`  <a name="cfn-s3tables-table-tags"></a>
Property description not available.  
*Required*: No  
*Type*: Array of [Tag](aws-properties-s3tables-table-tag.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`WithoutMetadata`  <a name="cfn-s3tables-table-withoutmetadata"></a>
Indicates that you don't want to specify a schema for the table. This property is mutually exclusive to `IcebergMetadata`, and its only possible value is `Yes`.  
*Required*: No  
*Type*: String  
*Allowed values*: `Yes`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

## Return values
<a name="aws-resource-s3tables-table-return-values"></a>

### Ref
<a name="aws-resource-s3tables-table-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the table name.

For more information about using the `Ref` function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html).

### Fn::GetAtt
<a name="aws-resource-s3tables-table-return-values-fn--getatt"></a>

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-s3tables-table-return-values-fn--getatt-fn--getatt"></a>

`TableARN`  <a name="TableARN-fn::getatt"></a>
The Amazon Resource Name (ARN) of the table.

`VersionToken`  <a name="VersionToken-fn::getatt"></a>
The version token of the table.

`WarehouseLocation`  <a name="WarehouseLocation-fn::getatt"></a>
The warehouse location of the table.

# AWS::S3Tables::Table Compaction
<a name="aws-properties-s3tables-table-compaction"></a>

Contains details about the compaction settings for an Iceberg table.

## Syntax
<a name="aws-properties-s3tables-table-compaction-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-s3tables-table-compaction-syntax.json"></a>

```
{
  "[Status](#cfn-s3tables-table-compaction-status)" : String,
  "[TargetFileSizeMB](#cfn-s3tables-table-compaction-targetfilesizemb)" : Integer
}
```

### YAML
<a name="aws-properties-s3tables-table-compaction-syntax.yaml"></a>

```
  [Status](#cfn-s3tables-table-compaction-status): String
  [TargetFileSizeMB](#cfn-s3tables-table-compaction-targetfilesizemb): Integer
```

## Properties
<a name="aws-properties-s3tables-table-compaction-properties"></a>

`Status`  <a name="cfn-s3tables-table-compaction-status"></a>
The status of the maintenance configuration.  
*Required*: No  
*Type*: String  
*Allowed values*: `enabled | disabled`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`TargetFileSizeMB`  <a name="cfn-s3tables-table-compaction-targetfilesizemb"></a>
The target file size for the table in MB.  
*Required*: No  
*Type*: Integer  
*Minimum*: `64`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::S3Tables::Table IcebergMetadata
<a name="aws-properties-s3tables-table-icebergmetadata"></a>

Contains details about the metadata for an Iceberg table.

## Syntax
<a name="aws-properties-s3tables-table-icebergmetadata-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-s3tables-table-icebergmetadata-syntax.json"></a>

```
{
  "[IcebergPartitionSpec](#cfn-s3tables-table-icebergmetadata-icebergpartitionspec)" : IcebergPartitionSpec,
  "[IcebergSchema](#cfn-s3tables-table-icebergmetadata-icebergschema)" : IcebergSchema,
  "[IcebergSchemaV2](#cfn-s3tables-table-icebergmetadata-icebergschemav2)" : IcebergSchemaV2,
  "[IcebergSortOrder](#cfn-s3tables-table-icebergmetadata-icebergsortorder)" : IcebergSortOrder,
  "[TableProperties](#cfn-s3tables-table-icebergmetadata-tableproperties)" : {Key: Value, ...}
}
```

### YAML
<a name="aws-properties-s3tables-table-icebergmetadata-syntax.yaml"></a>

```
  [IcebergPartitionSpec](#cfn-s3tables-table-icebergmetadata-icebergpartitionspec): 
    IcebergPartitionSpec
  [IcebergSchema](#cfn-s3tables-table-icebergmetadata-icebergschema): 
    IcebergSchema
  [IcebergSchemaV2](#cfn-s3tables-table-icebergmetadata-icebergschemav2): 
    IcebergSchemaV2
  [IcebergSortOrder](#cfn-s3tables-table-icebergmetadata-icebergsortorder): 
    IcebergSortOrder
  [TableProperties](#cfn-s3tables-table-icebergmetadata-tableproperties): 
    Key: Value
```

## Properties
<a name="aws-properties-s3tables-table-icebergmetadata-properties"></a>

`IcebergPartitionSpec`  <a name="cfn-s3tables-table-icebergmetadata-icebergpartitionspec"></a>
Property description not available.  
*Required*: No  
*Type*: [IcebergPartitionSpec](aws-properties-s3tables-table-icebergpartitionspec.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`IcebergSchema`  <a name="cfn-s3tables-table-icebergmetadata-icebergschema"></a>
The schema for an Iceberg table. Use this property to define table schemas with primitive types only. For schemas that include nested or complex types such as `struct`, `list`, or `map`, use `schemaV2` instead.  
*Required*: No  
*Type*: [IcebergSchema](aws-properties-s3tables-table-icebergschema.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`IcebergSchemaV2`  <a name="cfn-s3tables-table-icebergmetadata-icebergschemav2"></a>
The schema for an Iceberg table using the V2 format. Use this property to define table schemas that include nested or complex data types such as `struct`, `list`, or `map`, in addition to primitive types. For schemas with only primitive types, you can use either `schema` or `schemaV2`.  
*Required*: No  
*Type*: [IcebergSchemaV2](aws-properties-s3tables-table-icebergschemav2.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`IcebergSortOrder`  <a name="cfn-s3tables-table-icebergmetadata-icebergsortorder"></a>
Property description not available.  
*Required*: No  
*Type*: [IcebergSortOrder](aws-properties-s3tables-table-icebergsortorder.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`TableProperties`  <a name="cfn-s3tables-table-icebergmetadata-tableproperties"></a>
Property description not available.  
*Required*: No  
*Type*: Object of String  
*Pattern*: `^.+$`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::S3Tables::Table IcebergPartitionField
<a name="aws-properties-s3tables-table-icebergpartitionfield"></a>

Defines a single partition field in an Iceberg partition specification.

## Syntax
<a name="aws-properties-s3tables-table-icebergpartitionfield-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-s3tables-table-icebergpartitionfield-syntax.json"></a>

```
{
  "[FieldId](#cfn-s3tables-table-icebergpartitionfield-fieldid)" : Integer,
  "[Name](#cfn-s3tables-table-icebergpartitionfield-name)" : String,
  "[SourceId](#cfn-s3tables-table-icebergpartitionfield-sourceid)" : Integer,
  "[Transform](#cfn-s3tables-table-icebergpartitionfield-transform)" : String
}
```

### YAML
<a name="aws-properties-s3tables-table-icebergpartitionfield-syntax.yaml"></a>

```
  [FieldId](#cfn-s3tables-table-icebergpartitionfield-fieldid): Integer
  [Name](#cfn-s3tables-table-icebergpartitionfield-name): String
  [SourceId](#cfn-s3tables-table-icebergpartitionfield-sourceid): Integer
  [Transform](#cfn-s3tables-table-icebergpartitionfield-transform): String
```

## Properties
<a name="aws-properties-s3tables-table-icebergpartitionfield-properties"></a>

`FieldId`  <a name="cfn-s3tables-table-icebergpartitionfield-fieldid"></a>
An optional unique identifier for this partition field. If not specified, S3 Tables automatically assigns a field ID.  
*Required*: No  
*Type*: Integer  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Name`  <a name="cfn-s3tables-table-icebergpartitionfield-name"></a>
The name for this partition field. This name is used in the partitioned file paths.  
*Required*: Yes  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`SourceId`  <a name="cfn-s3tables-table-icebergpartitionfield-sourceid"></a>
The ID of the source schema field to partition by. This must reference a valid field ID from the table schema.  
*Required*: Yes  
*Type*: Integer  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Transform`  <a name="cfn-s3tables-table-icebergpartitionfield-transform"></a>
The partition transform to apply to the source field. Supported transforms include `identity`, `year`, `month`, `day`, `hour`, `bucket`, and `truncate`. For more information, see the [Apache Iceberg partition transforms documentation](https://iceberg.apache.org/spec/#partition-transforms).  
*Required*: Yes  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::S3Tables::Table IcebergPartitionSpec
<a name="aws-properties-s3tables-table-icebergpartitionspec"></a>

Defines how data in an Iceberg table is partitioned. Partitioning helps optimize query performance by organizing data into separate files based on field values. Each partition field specifies a transform to apply to a source field.

## Syntax
<a name="aws-properties-s3tables-table-icebergpartitionspec-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-s3tables-table-icebergpartitionspec-syntax.json"></a>

```
{
  "[Fields](#cfn-s3tables-table-icebergpartitionspec-fields)" : [ IcebergPartitionField, ... ],
  "[SpecId](#cfn-s3tables-table-icebergpartitionspec-specid)" : Integer
}
```

### YAML
<a name="aws-properties-s3tables-table-icebergpartitionspec-syntax.yaml"></a>

```
  [Fields](#cfn-s3tables-table-icebergpartitionspec-fields): 
    - IcebergPartitionField
  [SpecId](#cfn-s3tables-table-icebergpartitionspec-specid): Integer
```

## Properties
<a name="aws-properties-s3tables-table-icebergpartitionspec-properties"></a>

`Fields`  <a name="cfn-s3tables-table-icebergpartitionspec-fields"></a>
The list of partition fields that define how the table data is partitioned. Each field specifies a source field and a transform to apply. This field is required if `partitionSpec` is provided.  
*Required*: Yes  
*Type*: Array of [IcebergPartitionField](aws-properties-s3tables-table-icebergpartitionfield.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`SpecId`  <a name="cfn-s3tables-table-icebergpartitionspec-specid"></a>
The unique identifier for this partition specification. If not specified, defaults to `0`.  
*Required*: No  
*Type*: Integer  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::S3Tables::Table IcebergSchema
<a name="aws-properties-s3tables-table-icebergschema"></a>

Contains details about the schema for an Iceberg table.

## Syntax
<a name="aws-properties-s3tables-table-icebergschema-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-s3tables-table-icebergschema-syntax.json"></a>

```
{
  "[SchemaFieldList](#cfn-s3tables-table-icebergschema-schemafieldlist)" : [ SchemaField, ... ]
}
```

### YAML
<a name="aws-properties-s3tables-table-icebergschema-syntax.yaml"></a>

```
  [SchemaFieldList](#cfn-s3tables-table-icebergschema-schemafieldlist): 
    - SchemaField
```

## Properties
<a name="aws-properties-s3tables-table-icebergschema-properties"></a>

`SchemaFieldList`  <a name="cfn-s3tables-table-icebergschema-schemafieldlist"></a>
The schema fields for the table  
*Required*: Yes  
*Type*: Array of [SchemaField](aws-properties-s3tables-table-schemafield.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::S3Tables::Table IcebergSchemaV2
<a name="aws-properties-s3tables-table-icebergschemav2"></a>

Contains details about the schema version 2 (V2) for an Iceberg table that supports [Apache Iceberg Nested Types](https://iceberg.apache.org/spec/#nested-types). Nested data type support includes struct, list and map. Primitive types are also supported.

## Syntax
<a name="aws-properties-s3tables-table-icebergschemav2-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-s3tables-table-icebergschemav2-syntax.json"></a>

```
{
  "[IdentifierFieldIds](#cfn-s3tables-table-icebergschemav2-identifierfieldids)" : [ Integer, ... ],
  "[SchemaId](#cfn-s3tables-table-icebergschemav2-schemaid)" : Integer,
  "[SchemaV2FieldList](#cfn-s3tables-table-icebergschemav2-schemav2fieldlist)" : [ SchemaV2Field, ... ],
  "[SchemaV2FieldType](#cfn-s3tables-table-icebergschemav2-schemav2fieldtype)" : String
}
```

### YAML
<a name="aws-properties-s3tables-table-icebergschemav2-syntax.yaml"></a>

```
  [IdentifierFieldIds](#cfn-s3tables-table-icebergschemav2-identifierfieldids): 
    - Integer
  [SchemaId](#cfn-s3tables-table-icebergschemav2-schemaid): Integer
  [SchemaV2FieldList](#cfn-s3tables-table-icebergschemav2-schemav2fieldlist): 
    - SchemaV2Field
  [SchemaV2FieldType](#cfn-s3tables-table-icebergschemav2-schemav2fieldtype): String
```

## Properties
<a name="aws-properties-s3tables-table-icebergschemav2-properties"></a>

`IdentifierFieldIds`  <a name="cfn-s3tables-table-icebergschemav2-identifierfieldids"></a>
A list of field IDs that are used as the identifier fields for the table. Identifier fields uniquely identify a row in the table.  
*Required*: No  
*Type*: Array of Integer  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`SchemaId`  <a name="cfn-s3tables-table-icebergschemav2-schemaid"></a>
An optional unique identifier for the schema.  
*Required*: No  
*Type*: Integer  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`SchemaV2FieldList`  <a name="cfn-s3tables-table-icebergschemav2-schemav2fieldlist"></a>
The schema fields for the table.  
*Required*: Yes  
*Type*: Array of [SchemaV2Field](aws-properties-s3tables-table-schemav2field.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`SchemaV2FieldType`  <a name="cfn-s3tables-table-icebergschemav2-schemav2fieldtype"></a>
The type of the top-level schema, which is always a struct type.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `struct`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::S3Tables::Table IcebergSortField
<a name="aws-properties-s3tables-table-icebergsortfield"></a>

Defines a single sort field in an Iceberg sort order specification.

## Syntax
<a name="aws-properties-s3tables-table-icebergsortfield-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-s3tables-table-icebergsortfield-syntax.json"></a>

```
{
  "[Direction](#cfn-s3tables-table-icebergsortfield-direction)" : String,
  "[NullOrder](#cfn-s3tables-table-icebergsortfield-nullorder)" : String,
  "[SourceId](#cfn-s3tables-table-icebergsortfield-sourceid)" : Integer,
  "[Transform](#cfn-s3tables-table-icebergsortfield-transform)" : String
}
```

### YAML
<a name="aws-properties-s3tables-table-icebergsortfield-syntax.yaml"></a>

```
  [Direction](#cfn-s3tables-table-icebergsortfield-direction): String
  [NullOrder](#cfn-s3tables-table-icebergsortfield-nullorder): String
  [SourceId](#cfn-s3tables-table-icebergsortfield-sourceid): Integer
  [Transform](#cfn-s3tables-table-icebergsortfield-transform): String
```

## Properties
<a name="aws-properties-s3tables-table-icebergsortfield-properties"></a>

`Direction`  <a name="cfn-s3tables-table-icebergsortfield-direction"></a>
The sort direction. Valid values are `asc` for ascending order or `desc` for descending order.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `asc | desc`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`NullOrder`  <a name="cfn-s3tables-table-icebergsortfield-nullorder"></a>
Specifies how null values are ordered. Valid values are `nulls-first` to place nulls before non-null values, or `nulls-last` to place nulls after non-null values.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `nulls-first | nulls-last`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`SourceId`  <a name="cfn-s3tables-table-icebergsortfield-sourceid"></a>
The ID of the source schema field to sort by. This must reference a valid field ID from the table schema.  
*Required*: Yes  
*Type*: Integer  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Transform`  <a name="cfn-s3tables-table-icebergsortfield-transform"></a>
The transform to apply to the source field before sorting. Use `identity` to sort by the field value directly, or specify other transforms as needed.  
*Required*: Yes  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::S3Tables::Table IcebergSortOrder
<a name="aws-properties-s3tables-table-icebergsortorder"></a>

Defines the sort order for data within an Iceberg table. Sorting data can improve query performance by enabling more efficient data skipping.

## Syntax
<a name="aws-properties-s3tables-table-icebergsortorder-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-s3tables-table-icebergsortorder-syntax.json"></a>

```
{
  "[Fields](#cfn-s3tables-table-icebergsortorder-fields)" : [ IcebergSortField, ... ],
  "[OrderId](#cfn-s3tables-table-icebergsortorder-orderid)" : Integer
}
```

### YAML
<a name="aws-properties-s3tables-table-icebergsortorder-syntax.yaml"></a>

```
  [Fields](#cfn-s3tables-table-icebergsortorder-fields): 
    - IcebergSortField
  [OrderId](#cfn-s3tables-table-icebergsortorder-orderid): Integer
```

## Properties
<a name="aws-properties-s3tables-table-icebergsortorder-properties"></a>

`Fields`  <a name="cfn-s3tables-table-icebergsortorder-fields"></a>
The list of sort fields that define how data is sorted within files. Each field specifies a source field, sort direction, and null ordering. This field is required if `writeOrder` is provided.  
*Required*: Yes  
*Type*: Array of [IcebergSortField](aws-properties-s3tables-table-icebergsortfield.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`OrderId`  <a name="cfn-s3tables-table-icebergsortorder-orderid"></a>
The unique identifier for this sort order. If not specified, defaults to `1`. The order ID is used by Apache Iceberg to track sort order evolution.  
*Required*: No  
*Type*: Integer  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::S3Tables::Table SchemaField
<a name="aws-properties-s3tables-table-schemafield"></a>

Contains details about a schema field.

## Syntax
<a name="aws-properties-s3tables-table-schemafield-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-s3tables-table-schemafield-syntax.json"></a>

```
{
  "[Id](#cfn-s3tables-table-schemafield-id)" : Integer,
  "[Name](#cfn-s3tables-table-schemafield-name)" : String,
  "[Required](#cfn-s3tables-table-schemafield-required)" : Boolean,
  "[Type](#cfn-s3tables-table-schemafield-type)" : String
}
```

### YAML
<a name="aws-properties-s3tables-table-schemafield-syntax.yaml"></a>

```
  [Id](#cfn-s3tables-table-schemafield-id): Integer
  [Name](#cfn-s3tables-table-schemafield-name): String
  [Required](#cfn-s3tables-table-schemafield-required): Boolean
  [Type](#cfn-s3tables-table-schemafield-type): String
```

## Properties
<a name="aws-properties-s3tables-table-schemafield-properties"></a>

`Id`  <a name="cfn-s3tables-table-schemafield-id"></a>
An optional unique identifier for the schema field. Field IDs are used by Apache Iceberg to track schema evolution and maintain compatibility across schema changes. If not specified, S3 Tables automatically assigns field IDs.  
*Required*: No  
*Type*: Integer  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Name`  <a name="cfn-s3tables-table-schemafield-name"></a>
The name of the field.  
*Required*: Yes  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Required`  <a name="cfn-s3tables-table-schemafield-required"></a>
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.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Type`  <a name="cfn-s3tables-table-schemafield-type"></a>
The field type. S3 Tables supports all Apache Iceberg primitive types. For more information, see the [Apache Iceberg documentation](https://iceberg.apache.org/spec/#primitive-types).  
*Required*: Yes  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::S3Tables::Table SchemaV2Field
<a name="aws-properties-s3tables-table-schemav2field"></a>

Contains details about a schema field version 2 (V2) that supports [Apache Iceberg Nested Types](https://iceberg.apache.org/spec/#nested-types). Nested data type support includes struct, list and map. Primitive types are also supported.

**Important**  
`IcebergSchemaV2` is mutually exclusive with `IcebergSchema`. Specify `IcebergSchema` for flat schemas with primitive types only, or `IcebergSchemaV2` for schemas that include nested types (struct, list, map). You cannot specify both.

**Note**  
Top-level CloudFormation properties use PascalCase (`Id`, `Name`, `Type`, `Required`, `Doc`). When specifying nested type objects inside `Type`, use lowercase keys (`type`, `fields`, `id`, `name`, `required`, `element-id`, `element`, `element-required`, `key-id`, `key`, `value-id`, `value`, `value-required`) as these follow the Apache Iceberg specification format.

## Syntax
<a name="aws-properties-s3tables-table-schemav2field-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-s3tables-table-schemav2field-syntax.json"></a>

```
{
  "[Doc](#cfn-s3tables-table-schemav2field-doc)" : String,
  "[Id](#cfn-s3tables-table-schemav2field-id)" : Integer,
  "[Name](#cfn-s3tables-table-schemav2field-name)" : String,
  "[Required](#cfn-s3tables-table-schemav2field-required)" : Boolean,
  "[Type](#cfn-s3tables-table-schemav2field-type)" : String
}
```

### YAML
<a name="aws-properties-s3tables-table-schemav2field-syntax.yaml"></a>

```
  [Doc](#cfn-s3tables-table-schemav2field-doc): String
  [Id](#cfn-s3tables-table-schemav2field-id): Integer
  [Name](#cfn-s3tables-table-schemav2field-name): String
  [Required](#cfn-s3tables-table-schemav2field-required): Boolean
  [Type](#cfn-s3tables-table-schemav2field-type): String
```

## Properties
<a name="aws-properties-s3tables-table-schemav2field-properties"></a>

`Doc`  <a name="cfn-s3tables-table-schemav2field-doc"></a>
An optional description of the field.  
*Required*: No  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Id`  <a name="cfn-s3tables-table-schemav2field-id"></a>
A unique identifier for the schema field V2. Field IDs are used by Apache Iceberg to track schema evolution and maintain compatibility across schema changes.  
*Required*: Yes  
*Type*: Integer  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Name`  <a name="cfn-s3tables-table-schemav2field-name"></a>
The name of the field.  
*Required*: Yes  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Required`  <a name="cfn-s3tables-table-schemav2field-required"></a>
A Boolean value that specifies whether values are required for each row in this field. If this is `true` the field does not allow null values.  
*Required*: Yes  
*Type*: Boolean  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Type`  <a name="cfn-s3tables-table-schemav2field-type"></a>
The field type. S3 Tables supports all Apache Iceberg primitive types and nested types. For more information, see the [Apache Iceberg documentation](https://iceberg.apache.org/spec/#schemas-and-data-types).  
*Required*: Yes  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::S3Tables::Table SnapshotManagement
<a name="aws-properties-s3tables-table-snapshotmanagement"></a>

Contains details about the snapshot management settings for an Iceberg table. The oldest snapshot expires when its age exceeds the `maxSnapshotAgeHours` and the total number of snapshots exceeds the value for the minimum number of snapshots to keep `minSnapshotsToKeep`.

## Syntax
<a name="aws-properties-s3tables-table-snapshotmanagement-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-s3tables-table-snapshotmanagement-syntax.json"></a>

```
{
  "[MaxSnapshotAgeHours](#cfn-s3tables-table-snapshotmanagement-maxsnapshotagehours)" : Integer,
  "[MinSnapshotsToKeep](#cfn-s3tables-table-snapshotmanagement-minsnapshotstokeep)" : Integer,
  "[Status](#cfn-s3tables-table-snapshotmanagement-status)" : String
}
```

### YAML
<a name="aws-properties-s3tables-table-snapshotmanagement-syntax.yaml"></a>

```
  [MaxSnapshotAgeHours](#cfn-s3tables-table-snapshotmanagement-maxsnapshotagehours): Integer
  [MinSnapshotsToKeep](#cfn-s3tables-table-snapshotmanagement-minsnapshotstokeep): Integer
  [Status](#cfn-s3tables-table-snapshotmanagement-status): String
```

## Properties
<a name="aws-properties-s3tables-table-snapshotmanagement-properties"></a>

`MaxSnapshotAgeHours`  <a name="cfn-s3tables-table-snapshotmanagement-maxsnapshotagehours"></a>
The maximum age of a snapshot before it can be expired.  
*Required*: No  
*Type*: Integer  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`MinSnapshotsToKeep`  <a name="cfn-s3tables-table-snapshotmanagement-minsnapshotstokeep"></a>
The minimum number of snapshots to keep.  
*Required*: No  
*Type*: Integer  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Status`  <a name="cfn-s3tables-table-snapshotmanagement-status"></a>
The status of the maintenance configuration.  
*Required*: No  
*Type*: String  
*Allowed values*: `enabled | disabled`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::S3Tables::Table StorageClassConfiguration
<a name="aws-properties-s3tables-table-storageclassconfiguration"></a>

The configuration details for the storage class of tables or table buckets. This allows you to optimize storage costs by selecting the appropriate storage class based on your access patterns and performance requirements.

## Syntax
<a name="aws-properties-s3tables-table-storageclassconfiguration-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-s3tables-table-storageclassconfiguration-syntax.json"></a>

```
{
  "[StorageClass](#cfn-s3tables-table-storageclassconfiguration-storageclass)" : String
}
```

### YAML
<a name="aws-properties-s3tables-table-storageclassconfiguration-syntax.yaml"></a>

```
  [StorageClass](#cfn-s3tables-table-storageclassconfiguration-storageclass): String
```

## Properties
<a name="aws-properties-s3tables-table-storageclassconfiguration-properties"></a>

`StorageClass`  <a name="cfn-s3tables-table-storageclassconfiguration-storageclass"></a>
The storage class for the table or table bucket. Valid values include storage classes optimized for different access patterns and cost profiles.  
*Required*: No  
*Type*: String  
*Allowed values*: `STANDARD | INTELLIGENT_TIERING`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::S3Tables::Table Tag
<a name="aws-properties-s3tables-table-tag"></a>

<a name="aws-properties-s3tables-table-tag-description"></a>The `Tag` property type specifies Property description not available. for an [AWS::S3Tables::Table](aws-resource-s3tables-table.md).

## Syntax
<a name="aws-properties-s3tables-table-tag-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-s3tables-table-tag-syntax.json"></a>

```
{
  "[Key](#cfn-s3tables-table-tag-key)" : String,
  "[Value](#cfn-s3tables-table-tag-value)" : String
}
```

### YAML
<a name="aws-properties-s3tables-table-tag-syntax.yaml"></a>

```
  [Key](#cfn-s3tables-table-tag-key): String
  [Value](#cfn-s3tables-table-tag-value): String
```

## Properties
<a name="aws-properties-s3tables-table-tag-properties"></a>

`Key`  <a name="cfn-s3tables-table-tag-key"></a>
Property description not available.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Value`  <a name="cfn-s3tables-table-tag-value"></a>
Property description not available.  
*Required*: Yes  
*Type*: String  
*Maximum*: `256`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)