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

Object Storage Service:バケットの作成方法

最終更新日:Jun 09, 2025

バケットは、Object Storage Service(OSS)内のオブジェクトのコンテナです。オブジェクトを OSS にアップロードする前に、まずオブジェクトを格納するバケットを作成する必要があります。アクセス制御リスト(ACL)やストレージタイプなど、バケットのさまざまな属性を設定できます。ビジネス要件に基づいて、さまざまなストレージタイプのバケットを作成し、データを格納できます。

注意事項

  • 2025年10月13日 10:00(UTC + 08:00)から、OSS はすべてリージョンで段階的な調整を実施し、API、OSS SDK、または ossutil を使用して作成された新しいバケットに対して、デフォルトでブロックパブリックアクセスを有効にします。各リージョンで調整が有効になる正確な時刻については、「[公式発表] 新しく作成されたバケットのパブリックアクセスブロック設定の調整」をご覧ください。ブロックパブリックアクセスが有効になっている場合、パブリック ACL(パブリック読み取りおよびパブリック読み取り/書き込み)、およびパブリックアクセスを許可するバケットポリシーを含む、パブリックアクセス権限を設定することはできません。ビジネスでパブリックアクセスが必要な場合は、バケットの作成後にこの機能を無効にすることができます。

  • デフォルトでは、Alibaba Cloud アカウントにはバケットを作成する権限があります。RAM ユーザーまたは Security Token Service(STS)を使用してバケットの帯域幅調整ルールを設定するには、oss:PutBucket 権限が必要です。詳細については、「RAM ユーザーにカスタムポリシーをアタッチする」をご参照ください。

  • バケットの作成には料金はかかりません。バケット内のオブジェクトのストレージと、オブジェクトへのアクセス時に発生するトラフィックに対してのみ課金されます。詳細については、「課金」をご参照ください。

  • バケットの容量はスケーラブルです。バケットを使用する前に容量を購入する必要はありません。

制限

  • Alibaba Cloud アカウントを使用して、同じリージョンに最大 100 個のバケットを作成できます。

  • バケットを作成した後、その名前、リージョン、またはストレージタイプを変更することはできません。

  • 単一のバケットの容量は無制限です。

方法

