全部產品
Search
文件中心

Object Storage Service:建立儲存空間

更新時間:Sep 03, 2025

儲存空間(Bucket)是OSS中存放檔案的基本容器,容量無限,可以彈性擴充。

基礎配置

Bucket 的核心基礎資訊,建立後不可更改

  • Bucket名稱:全域唯一。建議按照部門或業務標識命名,便於識別和管理。例如:hr-documents

  • 地區:決定資料的實體儲存體位置,建議按以下優先順序選擇:

    1. 合規優先:首先選擇符合法規要求的地區。

    2. 效能優先:選擇距離目標使用者最近的地區,降低網路延遲;若資料通過阿里雲產品(例如 ECS)訪問,建議選擇相同地區,可免內網流量費用,同時減少跨地區傳輸延遲。

    3. 功能支援:參考新功能發布記錄確認地區是否支援所需功能。

    4. 成本平衡:在滿足以上條件的前提下,選擇資費。更優惠的地區。

僅設定Bucket 名稱和地區建立時,其餘配置將自動使用預設值:標準儲存、同城冗餘、私人許可權。阻止公用訪問在控制台建立時開啟,ossutil/SDK/API 建立時關閉。其他可選配置均為關閉狀態。

控制台

  1. OSS管理主控台Bucket 列表頁面,單擊建立 Bucket

  2. 建立 Bucket 面板,設定Bucket名稱地區,單擊底部完成建立

ossutil

您可以使用命令列工具ossutil來建立儲存空間,ossutil的安裝請參見安裝ossutil

  1. 配置所需的Bucket地區。

    ossutil config
  2. 根據提示斷行符號跳過前置配置項,直到出現地區配置:

    Please enter Region [cn-hangzhou]:

    輸入目標地區ID(如cn-beijing)後斷行符號,或直接斷行符號使用預設的cn-hangzhou。地區ID可在OSS地區列表中尋找。

  3. 建立儲存空間examplebucket。

    ossutil mb oss://examplebucket
  4. 驗證Bucket是否建立成功。

    ossutil ls

如果您想瞭解該命令的更多資訊,請參見mb(建立儲存空間)

SDK

以下僅列舉常見SDK的建立儲存空間程式碼範例。關於其他SDK的建立儲存空間程式碼範例,請參見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 {
        // yourEndpoint填寫Bucket所在地區對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
        String endpoint = "yourEndpoint";
        // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // 填寫Bucket名稱。
        String bucketName = "examplebucket";
        // 填寫資源群組ID。如果不填寫資源群組ID,則建立的Bucket屬於預設資源群組。
        //String rsId = "rg-aek27tc****";
        // 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為cn-hangzhou。
        String region = "cn-hangzhou";
        
        // 建立OSSClient執行個體。
        // 當OSSClient執行個體不再使用時,調用shutdown方法以釋放資源。
        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);
            // 如果建立儲存空間的同時需要指定儲存類型、儲存空間的讀寫權限、資料容災類型,請參考如下代碼。
            // 此處以設定儲存空間的儲存類型為標準儲存為例介紹。
            createBucketRequest.setStorageClass(StorageClass.Standard);
            // 資料容災類型預設為本地備援儲存體,即DataRedundancyType.LRS。
            createBucketRequest.setDataRedundancyType(DataRedundancyType.LRS);
            // 設定儲存空間讀寫權限為公用讀取,預設為私人。
            createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
            // 在支援資源群組的地區建立Bucket時,您可以為Bucket配置資源群組。
            //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();
            }
        }
    }
}
import argparse
import alibabacloud_oss_v2 as oss

# 建立命令列參數解析器
parser = argparse.ArgumentParser(description="put bucket sample")
# 添加命令列參數 --region,表示儲存空間所在的地區,必需參數
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# 添加命令列參數 --bucket,表示儲存空間的名稱,必需參數
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
# 添加命令列參數 --endpoint,表示其他服務可用來訪問OSS的網域名稱,非必需參數
parser.add_argument('--endpoint', help='The domain names that other services can use to access 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參數,則設定配置中的endpoint
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # 使用配置好的資訊建立OSS用戶端
    client = oss.Client(cfg)

    # 執行建立儲存空間的請求,儲存類型為標準儲存
    result = client.put_bucket(oss.PutBucketRequest(
        bucket=args.bucket,
        create_bucket_configuration=oss.CreateBucketConfiguration(
            storage_class='Standard'
        )
    ))
    # 輸出請求的結果狀態代碼和請求ID,用於檢查請求是否成功
    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
    )


