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

Object Storage Service:テーブルバケット (Go SDK V2)

最終更新日:May 09, 2026

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

注意事項

  • このトピックのコード例では、中国 (杭州) のリージョン ID cn-hangzhou を使用しています。ご利用の実際のリージョン ID に置き換えてください。

  • このトピックでは、環境変数からアクセス認証情報を取得する方法を例示しています。アクセス認証情報の設定方法については、「アクセス認証情報の設定」をご参照ください。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数を設定済みであることを確認してください。

テーブルバケット操作

CreateTableBucket

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region string
	name   string
)

func init() {
	flag.StringVar(&region, "region", "", "テーブルバケットが配置されているリージョン。")
	flag.StringVar(&name, "name", "", "テーブルバケットの名前。")
}

func main() {
	flag.Parse()
	if len(name) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット名は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.CreateTableBucket(context.TODO(), &tables.CreateTableBucketRequest{
		Name: oss.Ptr(name),
	})

	if err != nil {
		log.Fatalf("テーブルバケットの作成に失敗しました: %v", err)
	}

	log.Printf("テーブルバケット作成結果:%#v\n", result)
}

DeleteTableBucket

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットのリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.DeleteTableBucket(context.TODO(), &tables.DeleteTableBucketRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
	})

	if err != nil {
		log.Fatalf("テーブルバケットの削除に失敗しました: %v", err)
	}

	log.Printf("テーブルバケット削除結果:%#v\n", result)
}

GetTableBucket

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.GetTableBucket(context.TODO(), &tables.GetTableBucketRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
	})

	if err != nil {
		log.Fatalf("テーブルバケットの取得に失敗しました: %v", err)
	}

	log.Printf("テーブルバケット取得結果:%#v\n", result)
}

ListTableBuckets

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
}

func main() {
	flag.Parse()

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	p := client.NewListTableBucketsPaginator(&tables.ListTableBucketsRequest{})

	var i int
	log.Println("テーブルバケット:")
	for p.HasNext() {
		i++

		page, err := p.NextPage(context.TODO())
		if err != nil {
			log.Fatalf("ページ %v の取得に失敗しました: %v", i, err)
		}

		// 取得したテーブルバケットをログ出力
		for _, b := range page.TableBuckets {
			log.Printf("テーブルバケット %v,%v,%v,%v,%v,%v\n", oss.ToString(b.Name), oss.ToString(b.Arn), oss.ToString(b.OwnerAccountId), oss.ToString(b.TableBucketId), oss.ToString(b.CreatedAt), oss.ToString(b.Type))
		}
	}
}

PutTableBucketEncryption

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.PutTableBucketEncryption(context.TODO(), &tables.PutTableBucketEncryptionRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
		EncryptionConfiguration: &tables.EncryptionConfiguration{
			SseAlgorithm: oss.Ptr("AES256"),
		},
	})

	if err != nil {
		log.Fatalf("テーブルバケット暗号化設定の適用に失敗しました: %v", err)
	}

	log.Printf("テーブルバケット暗号化設定適用結果:%#v\n", result)
}

GetTableBucketEncryption

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.GetTableBucketEncryption(context.TODO(), &tables.GetTableBucketEncryptionRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
	})

	if err != nil {
		log.Fatalf("テーブルバケット暗号化構成の取得に失敗しました: %v", err)
	}

	log.Printf("テーブルバケット暗号化構成取得結果:%#v\n", result)
}

テーブルバケット暗号化の削除

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
)

func init() {
	flag.StringVar(&region, "region", "", "テーブルバケットのリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.DeleteTableBucketEncryption(context.TODO(), &tables.DeleteTableBucketEncryptionRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
	})

	if err != nil {
		log.Fatalf("テーブルバケット暗号化の削除に失敗しました: %v", err)
	}

	log.Printf("テーブルバケット暗号化の削除に成功しました: %#v\n", result)
}

PutTableBucketPolicy

テーブルバケットのリソースポリシーを設定または置き換えます。

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.PutTableBucketPolicy(context.TODO(), &tables.PutTableBucketPolicyRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
		ResourcePolicy: oss.Ptr(`
			{
			   "Version":"1",
			   "Statement":[
			   {
				 "Action":[
				   "oss:GetTable"
				],
				"Effect":"Deny",
				"Principal":["1234567890"],
				"Resource":["acs:osstable:cn-hangzhou:1234567890:bucket/demo-bucket"]
			   }
			  ]
			 }
		`),
	})

	if err != nil {
		log.Fatalf("テーブルバケットポリシーの適用に失敗しました: %v", err)
	}

	log.Printf("テーブルバケットポリシー適用結果:%#v\n", result)
}