OSS コンソールを使用する

  1. OSS コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、バケットリスト をクリックします。[バケット] ページで、バケットの作成 をクリックします。

  3. バケットの作成 パネルで、次の表に示すパラメータを設定します。

    パラメータ

    説明

    バケット名

    作成するバケットの名前。バケット名は、次の要件を満たしている必要があります。

    • 名前は OSS 内でグローバルに一意である必要があります。

    • 名前に含めることができるのは、小文字、数字、ハイフン(-)のみです。

    • 名前は小文字または数字で始まり、小文字または数字で終わる必要があります。

    • 名前の長さは 3 ~ 63 文字である必要があります。

    リージョン

    バケットが配置されているリージョン。

    内部ネットワーク経由で Elastic Compute Service(ECS)インスタンスから OSS にアクセスするには、ECS インスタンスが配置されているリージョンを選択します。詳細については、「IPv6 をサポートするエンドポイントを使用して OSS にアクセスする」をご参照ください。

    説明

    中国本土のリージョンにバケットを作成する前に、実名登録 ページで実名登録を完了する必要があります。

    エンドポイント

    バケットが配置されているリージョンのパブリックエンドポイント。

    ストレージクラス

    バケットのストレージタイプ。有効な値:

    • 標準頻繁にアクセスされるデータ向けに、信頼性、可用性、パフォーマンスの高いストレージを提供します。標準は、ソーシャルネットワーキング アプリケーション、画像、オーディオ、ビデオ リソース共有アプリケーション、大規模 Web サイト、ビッグデータ分析など、さまざまなビジネスアプリケーションに適しています。

    • 低頻度アクセス標準と比較して低価格で、耐久性の高いストレージを提供します。低頻度アクセス(IA)の最小請求サイズは 64 KB で、最小請求ストレージ期間は 30 日です。IA オブジェクトにはリアルタイムでアクセスできます。IA オブジェクトにアクセスすると、データ取得料金が発生します。IA は、月に 1 ~ 2 回アクセスされるデータなど、アクセス頻度の低いデータに適しています。

    • アーカイブ標準および IA と比較して低価格で、耐久性の高いストレージを提供します。アーカイブの最小請求サイズは 64 KB で、最小請求ストレージ期間は 60 日です。アーカイブオブジェクトは、復元された後、またはアーカイブオブジェクトのリアルタイムアクセスが有効になった後にアクセスできます。アーカイブオブジェクトの復元にかかる時間は約 1 分です。アーカイブオブジェクトを復元すると、データ取得料金が発生します。アーカイブオブジェクトのリアルタイムアクセスが有効になった後にアーカイブオブジェクトにアクセスすると、アクセスされたアーカイブオブジェクトのサイズに基づいてデータ取得料金が発生します。アーカイブは、アーカイブデータ、医用画像、科学資料、ビデオ映像など、長期間保存する必要があるデータに適しています。

    • コールドアーカイブアーカイブと比較して低価格で、耐久性の高いストレージを提供します。コールドアーカイブの最小請求サイズは 64 KB で、最小請求ストレージ期間は 180 日です。コールドアーカイブオブジェクトにアクセスするには、オブジェクトを復元する必要があります。コールドアーカイブオブジェクトの復元にかかる時間は、オブジェクトのサイズと復元の優先度によって異なります。コールドアーカイブオブジェクトを復元すると、データ取得料金と API 操作呼び出し料金が発生します。コールドアーカイブは、コンプライアンス要件により長期間保持する必要があるデータ、ビッグデータおよび AI 分野で長期間にわたって蓄積された生データ、映画およびテレビ業界で保持されているメディアリソース、オンライン教育業界のアーカイブビデオなど、非常に長期間にわたってコールドデータを保存するのに適しています。

    • ディープコールドアーカイブコールドアーカイブと比較して低価格で、耐久性の高いストレージを提供します。深度コールドアーカイブの最小請求サイズは 64 KB で、最小請求ストレージ期間は 180 日です。深度コールドアーカイブオブジェクトにアクセスするには、オブジェクトを復元する必要があります。深度コールドアーカイブオブジェクトの復元にかかる時間は、オブジェクトのサイズと復元の優先度によって異なります。深度コールドアーカイブオブジェクトを復元すると、データ取得料金と API 操作呼び出し料金が発生します。深度コールドアーカイブは、ビッグデータおよび AI 分野で長期間にわたって蓄積された生データ、長期間の保存が必要なメディアデータ、規制およびポリシーコンプライアンス要件により長期間保持する必要があるデータ、テープからクラウドに移行して長期間保存する必要があるデータなど、非常に長期間にわたって極冷データを保存するのに適しています。

    詳細については、「ストレージタイプ」をご参照ください。

    冗長性

    バケットの冗長性タイプ。有効な値:

    • LRS

      ローカル冗長ストレージ(LRS)を使用すると、同じゾーン内の異なる施設の複数のデバイスにデータの複数のコピーを保存できます。LRS は、ハードウェア障害が発生した場合でも、データの耐久性と可用性を提供します。

    • ZRS(推奨)

      ZRS は、同じリージョン内の複数のゾーンにデータの複数のコピーを保存します。ゾーンが使用できなくなった場合でも、データにアクセスできます。

      重要

      ZRS はストレージ コストを増加させ、有効にした後は無効にすることができません。 ZRS を選択する際は注意が必要です。

      詳細については、「ゾーン冗長ストレージ バケットを作成する」をご参照ください。

    公開アクセス禁止

    パブリックアクセスブロックは、バケットの作成時にデフォルトで有効になっています。パブリックアクセスブロックが有効になっている場合、パブリック ACL(パブリック読み取りおよびパブリック読み取り/書き込み)やパブリックアクセスを許可するバケットポリシーなど、パブリックアクセス権限を設定することはできません。

    ACL

    バケットの ACL。有効な値:

    • 非公開:バケットオーナーまたは承認済みユーザーのみが、バケット内のオブジェクトに対して読み取りおよび書き込み操作を実行できます。他のユーザーは、バケット内のオブジェクトにアクセスできません。

    • 公開読み取り:バケットオーナーまたは承認済みユーザーのみが、バケット内のオブジェクトに対して書き込み操作を実行できます。匿名ユーザーを含む他のユーザーは、バケット内のオブジェクトを読み取ることのみができます。

      警告

      これにより、バケット内のデータへの予期しないアクセスや、予期せず高額な料金が発生する可能性があります。バケットの ACL を [公開読み取り] に設定する場合は注意してください。

    • 公開読み取り/書き込み:匿名ユーザーを含むすべてのユーザーが、バケット内のオブジェクトに対して読み取りおよび書き込み操作を実行できます。

      警告

      これにより、バケット内のデータへの予期しないアクセスや、予期せず高額な料金が発生する可能性があります。ユーザーが禁止されているデータまたは情報をアップロードした場合、お客様の正当な利益と権利が侵害される可能性があります。必要な場合を除き、バケットの ACL を [公開読み取り/書き込み] に設定しないことをお勧めします。

    リソースグループ

    バケットが属するリソースグループ。リソースグループは、使用状況、権限、およびリージョン別にリソースをグループ化するために使用されます。リソースグループを使用すると、リソースを階層的に整理し、ユーザーとプロジェクトに基づいてリソースをグループ化できます。詳細については、「リソースグループとは」をご参照ください。

    バージョン管理

    バージョン管理を有効にするかどうかを指定します。有効な値:

    • 有効: バケットに対してバージョン管理を有効にすると、バケット内で上書きまたは削除されたオブジェクトは以前のバージョンとして保存されます。バージョン管理を使用すると、バケット内のオブジェクトを以前のバージョンに復元でき、データが誤って上書きまたは削除されるのを防ぐことができます。詳細については、「バージョニング」をご参照ください。

    • 無効: バケットに対してバージョン管理を有効にしない場合、バケット内で上書きまたは削除されたオブジェクトを復元することはできません。

    暗号化の方法

    バケット内のオブジェクトの暗号化に使用される暗号化方式です。

    • なし: サーバー側の暗号化は無効になっています。

    • OSS で管理: OSS によって管理されるキーは、バケット内のオブジェクトを暗号化するために使用されます。 OSS は各オブジェクトを異なるキーで暗号化します。 OSS はまた、定期的にローテーションされるマスターキーを使用して暗号キーを暗号化します。

    • KMS: Key Management Service (KMS) に保存されているデフォルトのカスタマーマスターキー (CMK)、または特定の CMK を使用して、データを暗号化および復号します。

      KMS 管理キーを使用するには、KMS をアクティブ化する必要があります。 詳細については、「専用の KMS インスタンスを購入する」をご参照ください。

    • 暗号化アルゴリズム: AES-256 のみがサポートされています。

    • CMK: 暗号化の方法KMS に設定した場合、このパラメーターを設定できます。 次の CMK タイプのいずれかを選択できます。

      • alias/acs/oss: KMS に保存されているデフォルトの CMK は、オブジェクトの暗号化と、オブジェクトのダウンロード時の復号に使用されます。

      • CMK ID: 特定の CMK によって生成されたキーは、異なるオブジェクトを暗号化するために使用され、指定された CMK ID は暗号化されたオブジェクトのメタデータに記録されます。 オブジェクトは、復号権限が付与されているユーザーによってダウンロードされるときに復号されます。 CMK ID を指定する前に、KMS コンソールでバケットと同じリージョンに通常のキーまたは外部キーを作成する必要があります。 詳細については、「CMK を作成する」をご参照ください。

    リアルタイムログ照会

    バケットに対してリアルタイムログクエリを有効にするかどうかを指定します。過去 7 日間の OSS アクセスログを無料でリアルタイムにクエリする場合は、[リアルタイムログクエリ] をオンにします。

    詳細については、「リアルタイムログクエリ」をご参照ください。

    ログをリアルタイムでクエリしない場合は、デフォルト設定の [無効] を保持します。

    定期バックアップ

    バケットのスケジュールバックアップを有効にするかどうかを指定します。OSS データを定期的にバックアップする場合は、スケジュールバックアップをオンにします。この場合、OSS は自動的にバックアッププランを作成し、Cloud Backup は 1 日 1 回データをバックアップし、バックアップを 7 日間保持します。詳細については、「スケジュールバックアップ」をご参照ください。

    OSS データを定期的にバックアップしない場合は、デフォルト設定の [無効] のままにします。

    OSS-HDFS

    OSS-HDFS を有効にするかどうかを指定します。JindoSDK を使用して OSS にアクセスし、データレイクを構築する場合は、画面の指示に従って OSS-HDFS を有効にしてください。

    重要
    • OSS-HDFS は、有効にした後、無効にすることはできません。 OSS-HDFS を有効にする際は注意してください。

    • アーカイブバケットまたはコールドアーカイブバケットに対しては、OSS-HDFS を有効にすることはできません。

    詳細については、「OSS-HDFS を有効にする」をご参照ください。

    階層型名前空間

    階層型名前空間を有効にするかどうかを指定します。バケット内のディレクトリまたはオブジェクトの名前を変更する場合は、階層型名前空間を有効にします。

    重要
    • バケットの階層型名前空間は、バケットの作成時にのみ有効にできます。階層型名前空間は、有効にした後は無効にできません。階層型名前空間を有効にする場合は注意してください。

    • バケットに対して階層型名前空間を有効にした後、OSS の特定の機能がバケットで使用できなくなります。詳細については、「階層型名前空間を使用する」をご参照ください。

  4. OK をクリックします。