if __name__ == "__main__":
    main()  # 指令碼入口,當檔案被直接運行時調用main函數
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", "", "The region in which the bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}

func main() {
	// 解析命令列參數
	flag.Parse()

	// 檢查bucket名稱是否為空白
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// 檢查region是否為空白
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// 載入預設配置並設定憑證提供者和地區
	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("failed to put bucket %v", err)
	}

	// 列印建立儲存空間的結果
	log.Printf("put bucket result:%#v\n", result)
}
<?php

// 引入自動負載檔案,載入依賴庫
require_once __DIR__ . '/../vendor/autoload.php'; 

use AlibabaCloud\Oss\V2 as Oss;

// 定義命令列參數描述
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // 地區是必填項,儲存空間所在的地區,例如 oss-cn-hangzhou。
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // 終端節點是可選項,其他服務可以用來訪問OSS的網域名稱。
    "bucket" => ['help' => 'The name of the bucket', '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"]); // 如果提供了終端節點,則設定終端節點
}

// 建立OSS用戶端執行個體
$client = new Oss\Client($cfg); //  建立OSS用戶端執行個體

// 建立儲存空間請求對象
$request = new Oss\Models\PutBucketRequest($bucket); //  建立儲存空間請求對象

// 調用putBucket方法建立儲存空間
$result = $client->putBucket($request); // 調用putBucket方法建立儲存空間

// 列印返回結果
printf(
    'status code:' . $result->statusCode . PHP_EOL . //  HTTP響應狀態代碼
    'request id:' . $result->requestId // Request ID. 請求的唯一標識
);
using Aliyun.OSS;
using Aliyun.OSS.Common;

// yourEndpoint填寫Bucket所在地區對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為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");
// 填寫Bucket名稱。
var bucketName = "examplebucket";
// 填寫Bucket所在地區對應的Region。以華東1(杭州)為例,Region填寫為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,預設為私人許可權。
        request.ACL = CannedAccessControlList.PublicRead;
        //設定資料容災類型為同城冗餘儲存。
        request.DataRedundancyType = DataRedundancyType.ZRS;
        client.CreateBucket(request);
        Console.WriteLine("Create bucket succeeded");
    }
    catch (Exception ex)
    {
        Console.WriteLine("Create bucket failed. {0}", ex.Message);
    }
const OSS = require('ali-oss');

const client = new OSS({
  // yourregion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為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,
  // yourBucketName填寫Bucket名稱。
  bucket: 'yourBucketName',
});

// 建立儲存空間。
async function putBucket() {
  try {
    const options = {
      storageClass: 'Standard', // 儲存空間的預設儲存類型為標準儲存,即Standard。如果需要設定儲存空間的儲存類型為Archive Storage,請替換為Archive。
      acl: 'private', // 儲存空間的預設讀寫權限為私人,即private。如果需要設定儲存空間的讀寫權限為公用讀取,請替換為public-read。
      dataRedundancyType: 'LRS' // 儲存空間的預設資料容災類型為本地備援儲存體,即LRS。如果需要設定資料容災類型為同城冗餘儲存,請替換為ZRS。
    }
    // 填寫Bucket名稱。
    const result = await client.putBucket('examplebucket', options);
    console.log(result);
  } catch (err) {
    console.log(err);
  }
}

