すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:リクエスト元支払いモード (Node.js SDK)

最終更新日:Nov 30, 2025

リクエスト元支払いモードでは、バケット内のデータへのアクセスによって発生するトラフィック料金とリクエスト料金はリクエスト元が支払い、バケット所有者はストレージ料金のみを支払います。この機能を使用すると、発生するトラフィック料金やリクエスト料金を負担することなく、データを共有できます。

リクエスト元支払いモードの設定

次のコードは、リクエスト元支払いモードを有効にする方法の例を示しています。

const OSS = require('ali-oss')

const client = new OSS({
  // region をバケットが配置されているリージョンに設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、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,
  // bucket をご使用のバケット名に設定します。
  bucket: 'yourBucketName',

});

async function setBucketRequestPayment(bucket, Payer) {
  try {
    // bucket を、リクエスト元支払いモードを設定するバケットの名前に設定します。
    // Payer の値は Requester または BucketOwner です。
    // Payer を Requester に設定すると、バケットのリクエスト元支払いモードが有効になります。 バケットからのデータ読み取り時に発生するトラフィック料金とリクエスト料金は、リクエスト元が支払います。
    // 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({
   // region をバケットが配置されているリージョンに設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、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,
  // bucket をご使用のバケット名に設定します。
  bucket: 'yourBucketName',
});

async function getBucketRequestPayment(bucket) {
  try {
    // バケットのリクエスト元支払いモード構成を取得します。
    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({
  // region をバケットが配置されているリージョンに設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、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,
  // bucket をご使用のバケット名に設定します。
  bucket: 'yourBucketName',

});

async function main() {
  await put();
  await get();
  await del();
}

async function put() {
  const result = await client.putBucketRequestPayment(bucket, payer);
  console.log('putBucketRequestPayment:', result);
  // PutObject 操作の支払いを指定します。
  const response = await client.put('fileName', path.normalize('D:\\localpath\\examplefile.txt'), {
    headers: {
      'x-oss-request-payer': 'requester'
    }
  });
  console.log('put:', response);
}

async function get() {
  const result = await client.putBucketRequestPayment(bucket, payer);
  console.log('putBucketRequestPayment:', result);
  // GetObject 操作の支払いを指定します。
  const response = await client.get('fileName', {
    headers: {
      'x-oss-request-payer': 'requester'
    }
  });
  console.log('get:', response);
}

async function del() {
  const result = await client.putBucketRequestPayment(bucket, payer);
  console.log('putBucketRequestPayment:', result);
  // DeleteObject 操作の支払いを指定します。
  const response = await client.delete('fileName', {
    headers: {
      'x-oss-request-payer': 'requester'
    }
  });
  console.log('delete:', response);
}

main();

関連ドキュメント

  • リクエスト元支払いモードの完全なサンプルコードについては、「GitHub の例」をご参照ください。

  • リクエスト元支払いモードを設定する API 操作の詳細については、「PutBucketRequestPayment」をご参照ください。

  • リクエスト元支払いモードの構成を取得する API 操作の詳細については、「GetBucketRequestPayment」をご参照ください。