すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:テーブルバケットの管理 (Python SDK V2)

最終更新日:May 13, 2026

このトピックでは、Python SDK V2 を使用して、テーブルバケット、名前空間、およびテーブルを対象に、作成、削除、クエリ、暗号化設定、ポリシー管理、メンテナンス設定を行う方法について説明します。

注意事項

  • サンプルコードでは、China (Hangzhou) リージョンのリージョン ID として cn-hangzhou を使用しています。この値を、対象リージョンの ID に置き換えてください。

  • このトピックでは、環境変数からアクセス認証情報を取得する方法を説明します。アクセス認証情報の設定方法の詳細については、「アクセス認証情報の設定」をご参照ください。サンプルコードを実行する前に、 OSS_ACCESS_KEY_IDOSS_ACCESS_KEY_SECRET の環境変数が設定されていることを確認してください。

テーブルバケットの操作

CreateTableBucket

テーブルバケットを作成し、オプションでサーバ側暗号化を設定します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブルバケットを作成するサンプル")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables にアクセスするためのエンドポイント。')
parser.add_argument('--name', help='テーブルバケットの名前。', required=True)
parser.add_argument('--sse-algorithm', help='サーバ側暗号化アルゴリズム。')
parser.add_argument('--kms-key-arn', help='暗号化用の KMS キー ARN。')

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    encryption_configuration = None
    if args.sse_algorithm is not None or args.kms_key_arn is not None:
        encryption_configuration = oss_tables.models.EncryptionConfiguration(
            sse_algorithm=args.sse_algorithm,
            kms_key_arn=args.kms_key_arn,
        )

    result = client.create_table_bucket(oss_tables.models.CreateTableBucketRequest(
        name=args.name,
        encryption_configuration=encryption_configuration,
    ))

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id},'
          f' ARN: {result.arn}')


if __name__ == "__main__":
    main()

DeleteTableBucket

指定したテーブルバケットを削除します。テーブルバケットに名前空間が含まれていてはなりません。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブルバケット削除のサンプル")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables のサービスエンドポイント。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.delete_table_bucket(oss_tables.models.DeleteTableBucketRequest(
        table_bucket_arn=args.table_bucket_arn,
    ))

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id}')


if __name__ == "__main__":
    main()

GetTableBucket

指定されたテーブルバケットの詳細を取得します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="get table bucket sample")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン', required=True)
parser.add_argument('--endpoint', help='OSS Tables のアクセスドメイン名')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.get_table_bucket(oss_tables.models.GetTableBucketRequest(
        table_bucket_arn=args.table_bucket_arn,
    ))

    print(f'ステータスコード:{result.status_code},'
          f' リクエスト ID:{result.request_id},'
          f' ARN:{result.arn},'
          f' 名前:{result.name},'
          f' 所有者アカウント ID:{result.owner_account_id},'
          f' 作成日時:{result.created_at},'
          f' テーブルバケット ID:{result.table_bucket_id},'
          f' タイプ:{result.type}')


if __name__ == "__main__":
    main()

ListTableBuckets

現在のアカウント内のすべてのテーブルバケットを一覧表示します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブルバケット一覧表示のサンプル")
parser.add_argument('--region', help='テーブルバケットのリージョン', required=True)
parser.add_argument('--endpoint', help='OSS Tables にアクセスするためのエンドポイント')
parser.add_argument('--prefix', help='テーブルバケットをフィルタリングするためのプレフィックス')
parser.add_argument('--max-buckets', help='取得するバケットの最大数', type=int)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.list_table_buckets(oss_tables.models.ListTableBucketsRequest(
        prefix=args.prefix,
        max_buckets=args.max_buckets,
    ))

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id},'
          f' 継続トークン: {result.continuation_token}')

    if result.table_buckets:
        for i, bucket in enumerate(result.table_buckets):
            print(f'バケット {i + 1}:'
                  f' ARN: {bucket.arn},'
                  f' 名前: {bucket.name},'
                  f' ID: {bucket.table_bucket_id},'
                  f' 所有者アカウント ID: {bucket.owner_account_id},'
                  f' 作成日時: {bucket.created_at}')


if __name__ == "__main__":
    main()

PutTableBucketEncryption

