バケットは、OSS にオブジェクトを保存するためのコンテナです。
前提条件
開始する前に、以下を確認してください。
アクセス認証情報が構成されていること。このトピックの例では、環境変数から認証情報を読み取ります。設定手順については、「アクセス認証情報の構成」をご参照ください。
oss:PutBucket権限があること。デフォルトでは、Alibaba Cloud アカウント (root ユーザー) はすべての権限を持っています。RAM ユーザーと RAM ロールはデフォルトでは権限を持っていません。これらは RAM Policy または Bucket Policy を通じて付与します。
注意事項
サンプルコードでは、リージョン ID
cn-hangzhou(中国 (杭州)) を使用しています。デフォルトでは、パブリックエンドポイントが使用されます。同じリージョン内の別の Alibaba Cloud サービスからバケットリソースにアクセスするには、代わりに内部エンドポイントを使用します。リージョンとエンドポイントのマッピングについては、「リージョンとエンドポイント」をご参照ください。2025 年 10 月 13 日 10:00 (UTC+8) 以降、API、OSS SDK、または ossutil を介して作成されるすべての新しいバケットに対して、OSS はデフォルトで 公開アクセス禁止 を有効にします。展開はリージョンごとに段階的に行われます。スケジュールについては、「公式発表」をご参照ください。公開アクセス禁止が有効になっている場合、パブリック ACL (パブリック読み取りまたはパブリック読み取り/書き込み) や、パブリックアクセスを許可するバケットポリシーを設定することはできません。パブリックアクセスを許可するには、バケット作成後にこの機能を無効にしてください。
権限
| API | アクション | 説明 |
|---|---|---|
| PutBucket | oss:PutBucket | バケットを作成します。 |
oss:PutBucketAcl | 作成後にバケット ACL を変更します。 |
メソッド定義
func (c *Client) PutBucket(ctx context.Context, request *PutBucketRequest, optFns ...func(*Options)) (*PutBucketResult, error)リクエストパラメーター
| パラメーター | 型 | 説明 |
|---|---|---|
ctx | context.Context | リクエストのコンテキスト。これを使用して、リクエストの合計タイムアウトを設定します。 |
request | *PutBucketRequest | リクエストパラメーター。「PutBucketRequest」をご参照ください。 |
optFns | ...func(*Options) | (オプション) オペレーションレベルの構成。「Options」をご参照ください。 |
レスポンスパラメーター
| パラメーター | 型 | 説明 |
|---|---|---|
result | *PutBucketResult | 戻り値。err が nil の場合にのみ有効です。「PutBucketResult」をご参照ください。 |
err | error | リクエスト状態。リクエストが失敗した場合に nil 以外。 |
例
次の例では、バケットを作成します。--region と --bucket をコマンドラインフラグとして渡します。
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"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()
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")
}
// Load default config. Credentials are read from environment variables.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Create an OSS client.
client := oss.NewClient(cfg)
request := &oss.PutBucketRequest{
Bucket: oss.Ptr(bucketName),
}
// Create the bucket.
result, err := client.PutBucket(context.TODO(), request)
if err != nil {
log.Fatalf("failed to put bucket %v", err)
}
log.Printf("put bucket result:%#v\n", result)
}完全なサンプルについては、「GitHub の put_bucket.go」をご参照ください。
次のステップ
バケットを作成した後、次のことができます。
オブジェクトのアップロード —
PutObjectまたはマルチパートアップロードを使用して、バケットにファイルを保存します。ストレージクラスの設定 — 標準、低頻度アクセス、アーカイブ、またはコールドアーカイブストレージを選択してコストを削減します。
ライフサイクルルールの構成 — 経過時間またはストレージクラスに基づいてオブジェクトを自動的に移行または削除します。
アクセスの制御 — RAM Policy、バケットポリシー、またはアクセス制御リスト (ACL) を使用してアクセスを制限または付与します。