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

Object Storage Service:アーカイブオブジェクトへのリアルタイムアクセス (OSS SDK for Go V2)

最終更新日:Nov 09, 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 // コマンドラインから取得したバケット名を格納する変数を定義します。
)

// init 関数は、main 関数の前に実行され、プログラムを初期化します。
func init() {
	// コマンドラインパラメーターを設定してリージョンを指定します。 このパラメーターはデフォルトでは空のままです。
	flag.StringVar(&region, "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 クライアントを作成します。

	// PutBucketArchiveDirectRead リクエストを作成して、特定のバケット内のアーカイブオブジェクトへのリアルタイムアクセスを有効にします。
	request := &oss.PutBucketArchiveDirectReadRequest{
		Bucket: oss.Ptr(bucketName), // バケットの名前を指定します。
		ArchiveDirectReadConfiguration: &oss.ArchiveDirectReadConfiguration{
			Enabled: oss.Ptr(true), // リアルタイムアクセスを有効にします。 このパラメーターが true に設定されている場合、リアルタイムアクセスが有効になります。 false に設定されている場合、この機能は無効になります。
		},
	}
	result, err := client.PutBucketArchiveDirectRead(context.TODO(), request) // リクエストを送信してリアルタイムアクセスを設定します。
	if err != nil {
		log.Fatalf("failed to put bucket archive direct read %v", err) // エラーが発生した場合は、エラーメッセージを記録してプログラムを終了します。
	}

	log.Printf("put bucket archive direct read result:%#v\n", result) // 結果を表示します。
}

アーカイブオブジェクトへのリアルタイムアクセスが有効になっているかどうかのクエリ

次のコードを使用して、アーカイブオブジェクトへのリアルタイムアクセスが有効になっているかどうかをクエリできます。

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", "", "バケットの名前。")
}

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

	// バケット名が指定されているかどうかを確認します。指定されていない場合、プログラムはデフォルトのパラメータを出力して終了します。
	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 クライアントを作成します。

	// 特定のバケットのアーカイブオブジェクトのリアルタイムアクセス構成をクエリする GetBucketArchiveDirectRead リクエストを作成します (リアルタイムアクセスが有効で構成されていると仮定します)。
	request := &oss.GetBucketArchiveDirectReadRequest{
		Bucket: oss.Ptr(bucketName), // バケットの名前を指定します。
	}
	result, err := client.GetBucketArchiveDirectRead(context.TODO(), request) // 構成をクエリするリクエストを送信します (リアルタイムアクセスが有効で構成されていると仮定します)。
	if err != nil {
		log.Fatalf("バケットアーカイブの直接読み取りの取得に失敗しました %v", err) // エラーが発生した場合、エラーメッセージを記録し、プログラムを終了します。
	}

	log.Printf("バケットアーカイブの直接読み取りの結果:%#v\n", result) // 構成を表示します (リアルタイムアクセスが有効で構成されていると仮定します)。
}

関連情報

  • アーカイブオブジェクトへのリアルタイムアクセスを有効にするための完全なサンプルコードについては、「Github の例」をご参照ください。

  • アーカイブオブジェクトへのリアルタイムアクセスを有効にする API 操作の詳細については、「PutBucketArchiveDirectRead」をご参照ください。

  • アーカイブオブジェクトへのリアルタイムアクセスが有効になっているかどうかをクエリする API 操作の詳細については、「GetBucketArchiveDirectRead」をご参照ください。