テーブルバケットのサーバー側の暗号化を設定します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブルバケットの暗号化設定のサンプル")
parser.add_argument('--region', help='テーブルバケットが存在するリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables へのアクセスに使用するエンドポイント。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)
parser.add_argument('--sse-algorithm', help='サーバー側の暗号化アルゴリズム。', required=True)
parser.add_argument('--kms-key-arn', help='暗号化用の KMS キー ARN。')

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    encryption_configuration = oss_tables.models.EncryptionConfiguration(
        sse_algorithm=args.sse_algorithm,
        kms_key_arn=args.kms_key_arn,
    )

    result = client.put_table_bucket_encryption(oss_tables.models.PutTableBucketEncryptionRequest(
        table_bucket_arn=args.table_bucket_arn,
        encryption_configuration=encryption_configuration,
    ))

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id}')
    print(f'テーブルバケットの暗号化を正常に更新しました: {args.table_bucket_arn}')


if __name__ == "__main__":
    main()

GetTableBucketEncryption

テーブルバケットの暗号化設定を取得します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="get table bucket encryption sample")
# テーブルバケットのリージョン。
parser.add_argument('--region', help='テーブルバケットのリージョン。', required=True)
# 他のサービスが OSS テーブルにアクセスするためのドメイン名。
parser.add_argument('--endpoint', help='他のサービスが OSS テーブル にアクセスするためのドメイン名。')
# テーブルバケットの ARN。
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.get_table_bucket_encryption(oss_tables.models.GetTableBucketEncryptionRequest(
        table_bucket_arn=args.table_bucket_arn,
    ))

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id}')

    if result.encryption_configuration:
        print(f'SSE アルゴリズム: {result.encryption_configuration.sse_algorithm},'
              f' KMS キー ARN: {result.encryption_configuration.kms_key_arn}')


if __name__ == "__main__":
    main()

DeleteTableBucketEncryption

テーブルバケットの暗号化設定を削除します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブルバケットの暗号化設定の削除サンプル")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables のサービスエンドポイント。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.delete_table_bucket_encryption(oss_tables.models.DeleteTableBucketEncryptionRequest(
        table_bucket_arn=args.table_bucket_arn,
    ))

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID : {result.request_id}')
    print(f'テーブルバケットの暗号化設定を正常に削除しました: {args.table_bucket_arn}')


if __name__ == "__main__":
    main()

PutTableBucketPolicy

テーブルバケットのリソースポリシーを設定します。

import argparse
import json
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブルバケットのポリシー設定のサンプル")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
parser.add_argument('--endpoint', help='他のサービスが OSS Tables にアクセスするために使用できる複数のドメイン名。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)
parser.add_argument('--policy', help='リソースポリシーの JSON 文字列。', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.put_table_bucket_policy(oss_tables.models.PutTableBucketPolicyRequest(
        table_bucket_arn=args.table_bucket_arn,
        resource_policy=args.policy,
    ))

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id}')
    print(f'ポリシーの設定に成功しました: {args.table_bucket_arn}')


if __name__ == "__main__":
    main()

テーブルバケットポリシーの取得

テーブルバケットのリソースポリシーを取得します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブルバケットポリシー取得のサンプル")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables にアクセスするためのエンドポイント。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.get_table_bucket_policy(oss_tables.models.GetTableBucketPolicyRequest(
        table_bucket_arn=args.table_bucket_arn,
    ))

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id},'
          f' リソースポリシー: {result.resource_policy}')


if __name__ == "__main__":
    main()

DeleteTableBucketPolicy

テーブルバケットのリソースポリシーを削除します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブルバケットポリシーを削除するサンプル")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables のサービスエンドポイント。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.delete_table_bucket_policy(oss_tables.models.DeleteTableBucketPolicyRequest(
        table_bucket_arn=args.table_bucket_arn,
    ))

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id}')
    print(f'{args.table_bucket_arn} のポリシーが正常に削除されました')


if __name__ == "__main__":
    main()

PutTableBucketMaintenanceConfiguration

テーブルバケットのメンテナンス設定を構成します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブルバケットのメンテナンス設定を構成するサンプル")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables へアクセスするためのエンドポイント。', required=False)
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)
parser.add_argument('--type', help='メンテナンスタイプ (例: icebergUnreferencedFileRemoval)。', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    value = {
        'status': 'enabled',
        'settings': {
            'icebergUnreferencedFileRemoval': {
                'unreferencedDays': 7,
                'nonCurrentDays': 30
            }
        }
    }

    result = client.put_table_bucket_maintenance_configuration(
        oss_tables.models.PutTableBucketMaintenanceConfigurationRequest(
            table_bucket_arn=args.table_bucket_arn,
            type=args.type,
            value=value,
        )
    )

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id}')
    print(f'{args.table_bucket_arn} のメンテナンス設定が正常に更新されました')


