儲存空間(Bucket)是OSS中存放檔案的基本容器,容量無限,可以彈性擴充。
基礎配置
Bucket 的核心基礎資訊,建立後不可更改。
Bucket名稱:全域唯一。建議按照部門或業務標識命名,便於識別和管理。例如:
hr-documents。地區:決定資料的實體儲存體位置,建議按以下優先順序選擇:
僅設定Bucket 名稱和地區建立時,其餘配置將自動使用預設值:標準儲存、同城冗餘、私人許可權。阻止公用訪問在控制台建立時開啟,ossutil/SDK/API 建立時關閉。其他可選配置均為關閉狀態。
控制台
在OSS管理主控台的 Bucket 列表頁面,單擊建立 Bucket。
在建立 Bucket 面板,設定Bucket名稱和地區,單擊底部完成建立。
ossutil
您可以使用命令列工具ossutil來建立儲存空間,ossutil的安裝請參見安裝ossutil。
配置所需的Bucket地區。
ossutil config根據提示斷行符號跳過前置配置項,直到出現地區配置:
Please enter Region [cn-hangzhou]:輸入目標地區ID(如
cn-beijing)後斷行符號,或直接斷行符號使用預設的cn-hangzhou。地區ID可在OSS地區列表中尋找。建立儲存空間examplebucket。
ossutil mb oss://examplebucket驗證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(®ion, "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。
如需改為 公用讀取 或 公用讀寫,請按以下步驟操作:
單擊目標Bucket名稱進入該Bucket。
在左側導覽列選擇 許可權控制 > 阻止公用訪問,關閉該策略。
切換至 讀寫權限 頁簽,單擊 設定。
按引導修改 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 進行分類。詳見管理儲存空間標籤。