GetTableBucketPolicy

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.GetTableBucketPolicy(context.TODO(), &tables.GetTableBucketPolicyRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
	})

	if err != nil {
		log.Fatalf("テーブルバケットポリシーの取得に失敗しました: %v", err)
	}

	log.Printf("テーブルバケットポリシー取得結果:%#v\n", result)
}

DeleteTableBucketPolicy

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.DeleteTableBucketPolicy(context.TODO(), &tables.DeleteTableBucketPolicyRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
	})

	if err != nil {
		log.Fatalf("テーブルバケットのリソースポリシー削除に失敗しました: %v", err)
	}

	log.Printf("テーブルバケットポリシー削除結果:%#v\n", result)
}

PutTableBucketMaintenanceConfiguration

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
)

func init() {
	flag.StringVar(&region, "region", "", "テーブルバケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.PutTableBucketMaintenanceConfiguration(context.TODO(), &tables.PutTableBucketMaintenanceConfigurationRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
		Type:           oss.Ptr("icebergUnreferencedFileRemoval"),
		Value: &tables.MaintenanceValue{
			Settings: &tables.MaintenanceSettings{
				IcebergUnreferencedFileRemoval: &tables.SettingsDetail{
					UnreferencedDays: oss.Ptr(4),
					NonCurrentDays:   oss.Ptr(10),
				},
			},
			Status: oss.Ptr("enabled"),
		},
	})

	if err != nil {
		log.Fatalf("テーブルバケットメンテナンス構成の適用に失敗しました: %v", err)
	}

	log.Printf("テーブルバケットメンテナンス構成適用結果:%#v\n", result)
}

GetTableBucketMaintenanceConfiguration

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
)

func init() {
	flag.StringVar(&region, "region", "", "テーブルバケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.GetTableBucketMaintenanceConfiguration(context.TODO(), &tables.GetTableBucketMaintenanceConfigurationRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
	})

	if err != nil {
		log.Fatalf("テーブルバケットメンテナンス構成の取得に失敗しました: %v", err)
	}

	log.Printf("テーブルバケットメンテナンス構成取得結果: %#v\n", result)
}

名前空間操作

CreateNamespace

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
)

func init() {
	flag.StringVar(&region, "region", "", "テーブルバケットのリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.CreateNamespace(context.TODO(), &tables.CreateNamespaceRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
		Namespace:      []string{"my_space"},
	})

	if err != nil {
		log.Fatalf("名前空間の作成に失敗しました: %v", err)
	}

	log.Printf("名前空間作成結果:%#v\n", result)
}

DeleteNamespace

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.DeleteNamespace(context.TODO(), &tables.DeleteNamespaceRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
		Namespace:      oss.Ptr("my_space"),
	})

	if err != nil {
		log.Fatalf("名前空間の削除に失敗しました: %v", err)
	}

	log.Printf("名前空間削除結果:%#v\n", result)
}

GetNamespace

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.GetNamespace(context.TODO(), &tables.GetNamespaceRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
		Namespace:      oss.Ptr("my_space"),
	})

	if err != nil {
		log.Fatalf("名前空間の取得に失敗しました: %v", err)
	}

	log.Printf("名前空間取得結果:%#v\n", result)
}

名前空間の一覧表示

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	p := client.NewListNameSpacesPaginator(&tables.ListNamespacesRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
	})

	var i int
	log.Println("名前空間:")
	for p.HasNext() {
		i++

		page, err := p.NextPage(context.TODO())
		if err != nil {
			log.Fatalf("ページ %v の取得に失敗しました: %v", i, err)
		}

		for _, b := range page.Namespaces {
			log.Printf("名前空間 %v,%v,%v,%v,%v,%v\n", oss.ToString(b.CreatedAt), oss.ToString(b.CreatedBy), oss.ToString(b.OwnerAccountId), oss.ToString(b.TableBucketId), oss.ToString(b.NamespaceId), b.Namespace)
		}
	}
}

テーブル操作

CreateTable

Iceberg テーブルを作成します。スキーマ、パーティション、暗号化構成を指定できます。

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
	namespace      string
	name           string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
	flag.StringVar(&namespace, "namespace", "", "名前空間の名前。")
	flag.StringVar(&name, "name", "", "テーブルの名前。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(namespace) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。名前空間名は必須です。")
	}

	if len(name) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブル名は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.CreateTable(context.TODO(), &tables.CreateTableRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
		Namespace:      oss.Ptr(namespace),
		Name:           oss.Ptr(name),
		Format:         oss.Ptr("ICEBERG"),
	})

	if err != nil {
		log.Fatalf("テーブルの作成に失敗しました: %v", err)
	}

	log.Printf("テーブル作成結果:%#v\n", result)
}

