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

Object Storage Service:アクセスポイントレベルで OSS リソースへのパブリックアクセスをブロックする

最終更新日:Feb 28, 2025

このトピックでは、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"           // OSS SDK パッケージをインポートします。
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" // 認証情報を処理するためのパッケージをインポートします。
)

var (
	region     string // コマンドラインから取得したリージョン情報を格納する変数を定義します。
	bucketName string // コマンドラインから取得したバケット名を格納する変数を定義します。
)

func init() {
	// リージョンを指定するためのコマンドラインパラメータを設定します。このパラメータはデフォルトでは空です。
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	// バケット名を指定するためのコマンドラインパラメータを設定します。このパラメータはデフォルトでは空です。
	flag.StringVar(&bucketName, "bucket", "", "バケット名。")
}

func main() {
	flag.Parse() // コマンドラインパラメータを解析します。

	// アクセスポイント名を定義します。この例では "access point name" としてハードコードされています。実際のシナリオでは、この値は実際のビジネス要件に応じて設定するか、コマンドラインパラメータを介して渡す必要があります。
	var accessPointName = "access point name"

	// バケット名が指定されているかどうかを確認します。指定されていない場合、プログラムはこのパラメータが必要であることを示すエラーメッセージを出力して終了します。
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメータです。バケット名が必要です。") // エラーメッセージをログに記録し、プログラムを終了します。
	}

	// リージョン情報が提供されているかどうかを確認します。提供されていない場合、プログラムはこのパラメータが必要であることを示すエラーメッセージを出力して終了します。
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメータです。リージョンが必要です。") // エラーメッセージをログに記録し、プログラムを終了します。
	}

	// 設定オブジェクトを作成し、環境変数から認証プロバイダーを読み込み、リージョンを指定します。
	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("アクセスポイントのパブリックアクセスブロックの設定に失敗しました %v", err) // エラーが発生した場合、エラーメッセージを記録して終了します。
	}

	log.Printf("アクセスポイントのパブリックアクセスブロックの設定結果: %#v\n", putResult) // 結果を表示します。
}

アクセスポイントのパブリックアクセスブロック設定を照会する

次のコードは、アクセスポイントのパブリックアクセスブロック設定を照会する方法の例を示しています。

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"           // OSS SDK パッケージをインポートします。
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" // 認証情報を処理するためのパッケージをインポートします。
)

var (
	region     string // コマンドラインから取得したリージョン情報を格納する変数を定義します。
	bucketName string // コマンドラインから取得したバケット名を格納する変数を定義します。
)


func init() {
	// リージョンを指定するためのコマンドラインパラメータを設定します。このパラメータはデフォルトでは空です。
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	// バケット名を指定するためのコマンドラインパラメータを設定します。このパラメータはデフォルトでは空です。
	flag.StringVar(&bucketName, "bucket", "", "バケット名。")
}

func main() {
	flag.Parse() // コマンドラインパラメータを解析します。

	// アクセスポイント名を定義します。この例では "access point name" としてハードコードされています。実際のシナリオでは、この値は実際のビジネス要件に応じて、またはその他の方法で設定する必要があります。
	var accessPointName = "access point name"

	// バケット名が指定されているかどうかを確認します。指定されていない場合、プログラムはこのパラメータが必要であることを示すエラーメッセージを出力して終了します。
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメータです。バケット名が必要です。") // エラーメッセージをログに記録し、プログラムを終了します。
	}

	// リージョン情報が指定されているかどうかを確認します。指定されていない場合、プログラムはこのパラメータが必要であることを示すエラーメッセージを出力して終了します。
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメータです。リージョンが必要です。") // エラーメッセージをログに記録し、プログラムを終了します。
	}

	// 設定オブジェクトを作成し、環境変数から認証プロバイダーを読み込み、リージョンを指定します。
	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("アクセスポイントのパブリックアクセスブロックの取得に失敗しました %v", err) // エラーが発生した場合、エラーメッセージを記録してプログラムを終了します。
	}

	log.Printf("アクセスポイントのパブリックアクセスブロックの取得結果: %#v\n", getResult) // 結果を表示します。
}

アクセスポイントのパブリックアクセスブロック設定を削除する

次のコードは、アクセスポイントのパブリックアクセスブロック設定を削除する方法の例を示しています。

package main

import (
	"context" // デッドラインやキャンセルシグナルなどの機能を使用してコンテキストを管理するために使用されます。
	"flag"    // コマンドラインパラメータを解析するために使用されます。
	"log"     // ログ情報を出力するために使用されます。

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"           // OSS SDK パッケージをインポートします。
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" // 認証情報を処理するためのパッケージをインポートします。
)

var (
	region     string // コマンドラインから取得したリージョン情報を格納する変数を定義します。
	bucketName string // コマンドラインから取得したバケット名を格納する変数を定義します。
)

// init 関数は、main 関数の前に実行され、プログラムを初期化します。
func init() {
	// リージョンを指定するためのコマンドラインパラメータを設定します。このパラメータはデフォルトでは空です。
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	// バケット名を指定するためのコマンドラインパラメータを設定します。このパラメータはデフォルトでは空です。
	flag.StringVar(&bucketName, "bucket", "", "バケット名。")
}

// main 関数は、プログラムのエントリポイントとして機能します。
func main() {
	flag.Parse() // コマンドラインパラメータを解析します。

	// アクセスポイント名を定義します。この例では "access point name" としてハードコードされています。実際のシナリオでは、この値は実際のビジネス要件に応じて、またはその他の方法で設定する必要があります。
	var accessPointName = "access point name"

	// バケット名が指定されているかどうかを確認します。指定されていない場合、プログラムはこのパラメータが必要であることを示すエラーメッセージを出力して終了します。
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメータです。バケット名が必要です。") // エラーメッセージをログに記録し、プログラムを終了します。
	}

	// リージョン情報が指定されているかどうかを確認します。指定されていない場合、プログラムはデフォルトのパラメータを出力して終了します。
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメータです。リージョンが必要です。") // エラーメッセージをログに記録し、プログラムを終了します。
	}

	// 設定オブジェクトを作成し、環境変数から認証プロバイダーを読み込み、リージョンを指定します。
	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("アクセスポイントのパブリックアクセスブロックの削除に失敗しました %v", err) // エラーが発生した場合、エラーメッセージを記録してプログラムを終了します。
	}

	log.Printf("アクセスポイントのパブリックアクセスブロックの削除結果: %#v\n", deleteResult) // 結果を表示します。
}

参照

  • アクセスポイントのパブリックアクセスブロック設定を管理するために使用される完全なサンプルコードについては、「GitHub の例」をご参照ください。

  • アクセスポイントのパブリックアクセスブロックを有効にするために呼び出すことができる API 操作の詳細については、「PutAccessPointPublicAccessBlock」をご参照ください。

  • アクセスポイントのパブリックアクセスブロック設定を照会するために呼び出すことができる API 操作の詳細については、「GetAccessPointPublicAccessBlock」をご参照ください。

  • アクセスポイントのパブリックアクセスブロック設定を削除するために呼び出すことができる API 操作の詳細については、「DeleteAccessPointPublicAccessBlock」をご参照ください。