OSS SDK の使用

次のサンプルコードは、一般的なプログラミング言語の OSS SDK を使用してバケットを作成する方法の例を示しています。その他のプログラミング言語の OSS SDK を使用してバケットを作成する方法の詳細については、「概要」をご参照ください。

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;

public class Demo {

    public static void main(String[] args) throws Exception {
        // バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
        String endpoint = "yourEndpoint";
        // 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // バケットの名前を指定します。
        String bucketName = "examplebucket";
        // リソースグループの ID を指定します。リソースグループ ID を指定しない場合、バケットはデフォルトのリソースグループに属します。
        //String rsId = "rg-aek27tc****";
        // バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。
        String region = "cn-hangzhou";

        // OSSClient インスタンスを作成します。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // バケットを作成し、バケットの階層型名前空間機能を有効にします。
            CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName).withHnsStatus(HnsStatus.Enabled);
            // 次のコードは、バケットを作成するときにストレージクラス、アクセス制御リスト (ACL)、および冗長タイプを指定する方法の例を示しています。
            // この例では、バケットのストレージクラスは Standard です。
            createBucketRequest.setStorageClass(StorageClass.Standard);
            // バケットのデフォルトの冗長タイプは DataRedundancyType.LRS です。
            createBucketRequest.setDataRedundancyType(DataRedundancyType.LRS);
            // バケットの ACL を public-read に設定します。デフォルトの ACL は private です。
            createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
            // リソースグループをサポートするリージョンでバケットを作成する場合、バケットにリソースグループを設定できます。
            //createBucketRequest.setResourceGroupId(rsId);

