バケットはオブジェクトを格納するためのコンテナーです。すべてのオブジェクトはバケットに格納する必要があります。このトピックでは、バケットの作成方法について説明します。
注意事項
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。Object Storage Service (OSS) と同じリージョンにある他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS のリージョンとエンドポイントの詳細については、リージョンとエンドポイントをご参照ください。
このトピックでは、アクセス認証情報は環境変数から取得されます。アクセス認証情報の設定方法の詳細については、アクセス認証情報の設定をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、クライアントの設定 (Go SDK V1) をご参照ください。
2025 年 10 月 13 日 10:00 (UTC+8) 以降、OSS は、API、OSS SDK、または ossutil を使用して作成された新しいバケットに対して、デフォルトで パブリックアクセスのブロック を有効にする段階的な調整をすべてのリージョンで実施します。各リージョンで調整が有効になる正確な時刻の詳細については、[公式発表] API 操作、OSS SDK を使用して作成されたバケットのパブリックアクセスブロック設定の調整をご参照ください。パブリックアクセスのブロックが有効になると、パブリック ACL (公開読み取りおよび公開読み書き) やパブリックアクセスを許可するバケットポリシーなど、パブリックアクセス権限を設定できなくなります。ビジネスでパブリックアクセスが必要な場合は、バケットの作成後にこの機能を無効にすることができます。
権限
デフォルトでは、Alibaba Cloud アカウントは完全な権限を持っています。Alibaba Cloud アカウント配下の RAM ユーザーまたは RAM ロールは、デフォルトではいかなる権限も持っていません。Alibaba Cloud アカウントまたはアカウント管理者は、RAM ポリシーまたはバケットポリシーを通じて操作権限を付与する必要があります。
API | アクション | 定義 |
PutBucket |
| バケットを作成します。 |
| バケットの作成後、バケットのアクセス制御リスト (ACL) を変更するにはこの権限が必要です。 |
サンプルコード
次のコードは、examplebucket という名前のバケットを作成する方法の例を示しています。
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
/// 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// OSSClient インスタンスを作成します。
// yourEndpoint をバケットのエンドポイントに設定します。たとえば、中国 (杭州) リージョンのバケットの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。他のリージョンについては、実際のエンドポイントを指定します。
// yourRegion をバケットのリージョンに設定します。たとえば、中国 (杭州) リージョンのバケットの場合、リージョンを cn-hangzhou に設定します。他のリージョンについては、実際のリージョンを指定します。
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// 署名バージョンを設定します。
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// examplebucket という名前のバケットを作成します。ストレージクラスを低頻度アクセス (oss.StorageIA) に、アクセス制御リスト (ACL) を公開読み取り (oss.ACLPublicRead) に、データディザスタリカバリタイプをゾーン冗長ストレージ (oss.RedundancyZRS) に設定します。
err = client.CreateBucket("examplebucket", oss.StorageClass(oss.StorageIA), oss.ACL(oss.ACLPublicRead), oss.RedundancyType(oss.RedundancyZRS))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
}