バケットはオブジェクトを格納するためのコンテナーです。 すべてのオブジェクトはバケットに格納されます。 このトピックでは、バケットのリージョンをクエリする方法について説明します。
注意事項
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。 OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス認証情報は環境変数から取得されます。 アクセス認証情報の設定方法の詳細については、「アクセス認証情報の設定」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。 カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「クライアントの設定 (Go SDK V1)」をご参照ください。
バケットのリージョンをクエリするには、
oss:GetBucketLocation権限が必要です。 詳細については、「RAM ユーザーへのカスタムポリシーのアタッチ」をご参照ください。次のサンプルコードでは、Go SDK 2.2.5 以降でサポートされているプロパティを使用します。
サンプルコード
次のサンプルコードは、バケットのリージョンまたはロケーションをクエリする方法を示しています:
package main
import (
"log"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Failed to create credentials provider: %v", err)
}
// OSSClient インスタンスを作成します。
// yourEndpoint をバケットのエンドポイントに設定します。 たとえば、中国 (杭州) リージョンの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 他のリージョンについては、実際のエンドポイントを使用してください。
// yourRegion をバケットが配置されているリージョンに設定します。 たとえば、中国 (杭州) リージョンの場合、リージョンを cn-hangzhou に設定します。 他のリージョンについては、実際のリージョンを使用してください。
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// 署名バージョンを設定します。
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
log.Fatalf("Failed to create OSS client: %v", err)
}
// バケットのリージョンを取得します。
bucketName := "yourBucketName" // 実際のバケット名に置き換えます。
loc, err := client.GetBucketLocation(bucketName)
if err != nil {
log.Fatalf("Failed to get bucket location: %v", err)
}
// バケットのリージョン情報を出力します。
log.Printf("Bucket Location for '%s': %s", bucketName, loc)
}
関連ドキュメント
バケットのリージョンを取得するための API 操作の詳細については、「GetBucketLocation」をご参照ください。