            ossClient.createBucket(createBucketRequest);

            // バケットを作成します。
            ossClient.createBucket(createBucketRequest);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}
const OSS = require('ali-oss');

const client = new OSS({
  // バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを oss-cn-hangzhou に設定します。
  region: 'yourregion',
  // 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID と OSS_ACCESS_KEY_SECRET を構成していることを確認してください。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // バケットの名前を指定します。
  bucket: 'yourBucketName',
});

// バケットを作成します。
async function putBucket() {
  try {
    const options = {
      storageClass: 'Standard', // デフォルトでは、バケットのストレージクラスは Standard です。バケットのストレージクラスを Archive に設定するには、storageClass を Archive に設定します。
      acl: 'private', // デフォルトでは、バケットのアクセス制御リスト (ACL) は private です。バケットの ACL を public read に設定するには、acl を public-read に設定します。
      dataRedundancyType: 'LRS' // デフォルトでは、バケットの冗長タイプはローカル冗長ストレージ (LRS) です。バケットの冗長タイプをゾーン冗長ストレージ (ZRS) に設定するには、dataRedundancyType を ZRS に設定します。
    }
    // バケットの名前を指定します。
    const result = await client.putBucket('examplebucket', options);
    console.log(result);
  } catch (err) {
    console.log(err);
  }
}

putBucket();        
using Aliyun.OSS;
using Aliyun.OSS.Common;

// バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
var endpoint = "yourEndpoint";
// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// バケットの名前を指定します。
var bucketName = "examplebucket";
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。
const string region = "cn-hangzhou";

// ClientConfiguration インスタンスを作成し、要件に基づいてデフォルトパラメータを変更します。
var conf = new ClientConfiguration();

// 署名アルゴリズム V4 を使用します。
conf.SignatureVersion = SignatureVersion.V4;

