Skip to content
v2.273.0

S3TableProps Struct ​

Example ​

ts
declare const myDatabase: glue.Database;
new glue.S3Table(this, 'MyTable', {
  database: myDatabase,
  columns: [{
    name: 'data',
    type: glue.Schema.STRING,
  }],
  partitionKeys: [{
    name: 'date',
    type: glue.Schema.STRING,
  }],
  dataFormat: glue.DataFormat.JSON,
  partitionProjection: {
    date: glue.PartitionProjectionConfiguration.date({
      min: 'NOW-3YEARS',
      max: 'NOW',
      format: 'yyyy-MM-dd',
    }),
  },
});

Properties ​

clientSideEncryptionTableClientSideEncryptionclient_side_encryptionTableClientSideEncryptionclientSideEncryptionTableClientSideEncryptionClientSideEncryptionTableClientSideEncryptionClientSideEncryptionTableClientSideEncryption= no client-side encryption#
Client-side encryption (CSE-KMS) for the table's data.

Independent of the bucket's server-side encryption, and valid whether the bucket is managed or provided.

columnsColumn[]columnstyping.List[Column]columnsList<Column>ColumnsColumn[]Columns*[]Columnrequired#
Columns of the table.
compressedbooleancompressedboolcompressedBooleanCompressedboolCompressed*bool= false#
Indicates whether the table's data is compressed or not.
databaseIDatabasedatabaseIDatabasedatabaseIDatabaseDatabaseIDatabaseDatabaseIDatabaserequired#
Database in which to store the table.
dataFormatDataFormatdata_formatDataFormatdataFormatDataFormatDataFormatDataFormatDataFormatDataFormatrequired#
Storage type of the table's data.
descriptionstringdescriptionstrdescriptionStringDescriptionstringDescription*string= generated#
Description of the table.
enablePartitionFilteringbooleanenable_partition_filteringboolenablePartitionFilteringBooleanEnablePartitionFilteringboolEnablePartitionFiltering*bool= The parameter is not defined#
Enables partition filtering.
hasEncryptedDatabooleanhas_encrypted_databoolhasEncryptedDataBooleanHasEncryptedDataboolHasEncryptedData*bool= true#
Whether the data stored in the table is encrypted.
notes

This sets the has_encrypted_data table parameter. Athena reads it when querying client-side (CSE-KMS) encrypted datasets; for server-side encrypted (SSE-S3 / SSE-KMS) or unencrypted data it has no effect, since Amazon S3 decrypts server-side encrypted objects transparently.

Do not also set has_encrypted_data through parameters - use this property instead. A conflicting value in parameters is rejected.

parameters{ [key: string]: string }parameterstyping.Mapping[str, str]parametersMap<String, String>ParametersIDictionary<string, string>Parameters*map[string]*string= The parameter is not defined#
The key/value pairs define properties associated with the table.

The key/value pairs that are allowed to be submitted are not limited, however their functionality is not guaranteed.

partitionIndexesPartitionIndex[]partition_indexestyping.List[PartitionIndex]partitionIndexesList<PartitionIndex>PartitionIndexesPartitionIndex[]PartitionIndexes*[]PartitionIndex= table has no partition indexes#
Partition indexes on the table.

A maximum of 3 indexes are allowed on a table. Keys in the index must be part of the table's partition keys.

partitionKeysColumn[]partition_keystyping.List[Column]partitionKeysList<Column>PartitionKeysColumn[]PartitionKeys*[]Column= table is not partitioned#
Partition columns of the table.
partitionProjection{ [key: string]: PartitionProjectionConfiguration }partition_projectiontyping.Mapping[str, PartitionProjectionConfiguration]partitionProjectionMap<String, PartitionProjectionConfiguration>PartitionProjectionIDictionary<string, PartitionProjectionConfiguration>PartitionProjection*map[string]PartitionProjectionConfiguration= No partition projection#
Partition projection configuration for this table.

Partition projection allows Athena to automatically add new partitions without requiring ALTER TABLE ADD PARTITION statements.

s3Prefixstrings3_prefixstrs3PrefixStringS3PrefixstringS3Prefix*string= No prefix. The data will be stor…#
S3 prefix under which table objects are stored.

When the table shares a bucket with other tables or consumers, set this so that the grant* methods scope S3 access to this table's data. Without a prefix, those grants cover the entire bucket.

default

Default: No prefix. The data will be stored under the root of the bucket.

storageS3TableStoragestorageS3TableStoragestorageS3TableStorageStorageS3TableStorageStorageS3TableStorage= a managed bucket with S3-managed…#
Where the table's data is stored: a bucket created and managed by the table, or an existing bucket you provide.
default

Default: a managed bucket with S3-managed (SSE-S3) encryption

storageParametersStorageParameter[]storage_parameterstyping.List[StorageParameter]storageParametersList<StorageParameter>StorageParametersStorageParameter[]StorageParameters*[]StorageParameter= The parameter is not defined#
The user-supplied properties for the description of the physical storage of this table.
notes · example

These properties help describe the format of the data that is stored within the crawled data sources.

The key/value pairs that are allowed to be submitted are not limited, however their functionality is not guaranteed.

Some keys will be auto-populated by glue crawlers, however, you can override them by specifying the key and value in this property.

ts
   declare const glueDatabase: glue.IDatabase;
   const table = new glue.S3Table(this, 'Table', {
     storageParameters: [
         glue.StorageParameter.skipHeaderLineCount(1),
         glue.StorageParameter.compressionType(glue.CompressionType.GZIP),
         glue.StorageParameter.custom('foo', 'bar'), // Will have no effect
         glue.StorageParameter.custom('separatorChar', ','), // Will describe the separator char used in the data
         glue.StorageParameter.custom(glue.StorageParameters.WRITE_PARALLEL, 'off'),
     ],
     // ...
     database: glueDatabase,
     columns: [{
         name: 'col1',
         type: glue.Schema.STRING,
     }],
     dataFormat: glue.DataFormat.CSV,
   });
storedAsSubDirectoriesbooleanstored_as_sub_directoriesboolstoredAsSubDirectoriesBooleanStoredAsSubDirectoriesboolStoredAsSubDirectories*bool= false#
Indicates whether the table data is stored in subdirectories.
tableNamestringtable_namestrtableNameStringTableNamestringTableName*string= generated by CDK.#
Name of the table.

Used as props by ​