DeleteTable

指定されたテーブルを削除します。

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
	namespace      string
	name           string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
	flag.StringVar(&namespace, "namespace", "", "名前空間の名前。")
	flag.StringVar(&name, "name", "", "テーブルの名前。")
}

func main() {
	flag.Parse()

	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(namespace) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。名前空間名は必須です。")
	}

	if len(name) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブル名は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.DeleteTable(context.TODO(), &tables.DeleteTableRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
		Namespace:      oss.Ptr(namespace),
		Name:           oss.Ptr(name),
	})

	if err != nil {
		log.Fatalf("テーブルの削除に失敗しました: %v", err)
	}

	log.Printf("テーブル削除結果:%#v\n", result)
}

GetTable

テーブルの詳細情報を取得します。

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
	namespace      string
	name           string
	tableArn       string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットのリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
	flag.StringVar(&namespace, "namespace", "", "名前空間の名前。")
	flag.StringVar(&name, "name", "", "テーブルの名前。")
	flag.StringVar(&tableArn, "table-arn", "", "テーブルの ARN。")
}

func main() {
	flag.Parse()

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	// バケット ARN、名前空間、テーブル名を指定して GetTable を呼び出します。
	result, err := client.GetTable(context.TODO(), &tables.GetTableRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
		Namespace:      oss.Ptr(namespace),
		Name:           oss.Ptr(name),
	})

	// または、テーブル ARN を指定して GetTable を呼び出します。
	//result, err := client.GetTable(context.TODO(), &tables.GetTableRequest{
	//	TableARN: oss.Ptr(tableArn),
	//})

	if err != nil {
		log.Fatalf("テーブルの取得に失敗しました: %v", err)
	}

	log.Printf("テーブル取得結果:%#v\n", result)
}

ListTables

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
	namespace      string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
	flag.StringVar(&namespace, "namespace", "", "名前空間の名前。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(namespace) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。名前空間名は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	p := client.NewListTablesPaginator(&tables.ListTablesRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
		Namespace:      oss.Ptr(namespace),
	})

	var i int
	log.Println("テーブル:")
	for p.HasNext() {
		i++

		page, err := p.NextPage(context.TODO())
		if err != nil {
			log.Fatalf("ページ %v の取得に失敗しました: %v", i, err)
		}

		for _, b := range page.Tables {
			log.Printf("テーブル %v,%v,%v,%v,%v,%v\n", oss.ToString(b.CreatedAt), oss.ToString(b.TableARN), oss.ToString(b.ModifiedAt), oss.ToString(b.Type), oss.ToString(b.Name), b.Namespace)
		}
	}
}

RenameTable

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
	namespace      string
	name           string
	newName        string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
	flag.StringVar(&namespace, "namespace", "", "名前空間の名前。")
	flag.StringVar(&name, "name", "", "テーブルの名前。")
	flag.StringVar(&newName, "new-name", "", "テーブルの新しい名前。")
}

func main() {
	flag.Parse()

	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(namespace) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。名前空間名は必須です。")
	}

	if len(name) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブル名は必須です。")
	}

	if len(newName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。新しいテーブル名は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.RenameTable(context.TODO(), &tables.RenameTableRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
		Namespace:      oss.Ptr(namespace),
		Name:           oss.Ptr(name),
		NewName:        oss.Ptr(newName),
	})

	if err != nil {
		log.Fatalf("テーブル名の変更に失敗しました: %v", err)
	}

	log.Printf("テーブル名変更結果:%#v\n", result)
}

テーブルメタデータファイルの場所の取得

テーブルのメタデータファイルの場所を取得します。

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
	namespace      string
	name           string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットのリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
	flag.StringVar(&namespace, "namespace", "", "名前空間の名前。")
	flag.StringVar(&name, "name", "", "テーブルの名前。")
}

func main() {
	flag.Parse()

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(namespace) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。名前空間名は必須です。")
	}

	if len(name) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブル名は必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.GetTableMetadataLocation(context.TODO(), &tables.GetTableMetadataLocationRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
		Namespace:      oss.Ptr(namespace),
		Name:           oss.Ptr(name),
	})

	if err != nil {
		log.Fatalf("テーブルメタデータファイルの場所取得に失敗しました: %v", err)
	}

	log.Printf("テーブルメタデータファイルの場所取得結果:%#v\n", result)
}