putBucket();        
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
  # Endpoint以華東1(杭州)為例,其它Region請按實際情況填寫。
  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']
)
# 填寫Bucket名稱,例如examplebucket。
client.create_bucket('examplebucket')
// 構建建立Bucket的請求。
// 填寫Bucket名稱。
CreateBucketRequest createBucketRequest = new CreateBucketRequest("examplebucket");。
// 設定Bucket的讀寫權限ACL。
// createBucketRequest.setBucketACL(CannedAccessControlList.Private);
// 指定Bucket的儲存類型。
// 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());
        }
    }
});
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /*初始化OSS帳號資訊。*/
    
    /*yourEndpoint填寫Bucket所在地區對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。*/
    std::string Endpoint = "yourEndpoint";
    
    / *yourRegion填寫Bucket所在地區對應的Region。以華東1(杭州)為例,Region填寫為cn - hangzhou。 * /
    std::string Region = "yourRegion";

    /*填寫Bucket名稱,例如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);

    /*指定新建立bucket的名稱、儲存類型和ACL。*/
    CreateBucketRequest request(BucketName, StorageClass::IA, CannedAccessControlList::PublicReadWrite);
    /*設定資料容災類型為同城冗餘儲存。*/
    //request.setDataRedundancyType(DataRedundancyType::ZRS);

    /*建立Bucket。*/
    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;
}
// 構建建立Bucket的請求。
OSSCreateBucketRequest * create = [OSSCreateBucketRequest new];
// 設定儲存空間名稱為examplebucket。
create.bucketName = @"examplebucket";
// 設定存取權限為私人。
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 "oss_api.h"
#include "aos_http_io.h"
/* yourEndpoint填寫Bucket所在地區對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。*/
const char *endpoint = "yourEndpoint";
/* 填寫Bucket名稱,例如examplebucket。*/
const char *bucket_name = "examplebucket";
/* yourRegion填寫Bucket所在地區對應的Region。以華東1(杭州)為例,Region填寫為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"));
    //需要額外配置以下兩個參數
    aos_str_set(&options->config->region, region);
    options->config->signature_version = 4;
    /* 是否使用CNAME網域名稱訪問OSS服務。0表示不使用。 */
    options->config->is_cname = 0;
    /* 設定網路相關參數,比如逾時時間等。*/
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
    /* 在程式入口調用aos_http_io_initialize方法來初始化網路、記憶體等全域資源。 */
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        exit(1);
    }
    /* 用於記憶體管理的記憶體池(pool),等價於apr_pool_t。其實現代碼在apr庫中。*/
    aos_pool_t *pool;
    /* 重新建立一個記憶體池,第二個參數是NULL,表示沒有繼承其它記憶體池。*/
    aos_pool_create(&pool, NULL);
    /* 建立並初始化options,該參數包括endpoint、access_key_id、acces_key_secret、is_cname、 curl等全域配置資訊。*/
    oss_request_options_t *oss_client_options;
    /* 在記憶體池中分配記憶體給options。*/
    oss_client_options = oss_request_options_create(pool);
    /* 初始化Client的選項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;
}

API

調用 PutBucket 建立Bucket時,通過 Host 要求標頭指定名稱和地區。

儲存類型

OSS 提供標準低頻歸檔冷歸檔深度冷歸檔五種儲存類型,預設為標準儲存。這些類型成本遞減但訪問限制遞增,用於適配不同訪問頻率的資料。

Object預設繼承Bucket的儲存類型。雖然Bucket儲存類型建立後無法修改,但內部Object可通過生命週期自動轉換儲存類型以最佳化成本。

  • 標準儲存(Standard)

    適合單檔案月訪問>1次的活躍資料,支援即時訪問。不確定資料訪問頻率時的首選,後續可通過生命週期規則自動降級到更低成本的儲存類型。

  • 低頻訪問儲存(IA):

    適合單檔案月訪問≤1次的溫資料,如備份檔案、動作記錄。支援即時訪問但有30天最短儲存周期限制,提前刪除仍按30天計費。不適合臨時或測試資料。

  • Archive Storage(Archive):

    適合單檔案90天訪問<1次的冷資料。支援歸檔直讀即時訪問,也可選擇先解凍再讀取(解凍約1分鐘),有60天最短儲存周期。

    解凍:將資料恢複為可訪問狀態,需等待一定時間。
  • 冷Archive Storage(ColdArchive)

    適合單檔案年訪問<1次的資料。讀取需先解凍,耗時1~12小時,成本更低。

  • 深度冷Archive Storage(DeepColdArchive)

    最低成本選項,適合單檔案年訪問<1次的資料。解凍時間12/48小時,不建議直接作為Bucket類型建立,更適合通過生命週期規則將資料自動轉換至此類型。

控制台

建立 Bucket 時,根據您的需求配置Bucket儲存類型資訊。

ossutil

以下命令用於建立儲存類型為低頻(IA)的儲存空間examplebucket

ossutil mb oss://examplebucket --storage-class IA

如果您想瞭解該命令的更多資訊,請參見mb(建立儲存空間)

OSS SDK

以下僅列舉常見SDK的建立儲存空間程式碼範例。關於其他SDK的建立儲存空間程式碼範例,請參見SDK簡介

Java

要設定儲存類型,請按如下方式配置 CreateBucketRequest 對象。

// 準備一個包含儲存類型的請求對象
CreateBucketRequest createBucketRequest = new CreateBucketRequest("your-bucket-name");
createBucketRequest.setStorageClass(StorageClass.IA); // 在此處指定儲存類型

// 可選項: StorageClass.Standard, StorageClass.IA, StorageClass.Archive, 等

完整樣本請參考:建立儲存空間(Java SDK)

Python

在調用client.put_bucket方法時,通過create_bucket_configuration 參數指定儲存類型。

# 準備一個包含儲存類型的請求對象
req = oss.PutBucketRequest(
    bucket="your-bucket-name",
    create_bucket_configuration=oss.CreateBucketConfiguration(
        storage_class='IA'  # 在此處指定儲存類型
    )
)

# 可選項: 'Standard', 'IA', 'Archive', 'ColdArchive', 'DeepColdArchive'

完整樣本請參考:建立儲存空間(Python SDK V2)

Go

要設定儲存類型,請在建立 PutBucketRequest 時配置 CreateBucketConfiguration 欄位。

request := &oss.PutBucketRequest{
    Bucket: oss.Ptr("your-bucket-name"),
    CreateBucketConfiguration: &oss.CreateBucketConfiguration{
        StorageClass: oss.StorageClassIA, // 在此處指定儲存類型
    },
}

// 可選項: oss.StorageClassStandard, oss.StorageClassIA, oss.StorageClassArchive 等

完整樣本請參考:建立儲存空間(Go SDK V2)

PHP

要設定儲存類型,請在建立 PutBucketRequest 對象時,通過建構函式傳入一個CreateBucketConfiguration對象。

// 準備一個包含儲存類型等配置的請求對象
$request = new Oss\Models\PutBucketRequest(
    "your-bucket-name",
    null, // acl
    null, // resourceGroupId
    new Oss\Models\CreateBucketConfiguration(
        'IA',             // 在此處指定儲存類型
    )
);

/* 
 * 可選儲存類型: 'Standard', 'IA', 'Archive', 'ColdArchive', 'DeepColdArchive'
*/

