初始化
确定Endpoint
在确认您使用SDK时配置的Endpoint时,可先阅读开发人员指南中关于BOS访问域名的部分,理解Endpoint相关的概念。百度智能云目前开放了多区域支持,请参考区域选择说明。
region与endpoint参考如下链接
https://cloud.baidu.com/doc/BOS/s/akrqd2wcx
常见示例如下:
区域 | 访问Endpoint | 协议 |
---|---|---|
BJ | bj.bcebos.com | HTTP, HTTPS |
GZ | gz.bcebos.com | HTTP, HTTPS |
SU | su.bcebos.com | HTTP, HTTPS |
Node.js端快速入门
- 初始化一个BosClient。
BosClient是与BOS服务交互的客户端,BOS JavaScript SDK的BOS操作都是通过BosClient完成的。
示例代码:
var sdk = require('@baiducloud/sdk');
var BosClient = sdk.BosClient;
var config = {
credentials: {
ak: 'ak', //您的AK
sk: 'sk' //您的SK
},
endpoint: 'https://bj.bcebos.com' //需要根据bucket所属局域进行修改
};
-
新建一个Bucket。
Bucket是BOS上的命名空间,相当于数据的容器,可以存储若干数据实体(Object)。在您上传数据前,必须先创建一个Bucket。
示例代码:
let newBucketName = <BucketName>; // 新建一个Bucket,指定Bucket名称 client.createBucket(newBucketName) .then(function() { // 创建完成,添加您自已的代码; }) .catch(function(error) { // 创建失败,添加您自己的代码,处理异常 });
-
上传Object。
Object是BOS中最基本的数据单元,您可以把Object简单的理解为文件。对于一个简单的Object的上传,BOS为您提供了四种方式:文件形式上传、数据流形式上传、二进制串上传和字符串上传。
示例代码:
function done(response) { // 上传完成 } function fail(fail) { // 上传失败 } // 以字符串形式上传 client.putObjectFromString(bucket, object, 'hello world') .then(done) .catch(fail); // 以buffer形式上传 var buffer = new Buffer('hello world'); client.putObject(bucket, object, buffer) .then(done) .catch(fail); // 以文件形式上传,仅支持Node.js环境 client.putObjectFromFile(bucket, object, <path-to-file>) .then(done) .catch(fail); // 以blob对象形式上传,仅支持浏览器环境 client.putObjectFromBlob(bucket, object, <blob对象>) .then(done) .catch(fail);
-
查看Bucket中的Object
您可以参考如下代码来查看Bucket中的Object列表:
client.listObjects(<bucketName>) .then(function (response) { var contents = response.body.contents; for (var i = 0, l = contents.length; i < l; i++) { console.log(contents[i].key); } }) .catch(function (error) { // 查询失败 });
新建BosClient
BosClient是BOS服务的JavaScript客户端,为开发者与BOS服务进行交互提供了一系列的方法。在使用SDK发起对BOS的请求前,您需要初始化一个BosClient实例,并对它进行一些必要设置。
- 浏览器端:
let BosClient = baidubce.sdk.BosClient
- Node.js端:
import {BosClient} from '@baiducloud/sdk'
通过AK/SK方式访问BOS
- 确定EndPoint。EndPoint是指BOS服务在各个区域的域名地址,默认域名为北京:
http://bj.bcebos.com
。 - 传入您的AK/SK。
- 将配置好的config传入BosClient。
示例代码
用户可以参考如下代码新建一个BosClient:
let config = {
endpoint: 'https://bj.bcebos.com',
credentials: {
ak: <AccessKeyID>, //您的AK
sk: <SecretAccessKey> //您的SK
}
}
let client = new BosClient(config);
注意:
EndPoint
参数即BOS访问域名,只能用指定的包含区域的域名来进行定义,不指定时默认为北京区域http://bj.bcebos.com
。BOS访问域名支持HTTP和HTTPS两种调用方式,为了提升数据的安全性,建议使用https://bj.bcebos.com
。百度智能云目前开放了多区域支持,请参考区域选择说明。
通过sts方式访问BOS
BOS可以通过STS机制实现第三方的临时授权访问。STS(Security Token Service)是百度智能云提供的临时授权服务,详情可参见百度智能云STS使用介绍。通过STS,您可以为第三方用户颁发一个自定义时效和权限的访问凭证。第三方用户可以使用该访问凭证直接调用百度智能云的API或SDK访问百度智能云资源。
通过sts方式访问BOS,用户先通过sts-client申请一套AK、SK和token,然后将该套参数配置到BosClient中,用户可以参考如下代码新建一个BosClient:
- Node.js端:
const {BosClient} = require('@baiducloud/sdk');
var bosConfig = {
credentials: {
ak: '{accessKeyId}', // STS服务器下发的临时ak
sk: '{secretAccessKey}' // STS服务器下发的临时sk
},
sessionToken: '{sessionToken}', // STS服务器下发的sessionToken
endpoint: 'http://bj.bcebos.com' //需要根据bucket所属局域进行修改
};
var client = new BosClient(bosConfig);
- 浏览器端:
var bosConfig = {
credentials: {
ak: '{accessKeyId}', // STS服务器下发的临时ak
sk: '{secretAccessKey}' // STS服务器下发的临时sk
},
sessionToken: '{sessionToken}', // STS服务器下发的sessionToken
endpoint: 'http://bj.bcebos.com'
};
var client = new baidubce.sdk.BosClient(bosConfig);
配置自定义域名访问BOS
使用自定义域名
如果希望使用自定义域名作为访问BOS的endpoint,在控制台将自定义域名和BOS某个bucket绑定之后,配置endpoint为自定义域名并打开cname_enabled开关,例如cdn-test.cdn.bcebos.com,配置代码如下:
var sdk = require('@baiducloud/sdk');
var BosClient = sdk.BosClient;
var config = {
credentials: {
ak: 'ak', //您的AK
sk: 'sk' //您的SK
},
endpoint: 'http://cdn-test.cdn.bcebos.com', // 自定义域名
cname_enabled: true // 使用自定义域名标示
};