UpdateTableMetadataLocation

テーブルのメタデータファイルの場所を更新します。

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region           string
	tableBucketArn   string
	namespace        string
	name             string
	metadataLocation string
	versionToken     string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
	flag.StringVar(&namespace, "namespace", "", "名前空間の名前。")
	flag.StringVar(&name, "name", "", "テーブルの名前。")
	flag.StringVar(&metadataLocation, "metadata-location", "", "テーブルのメタデータファイルの場所。")
	flag.StringVar(&versionToken, "version-token", "", "テーブルのバージョントークン。")
}

func main() {
	flag.Parse()

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(namespace) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。名前空間名は必須です。")
	}

	if len(name) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブル名は必須です。")
	}

	if len(metadataLocation) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルメタデータファイルの場所は必須です。")
	}

	if len(versionToken) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバージョントークンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.UpdateTableMetadataLocation(context.TODO(), &tables.UpdateTableMetadataLocationRequest{
		TableBucketARN:   oss.Ptr(tableBucketArn),
		Namespace:        oss.Ptr(namespace),
		Name:             oss.Ptr(name),
		MetadataLocation: oss.Ptr(metadataLocation),
		VersionToken:     oss.Ptr(versionToken),
	})

	if err != nil {
		log.Fatalf("テーブルメタデータファイルの場所更新に失敗しました: %v", err)
	}

	log.Printf("テーブルメタデータファイルの場所更新結果:%#v\n", result)
}

GetTableEncryption

テーブルの暗号化構成を取得します。

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
	namespace      string
	name           string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
	flag.StringVar(&namespace, "namespace", "", "名前空間の名前。")
	flag.StringVar(&name, "name", "", "テーブルの名前。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(namespace) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。名前空間名は必須です。")
	}

	if len(name) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブル名は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.GetTableEncryption(context.TODO(), &tables.GetTableEncryptionRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
		Namespace:      oss.Ptr(namespace),
		Name:           oss.Ptr(name),
	})

	if err != nil {
		log.Fatalf("テーブル暗号化構成の取得に失敗しました: %v", err)
	}

	log.Printf("テーブル暗号化構成取得結果:%#v\n", result)
}

PutTablePolicy

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
	namespace      string
	name           string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットのリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
	flag.StringVar(&namespace, "namespace", "", "名前空間の名前。")
	flag.StringVar(&name, "name", "", "テーブルの名前。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(namespace) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。名前空間名は必須です。")
	}

	if len(name) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブル名は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.PutTablePolicy(context.TODO(), &tables.PutTablePolicyRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
		Namespace:      oss.Ptr(namespace),
		Name:           oss.Ptr(name),
		ResourcePolicy: oss.Ptr(`
			{
			   "Version":"1",
			   "Statement":[
			   {
				 "Action":[
				   "oss:GetTable"
				],
				"Effect":"Deny",
				"Principal":["1234567890"],
				"Resource":["acs:osstable:cn-hangzhou:1234567890:bucket/demo-bucket/table/*"]
			   }
			  ]
			 }
		`),
	})

	if err != nil {
		log.Fatalf("テーブルポリシーの適用に失敗しました: %v", err)
	}

	log.Printf("テーブルポリシー適用結果: %#v\n", result)
}

GetTablePolicy

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
	namespace      string
	name           string
)

func init() {
	flag.StringVar(&region, "region", "", "テーブルバケットのリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
	flag.StringVar(&namespace, "namespace", "", "テーブルの名前空間。")
	flag.StringVar(&name, "name", "", "テーブルの名前。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(namespace) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。名前空間は必須です。")
	}

	if len(name) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブル名は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.GetTablePolicy(context.TODO(), &tables.GetTablePolicyRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
		Namespace:      oss.Ptr(namespace),
		Name:           oss.Ptr(name),
	})

	if err != nil {
		log.Fatalf("テーブルポリシーの取得に失敗しました: %v", err)
	}

	log.Printf("テーブルポリシー取得結果: %#v\n", result)
}

DeleteTablePolicy

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
	namespace      string
	name           string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
	flag.StringVar(&namespace, "namespace", "", "名前空間の名前。")
	flag.StringVar(&name, "name", "", "テーブルの名前。")
}

