このトピックでは、Object Storage Service (OSS) SDK for Go V2 を使用してバケットのパブリックアクセスブロック構成を管理する方法について説明します。
注意事項
このトピックのサンプルコードでは、中国 (杭州) リージョン (
cn-hangzhou) を例として使用します。デフォルトでは、パブリックエンドポイントを使用してバケット内のリソースにアクセスします。同じリージョン内の他の Alibaba Cloud サービスを使用してバケット内のリソースにアクセスする場合は、内部エンドポイントを使用します。Object Storage Service (OSS) がサポートするリージョンとエンドポイントの詳細については、「OSS のリージョンとエンドポイント」をご参照ください。このトピックのサンプルコードは、環境変数からアクセス資格情報を取得します。アクセス資格情報を設定する方法の詳細については、「アクセス資格情報の設定」をご参照ください。
サンプルコード
バケットのパブリックアクセスブロックを有効にするバケットに対するパブリックアクセスをブロックする
次のコードを使用して、バケットのパブリックアクセスブロックを有効にできます。
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss" // Alibaba Cloud OSS の SDK パッケージ。
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" // 認証情報を処理するためのパッケージ。
)
var (
region string // コマンドラインから取得したリージョン情報を格納する変数を定義します。
bucketName string // コマンドラインから取得したバケット名を格納する変数を定義します。
)
// init 関数は、main 関数の前に実行され、プログラムを初期化します。
func init() {
// リージョンを指定するコマンドラインパラメーターを設定します。デフォルト値は空の文字列です。
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
// バケット名を指定するコマンドラインパラメーターを設定します。デフォルト値は空の文字列です。
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
flag.Parse() // コマンドラインパラメーターを解析します。
// バケット名が指定されているかどうかを確認します。指定されていない場合は、デフォルトのパラメーターを出力してプログラムを終了します。
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required") // エラーを記録してプログラムを終了します。
}
// リージョン情報が指定されているかどうかを確認します。指定されていない場合は、デフォルトのパラメーターを出力してプログラムを終了します。
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required") // エラーを記録してプログラムを終了します。
}
// 構成オブジェクトを作成し、環境変数を資格情報プロバイダーとして使用し、リージョンを指定します。
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg) // 構成を使用して OSS クライアントインスタンスを作成します。
// PutBucketPublicAccessBlockRequest オブジェクトを作成して、特定のバケットのパブリックアクセスブロック構成を設定します。
request := &oss.PutBucketPublicAccessBlockRequest{
Bucket: oss.Ptr(bucketName), // 操作するバケットの名前を指定します。
PublicAccessBlockConfiguration: &oss.PublicAccessBlockConfiguration{
oss.Ptr(true), // パブリックアクセスブロック構成を有効にします。
},
}
putResult, err := client.PutBucketPublicAccessBlock(context.TODO(), request) // リクエストを実行して、パブリックアクセスブロックを設定します。
if err != nil {
log.Fatalf("failed to put bucket public access block %v", err) // エラーが発生した場合は、エラーメッセージを記録してプログラムを終了します。
}
log.Printf("put bucket public access block result:%#v\n", putResult) // パブリックアクセスブロックの設定結果を出力します。
}バケットのパブリックアクセスブロック設定を照会する
次のコードを使用して、バケットのパブリックアクセスブロック構成をクエリできます。
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss" // Alibaba Cloud OSS の SDK パッケージ。
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" // 認証情報を処理するためのパッケージ。
)
var (
region string // コマンドラインから取得したリージョン情報を格納する変数を定義します。
bucketName string // コマンドラインから取得したバケット名を格納する変数を定義します。
)
// init 関数は、main 関数の前に実行され、プログラムを初期化します。
func init() {
// リージョンを指定するコマンドラインパラメーターを設定します。デフォルト値は空の文字列です。
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
// バケット名を指定するコマンドラインパラメーターを設定します。デフォルト値は空の文字列です。
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
flag.Parse() // コマンドラインパラメーターを解析します。
// バケット名が指定されているかどうかを確認します。指定されていない場合は、デフォルトのパラメーターを出力してプログラムを終了します。
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required") // 致命的なエラーをログに記録し、プログラムを終了します。
}
// リージョン情報が指定されているかどうかを確認します。指定されていない場合は、デフォルトのパラメーターを出力してプログラムを終了します。
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required") // 致命的なエラーをログに記録し、プログラムを終了します。
}
// 構成オブジェクトを作成し、環境変数を資格情報プロバイダーとして使用し、リージョンを指定します。
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg) // 構成を使用して OSS クライアントインスタンスを作成します。
// GetBucketPublicAccessBlockRequest オブジェクトを作成して、特定のバケットのパブリックアクセスブロック設定を取得します。
request := &oss.GetBucketPublicAccessBlockRequest{
Bucket: oss.Ptr(bucketName), // クエリするバケットの名前を指定します。
}
getResult, err := client.GetBucketPublicAccessBlock(context.TODO(), request) // リクエストを実行して、パブリックアクセスブロックのステータスを取得します。
if err != nil {
log.Fatalf("failed to get bucket public access block %v", err) // エラーが発生した場合は、エラーメッセージを記録してプログラムを終了します。
}
log.Printf("get bucket public access block result:%#v\n", getResult) // 取得したパブリックアクセスブロックの結果を出力します。
}バケットのパブリックアクセスブロック設定を削除する
次のコードを使用して、指定したバケットのパブリックアクセスブロック構成を削除できます。
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss" // Alibaba Cloud OSS の SDK パッケージ。
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" // 認証情報を処理するためのパッケージ。
)
var (
region string // コマンドラインから取得したリージョン情報を格納する変数を定義します。
bucketName string // コマンドラインから取得したバケット名を格納する変数を定義します。
)
// init 関数は、main 関数の前に実行され、プログラムを初期化します。
func init() {
// リージョンを指定するコマンドラインパラメーターを設定します。デフォルト値は空の文字列です。
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
// バケット名を指定するコマンドラインパラメーターを設定します。デフォルト値は空の文字列です。
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
flag.Parse() // コマンドラインパラメーターを解析します。
// バケット名が指定されているかどうかを確認します。指定されていない場合は、デフォルトのパラメーターを出力してプログラムを終了します。
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required") // 致命的なエラーをログに記録し、プログラムを終了します。
}
// リージョン情報が指定されているかどうかを確認します。指定されていない場合は、デフォルトのパラメーターを出力してプログラムを終了します。
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required") // 致命的なエラーをログに記録し、プログラムを終了します。
}
// 構成オブジェクトを作成し、環境変数を資格情報プロバイダーとして使用し、リージョンを指定します。
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg) // 構成を使用して OSS クライアントインスタンスを作成します。
// DeleteBucketPublicAccessBlockRequest オブジェクトを作成して、特定のバケットのパブリックアクセスブロック設定を削除します。
request := &oss.DeleteBucketPublicAccessBlockRequest{
Bucket: oss.Ptr(bucketName), // 操作するバケットの名前を指定します。
}
result, err := client.DeleteBucketPublicAccessBlock(context.TODO(), request) // リクエストを実行して、パブリックアクセスブロック設定を削除します。
if err != nil {
log.Fatalf("failed to delete bucket public access block %v", err) // エラーが発生した場合は、エラーメッセージを記録してプログラムを終了します。
}
log.Printf("delete bucket public access block result:%#v\n", result) // パブリックアクセスブロック設定の削除結果を出力します。
}関連情報
パブリックアクセスブロックの管理に関する完全なサンプルコードについては、「GitHub の例」をご参照ください。
バケットのパブリックアクセスブロックを有効にするために使用される API 操作の詳細については、「PutBucketPublicAccessBlock」をご参照ください。
バケットのパブリックアクセスブロック構成をクエリするために使用される API 操作の詳細については、「GetBucketPublicAccessBlock」をご参照ください。
バケットのパブリックアクセスブロック構成を削除するために使用される API 操作の詳細については、「DeleteBucketPublicAccessBlock」をご参照ください。