このトピックでは、Python SDK V2 を使用して、テーブルバケット、名前空間、およびテーブルを対象に、作成、削除、クエリ、暗号化設定、ポリシー管理、メンテナンス設定を行う方法について説明します。
注意事項
サンプルコードでは、China (Hangzhou) リージョンのリージョン ID として
cn-hangzhouを使用しています。この値を、対象リージョンの ID に置き換えてください。このトピックでは、環境変数からアクセス認証情報を取得する方法を説明します。アクセス認証情報の設定方法の詳細については、「アクセス認証情報の設定」をご参照ください。サンプルコードを実行する前に、
OSS_ACCESS_KEY_IDとOSS_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()