HarmonyOS创建存储空间

存储空间(Bucket)是存储对象(Object)的容器。对象都隶属于存储空间。本文介绍如何创建存储空间。

注意事项

  • 关于OSS支持的RegionEndpoint的对应关系,请参见OSS地域和访问域名

  • 北京时间2025101310:00:00起,OSS逐步调整所有地域通过API、SDK、ossutil创建Bucket时默认开启阻止公共访问。各个地域的生效变更时间,请参见公告说明。开启后,不允许创建公共访问权限,包括公共读或者公共读写ACL、以及公共访问语义的Bucket Policy。如果您的业务有公共访问需求,可在Bucket创建后关闭阻止公共访问。

权限说明

阿里云账号默认拥有全部权限。阿里云账号下的RAM用户或RAM角色默认没有任何权限,需要阿里云账号或账号管理员通过RAM PolicyBucket Policy授予操作权限。

API

Action

说明

PutBucket

oss:PutBucket

创建Bucket。

oss:PutBucketAcl

创建Bucket后,修改BucketACL,需要此操作的权限。

示例代码

以下代码用于创建存储空间。

import Client, { RequestError } from '@aliyun/oss';

// 创建OSS客户端实例
const client = new Client({
  // 请替换为STS临时访问凭证的Access Key ID
  accessKeyId: 'yourAccessKeyId',
  // 请替换为STS临时访问凭证的Access Key Secret
  accessKeySecret: 'yourAccessKeySecret',
  // 请替换为STS临时访问凭证的Security Token
  securityToken: 'yourSecurityToken',
  // 填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou
  region: 'oss-cn-hangzhou',
});

const putBucket = async () => {
  try {
    // 调用putBucket方法创建存储空间,并传入bucket名称作为参数
    const res = await client.putBucket({
      bucket: 'yourBucketName',// 请替换为你想要创建的Bucket名称
      createBucketConfig: {
        dataRedundancyType: EDataRedundancyType.ZRS, // 设置Bucket为同城冗余类型
      }
    });

    // 输出创建bucket的响应结果
    console.log(JSON.stringify(res));
  } catch (err) {
    // 捕捉请求过程中可能的错误
    if (err instanceof RequestError) {
      // 如果是RequestError,输出错误代码,消息,请求ID,状态码等信息
      console.log('code: ', err.code);
      console.log('message: ', err.message);
      console.log('requestId: ', err.requestId);
      console.log('status: ', err.status);
      console.log('ec: ', err.ec);
    } else {
      // 如果是其他未知错误,输出错误信息
      console.log('unknown error: ', err);
    }
  }
};

// 调用创建bucket的基本请求函数
putBucket();

常见使用场景

创建存储空间并指定资源组ID

创建存储空间并指定资源组ID的示例代码片段如下。

import Client, { RequestError } from '@aliyun/oss';

// 创建OSS客户端实例
const client = new Client({
  // 请替换为STS临时访问凭证的Access Key ID
  accessKeyId: 'yourAccessKeyId',
  // 请替换为STS临时访问凭证的Access Key Secret
  accessKeySecret: 'yourAccessKeySecret',
  // 请替换为STS临时访问凭证的Security Token
  securityToken: 'yourSecurityToken',
  // 填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou
  region: 'oss-cn-hangzhou',
});

const putBucketWithResourceGroupId = async () => {
  try {
    // 创建一个bucket并指定资源组ID的请求
    // 参数:
    // - bucket: bucket名称
    // - resourceGroupId: 资源组ID
    const res = await client.putBucket({
      bucket: 'yourBucketName',
      resourceGroupId: 'yourResourceGroupId',
      createBucketConfig: {
        dataRedundancyType: EDataRedundancyType.ZRS, // 设置Bucket为同城冗余类型
      }
    });
    // 输出创建bucket并指定资源组ID的响应结果
    console.log(JSON.stringify(res));
  } catch (err) {
    // 捕捉请求过程中可能的错误
    if (err instanceof RequestError) {
      // 如果是RequestError,输出错误代码,消息,请求ID,状态码等信息
      console.log('code: ', err.code);
      console.log('message: ', err.message);
      console.log('requestId: ', err.requestId);
      console.log('status: ', err.status);
      console.log('ec: ', err.ec);
    } else {
      // 如果是其他未知错误,输出错误信息
      console.log('unknown error: ', err);
    }
  }
};
// 调用创建bucket并指定资源组ID的函数
putBucketWithResourceGroupId();

