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.
AWS::Glue::TableOptimizer
An AWS Glue resource for enabling table optimizers to improve read performance for open table formats.
Syntax
To declare this entity in your CloudFormation template, use the following syntax:
JSON
{ "Type" : "AWS::Glue::TableOptimizer", "Properties" : { "CatalogId" :String, "DatabaseName" :String, "TableName" :String, "TableOptimizerConfiguration" :TableOptimizerConfiguration, "Type" :String} }
YAML
Type: AWS::Glue::TableOptimizer Properties: CatalogId:StringDatabaseName:StringTableName:StringTableOptimizerConfiguration:TableOptimizerConfigurationType:String
Properties
CatalogId-
The catalog ID of the table.
Required: Yes
Type: String
Update requires: Replacement
DatabaseName-
The name of the database. For Hive compatibility, this is folded to lowercase when it is stored.
Required: Yes
Type: String
Pattern:
[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\t]*Minimum:
1Maximum:
255Update requires: Replacement
TableName-
The table name. For Hive compatibility, this must be entirely lowercase.
Required: Yes
Type: String
Pattern:
[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\t]*Minimum:
1Maximum:
255Update requires: Replacement
TableOptimizerConfiguration-
Specifies configuration details of a table optimizer.
Required: Yes
Type: TableOptimizerConfiguration
Update requires: No interruption
Type-
The type of table optimizer. The valid values are:
-
compaction - for managing compaction with a table optimizer.
-
retention - for managing the retention of snapshot with a table optimizer.
-
orphan_file_deletion - for managing the deletion of orphan files with a table optimizer.
Required: Yes
Type: String
Update requires: Replacement
-
Return values
Ref
Fn::GetAtt
Examples
Compaction table optimizer example
JSON
{ "GlueTableOptimizer": { "Type": "AWS::Glue::TableOptimizer", "Properties": { "CatalogId": {"Ref": "AWS::AccountId"}, "DatabaseName": {"Ref": "GlueDatabase"}, "TableName": {"Ref": "GlueTable"}, "Type": "compaction", "TableOptimizerConfiguration": { "RoleArn": {"Fn:: GetAtt": ["CompactionRole", "Arn"]}, "Enabled": true } } } }
YAML
GlueTableOptimizer: Type: AWS::Glue::TableOptimizer Properties: CatalogId: !Ref AWS::AccountId DatabaseName: !Ref GlueDatabase TableName: !Ref GlueTable Type: "compaction" TableOptimizerConfiguration: RoleArn: !GetAtt CompactionRole.Arn Enabled: True
Snapshot retention table optimizer example
JSON
{ "GlueTableOptimizer": { "Type": "AWS::Glue::TableOptimizer", "Properties": { "CatalogId": {"Ref": "AWS::AccountId"}, "DatabaseName": {"Ref": "GlueDatabase"}, "TableName": {"Ref": "GlueTable"}, "Type": "retention", "TableOptimizerConfiguration": { "RoleArn": {"Fn::GetAtt": ["RetentionRole", "Arn"]}, "Enabled": true, "RetentionConfiguration": { "icebergConfiguration": { "snapshotRetentionPeriodInDays": 7, "numberOfSnapshotsToRetain": 2, "cleanExpiredFiles": true } } } } } }
YAML
GlueTableOptimizer: Type: AWS::Glue::TableOptimizer Properties: CatalogId: !Ref AWS::AccountId DatabaseName: !Ref GlueDatabase TableName: !Ref GlueTable Type: "retention" TableOptimizerConfiguration: RoleArn: !GetAtt TableOptimizerRole.Arn Enabled: False RetentionConfiguration: IcebergConfiguration: SnapshotRetentionPeriodInDays: 7 NumberOfSnapshotsToRetain: 5 CleanExpiredFiles: True
Orphan file deletion table optimizer example
JSON
{ "OrphanFileDeletionOptimizer": { "Type": "AWS::Glue::TableOptimizer", "Properties": { "CatalogId": {"Ref": "AWS::AccountId"}, "DatabaseName": {"Ref": "GlueDatabase"}, "TableName": {"Ref": "GlueTable"}, "Type": "orphan_file_deletion", "TableOptimizerConfiguration": { "RoleArn": {"Fn::GetAtt": ["OrphanFileDeletionRole", "Arn"]}, "Enabled": true, "OrphanFileDeletionConfiguration": { "icebergConfiguration": { "orphanFileRetentionPeriodInDays": 5, "location": "s3://my-bucket/table-location/" } } } } } }
YAML
GlueTableOptimizer: Type: AWS::Glue::TableOptimizer Properties: CatalogId: !Ref AWS::AccountId DatabaseName: !Ref GlueDatabase TableName: !Ref GlueTable Type: "orphan_file_deletion" TableOptimizerConfiguration: RoleArn: !GetAtt TableOptimizerRole.Arn Enabled: False OrphanFileDeletionConfiguration: IcebergConfiguration: OrphanFileRetentionPeriodInDays: 10 Location: !Join ['', ['s3://', !ImportValue TestIcebergS3Bucket, '/orphan-files/']]