存储空间(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.CannedAccessControlList;
import com.aliyun.oss.model.CreateBucketRequest;
import com.aliyun.oss.model.DataRedundancyType;
import com.aliyun.oss.model.StorageClass;
public class CreateBucket {
public static void main(String[] args) throws Exception {
// yourEndpoint填写Bucket所在地域对应的Endpoint。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量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 createBucketRequest = new CreateBucketRequest(bucketName);
// 如果创建存储空间的同时需要指定存储类型、存储空间的读写权限、数据容灾类型, 请参考如下代码。
// 此处以设置存储空间的存储类型为标准存储为例介绍。
//createBucketRequest.setStorageClass(StorageClass.Standard);
// 数据容灾类型默认为本地冗余存储,即DataRedundancyType.LRS。如果需要设置数据容灾类型为同城冗余存储,请设置为DataRedundancyType.ZRS。
//createBucketRequest.setDataRedundancyType(DataRedundancyType.ZRS);
// 设置存储空间读写权限为公共读,默认为私有。
//createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
// 在支持资源组的地域创建Bucket时,您可以为Bucket配置资源组。
//createBucketRequest.setResourceGroupId(rsId);
// 创建存储空间。
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。
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):
适合单文件90天访问<1次的冷数据。支持归档直读实时访问,也可选择先解冻再读取(解冻约1分钟),有60天最短存储周期。
解冻:将数据恢复为可访问状态,需等待一定时间。
冷归档存储(ColdArchive)
适合单文件年访问<1次的数据。读取需先解冻,耗时1~12小时,成本更低。
深度冷归档存储(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 进行分类。详见管理存储空间标签。