Amazon S3 Tables のTable Bucket、Namespace、Tableの管理コマンドの解説 #AWSreInvent
AWS事業本部コンサルティング部の石川です。 aws s3tables
コマンドを使用した Amazon S3 Tables のTable Bucket、Namespace、Tableの管理について解説します。
Amazon S3 Tables のリソースを管理するための様々な操作が可能です。主な操作には以下のようなものがあります。
カテゴリ | コマンド | 機能概要 |
---|---|---|
Table Bucket操作 | create-table-bucket | Table Bucketの作成 |
delete-table-bucket | Table Bucketの削除 | |
get-table-bucket | Table Bucketの取得 | |
list-table-buckets | Table Bucket一覧の表示 | |
Namespace操作 | create-namespace | Namespaceの作成 |
delete-namespace | Namespaceの削除 | |
get-namespace | Namespaceの取得 | |
list-namespaces | Namespaceの一覧表示 | |
Table操作 | create-table | Tableの作成 |
delete-table | Tableの削除 | |
get-table | Tableの取得 | |
list-tables | Table一覧の表示 | |
rename-table | Table名の変更 |
Table Bucket の管理コマンド
Table Bucketの作成
コマンド
aws s3tables create-table-bucket \
--name <table-bucket-name> \
--region <region>
--region
: Table Bucketを作成するAWSリージョンを指定します。--table-bucket-arn
: 作成するTable BucketのAmazon Resource Name (ARN)を指定します。
コマンドが成功すると、作成されたTable BucketのARNが返されます。デフォルトでは、1つのリージョンにつき最大10個のTable Bucketを作成できます。
実行例
$ aws s3tables create-table-bucket \
> --name cm-tb-20241227 \
> --region us-east-1
{
"arn": "arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227"
}
Table Bucketの一覧表示
コマンド
aws s3tables list-table-buckets
コマンドが成功すると、作成されたTable BucketのARNの一覧が返されます。
list-table-buckets
コマンドには、結果をフィルタリングしたり制御したりするためのオプションがあります。
--prefix: 特定のプレフィックスで始まるTable Bucketのみをリストします。
aws s3tables list-table-buckets --prefix "analytics-"
--max-items: 一度に返すTable Bucketの最大数を指定します。複数ページある場合は、NextTokenが返り、つぎの呼び出しで指定することで続きを表示できます。
aws s3tables list-table-buckets --max-items 5
--page-size: 各ページに含めるTable Bucketの数を指定します。
aws s3tables list-table-buckets --page-size 10
実行例
$ aws s3tables list-table-buckets
{
"tableBuckets": [
{
"arn": "arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227",
"name": "cm-tb-20241227",
"ownerAccountId": " 123456789012",
"createdAt": "2024-12-27T11:44:12.508590+00:00"
}
]
}
Table Bucketの情報表示
コマンド
aws s3tables get-table-bucket \
--table-bucket-arn <table-bucket-arn>
--table-bucket-arn
: 表示するTable BucketのAmazon Resource Name (ARN)を指定します。
実行例
$ aws s3tables get-table-bucket \
> --table-bucket-arn arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227
{
"arn": "arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227",
"name": "cm-tb-20241227",
"ownerAccountId": " 123456789012",
"createdAt": "2024-12-27T11:44:12.508590+00:00"
}
Table Bucketの削除
コマンド
aws s3tables delete-table-bucket \
--table-bucket-arn <table-bucket-arn>
--table-bucket-arn
: 削除するTable BucketのAmazon Resource Name (ARN)を指定します。
実行例
$ aws s3tables delete-table-bucket \
> --table-bucket-arn arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227
もし、削除できなかった場合は以下のブログをご覧ください。
Namespaceの管理コマンド
Namespaceの作成
コマンド
aws s3tables create-namespace \
--table-bucket-arn <table-bucket-arn> \
--namespace <namespace-name>
-
--table-bucket-arn
: 作成したいTable BucketのAmazon Resource Name (ARN)を指定します。 -
--namespace
: 作成するNamespace名を指定します。
1つのTable Bucketに最大100個の名前空間を作成できます。
実行例
$ aws s3tables create-namespace \
> --table-bucket-arn arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227 \
> --namespace cm_namespace
{
"tableBucketARN": "arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227",
"namespace": [
"cm_namespace"
]
}
Namespaceの一覧表示
コマンド
aws s3tables list-namespaces \
--table-bucket-arn <table-bucket-arn>
--table-bucket-arn
: 一覧表示したいTable BucketのAmazon Resource Name (ARN)を指定します。
コマンドが成功すると、作成されたNamespaceのARNの一覧が返されます。
list-table-buckets
コマンドには、結果をフィルタリングしたり制御したりするためのオプションがあります。
--prefix: 特定のプレフィックスで始まるNamespaceのみをリストします。
aws s3tables list-namespaces \
--table-bucket-arn <table-bucket-arn> \
--prefix "analytics-"
--max-items: 一度に返すNamespaceの最大数を指定します。複数ページある場合は、NextTokenが返り、つぎの呼び出しで指定することで続きを表示できます。
aws s3tables list-namespaces \
--table-bucket-arn <table-bucket-arn> \
--max-items 5
--page-size: 各ページに含めるNamespaceの数を指定します。
aws s3tables list-namespaces \
--table-bucket-arn <table-bucket-arn> \
--page-size 10
実行例
$ aws s3tables list-namespaces \
> --table-bucket-arn arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227
{
"namespaces": [
{
"namespace": [
"cm_namespace"
],
"createdAt": "2024-12-27T12:11:57.569290+00:00",
"createdBy": " 123456789012",
"ownerAccountId": " 123456789012"
}
]
}
Namespaceの情報表示
コマンド
aws s3tables get-namespace \
--table-bucket-arn <table-bucket-arn> \
--namespace <namespace-name>
-
--table-bucket-arn
: 表示したいTable BucketのAmazon Resource Name (ARN)を指定します。 -
--namespace
: 表示したいNamespace名を指定します。
実行例
$ aws s3tables get-namespace \
> --table-bucket-arn arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227 \
> --namespace cm_namespace
{
"namespace": [
"cm_namespace"
],
"createdAt": "2024-12-27T12:11:57.569290+00:00",
"createdBy": " 123456789012",
"ownerAccountId": " 123456789012"
}
Namespaceの削除
コマンド
aws s3tables delete-namespace \
--table-bucket-arn <table-bucket-arn> \
--namespace <namespace-name>
-
--table-bucket-arn
: 削除したいNamespaceのAmazon Resource Name (ARN)を指定します。 -
--namespace
: 削除したいNamespace名を指定します。
実行例
$ aws s3tables delete-namespace \
> --table-bucket-arn arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227 \
> --namespace cm_namespace
Tableの管理コマンド
Tableの作成
コマンド
aws s3tables create-table \
--table-bucket-arn <table-bucket-arn> \
--namespace <namespace-name> \
--name <table-name> \
--format <table-format>
-
--table-bucket-arn
: 作成したいTable BucketのAmazon Resource Name (ARN)を指定します。 -
--namespace
: 作成したいNamespace名を指定します。 -
--name
: 作成するTable名を指定します。 -
--format
: Table formatを指定します。現時点では、ICEBERGが唯一の有効なオプションですが、将来的に他のフォーマットオプションが追加される可能性があります。
現時点、このコマンドでTableのカラムを直接設定することはできません。このコマンドは、Table Bucket内に新しいTableを作成するための基本的な構造を設定するものです。そのため、Amazon EMRやAWS Glue、Apache Sparkなどのクエリエンジンを使用してTableのスキーマを定義する必要があります。
実行例
$ aws s3tables create-table \
> --table-bucket-arn arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227 \
> --namespace cm_namespace \
> --name customer \
> --format ICEBERG
{
"tableARN": "arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227/table/4af2b299-92a6-41d4-bdb3-be752aeda705",
"versionToken": "05f6a852fc20ef934742"
}
Tableの一覧表示
コマンド
aws s3tables list-tables \
--table-bucket-arn <table-bucket-arn> \
--namespace <namespace-name>
-
--table-bucket-arn
: 作成したいTable BucketのAmazon Resource Name (ARN)を指定します。 -
--namespace
: 作成したいNamespace名を指定します。
コマンドが成功すると、作成されたTable一覧が返されます。
list-tables
コマンドには、結果をフィルタリングしたり制御したりするためのオプションがあります。
--prefix: 特定のプレフィックスで始まるTableのみをリストします。
aws s3tables list-tables \
--table-bucket-arn <table-bucket-arn> \
--namespace <namespace-name> \
--prefix "analytics-"
--max-items: 一度に返すTableの最大数を指定します。複数ページある場合は、NextTokenが返り、つぎの呼び出しで指定することで続きを表示できます。
aws s3tables list-tables \
--table-bucket-arn <table-bucket-arn> \
--namespace <namespace-name> \
--max-items 5
--page-size: 各ページに含めるTableの数を指定します。
aws s3tables list-tables \
--table-bucket-arn <table-bucket-arn> \
--namespace <namespace-name> \
--page-size 10
実行例
$ aws s3tables list-tables \
> --table-bucket-arn arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227 \
> --namespace cm_namespace
{
"tables": [
{
"namespace": [
"cm_namespace"
],
"name": "customer",
"type": "customer",
"tableARN": "arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227/table/4af2b299-92a6-41d4-bdb3-be752aeda705",
"createdAt": "2024-12-27T13:13:39.657591+00:00",
"modifiedAt": "2024-12-27T13:13:39.657591+00:00"
}
]
}
Tableの情報表示
コマンド
aws s3tables get-table \
--table-bucket-arn <table-bucket-arn> \
--namespace <namespace-name> \
--name <table-name>
-
--table-bucket-arn
: 表示したいTable BucketのAmazon Resource Name (ARN)を指定します。 -
--namespace
: 表示したいNamespace名を指定します。 -
--name
: 表示するTable名を指定します。
実行例
$ aws s3tables get-table \
> --table-bucket-arn arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227 \
> --namespace cm_namespace \
> --name customer
{
"name": "customer",
"type": "customer",
"tableARN": "arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227/table/4af2b299-92a6-41d4-bdb3-be752aeda705",
"namespace": [
"cm_namespace"
],
"versionToken": "05f6a852fc20ef934742",
"warehouseLocation": "s3://4af2b299-92a6-41d4-e6mfi51cyz8kmbu85aedp49asx95guse1b--table-s3",
"createdAt": "2024-12-27T13:13:39.657591+00:00",
"createdBy": " 123456789012",
"modifiedAt": "2024-12-27T13:13:39.657591+00:00",
"ownerAccountId": " 123456789012",
"format": "ICEBERG"
}
Tableの名前変更
コマンド
aws s3tables rename-table \
--table-bucket-arn <table-bucket-arn> \
--namespace <namespace-name> \
--name <old_table_name> \
--new-name <new_table_name>
-
--table-bucket-arn
: 対象のTable BucketのAmazon Resource Name (ARN)を指定します。 -
--namespace
: 対象のNamespace名を指定します。 -
--name
: 変更前のTable名を指定します。 -
--new-name
: 変更後のTable名を指定します。
実行例
$ aws s3tables rename-table \
> --table-bucket-arn arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227 \
> --namespace cm_namespace \
> --name customer \
> --new-name customer_new
念の為、Tableの情報を確認して変更されていることを確認しました。
$ aws s3tables get-table --table-bucket-arn arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227 --namespace cm_namespace --name customer_new
{
"name": "customer_new",
"type": "customer",
"tableARN": "arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227/table/4af2b299-92a6-41d4-bdb3-be752aeda705",
"namespace": [
"cm_namespace"
],
"versionToken": "05f6a852fc20ef934742",
"warehouseLocation": "s3://4af2b299-92a6-41d4-e6mfi51cyz8kmbu85aedp49asx95guse1b--table-s3",
"createdAt": "2024-12-27T13:13:39.657591+00:00",
"createdBy": " 123456789012",
"modifiedAt": "2024-12-27T13:25:19.068322+00:00",
"modifiedBy": " 123456789012",
"ownerAccountId": " 123456789012",
"format": "ICEBERG"
}
Tableの削除
コマンド
aws s3tables delete-table \
--table-bucket-arn <table-bucket-arn> \
--namespace <namespace-name> \
--name <table-name>
-
--table-bucket-arn
: 対象のTable BucketのAmazon Resource Name (ARN)を指定します。 -
--namespace
: 対象のNamespace名を指定します。 -
--name
: 削除したいTable名を指定します。
実行例
$ aws s3tables delete-table \
> --table-bucket-arn arn:aws:s3tables:us-east-1: 123456789012:bucket/cm-tb-20241227 \
> --namespace cm_namespace \
> --name customer_new
ストレージサイズを確認する方法なし
本当は、ストレージサイズを取得する方法を知りたくて、aws s3tables
コマンドを調べていたのですが、取得できませんでした。
また、Apache IcebergのTable指定で、Amazon Athenaから customer$files
とすると、customerテーブルの現在のデータファイルに関する情報が表示されるはずですが、それもエラーになります。
よって、ストレージサイズを確認する方法は、今後のアップデートに期待です。
最後に
Amazon S3 Tablesのリソース管理にはaws s3tables
コマンドを用いて、Table Bucket、Namespace、Tableの作成、一覧表示、情報取得、削除などの基本的な操作が可能で、これらのコマンドを使いこなすことで効率的なデータ管理が実現できます。しかし、現時点ではストレージサイズの確認方法が提供されていないなど、一部の機能に制限があることも明らかになりました。
今後のアップデートでこれらの制限が解消され、より包括的な管理ツールとなることが期待されます。Amazon S3 Tablesを活用する際は、これらのコマンドの特性と制限を理解した上で、適切に使用することが重要です。