if __name__ == "__main__":
    main()

GetTableBucketMaintenanceConfiguration

テーブルバケットのメンテナンス構成を取得します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブルバケットのメンテナンス構成を取得するサンプル")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables のサービスエンドポイント。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.get_table_bucket_maintenance_configuration(
        oss_tables.models.GetTableBucketMaintenanceConfigurationRequest(
            table_bucket_arn=args.table_bucket_arn,
        )
    )

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id},'
          f' テーブルバケット ARN: {result.table_bucket_arn},'
          f' 構成: {result.configuration}')


if __name__ == "__main__":
    main()

名前空間の操作

名前空間の作成

テーブルバケット内に名前空間を作成します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブルバケット内に 1 つ以上の名前空間を作成します。")
parser.add_argument('--region', help='テーブルバケットのリージョン', required=True)
parser.add_argument('--endpoint', help='OSS テーブルのアクセスエンドポイント (ドメイン名)')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN', required=True)
parser.add_argument('--namespace', help='作成する名前空間 (カンマ区切り)', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    namespaces = args.namespace.split(",")

    result = client.create_namespace(oss_tables.models.CreateNamespaceRequest(
        table_bucket_arn=args.table_bucket_arn,
        namespace=namespaces,
    ))

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id}')
    print(f'テーブルバケット {args.table_bucket_arn} 内に名前空間が正常に作成されました')


if __name__ == "__main__":
    main()

DeleteNamespace

指定した名前空間を削除します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="delete namespace sample")
parser.add_argument('--region', help='The region where the table bucket is located.', required=True)
parser.add_argument('--endpoint', help='The access endpoint for OSS Tables.')
parser.add_argument('--table-bucket-arn', help='The ARN of the table bucket.', required=True)
parser.add_argument('--namespace', help='The namespace to delete.', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.delete_namespace(oss_tables.models.DeleteNamespaceRequest(
        table_bucket_arn=args.table_bucket_arn,
        namespace=args.namespace,
    ))

    print(f'status code: {result.status_code},'
          f' request id: {result.request_id}')
    print(f'successfully deleted namespace: {args.namespace}')


if __name__ == "__main__":
    main()

GetNamespace

指定した名前空間の詳細を取得します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="get namespace sample")
parser.add_argument('--region', help='The region where the Table Bucket is located.', required=True)
parser.add_argument('--endpoint', help='The service endpoint for OSS Tables.')
parser.add_argument('--table-bucket-arn', help='The ARN of the Table Bucket.', required=True)
parser.add_argument('--namespace', help='The namespace to retrieve.', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.get_namespace(oss_tables.models.GetNamespaceRequest(
        table_bucket_arn=args.table_bucket_arn,
        namespace=args.namespace,
    ))

    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
          f' namespace: {result.namespace},'
          f' namespace id: {result.namespace_id},'
          f' table bucket id: {result.table_bucket_id},'
          f' owner account id: {result.owner_account_id},'
          f' created at: {result.created_at},'
          f' created by: {result.created_by}')


if __name__ == "__main__":
    main()

名前空間の一覧表示

テーブルバケット内のすべての名前空間を一覧表示します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="名前空間一覧表示のサンプル")
parser.add_argument('--region', help='テーブルバケットが存在するリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables のサービスエンドポイント。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)
parser.add_argument('--prefix', help='名前空間を絞り込むためのプレフィックス。')
parser.add_argument('--max-namespaces', type=int, help='返す名前空間の最大数。')

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.list_namespaces(oss_tables.models.ListNamespacesRequest(
        table_bucket_arn=args.table_bucket_arn,
        prefix=args.prefix,
        max_namespaces=args.max_namespaces,
    ))

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id},'
          f' 継続トークン: {result.continuation_token}')

    if result.namespaces:
        for i, ns in enumerate(result.namespaces):
            print(f'名前空間 {i + 1}:'
                  f' 名前空間: {ns.namespace},'
                  f' 名前空間 ID: {ns.namespace_id},'
                  f' 所有者アカウント ID: {ns.owner_account_id},'
                  f' 作成日時: {ns.created_at},'
                  f' 作成者: {ns.created_by}')


if __name__ == "__main__":
    main()

テーブル操作

テーブルの作成

