请求者付费模式是指由请求者支付读取存储空间(Bucket)内数据时产生的流量费用和请求费用,而Bucket拥有者仅支付存储费用。当您希望共享数据,但又不希望产生流量费用和请求费用时,您可以开启此功能。
设置请求者付费模式
以下代码用于设置请求者付费模式。
const OSS = require('ali-oss')
const client = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'yourregion',
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret'
});
async function setBucketRequestPayment(bucket, Payer) {
try {
// bucket填写需要设置请求者付费模式的存储空间名称。
// Payer取值为Requester或BucketOwner。
// Payer设置为Requester,表明该存储空间已开启请求者付费模式,由请求者支付读取存储空间(Bucket)内数据时产生的流量费用和请求费用。
// Payer设置为BucketOwner,表明该存储空间不开启请求者付费模式(默认状态),即请求产生的费用由数据拥有者(BucketOwner)来支付。
const result = await client.putBucketRequestPayment(bucket, Payer);
console.log(result);
} catch (e) {
console.log(e);
}
}
setBucketRequestPayment('bucketName', 'Requester')
获取请求者付费模式配置
以下代码用于获取请求者付费模式配置信息。
const OSS = require('ali-oss')
const client = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'yourregion',
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret'
});
async function getBucketRequestPayment(bucket) {
try {
// 获取存储空间请求者付费模式配置信息。
const result = await client.getBucketRequestPayment(bucket);
console.log(result.payer);
} catch (e) {
console.log(e);
}
}
getBucketRequestPayment('bucketName')
第三方付费访问Object
第三方操作Object时需在HTTP Header中携带x-oss-request-payer:requester参数,否则会报错。
以下代码以PutObject、GetObject和DeleteObject为例,用于指定第三方付费访问Object。其他用于指定第三方付费的Object读写操作接口设置方法类似。
以下代码用于设置第三方付费访问Object。
const OSS = require('ali-oss')
const bucket = 'bucket-name'
const payer = 'Requester'
const client = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'yourregion',
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// 填写存储空间名称。
bucket: bucket
});
async function put() {
await client.putBucketRequestPayment(bucket, payer)
// PutObject接口指定付费者。
await client.put('fileName', 'fileContent', {
headers: {
'x-oss-request-payer': 'requester'
}
})
}
async function get() {
await client.putBucketRequestPayment(bucket, payer)
// GetObject接口指定付费者。
await client.get('fileName', {
headers: {
'x-oss-request-payer': 'requester'
}
})
}
async function del() {
await client.putBucketRequestPayment(bucket, payer)
// DeleteObject接口指定付费者。
await client.delete('fileName', {
headers: {
'x-oss-request-payer': 'requester'
}
})
}
相关文档
- 关于请求者付费模式的完整示例代码,请参见GitHub示例。
- 关于设置请求者付费模式的API接口说明,请参见PutBucketRequestPayment。
- 关于获取请求者付费模式配置信息的API接口说明,请参见GetBucketRequestPayment。