このトピックでは、OSS SDK for Go V2 を使用して、アクセスポイントレベルでパブリックアクセスブロック機能を管理する方法について説明します。
注意事項
このトピックのサンプルコードは、中国 (杭州) リージョン用で、リージョン ID
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 // コマンドラインから取得したバケット名を格納する変数を定義します。
)
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() // コマンドラインパラメーターを解析します。
// アクセスポイント名を定義します。この例では「access point name」としてハードコーディングされています。 実際のシナリオでは、この値は必要に応じて設定するか、コマンドラインパラメーターを介して渡す必要があります。
var accessPointName = "access point name"
// バケットの名前が指定されているかどうかを確認します。 指定されていない場合、プログラムはデフォルトのパラメーターを出力して終了します。
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 クライアントインスタンスを作成します。
// PutAccessPointPublicAccessBlock リクエストを作成して、特定のアクセスポイントのパブリックアクセスブロック設定を行います。
request := &oss.PutAccessPointPublicAccessBlockRequest{
Bucket: oss.Ptr(bucketName), // バケットの名前を指定します。
AccessPointName: oss.Ptr(accessPointName), // アクセスポイントの名前を指定します。
PublicAccessBlockConfiguration: &oss.PublicAccessBlockConfiguration{
oss.Ptr(true), // パブリックアクセスブロック設定を有効にします。
},
}
putResult, err := client.PutAccessPointPublicAccessBlock(context.TODO(), request) // リクエストを送信して、アクセスポイントのパブリックアクセスブロックを設定します。
if err != nil {
log.Fatalf("failed to put access point public access block %v", err) // エラーが発生した場合は、エラーメッセージを記録してプログラムを終了します。
}
log.Printf("put access point 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 // コマンドラインから取得したバケット名を格納する変数を定義します。
)
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() // コマンドラインパラメーターを解析します。
// アクセスポイント名を定義します。 このパラメーターは、この例では「access point name」としてハードコーディングされています。 実際のアプリケーションでは、このパラメーターを必要に応じて、または他の手段で設定する必要があります。
var accessPointName = "access point name"
// バケットの名前が指定されているかどうかを確認します。 指定されていない場合、プログラムはデフォルトのパラメーターを出力して終了します。
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 クライアントインスタンスを作成します。
// GetAccessPointPublicAccessBlock リクエストを作成して、特定のアクセスポイントのパブリックアクセスブロック設定をクエリします。
request := &oss.GetAccessPointPublicAccessBlockRequest{
Bucket: oss.Ptr(bucketName), // クエリするバケットの名前を指定します。
AccessPointName: oss.Ptr(accessPointName), // クエリするアクセスポイントの名前を指定します。
}
getResult, err := client.GetAccessPointPublicAccessBlock(context.TODO(), request) // リクエストを実行して、アクセスポイントのパブリックアクセスブロック設定をクエリします。
if err != nil {
log.Fatalf("failed to get access point public access block %v", err) // エラーが発生した場合は、エラーメッセージを記録してプログラムを終了します。
}
log.Printf("get access point 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.")
}
// main 関数は、プログラムのエントリポイントとして機能します。
func main() {
flag.Parse() // コマンドラインパラメーターを解析します。
// アクセスポイント名を定義します。 このパラメーターは、この例では「access point name」としてハードコーディングされています。 実際のアプリケーションでは、このパラメーターを必要に応じて、または他の手段で設定する必要があります。
var accessPointName = "access point name"
// バケットの名前が指定されているかどうかを確認します。 指定されていない場合、プログラムはデフォルトのパラメーターを出力して終了します。
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 クライアントインスタンスを作成します。
// DeleteAccessPointPublicAccessBlock リクエストを作成して、特定のアクセスポイントのパブリックアクセスブロック設定を削除します。
request := &oss.DeleteAccessPointPublicAccessBlockRequest{
Bucket: oss.Ptr(bucketName), // バケットの名前を指定します。
AccessPointName: oss.Ptr(accessPointName), // アクセスポイントの名前を指定します。
}
deleteResult, err := client.DeleteAccessPointPublicAccessBlock(context.TODO(), request) // リクエストを送信して、アクセスポイントのパブリックアクセスブロック設定を削除します。
if err != nil {
log.Fatalf("failed to delete access point public access block %v", err) // エラーが発生した場合は、エラーメッセージを記録してプログラムを終了します。
}
log.Printf("delete access point public access block result:%#v\n", deleteResult) // アクセスポイントのパブリックアクセスブロック設定の削除結果を出力します。
}参照
アクセスポイントのパブリックアクセスブロックを管理するための完全なサンプルコードについては、「Github の例」をご参照ください。
アクセスポイントのパブリックアクセスブロックを有効にする API 操作の詳細については、「PutAccessPointPublicAccessBlock」をご参照ください。
アクセスポイントのパブリックアクセスブロック設定をクエリする API 操作の詳細については、「GetAccessPointPublicAccessBlock」をご参照ください。
アクセスポイントのパブリックアクセスブロック設定を削除する API 操作の詳細については、「DeleteAccessPointPublicAccessBlock」をご参照ください。