完整樣本請參考:建立儲存空間(PHP SDK V2)

C#

要設定儲存類型,請建立一個CreateBucketRequest對象並按如下方式配置其屬性。

// 準備一個包含儲存類型配置的 request 對象
var request = new CreateBucketRequest("your-bucket-name");
request.StorageClass = StorageClass.IA;             // 在此處指定儲存類型

// 可選儲存類型: StorageClass.Standard, StorageClass.IA, StorageClass.Archive, 等

完整樣本請參考:建立儲存空間

Node.js

要設定儲存類型,請建立一個options對象並將其傳遞給 putBucket 方法。

// 準備一個包含儲存類型配置的 options 對象
const options = {
  storageClass: 'IA',              // 在此處指定儲存類型
};

// 可選儲存類型: 'Standard', 'IA', 'Archive', 'ColdArchive', 'DeepColdArchive'

完整樣本請參考:建立儲存空間

Android

要設定儲存類型或存取權限,請建立一個CreateBucketRequest對象並按如下方式配置。

// 準備一個包含儲存類型等配置的 request 對象
CreateBucketRequest createBucketRequest = new CreateBucketRequest("your-bucket-name");
createBucketRequest.setBucketStorageClass(StorageClass.IA);         // 在此處指定儲存類型

// 可選儲存類型: StorageClass.Standard, StorageClass.IA, StorageClass.Archive, 等

完整樣本請參考:建立儲存空間

iOS

要設定儲存類型,請建立一個OSSCreateBucketRequest對象並按如下方式配置其屬性。

// 準備一個包含儲存類型等配置的 request 對象
OSSCreateBucketRequest *create = [OSSCreateBucketRequest new];
create.bucketName = @"your-bucket-name";
create.storageClass = OSSBucketStorageClassIA;     // 在此處指定儲存類型

