Object Storage Service (OSS) のバケットに対してpay-by-requesterが有効になっている場合、バケット所有者ではなく、要求者にリクエストとトラフィック料金が請求されます。 バケット所有者には、ストレージ料金のみが請求されます。 バケットのpay-by-requesterを有効にして、バケットへのアクセスによって発生したリクエストとトラフィック料金を支払うことなく、バケット内のデータを共有できます。
pay-by-requesterの有効化
次のコードは、バケットのpay-by-requesterを有効にする方法の例を示しています。
const OSS = require('ali-OSS ')
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを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
});
async関数setBucketRequestPayment(bucket, Payer) {
try {
// pay-by-requesterを有効にするバケットの名前を指定します。
// 支払人をリクエスターまたはBucketOwnerに設定します。
// PayerがRequesterに設定されている場合、pay-by-requesterはバケットに対して有効になります。 要求者は、要求者がバケット内のデータを読み取るときに生成されるトラフィックおよび要求料金を課金される。
// 支払人がBucketOwnerに設定されている場合、pay-by-requesterはバケットに対して無効になります。 これは、バケットのデフォルト設定です。 この場合、バケット所有者は生成されたリクエスト料金を請求されます。
const result = await client.putBucketRequestPayment(bucket, Payer);
console.log (結果);
} catch (e) {
console.log(e);
}
}
setBucketRequestPayment('bucketName', 'Requester')
pay-by-requester設定の照会
次のコードは、バケットのpay-by-requester設定を照会する方法の例を示しています。
const OSS = require('ali-OSS ')
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを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
});
async関数getBucketRequestPayment(bucket) {
try {
// バケットのpay-by-requester設定を照会します。
const result = await client.getBucketRequestPayment(bucket);
console.log(result.payer);
} catch (e) {
console.log(e);
}
}
getBucketRequestPayment('bucketName')
サードパーティがオブジェクトにアクセスするときに課金されることを指定します
バケット内のオブジェクトへのアクセスに対してサードパーティが課金されるように指定した場合、リクエスト元はHTTPリクエストにx-oss-request-payer:requesterヘッダーを含めて、オブジェクトに対する操作を実行する必要があります。 このヘッダーが含まれていない場合は、エラーが返されます。
次のコードでは、サードパーティがPutObject、GetObject、およびDeleteObjectリクエストのオブジェクトにアクセスするときに課金されるように指定する方法の例を示します。 サードパーティが他のリクエストのオブジェクトに対して同様の方法で読み取りおよび書き込み操作を実行するときに、サードパーティが課金されるように指定できます。
次のコードでは、サードパーティがオブジェクトにアクセスするときに課金されるように指定する方法の例を示します。
const OSS = require('ali-OSS ');
const bucket = 'bucket-name';
const payer = 'Requester';
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを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、
// バケットの名前を指定します。
bucket: bucket
});
async関数main() {
await put();
await get();
待っていますdel();
}
async関数put() {
const result = await client.putBucketRequestPayment(bucket, payer);
console.log('putBucketRequestPayment:'、結果);
// サードパーティがPutObject操作を呼び出すときに支払人を指定します。
const応答=await client.put('fileName', path.normalize('D :\\ localpath\\examplefile.txt ')), {
ヘッダー:{
'x-oss-request-payer': 'requester'
}
});
console.log('put:'、応答);
}
async関数get() {
const result = await client.putBucketRequestPayment(bucket, payer);
console.log('putBucketRequestPayment:'、結果);
// サードパーティがGetObject操作を呼び出すときに支払人を指定します。
const response = await client.get('fileName', {
ヘッダー:{
'x-oss-request-payer': 'requester'
}
});
console.log('get:'、応答);
}
async関数del() {
const result = await client.putBucketRequestPayment(bucket, payer);
console.log('putBucketRequestPayment:'、結果);
// サードパーティがDeleteObject操作を呼び出すときに支払人を指定します。
const response = await client.de lete('fileName', {
ヘッダー:{
'x-oss-request-payer': 'requester'
}
});
console.log('delete:'、応答);
}
main();
参考資料
pay-by-requesterの設定に使用する完全なサンプルコードについては、GitHubをご覧ください。
pay-by-requesterを有効にするために呼び出すことができるAPI操作の詳細については、「PutBucketRequestPayment」をご参照ください。
pay-by-requester設定を照会するために呼び出すことができるAPI操作の詳細については、「GetBucketRequestPayment」をご参照ください。