スキーマ、パーティション、および暗号化設定を使用して Iceberg テーブルを作成します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブル作成のサンプル")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables にアクセスするためのエンドポイント。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)
parser.add_argument('--namespace', help='テーブルの名前空間。', required=True)
parser.add_argument('--name', help='テーブルの名前。', required=True)
parser.add_argument('--format', help='テーブルのフォーマット。', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    # スキーマフィールドを作成します
    schema = oss_tables.models.IcebergSchema(fields=[
        oss_tables.models.SchemaField(name="id", type="long", required=True),
        oss_tables.models.SchemaField(name="name", type="string", required=False),
        oss_tables.models.SchemaField(name="ts", type="timestamptz", required=False),
    ])

    # パーティションスペックを作成します
    partition_spec = oss_tables.models.IcebergPartitionSpec(
        spec_id=0,
        fields=[
            oss_tables.models.IcebergPartitionField(
                source_id=2,
                field_id=1001,
                name="name",
                transform="identity",
            ),
        ],
    )

    # Iceberg メタデータを作成します
    iceberg_metadata = oss_tables.models.IcebergMetadata(
        schema=schema,
        partition_spec=partition_spec,
    )

    # テーブルメタデータを設定します
    metadata = oss_tables.models.TableMetadata(iceberg=iceberg_metadata)

    # 暗号化設定を追加します
    encryption_configuration = oss_tables.models.EncryptionConfiguration(
        sse_algorithm="AES256",
    )

    result = client.create_table(oss_tables.models.CreateTableRequest(
        table_bucket_arn=args.table_bucket_arn,
        namespace=args.namespace,
        name=args.name,
        format=args.format,
        metadata=metadata,
        encryption_configuration=encryption_configuration,
    ))

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id},'
          f' テーブル ARN: {result.table_arn},'
          f' バージョン トークン: {result.version_token}')


if __name__ == "__main__":
    main()

DeleteTable

指定のテーブルを削除します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブルを削除するサンプルスクリプト。")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables のサービスエンドポイント。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)
parser.add_argument('--namespace', help='テーブルの名前空間。', required=True)
parser.add_argument('--name', help='テーブルの名前。', required=True)
parser.add_argument('--version-token', help='楽観的ロックのためのバージョン トークン。')

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.delete_table(oss_tables.models.DeleteTableRequest(
        table_bucket_arn=args.table_bucket_arn,
        namespace=args.namespace,
        name=args.name,
        version_token=args.version_token,
    ))

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id}')
    print(f'テーブル {args.namespace}/{args.name} が正常に削除されました')


if __name__ == "__main__":
    main()

テーブルの取得

指定されたテーブルの詳細を取得します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブル取得のサンプル")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables にアクセスするためのエンドポイント。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。')
parser.add_argument('--namespace', help='テーブルの名前空間。')
parser.add_argument('--name', help='テーブルの名前。')
parser.add_argument('--table-arn', help='テーブルの ARN。')

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    # メソッド 1:テーブルバケットの ARN、名前空間、名前を使用してクエリ
    result = client.get_table(oss_tables.models.GetTableRequest(
        table_bucket_arn=args.table_bucket_arn,
        namespace=args.namespace,
        name=args.name,
    ))

    # メソッド 2:テーブルの ARN を使用してクエリ
    # result = client.get_table(oss_tables.models.GetTableRequest(
    #     table_arn=args.table_arn,
    # ))

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id},'
          f' 名前: {result.name},'
          f' テーブル ARN: {result.table_arn},'
          f' フォーマット: {result.format},'
          f' 作成者: {result.created_by},'
          f' 作成日時: {result.created_at}')


if __name__ == "__main__":
    main()

ListTables

名前空間内のすべてのテーブルを一覧表示します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブル一覧のサンプル")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables にアクセスするためのエンドポイント。', required=False)
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)
parser.add_argument('--namespace', help='テーブルの名前空間。', required=True)
parser.add_argument('--prefix', help='テーブルをフィルターするためのプレフィックス。')
parser.add_argument('--max-tables', type=int, help='返すテーブルの最大数。')

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.list_tables(oss_tables.models.ListTablesRequest(
        table_bucket_arn=args.table_bucket_arn,
        namespace=args.namespace,
        prefix=args.prefix,
        max_tables=args.max_tables,
    ))

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id},'
          f' 継続トークン: {result.continuation_token}')

    if result.table_summaries:
        for i, table in enumerate(result.table_summaries):
            print(f'テーブル {i + 1}:'
                  f' 名前: {table.name},'
                  f' 名前空間: {table.namespace},'
                  f' タイプ: {table.type},'
                  f' テーブル ARN: {table.table_arn},'
                  f' 作成日時: {table.created_at},'
                  f' 更新日時: {table.modified_at}')