// 可選儲存類型: OSSBucketStorageClassStandard, OSSBucketStorageClassIA, 等

完整樣本請參考:建立儲存空間

API

調用 PutBucket 時,通過 StorageClass 請求元素指定 Bucket 的儲存類型。

儲存冗餘類型

決定資料的容災能力,預設為同城冗餘儲存。本地備援儲存體可升級為同城冗餘,但不支援反向轉換。

  • 同城冗餘儲存(ZRS)- 生產環境推薦

    將資料存放區在同一地區的多個可用性區域(AZ),能夠在整個可用性區域發生故障時保障業務的持續訪問,具備更高的資料持久性和服務可用性。

  • 本地備援儲存體(LRS)- 非核心或測試資料

    將資料冗餘儲存在單個可用性區域內,成本更低。可抵禦硬體故障,但無法在可用性區域故障時保障資料訪問。

控制台

建立 Bucket 時,您可以在 Bucket 基本資料下的儲存冗餘類型選擇 Bucket 的資料容災類型。

使用ossutil

以下命令用於建立儲存冗餘類型為本地冗餘(LRS)的儲存空間examplebucket

ossutil mb oss://examplebucket --redundancy-type LRS

如果您想瞭解該命令的更多資訊,請參見mb(建立儲存空間)

使用OSS SDK

Java

要設定儲存冗餘類型,請按如下方式配置 CreateBucketRequest 對象。

// 準備一個包含儲存冗餘類型的請求對象
CreateBucketRequest createBucketRequest = new CreateBucketRequest("your-bucket-name");
createBucketRequest.setDataRedundancyType(DataRedundancyType.ZRS); // 在此處指定儲存冗餘類型

// 可選項: DataRedundancyType.ZRS, DataRedundancyType.LRS

完整樣本請參考:建立儲存空間(Java SDK)

Python

在調用client.put_bucket方法時,通過create_bucket_configuration 參數指定儲存冗餘類型。

# 準備一個包含儲存冗餘類型的請求對象
req = oss.PutBucketRequest(
    bucket="your-bucket-name",
    create_bucket_configuration=oss.CreateBucketConfiguration(
        data_redundancy_type='ZRS'  # 在此處指定儲存冗餘類型
    )
)

# 可選項: 'ZRS', 'LRS'

完整樣本請參考:建立儲存空間(Python SDK V2)

Go

要設定儲存冗餘類型,請在建立 PutBucketRequest 時配置 CreateBucketConfiguration 欄位。

request := &oss.PutBucketRequest{
    Bucket: oss.Ptr("your-bucket-name"),
    CreateBucketConfiguration: &oss.CreateBucketConfiguration{
        DataRedundancyType: oss.DataRedundancyZRS, // 在此處指定儲存冗餘類型
    },
}

// 可選項: oss.DataRedundancyZRS, oss.DataRedundancyLRS

完整樣本請參考:建立儲存空間(Go SDK V2)

PHP

要設定儲存冗餘類型,請在建立 PutBucketRequest 對象時,通過建構函式傳入一個CreateBucketConfiguration對象。

// 準備一個包含儲存冗餘類型等配置的請求對象
$request = new Oss\Models\PutBucketRequest(
    "your-bucket-name",
    null, // acl
    null, // resourceGroupId
    new Oss\Models\CreateBucketConfiguration(
        null,             // 在此處指定儲存冗餘類型
        'ZRS'
    )
);

/* 
 * 可選儲存冗餘類型: 'ZRS', 'LRS'
*/

完整樣本請參考:建立儲存空間(PHP SDK V2)

C#

要設定儲存冗餘類型,請建立一個CreateBucketRequest對象並按如下方式配置其屬性。

// 準備一個包含儲存冗餘類型配置的 request 對象
var request = new CreateBucketRequest("your-bucket-name");
request.DataRedundancyType = DataRedundancyType.ZRS;        // 在此處指定儲存冗餘類型

// 可選儲存冗餘類型: DataRedundancyType.ZRS, DataRedundancyType.LRS

完整樣本請參考:建立儲存空間

Node.js

要設定儲存冗餘類型,請建立一個options對象並將其傳遞給 putBucket 方法。

// 準備一個包含儲存冗餘類型配置的 options 對象
const options = {
  dataRedundancyType: 'LRS',    // 在此處指定儲存冗餘類型
};