// OSSClient インスタンスを作成します。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
// バケットを作成します。
try
    {
        var request = new CreateBucketRequest(bucketName);
        // バケットのアクセス制御リスト (ACL) を PublicRead に設定します。デフォルト値は private です。
        request.ACL = CannedAccessControlList.PublicRead;
        // バケットの冗長タイプをゾーン冗長ストレージ (ZRS) に設定します。
        request.DataRedundancyType = DataRedundancyType.ZRS;
        client.CreateBucket(request);
        Console.WriteLine("Create bucket succeeded");
    }
    catch (Exception ex)
    {
        Console.WriteLine("Create bucket failed. {0}", ex.Message);
    }
// バケットを作成するためのリクエストを構築します。
// バケットの名前を指定します。
CreateBucketRequest createBucketRequest=new CreateBucketRequest("examplebucket");.
// バケットのアクセス制御リスト (ACL) を指定します。
// createBucketRequest.setBucketACL(CannedAccessControlList.Private);
// バケットのストレージクラスを指定します。
// createBucketRequest.setBucketStorageClass(StorageClass.Standard);

// バケットを非同期で作成します。
OSSAsyncTask createTask = oss.asyncCreateBucket(createBucketRequest, new OSSCompletedCallback<CreateBucketRequest, CreateBucketResult>() {
    @Override
    public void onSuccess(CreateBucketRequest request, CreateBucketResult result) {
        Log.d("asyncCreateBucket", "Success");
    }
    @Override
    public void onFailure(CreateBucketRequest request, ClientException clientException, ServiceException serviceException) {
        // リクエスト例外を処理します。
        if (clientException != null) {
            // クライアント例外 (ネットワーク例外など) を処理します。
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // サービス例外を処理します。
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});
// バケットを作成するためのリクエストを構築します。
OSSCreateBucketRequest * create = [OSSCreateBucketRequest new];
// バケット名を examplebucket に設定します。
create.bucketName = @"examplebucket";
// バケットのアクセス制御リスト (ACL) を private に設定します。
create.xOssACL = @"private";
// バケットのストレージクラスを低頻度アクセス (IA) に設定します。
create.storageClass = OSSBucketStorageClassIA;

OSSTask * createTask = [client createBucket:create];

[createTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        NSLog(@"create bucket success!");
    } else {
        NSLog(@"create bucket failed, error: %@", task.error);
    }
    return nil;
}];
// タスクが完了するまで同期ブロッキングを実装します。
// [createTask waitUntilFinished];          
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* OSS へのアクセスに使用するアカウントに関する情報を初期化します。*/

    /* バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。*/
    std::string Endpoint = "yourEndpoint";

    /* バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。*/
    std::string Region = "yourRegion";

    /* バケットの名前を指定します。例: examplebucket */
    std::string BucketName = "examplebucket";

    /* ネットワークリソースなどのリソースを初期化します。*/
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。*/
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* バケットの名前、ストレージクラス、およびアクセス制御リスト (ACL) を指定します。*/
    CreateBucketRequest request(BucketName, StorageClass::IA, CannedAccessControlList::PublicReadWrite);
    /* バケットの冗長タイプをゾーン冗長ストレージ (ZRS) に設定します。*/
    //request.setDataRedundancyType(DataRedundancyType::ZRS);

    /* バケットを作成します。*/
    auto outcome = client.CreateBucket(request);

    if (!outcome.isSuccess()) {
        /* 例外を処理します。*/
        std::cout << "CreateBucket fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /* ネットワークリソースなどのリソースを解放します。*/
    ShutdownSdk();
    return 0;
}
#include "oss_api.h"
#include "aos_http_io.h"
/* バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。*/
const char *endpoint = "yourEndpoint";
/* バケットの名前を指定します。例: examplebucket */
const char *bucket_name = "examplebucket";
/* バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。*/
const char *region = "yourRegion";

