次のコードを使用して、バケットのアーカイブオブジェクトへのリアルタイムアクセスを有効にできます。
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(®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 クライアントを作成します。
// 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) // 結果を表示します。
}