// 可選儲存冗餘類型: 'ZRS', 'LRS'

完整樣本請參考:建立儲存空間

API

調整 PutBucket 時,通過請求元素 DataRedundancyType 指定Bucket的儲存冗餘類型。

阻止公用訪問

OSS的全域安全性原則,用於防止意外的公開授權。開啟後只能建立私人許可權的Bucket,無法為Bucket設定公用讀取、公用讀寫ACL、或公用訪問語義的Bucket Policy。OSS控制台預設開啟阻止公用訪問。如果業務有公用訪問需求,可在Bucket建立後手動關閉阻止公用訪問,但出於安全考慮不建議關閉。

北京時間2025年10月13日10:00:00起,OSS逐步調整所有地區通過API、SDK、ossutil建立Bucket時預設開啟阻止公用訪問。各個地區的生效變更時間,請參見公告說明

存取權限

決定誰能訪問 Bucket 內的資料,預設私人許可權,建立後可隨時修改。Object預設繼承Bucket存取權限,支援單獨設定許可權

  • 私人(private)- 強烈推薦

    預設且最安全的設定,僅限Bucket所有者或通過 RAM策略、Bucket策略授權的使用者訪問。建議始終保持此設定,如需授權其他使用者訪問,請參見許可權與存取控制

  • 公用讀取(public-read)- 謹慎使用

    允許互連網使用者直接下載檔案,可能導致資料外泄或費用激增。

  • 公用讀寫(public-read-write)- 強烈不推薦

    允許任意使用者訪問和修改檔案,風險極高,僅限公用資源倉庫等特殊情境配置,常規情境嚴禁使用。

使用OSS控制台

出於安全考慮,OSS 控制台預設開啟阻止公用訪問,僅支援建立私人許可權的Bucket。

如需改為 公用讀取公用讀寫,請按以下步驟操作:

  1. 單擊目標Bucket名稱進入該Bucket。

  2. 在左側導覽列選擇 許可權控制 > 阻止公用訪問,關閉該策略。

  3. 切換至 讀寫權限 頁簽,單擊 設定

  4. 按引導修改 Bucket 的讀寫權限為公用讀取公用讀寫

使用ossutil

建立儲存空間examplebucket,指定存取權限(ACL)為私人(private)。

ossutil mb oss://examplebucket --acl=private

如果您想瞭解該命令的更多資訊,請參見mb(建立儲存空間)

使用OSS SDK

Java

要設定存取權限,請按如下方式配置 CreateBucketRequest 對象。

// 準備一個包含存取權限的請求對象
CreateBucketRequest createBucketRequest = new CreateBucketRequest("your-bucket-name");
createBucketRequest.setCannedACL(CannedAccessControlList.private); // 在此處指定儲存空間存取權限

// 可選項: CannedAccessControlList.private, CannedAccessControlList.PublicRead,CannedAccessControlList.PublicReadWrite

完整樣本請參考:建立儲存空間(Java SDK)

Python

在調用client.put_bucket方法時,通過create_bucket_configuration 參數指定存取權限。

# 準備一個包含存取權限的請求對象
req = oss.PutBucketRequest(
    bucket="your-bucket-name",
    create_bucket_configuration=oss.CreateBucketConfiguration(
        access_control_policy='pricate'  # 在此處指定存取權限
    )
)

# 可選項: 'pricate', 'public-read','public-read-write'

完整樣本請參考:建立儲存空間(Python SDK V2)

Go

要設定存取權限,請在建立 PutBucketRequest 時配置Acl欄位。

// 準備一個包含存取權限等配置的 request 對象
request := &oss.PutBucketRequest{
    Bucket: oss.Ptr("your-bucket-name"),
    Acl:    oss.BucketACLPrivate, // 在此處指定存取權限
    CreateBucketConfiguration: &oss.CreateBucketConfiguration{
    },
}

// 可選存取權限: oss.BucketACLPrivate, oss.BucketACLPublicRead, oss.BucketACLPublicReadWrite

完整樣本請參考:建立儲存空間(Go SDK V2)

PHP

要設定存取權限,請在建立 PutBucketRequest 時配置Acl欄位。