创建一个bucket并指定存储类型

创建存储空间并指定存储类型的示例代码片段如下。

import Client, { RequestError, EStorageClass } from '@aliyun/oss';

// 创建OSS客户端实例
const client = new Client({
  // 请替换为STS临时访问凭证的Access Key ID
  accessKeyId: 'yourAccessKeyId',
  // 请替换为STS临时访问凭证的Access Key Secret
  accessKeySecret: 'yourAccessKeySecret',
  // 请替换为STS临时访问凭证的Security Token
  securityToken: 'yourSecurityToken',
  // 填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou
  region: 'oss-cn-hangzhou',
});

const putBucketWithStorageClass = async () => {
  try {
    // 创建一个bucket并指定存储类的请求
    // 参数:
    // - bucket: bucket名称
    // - createBucketConfig: bucket创建配置
    //   - storageClass: 存储类
    const res = await client.putBucket({
      bucket: 'yourBucketName',
      createBucketConfig: {
        storageClass: EStorageClass.ARCHIVE,
        dataRedundancyType: EDataRedundancyType.ZRS, // 设置Bucket为同城冗余类型
      }
    });
    // 输出创建bucket并指定存储类的响应结果
    console.log(JSON.stringify(res));
  } catch (err) {
    // 捕捉请求过程中可能的错误
    if (err instanceof RequestError) {
      // 如果是RequestError,输出错误代码,消息,请求ID,状态码等信息
      console.log('code: ', err.code);
      console.log('message: ', err.message);
      console.log('requestId: ', err.requestId);
      console.log('status: ', err.status);
      console.log('ec: ', err.ec);
    } else {
      // 如果是其他未知错误,输出错误信息
      console.log('unknown error: ', err);
    }
  }
};
// 调用创建bucket并指定存储类的函数
putBucketWithStorageClass();

创建存储空间并指定访问权限

创建存储空间并指定访问权限的示例代码片段如下。

import Client, { RequestError, EBucketAcl } from '@aliyun/oss';

// 创建OSS客户端实例
const client = new Client({
  // 请替换为STS临时访问凭证的Access Key ID
  accessKeyId: 'yourAccessKeyId',
  // 请替换为STS临时访问凭证的Access Key Secret
  accessKeySecret: 'yourAccessKeySecret',
  // 请替换为STS临时访问凭证的Security Token
  securityToken: 'yourSecurityToken',
  // 填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou
  region: 'oss-cn-hangzhou',
});

const putBucketWithAcl = async () => {
  try {
    // 创建一个bucket并指定访问控制列表(ACL)的请求
    // 参数:
    // - bucket: bucket名称
    // - acl: bucket的访问控制列表,可选值包括:
    //   - EBucketAcl.PRIVATE:仅所有者可读写
    //   - EBucketAcl.PUBLIC_READ:所有人可读,所有者可写
    //   - EBucketAcl.PUBLIC_READ_WRITE:所有人可读写
    const res = await client.putBucket({
      bucket: 'yourBucketName',
      acl: EBucketAcl.PRIVATE,
      createBucketConfig: {
        dataRedundancyType: EDataRedundancyType.ZRS, // 设置Bucket为同城冗余类型
      }
    });
    // 输出创建bucket并指定ACL的响应结果
    console.log(JSON.stringify(res));
  } catch (err) {
    // 捕捉请求过程中可能的错误
    if (err instanceof RequestError) {
      // 如果是RequestError,输出错误代码,消息,请求ID,状态码等信息
      console.log('code: ', err.code);
      console.log('message: ', err.message);
      console.log('requestId: ', err.requestId);
      console.log('status: ', err.status);
      console.log('ec: ', err.ec);
    } else {
      // 如果是其他未知错误,输出错误信息
      console.log('unknown error: ', err);
    }
  }
};
// 调用创建bucket并指定ACL的函数
putBucketWithAcl();

相关文档

关于创建存储空间的API接口说明,请参见PutBucket