if __name__ == "__main__":
    main()

RenameTable

テーブルの名前を変更するか、別の名前空間に移動します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="rename table sample")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables にアクセスするためのエンドポイント。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)
parser.add_argument('--namespace', help='テーブルの名前空間。', required=True)
parser.add_argument('--name', help='テーブルの現在の名前。', required=True)
parser.add_argument('--new-namespace-name', help='テーブルの新しい名前空間。')
parser.add_argument('--new-name', help='テーブルの新しい名前。')
parser.add_argument('--version-token', help='テーブルのバージョン トークン。')

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.rename_table(oss_tables.models.RenameTableRequest(
        table_bucket_arn=args.table_bucket_arn,
        namespace=args.namespace,
        name=args.name,
        new_namespace_name=args.new_namespace_name,
        new_name=args.new_name,
        version_token=args.version_token,
    ))

    print(f'ステータスコード:{result.status_code}、'
          f'リクエスト ID:{result.request_id}')
    print(f'テーブル {args.namespace}/{args.name} の名前が正常に変更されました。')


if __name__ == "__main__":
    main()

GetTableMetadataLocation

テーブルのメタデータファイルのロケーションを取得します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブルメタデータロケーションの取得サンプル")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables のサービスエンドポイント。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)
parser.add_argument('--namespace', help='テーブルの名前空間。', required=True)
parser.add_argument('--name', help='テーブルの名前。', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.get_table_metadata_location(
        oss_tables.models.GetTableMetadataLocationRequest(
            table_bucket_arn=args.table_bucket_arn,
            namespace=args.namespace,
            name=args.name,
        )
    )

    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
          f' version token: {result.version_token},'
          f' metadata location: {result.metadata_location},'
          f' warehouse location: {result.warehouse_location}')


if __name__ == "__main__":
    main()

UpdateTableMetadataLocation

テーブルのメタデータロケーションを更新します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブルのメタデータロケーションを更新します。")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables にアクセスするためのドメイン名。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)
parser.add_argument('--namespace', help='テーブルの名前空間。', required=True)
parser.add_argument('--name', help='テーブルの名前。', required=True)
parser.add_argument('--version-token', help='バージョン トークン。', required=True)
parser.add_argument('--metadata-location', help='新しいメタデータロケーション。', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.update_table_metadata_location(
        oss_tables.models.UpdateTableMetadataLocationRequest(
            table_bucket_arn=args.table_bucket_arn,
            namespace=args.namespace,
            name=args.name,
            version_token=args.version_token,
            metadata_location=args.metadata_location,
        )
    )

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id},'
          f' 名前: {result.name},'
          f' バージョン トークン: {result.version_token},'
          f' メタデータロケーション: {result.metadata_location},'
          f' テーブル ARN: {result.table_arn}')


if __name__ == "__main__":
    main()

テーブルの暗号化設定の取得

テーブルの暗号化設定を取得します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

# テーブルの暗号化設定取得のサンプル
parser = argparse.ArgumentParser(description="テーブルの暗号化設定取得のサンプル")
# テーブルバケットが配置されているリージョン。
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
# OSS テーブルへのアクセスに使用するドメイン名。
parser.add_argument('--endpoint', help='OSS テーブルへのアクセスに使用するドメイン名。')
# テーブルバケットの ARN。
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)
# テーブルの名前空間。
parser.add_argument('--namespace', help='テーブルの名前空間。', required=True)
# テーブルの名前。
parser.add_argument('--name', help='テーブルの名前。', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.get_table_encryption(oss_tables.models.GetTableEncryptionRequest(
        table_bucket_arn=args.table_bucket_arn,
        namespace=args.namespace,
        name=args.name,
    ))

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id}')

    if result.encryption_configuration:
        print(f'SSE アルゴリズム: {result.encryption_configuration.sse_algorithm},'
              f' KMS キー ARN: {result.encryption_configuration.kms_key_arn}')


if __name__ == "__main__":
    main()

テーブルポリシーの設定

テーブルのリソースポリシーを設定します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブルポリシー設定のサンプル")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS テーブルにアクセスするためのエンドポイント。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)
parser.add_argument('--namespace', help='テーブルの名前空間。', required=True)
parser.add_argument('--name', help='テーブルの名前。', required=True)
parser.add_argument('--policy', help='リソースポリシーの JSON 文字列。', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.put_table_policy(oss_tables.models.PutTablePolicyRequest(
        table_bucket_arn=args.table_bucket_arn,
        namespace=args.namespace,
        name=args.name,
        resource_policy=args.policy,
    ))

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id}')
    print(f'ポリシーの設定に成功: {args.namespace}/{args.name}')