// 準備一個包含存取權限等配置的請求對象
$request = new Oss\Models\PutBucketRequest(
    "your-bucket-name",
    'private', // 在此處指定存取權限 (第二個參數)
    null,      // resourceGroupId
    new Oss\Models\CreateBucketConfiguration(
        'IA',      // 在此處指定儲存類型
        'ZRS'      // 在此處指定冗餘類型
    )
);

/* 
 * 可選存取權限: 'private', 'public-read', 'public-read-write'
*/

完整樣本請參考:建立儲存空間(PHP SDK V2)

C#

要設定存取權限,請建立一個CreateBucketRequest對象並按如下方式配置其屬性。

// 準備一個包含存取權限配置的 request 對象
var request = new CreateBucketRequest("your-bucket-name");
request.ACL = CannedAccessControlList.private;       // 在此處指定存取權限

// 可選存取權限: CannedAccessControlList.private, CannedAccessControlList.PublicRead,CannedAccessControlList.PublicReadWrite

完整樣本請參考:建立儲存空間

Node.js

要設定存取權限,請建立一個options對象並將其傳遞給 putBucket 方法。

// 準備一個包含存取權限的 options 對象
const options = {
  acl: 'private',     // 在此處指定存取權限
};

// 可選存取權限: 'private', 'public-read','public-read-write'

完整樣本請參考:建立儲存空間

Android

要設定存取權限,請建立一個CreateBucketRequest對象並按如下方式配置。

// 準備一個包含存取權限等配置的 request 對象
CreateBucketRequest createBucketRequest = new CreateBucketRequest("your-bucket-name");
createBucketRequest.setBucketACL(CannedAccessControlList.Private); // 在此處指定存取權限

// 可選存取權限: CannedAccessControlList.Private, CannedAccessControlList.PublicRead,CannedAccessControlList.PublicReadWrite

完整樣本請參考:建立儲存空間

iOS

要設定存取權限,請建立一個OSSCreateBucketRequest對象並按如下方式配置其屬性。

// 準備一個包含存取權限等配置的 request 對象
OSSCreateBucketRequest *create = [OSSCreateBucketRequest new];
create.bucketName = @"your-bucket-name";
create.xOssACL = @"private";    // 在此處指定存取權限

// 可選存取權限: private,public-read, public-read-write 等

完整樣本請參考:建立儲存空間

API

調用 PutBucket 介面時,通過 x-oss-acl 要求標頭指定 Bucket 的讀寫權限。

可選功能配置

可在建立時或建立後按需配置。

  • 版本控制

    防止資料被誤刪或覆蓋。上傳同名檔案時自動保留歷史版本而不是直接覆蓋,誤操作後可一鍵恢複。詳見版本控制

  • 服務端加密

    自動加密待用資料。OSS在資料寫入時加密、讀取時解密,建議至少啟用“OSS完全託管”。詳見伺服器端加密

  • 資源群組

    適用於多團隊協作。可按部門或專案對 Bucket 分組,實現獨立的許可權管理和成本會計。詳見使用資源群組

  • 即時日誌查詢

    開啟後可在控制台快速查詢和分析訪問日誌,瞭解誰在什麼時候訪問了哪些檔案,便於排查異常訪問或進行使用者行為分析。詳見即時日誌查詢

  • 定時備份

    支援自動化的資料備份。詳見為Bucket設定定時備份

  • HDFS 服務

    適用於資料湖情境。讓 Spark 等巨量資料架構直接分析 OSS 資料,無需資料搬遷。詳見什麼是OSS-HDFS服務

  • Bucket標籤

    便於批量管理與成本分析。通過索引值對標籤(如部門:研發)對 Bucket 進行分類。詳見管理儲存空間標籤

常見問題

建立Bucket後可否修改Bucket名稱和地區?

不能。名稱和地區在建立後均不可修改,請提前規劃。如需變更,只能通過資料移轉的方式,將資料從舊Bucket 複製到符合要求的新Bucket。

LRS 類型的儲存資源套件,是否可以抵扣 ZRS 類型 Bucket 的費用?

不可以。資源套件的類型必須與 Bucket 的儲存冗餘類型嚴格匹配。LRS 資源套件只能抵扣 LRS Bucket 的費用,ZRS 資源套件也只能抵扣 ZRS Bucket 的費用,兩者不可混用。