void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* char* 文字列を使用して aos_string_t 型のデータを初期化します。*/
    aos_str_set(&options->config->endpoint, endpoint);
    /* 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。*/
    aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
    aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
    // 2 つの追加パラメータを指定します。
    aos_str_set(&options->config->region, region);
    options->config->signature_version = 4;
    /* CNAME を使用して OSS にアクセスするかどうかを指定します。値 0 は、CNAME が使用されていないことを示します。*/
    options->config->is_cname = 0;
    /* タイムアウト期間などのネットワークパラメータを構成します。*/
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
    /* main() で aos_http_io_initialize メソッドを呼び出して、ネットワークリソースやメモリリソースなどのグローバルリソースを初期化します。*/
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        exit(1);
    }
    /* メモリを管理するためのメモリプールを作成します。 aos_pool_t は apr_pool_t と同等です。メモリプールを作成するために使用されるコードは APR ライブラリに含まれています。*/
    aos_pool_t *pool;
    /* メモリプールを作成します。2 番目のパラメータの値は NULL です。この値は、プールが他のメモリプールを継承しないことを指定します。*/
    aos_pool_create(&pool, NULL);
    /* オプションを作成して初期化します。このパラメータには、endpoint、access_key_id、access_key_secret、is_cname、curl などのグローバル構成情報が含まれます。*/
    oss_request_options_t *oss_client_options;
    /* メモリプールのメモリリソースをオプションに割り当てます。*/
    oss_client_options = oss_request_options_create(pool);
    /* oss_client_options を初期化します。*/
    init_options(oss_client_options);
    /* パラメータを初期化します。*/
    aos_string_t bucket;
    oss_acl_e oss_acl = OSS_ACL_PRIVATE;
    aos_table_t *resp_headers = NULL;
    aos_status_t *resp_status = NULL;
    /* char* データを aos_string_t 型のバケットに割り当てます。*/
    aos_str_set(&bucket, bucket_name);
    /* バケットを作成します。*/
    resp_status = oss_create_bucket(oss_client_options, &bucket, oss_acl, &resp_headers);
    /* バケットが作成されたかどうかを確認します。*/
    if (aos_status_is_ok(resp_status)) {
        printf("create bucket succeeded\n");
    } else {
        printf("create bucket failed\n");
    }
    /* メモリプールを解放します。この操作により、リクエストに割り当てられたメモリリソースが解放されます。*/
    aos_pool_destroy(pool);
    /* 割り当てられたグローバルリソースを解放します。*/
    aos_http_io_deinitialize();
    return 0;
}
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
  # この例では、中国 (杭州) リージョンのエンドポイントを使用しています。実際のエンドポイントを指定してください。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# バケットの名前を指定します。例: examplebucket
client.create_bucket('examplebucket')
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 // バケットの名前。
)

// コマンドラインパラメータを初期化するために使用される init 関数を指定します。
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)

	// OSS クライアントを作成します。
	client := oss.NewClient(cfg)

	request := &oss.PutBucketRequest{
		Bucket: oss.Ptr(bucketName), // バケットの名前。
	}

	// バケットを作成するためのリクエストを送信します。
	result, err := client.PutBucket(context.TODO(), request)
	if err != nil {
		log.Fatalf("バケットの作成に失敗しました %v", err)
	}

	// バケット作成の結果を表示します。
	log.Printf("バケット作成結果:%#v\n", result)
}
import argparse
import alibabacloud_oss_v2 as oss

# コマンドライン引数パーサーを作成します。
parser = argparse.ArgumentParser(description="put bucket sample")
# バケットが配置されているリージョンを指定する必須のコマンドラインパラメータ --region を指定します。
parser.add_argument('--region', help='バケットが配置されているリージョン。', required=True)
# バケットの名前を指定する必須のコマンドラインパラメータ --bucket を指定します。
parser.add_argument('--bucket', help='バケットの名前。', required=True)
# 他のサービスが OSS にアクセスするために使用できるエンドポイントを指定するオプションのコマンドラインパラメータ --endpoint を指定します。
parser.add_argument('--endpoint', help='他のサービスが OSS にアクセスするために使用できるドメイン名')

def main():
    args = parser.parse_args()  # コマンドラインパラメータを解析します。

    # 認証のために環境変数からアクセス認証情報を読み込みます。
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # SDK のデフォルト構成を読み込み、認証情報プロバイダーを指定します。
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    # バケットが配置されているリージョンを指定します。
    cfg.region = args.region
    # endpoint パラメータが指定されている場合は、他のサービスが OSS にアクセスするために使用できるエンドポイントを指定します。
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # 構成を使用して OSSClient インスタンスを作成します。
    client = oss.Client(cfg)

    # バケットを作成し、そのストレージクラスを Standard に設定するリクエストを実行します。
    result = client.put_bucket(oss.PutBucketRequest(
        bucket=args.bucket,
        create_bucket_configuration=oss.CreateBucketConfiguration(
            storage_class='Standard'
        )
    ))
    # レスポンスの HTTP ステータスコードと、リクエストが成功したかどうかを確認するために使用されるリクエスト ID を出力します。
    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
    )