func main() {
	flag.Parse()
	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(namespace) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。名前空間名は必須です。")
	}

	if len(name) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブル名は必須です。")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.DeleteTablePolicy(context.TODO(), &tables.DeleteTablePolicyRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
		Namespace:      oss.Ptr(namespace),
		Name:           oss.Ptr(name),
	})

	if err != nil {
		log.Fatalf("テーブルポリシーの削除に失敗しました: %v", err)
	}

	log.Printf("テーブルポリシー削除結果:%#v\n", result)
}

PutTableMaintenanceConfiguration

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
	namespace      string
	name           string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
	flag.StringVar(&namespace, "namespace", "", "名前空間の名前。")
	flag.StringVar(&name, "name", "", "テーブルの名前。")
}

func main() {
	flag.Parse()

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(namespace) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。名前空間名は必須です。")
	}

	if len(name) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブル名は必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	// icebergCompaction タイプ
	result, err := client.PutTableMaintenanceConfiguration(context.TODO(), &tables.PutTableMaintenanceConfigurationRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
		Namespace:      oss.Ptr(namespace),
		Name:           oss.Ptr(name),
		Type:           oss.Ptr("icebergCompaction"),
		Value: &tables.TableMaintenanceValue{
			Status: oss.Ptr("enabled"),
			Settings: &tables.TableMaintenanceSettings{
				IcebergCompaction: &tables.IcebergCompactionSettingsDetail{
					TargetFileSizeMB: oss.Ptr(400),
					Strategy:         oss.Ptr("auto"),
				},
			},
		},
	})

	// icebergSnapshotManagement タイプ
	//result, err := client.PutTableMaintenanceConfiguration(context.TODO(), &tables.PutTableMaintenanceConfigurationRequest{
	//	TableBucketARN: oss.Ptr(tableBucketArn),
	//	Namespace:      oss.Ptr(namespace),
	//	Name:           oss.Ptr(name),
	//	Type:           oss.Ptr("icebergSnapshotManagement"),
	//	Value: &tables.TableMaintenanceValue{
	//		Status: oss.Ptr("enabled"),
	//		Settings: &tables.TableMaintenanceSettings{
	//			IcebergSnapshotManagement: &tables.IcebergSnapshotManagementSettingsDetail{
	//				MaxSnapshotAgeHours: oss.Ptr(350),
	//				MinSnapshotsToKeep:  oss.Ptr(1),
	//			},
	//		},
	//	},
	//})

	if err != nil {
		log.Fatalf("テーブルメンテナンス構成の適用に失敗しました: %v", err)
	}

	log.Printf("テーブルメンテナンス構成適用結果:%#v\n", result)
}

GetTableMaintenanceConfiguration

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
	namespace      string
	name           string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
	flag.StringVar(&namespace, "namespace", "", "名前空間の名前。")
	flag.StringVar(&name, "name", "", "テーブルの名前。")
}

func main() {
	flag.Parse()

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(namespace) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。名前空間名は必須です。")
	}

	if len(name) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブル名は必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.GetTableMaintenanceConfiguration(context.TODO(), &tables.GetTableMaintenanceConfigurationRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
		Namespace:      oss.Ptr(namespace),
		Name:           oss.Ptr(name),
	})

	if err != nil {
		log.Fatalf("テーブルメンテナンス構成の取得に失敗しました: %v", err)
	}

	log.Printf("テーブルメンテナンス構成取得結果:%#v\n", result)
}

GetTableMaintenanceJobStatus

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

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/tables"
)

var (
	region         string
	tableBucketArn string
	namespace      string
	name           string
)

func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&tableBucketArn, "table-bucket-arn", "", "テーブルバケットの ARN。")
	flag.StringVar(&namespace, "namespace", "", "名前空間の名前。")
	flag.StringVar(&name, "name", "", "テーブルの名前。")
}

func main() {
	flag.Parse()

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンは必須です。")
	}

	if len(tableBucketArn) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブルバケット ARN は必須です。")
	}

	if len(namespace) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。名前空間名は必須です。")
	}

	if len(name) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。テーブル名は必須です。")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := tables.NewTablesClient(cfg)

	result, err := client.GetTableMaintenanceJobStatus(context.TODO(), &tables.GetTableMaintenanceJobStatusRequest{
		TableBucketARN: oss.Ptr(tableBucketArn),
		Namespace:      oss.Ptr(namespace),
		Name:           oss.Ptr(name),
	})

	if err != nil {
		log.Fatalf("テーブルメンテナンスジョブステータスの取得に失敗しました: %v", err)
	}

	log.Printf("テーブルメンテナンスジョブステータス取得結果:%#v\n", result)
}