Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[AWS::Glue::TableOptimizer] - [Docs] - Properties are completely incorrect #2257

Open
padaszewski opened this issue Feb 12, 2025 · 0 comments
Labels
documentation Improvements or additions to documentation

Comments

@padaszewski
Copy link

Name of the resource

AWS::Glue::TableOptimizer

Resource name

No response

Reference Link

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-tableoptimizer.html

Details

  1. Type:
The type of table optimizer. Currently, the only valid value is compaction.

Required: Yes

Type: String

It's wrong, three values are valid:

  • compaction
  • retention
  • orphan_file_deletion

CLI Reference: https://docs.aws.amazon.com/cli/latest/reference/glue/create-table-optimizer.html
I've been able to use all three values successfully and get the expected result.

  1. TableOptimizerConfiguration.RetentionConfiguration.IcebergConfiguration:
  Location: String
  OrphanFileRetentionPeriodInDays: Integer

It's not. Actually correct structure is:

  SnapshotRetentionPeriodInDays: Integer
  NumberOfSnapshotsToRetain: Integer
  CleanExpiredFiles: Boolean

Also CLI as reference. Also tested.

  1. TableOptimizerConfiguration based on Type
  • If Type is compaction, you cannot specify either OrphanFileDeletionConfiguration or RetentionConfiguration
  • If Type is retention, you have to provide RetentionConfiguration
  • If Type is orphan_file_deletion, you have to provide OrphanFileDeletionConfiguration

The CDK implementation of CFN resources is also poor due to incorrect properties, but I have a workaround for folks who want to automate TableOptimizer:

const cfnTableOptimizerCompaction = new CfnTableOptimizer(testStack, 'TableOptimizerCompaction', {
    catalogId: catalogId, //essentially AWS Account Id
    databaseName: dbName,
    tableName: tableName,
    type: 'compaction',
    tableOptimizerConfiguration: {
        enabled: true,
        //correct permissions here: https://docs.aws.amazon.com/glue/latest/dg/optimization-prerequisites.html
        roleArn: compactionRoleArn
    }
});
const cfnTableOptimizerOrphanFileDeletion = new CfnTableOptimizer(testStack, 'TableOptimizerOrphanFileDeletion', {
    catalogId: catalogId,
    databaseName: dbName,
    tableName: tableName,
    type: 'orphan_file_deletion',
    tableOptimizerConfiguration: {
        orphanFileDeletionConfiguration: {
            icebergConfiguration: {
                // ex: 's3://some-bucket/table', can be found in Table Details in Glue Console
                location: tableLocation,
                orphanFileRetentionPeriodInDays: 1
            }
        },
        enabled: true,
        roleArn: orphanFileDeletionRoleArn
    }
});
const cfnTableOptimizerRetention = new CfnTableOptimizer(testStack, 'TableOptimizerRetention', {
    catalogId: catalogId,
    databaseName: dbName,
    tableName: tableName,
    type: 'retention',
    tableOptimizerConfiguration: {
        enabled: true,
        roleArn: retentionRoleArn
    }
});
cfnTableOptimizerRetention.addOverride('Properties.TableOptimizerConfiguration.RetentionConfiguration.IcebergConfiguration', {
    SnapshotRetentionPeriodInDays: 1,
    NumberOfSnapshotsToRetain: 1,
    CleanExpiredFiles: true
})
@padaszewski padaszewski added the documentation Improvements or additions to documentation label Feb 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

1 participant