if __name__ == "__main__":
    main()  # スクリプトのエントリポイント。ファイルが直接実行されると、main 関数が呼び出されます。
<?php

// オブジェクトと依存ライブラリを自動的にロードします。
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// コマンドラインパラメータを指定します。
$optsdesc = [
    "region" => ['help' => 'バケットが配置されているリージョン。', 'required' => True], // region パラメータは必須です。例: oss-cn-hangzhou。
    "endpoint" => ['help' => '他のサービスが OSS にアクセスするために使用できるドメイン名。', 'required' => False], // endpoint パラメータはオプションです。
    "bucket" => ['help' => 'バケットの名前', 'required' => True], // バケットの名前は必須です。
];

// コマンドラインパラメータを解析するための長いオプションのリストを生成します。
$longopts = \array_map(function ($key) {
    return "$key:"; // 各パラメータの後に続くコロン (:) は、パラメータが必須であることを示します。
}, array_keys($optsdesc));

// コマンドラインパラメータを解析します。
$options = getopt("", $longopts);

// 必須パラメータが構成されているかどうかを確認します。
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // 必須パラメータが構成されていないことを指定します。
        exit(1);
    }
}

// コマンドラインパラメータの値を取得します。
$region = $options["region"]; // バケットが配置されているリージョン。
$bucket = $options["bucket"]; // バケットの名前。

// 環境変数から認証情報 (AccessKeyId と AccessKeySecret) をロードします。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// SDK のデフォルト構成を使用します。
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // 認証情報プロバイダーを指定します。
$cfg->setRegion($region); // リージョンを指定します。
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // エンドポイントが指定されている場合は、エンドポイントを指定します。
}

// OSSClient インスタンスを作成します。
$client = new Oss\Client($cfg);

// バケット作成を開始するためのリクエストを作成します。
$request = new Oss\Models\PutBucketRequest($bucket);

// putBucket メソッドを呼び出します。
$result = $client->putBucket($request);

// 結果を出力します。
printf(
    'status code:' . $result->statusCode . PHP_EOL . // HTTP ステータスコード。
    'request id:' . $result->requestId // リクエストの一意の ID。
);

ossutil を使用する

ossutil を使用してバケットを作成できます。詳細については、「ossutil をインストールする」をご参照ください。

次の例は、examplebucket を作成する方法を示しています。

ossutil api put-bucket --bucket examplebucket

このコマンドの詳細については、「put-bucket」をご参照ください。

関連 API 操作

上記のメソッドは基本的に RESTful API に基づいて実装されており、高度なカスタマイズが必要なビジネス要件の場合は、API を直接呼び出すことができます。API を直接呼び出すには、コードに署名計算を含める必要があります。詳細については、「PutBucket」をご参照ください。

その他

  • オブジェクト管理

    • オブジェクトのアップロード

      バケットを作成した後、オブジェクトをバケットにアップロードできます。オブジェクトをアップロードする方法の詳細については、「シンプルアップロード」をご参照ください。

    • オブジェクトのダウンロード

      オブジェクトをバケットにアップロードした後、オブジェクトをブラウザのデフォルトのダウンロードパスまたはカスタムのローカルパスにダウンロードできます。オブジェクトをダウンロードする方法の詳細については、「シンプルダウンロード」をご参照ください。

    • オブジェクトの共有

      ダウンロードまたはプレビュー用のオブジェクト URL を使用して、他のユーザーとオブジェクトを共有できます。詳細については、「オブジェクトの共有」をご参照ください。

  • アクセス制御

    セキュリティ上の理由から、OSS リソースのデフォルト ACL は非公開です。ACL が非公開のリソースには、所有者と承認されたユーザーのみがアクセスできます。OSS では、さまざまなポリシーを設定して、ユーザーに OSS リソースへのアクセスまたは使用に関する特定の権限を付与できます。詳細については、「アクセス制御」をご参照ください。