if __name__ == "__main__":
    main()

テーブルポリシーの取得

テーブルのリソースポリシーを取得します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブルポリシー取得のサンプル")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables のサービスエンドポイント。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)
parser.add_argument('--namespace', help='テーブルの名前空間。', required=True)
parser.add_argument('--name', help='テーブルの名前。', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.get_table_policy(oss_tables.models.GetTablePolicyRequest(
        table_bucket_arn=args.table_bucket_arn,
        namespace=args.namespace,
        name=args.name,
    ))

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id},'
          f' リソースポリシー: {result.resource_policy}')


if __name__ == "__main__":
    main()

DeleteTablePolicy

テーブルのリソースポリシーを削除します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブルポリシー削除のサンプル")
parser.add_argument('--region', help='テーブルバケットが所在するリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables のアクセスエンドポイント。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)
parser.add_argument('--namespace', help='テーブルの名前空間。', required=True)
parser.add_argument('--name', help='テーブル名。', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.delete_table_policy(oss_tables.models.DeleteTablePolicyRequest(
        table_bucket_arn=args.table_bucket_arn,
        namespace=args.namespace,
        name=args.name,
    ))

    print(f'status code: {result.status_code},'
          f' request id: {result.request_id}')
    print(f'successfully deleted policy for: {args.namespace}/{args.name}')


if __name__ == "__main__":
    main()

PutTableMaintenanceConfiguration

テーブルのメンテナンス構成を設定します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="put table maintenance configuration sample")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables へアクセスするためのサービスエンドポイント。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)
parser.add_argument('--namespace', help='テーブルの名前空間。', required=True)
parser.add_argument('--name', help='テーブルの名前。', required=True)
parser.add_argument('--type', help='メンテナンスタイプ。例:icebergUnreferencedFileRemoval', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    value = {
        'status': 'enabled',
        'settings': {
            'icebergUnreferencedFileRemoval': {
                'unreferencedDays': 7,
                'nonCurrentDays': 30
            }
        }
    }

    result = client.put_table_maintenance_configuration(
        oss_tables.models.PutTableMaintenanceConfigurationRequest(
            table_bucket_arn=args.table_bucket_arn,
            namespace=args.namespace,
            name=args.name,
            type=args.type,
            value=value,
        )
    )

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id}')
    print(f'{args.namespace}/{args.name} のメンテナンス構成が正常に更新されました')


if __name__ == "__main__":
    main()

GetTableMaintenanceConfiguration

テーブルのメンテナンス構成を取得します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブルのメンテナンス構成を取得するサンプル")
parser.add_argument('--region', help='テーブルバケットが配置されているリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables のアクセスエンドポイント。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)
parser.add_argument('--namespace', help='テーブルの名前空間。', required=True)
parser.add_argument('--name', help='テーブルの名前。', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.get_table_maintenance_configuration(
        oss_tables.models.GetTableMaintenanceConfigurationRequest(
            table_bucket_arn=args.table_bucket_arn,
            namespace=args.namespace,
            name=args.name,
        )
    )

    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
          f' table arn: {result.table_arn},'
          f' configuration: {result.configuration}')


if __name__ == "__main__":
    main()

GetTableMaintenanceJobStatus

テーブルメンテナンスジョブの実行ステータスを取得します。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.tables as oss_tables

parser = argparse.ArgumentParser(description="テーブルメンテナンスジョブのステータスを取得します。")
parser.add_argument('--region', help='テーブルバケットのリージョン。', required=True)
parser.add_argument('--endpoint', help='OSS Tables にアクセスするためのエンドポイント。')
parser.add_argument('--table-bucket-arn', help='テーブルバケットの ARN。', required=True)
parser.add_argument('--namespace', help='テーブルの名前空間。', required=True)
parser.add_argument('--name', help='テーブルの名前。', required=True)

def main():
    args = parser.parse_args()

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss_tables.Client(cfg)

    result = client.get_table_maintenance_job_status(
        oss_tables.models.GetTableMaintenanceJobStatusRequest(
            table_bucket_arn=args.table_bucket_arn,
            namespace=args.namespace,
            name=args.name,
        )
    )

    print(f'ステータスコード: {result.status_code},'
          f' リクエスト ID: {result.request_id},'
          f' テーブル ARN: {result.table_arn},'
          f' ステータス: {result.status}')


if __name__ == "__main__":
    main()