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

Object Storage Service:リクエスト元支払いモード

最終更新日:Apr 21, 2026

大規模なデータセットを共有する場合、バケットに対してリクエスト元支払いモードを有効にできます。この機能により、データ転送料金やリクエスト料金などのデータアクセス費用が、データのリクエスト元に転嫁されます。バケット所有者は、ストレージ料金やその他の固定費用のみを負担します。バケットでリクエスト元支払いモードが有効になっている場合、匿名アクセスは無効になり、すべてのリクエストで認証が必要になります。

適用範囲

リクエスト元支払いモードは、リージョン属性を持つバケットでのみ有効にできます。

仕組み

OSS は、次のロジックに基づいてリクエストを処理します:

  • リクエストに x-oss-request-payer ヘッダーが含まれている場合、OSS はリクエスト元を認証します。認証が成功すると、リクエスト元にデータ転送とリクエストの料金が課金されます。

  • リクエストに x-oss-request-payer ヘッダーが含まれていない場合:

    • リクエスト元がバケット所有者である場合、リクエストは正常に処理され、すべての料金はバケット所有者に課金されます。

    • リクエスト元がバケット所有者でない場合、リクエストは拒否されます。

バケット所有者の設定

ステップ 1:リクエスト元支払いモードの有効化

  1. OSS コンソールにログインします。

  2. バケット をクリックし、対象のバケット名をクリックします。

  3. 左側のナビゲーションウィンドウで、バケットの設定 > リクエスト元による支払いを選択します。

  4. Pay-by-requester ページで、リクエスト元による支払い スイッチをオンにします。

  5. 表示されたダイアログボックスで OK をクリックします。

ステップ 2:リクエスト元へのアクセス権限の付与

バケットポリシーを使用して、リクエスト元にアクセス権限を付与します。この権限がないと、リクエスト元はデータにアクセスできません。

  1. [Buckets] ページで、対象のバケット名をクリックします

  2. 左側のナビゲーションウィンドウで、権限管理 > バケット承認ポリシー を選択します。

  3. バケット承認ポリシー ページの GUI で追加 タブで、新規権限 をクリックします。

  4. 新規権限 パネルでポリシーを設定します。ユーザーOther Accounts を選択し、リクエスト元の Alibaba Cloud アカウント ID または RAM ロールの ARN を入力します。フォーマットは arn:sts::{RoleOwnerUid}:assumed-role/{RoleName}/{RoleSessionName} です。

  5. OK をクリックします。

リクエスト元としてのデータアクセス

リクエスト元として、リクエスト元支払いモードが有効になっているバケットにアクセスする場合、リクエストで発生する料金を支払う意思があることを示す必要があります。

コンソール

  1. OSS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、お気に入りのパス の横にあるプラス記号 (+) をクリックします。

  3. お気に入りパスの追加 ダイアログボックスで、次の表の説明に従ってパラメーターを設定します。

    パラメーター

    説明

    追加方法

    承認済みバケットをお気に入りパスに追加するには、[他の承認済みバケットから追加] を選択します。

    リージョン

    権限が付与されたバケットが存在するリージョンを選択します。

    バケット

    権限が付与されたバケットの名前を入力します。

    リクエスト元による支払い

    理解して同意 を選択して、支払いに同意することを確認します。これにより、ファイルパスで指定されたリソースにアクセスできるようになります。バケットへのアクセスから発生する料金 (データ転送料金やリクエスト料金など) が課金されます。

SDK

以下のコードは、PutObjectGetObjectDeleteObject オペレーションを呼び出してオブジェクトにアクセスする際に、第三者に課金されるように指定する方法の例を示しています。同様の方法で、他の API オペレーションを呼び出してオブジェクトの読み取りおよび書き込み操作を行う際に、第三者に課金されるように指定できます。

第三者がオブジェクト操作を実行する場合、HTTP ヘッダーに x-oss-request-payer:requester パラメーターを含める必要があります。そうしないと、リクエストは失敗します。

Java

import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.io.ByteArrayInputStream;

public class Demo {
    public static void main(String[] args) throws Exception{
        // この例では、中国 (杭州) リージョンのエンドポイントを使用します。実際のエンドポイントを指定してください。他のリージョンのエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // バケット名を指定します。例:examplebucket。
        String bucketName = "examplebucket";
        // オブジェクトの完全なパスを指定します。例:exampledir/exampleobject.txt。完全なパスにバケット名を含めないでください。
        String objectName = "exampledir/exampleobject.txt";
        Payer payer = Payer.Requester;
        // バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。
        String region = "cn-hangzhou";
        
        // OSS Client インスタンスを作成します。
        // OSS Client を使用しなくなったら、shutdown メソッドを呼び出して関連リソースを解放します。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();
        try {
            // 第三者が PutObject オペレーションを呼び出すときに支払者を指定します。
            String content = "hello";
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new ByteArrayInputStream(content.getBytes()));
            putObjectRequest.setRequestPayer(payer);
            ossClient.putObject(putObjectRequest);

            // 第三者が GetObject オペレーションを呼び出すときに支払者を指定します。
            GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, objectName);
            getObjectRequest.setRequestPayer(payer);
            OSSObject ossObject = ossClient.getObject(getObjectRequest);
            ossObject.close();

            // 第三者が DeleteObject オペレーションを呼び出すときに支払者を指定します。
            GenericRequest genericRequest = new GenericRequest(bucketName, objectName);
            genericRequest.setRequestPayer(payer);
            ossClient.deleteObject(genericRequest);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (Throwable ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            // OSSClient インスタンスをシャットダウンします。
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Python

# -*- coding: utf-8 -*-

import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.headers import OSS_REQUEST_PAYER

# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# エンドポイントにマッピングされるリージョンの ID を指定します。例:cn-hangzhou。このパラメーターは、署名アルゴリズム V4 を使用する場合に必要です。
region = "cn-hangzhou"

# バケット名を指定します。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めないでください。例:exampledir/exampleobject.txt。
object_name = 'exampledir/exampleobject.txt'
headers = dict()
headers[OSS_REQUEST_PAYER] = "requester"

# オブジェクトをアップロードするリクエストで x-oss-request-payer ヘッダーを指定します。
result = bucket.put_object(object_name, 'test-content', headers=headers)

# オブジェクトをダウンロードするリクエストで x-oss-request-payer ヘッダーを指定します。
result = bucket.get_object(object_name, headers=headers)

# オブジェクトを削除するリクエストで x-oss-request-payer ヘッダーを指定します。
result = bucket.delete_object(object_name, headers=headers);

Go

package main

import (
	"fmt"
	"io"
	"os"
	"strings"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// OSSClient インスタンスを作成します。
	// バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。実際のエンドポイントを指定してください。
	// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。実際のリージョンを指定してください。
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// 署名アルゴリズムのバージョンを指定します。
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	payerClient, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		fmt.Println("New Error:", err)
		os.Exit(-1)
	}

	// バケット名を指定します。
	payerBucket, err := payerClient.Bucket("examplebucket")
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// リクエスト元支払いモードが有効になっている場合、外部のリクエスト元は、権限が付与されたコンテンツにアクセスするために oss.RequestPayer(oss.Requester) パラメーターを設定する必要があります。
	// リクエスト元支払いモードが有効になっていない場合、外部のリクエスト元は、権限が付与されたコンテンツにアクセスするために oss.RequestPayer(oss.Requester) パラメーターを含める必要はありません。

	// オブジェクトをアップロードします。
	// オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めないでください。例:exampledir/exampleobject.txt。
	key := "exampledir/exampleobject.txt"
	err = payerBucket.PutObject(key, strings.NewReader("objectValue"), oss.RequestPayer("requester"))
	if err != nil {
		fmt.Println("put Error:", err)
		os.Exit(-1)
	}

	// バケット内のすべてのオブジェクトをリストします。
	lor, err := payerBucket.ListObjects(oss.RequestPayer(oss.Requester))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// バケット内のオブジェクトの名前を表示します。
	for _, l := range lor.Objects {
		fmt.Println("the Key name is :", l.Key)
	}

	// オブジェクトをダウンロードします。
	body, err := payerBucket.GetObject(key, oss.RequestPayer(oss.Requester))
	if err != nil {
		fmt.Println("Get Error:", err)
		os.Exit(-1)
	}
	// オブジェクトを読み取った後、取得したストリームを閉じる必要があります。そうしないと、接続リークが発生する可能性があります。その結果、利用可能な接続がなくなり、例外が発生します。
	defer body.Close()

	// 取得したコンテンツを読み取って表示します。
	data, err := io.ReadAll(body)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	fmt.Println("data:", string(data))

	// オブジェクトを削除します。
	err = payerBucket.DeleteObject(key, oss.RequestPayer(oss.Requester))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
}

Node.js

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();

C#

using System;
using System.IO;
using System.Text;
using Aliyun.OSS;
using Aliyun.OSS.Common;


namespace Samples
{
    public class Program
    {
        public static void Main(string[] args)
        {
            // バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
            var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
            var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
            var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
            // バケット名を指定します。例:examplebucket。
            var bucketName = "examplebucket";
            var objectName = "example.txt";
            var objectContent = "More than just cloud.";
            // バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。
            const string region = "cn-hangzhou";
            // ClientConfiguration インスタンスを作成し、必要に応じてパラメーターを変更します。
            var conf = new ClientConfiguration();
            // 署名アルゴリズム V4 を使用します。
            conf.SignatureVersion = SignatureVersion.V4;
            
            // OSSClient インスタンスを作成します。
            var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);

            try
            {
                byte[] binaryData = Encoding.ASCII.GetBytes(objectContent);
                MemoryStream requestContent = new MemoryStream(binaryData);
                // 第三者が PutObject オペレーションを呼び出すときに支払者を指定します。
                var putRequest = new PutObjectRequest(bucketName, objectName, requestContent);
                putRequest.RequestPayer = RequestPayer.Requester;
                var result = client.PutObject(putRequest);

                // 第三者が GetObject オペレーションを呼び出すときに支払者を指定します。
                var getRequest = new GetObjectRequest(bucketName, objectName);
                getRequest.RequestPayer = RequestPayer.Requester;
                var getResult = client.GetObject(getRequest);

                // 第三者が DeleteObject オペレーションを呼び出すときに支払者を指定します。
                var delRequest = new DeleteObjectRequest(bucketName, objectName);
                delRequest.RequestPayer = RequestPayer.Requester;
                client.DeleteObject(delRequest);
            }
            catch (OssException ex)
            {
                Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
                    ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
        }
    }
}

PHP

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;

// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// この例では、中国 (杭州) リージョンのエンドポイントを使用します。実際のエンドポイントを指定してください。
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// バケット名を指定します。例:examplebucket。
$bucket= "examplebucket";
// オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めないでください。例:exampledir/exampleobject.txt。
$object = "exampledir/exampleobject.txt";

// バケットのリクエスト元支払いモードを有効にします。
$options = array(
  OssClient::OSS_HEADERS => array(
  OssClient::OSS_REQUEST_PAYER => 'requester',
));

try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);
    // 第三者が PutObject オペレーションを呼び出すときに支払者を指定します。
    $content = "hello";
    $ossClient->putObject($bucket, $object, $content, $options);

    // 第三者が GetObject オペレーションを呼び出すときに支払者を指定します。
    $ossClient->getObject($bucket, $object, $options);

    // 第三者が DeleteObject オペレーションを呼び出すときに支払者を指定します。
    $ossClient->deleteObject($bucket, $object, $options);
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}

print(__FUNCTION__ . ": OK" . "\n"); 

C++


#include <alibabacloud/oss/OssClient.h>
#include <fstream>
using namespace AlibabaCloud::OSS;
int main(void)
{
    /* OSS アカウント情報を初期化します。*/
    
    /* yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。*/
    std::string Endpoint = "yourEndpoint";
    
    /* yourRegion を、バケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。*/
    std::string Region = "yourRegion";
    
    /* リクエスト元がアクセスしたいバケットの名前を指定します。例:examplebucket。*/
    std::string BucketName = "examplebucket";    
    /* リクエスト元がアクセスしたいオブジェクトの完全なパスを指定します。完全なパスにバケット名を含めることはできません。例:exampledir/exampleobject.txt。*/
    std::string ObjectName = "exampleobject.txt";
    /* ネットワークリソースを初期化します。*/
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、リクエスト元の OSS_ACCESS_KEY_ID と OSS_ACCESS_KEY_SECRET が環境変数として設定されていることを確認してください。*/
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);    

    /* ファイルをアップロードする際に、リクエスト元支払いモードを設定します。*/
    std::shared_ptr<std::iostream> content = std::make_shared<std::stringstream>();
    *content << "test cpp sdk";
    PutObjectRequest putrequest(BucketName, ObjectName, content);
    putrequest.setRequestPayer(RequestPayer::Requester);
    auto putoutcome = client.PutObject(putrequest);

    /* ファイルをローカルメモリにダウンロードする際に、リクエスト元支払いモードを設定します。*/
    GetObjectRequest getrequest(BucketName, ObjectName);
    getrequest.setRequestPayer(RequestPayer::Requester);
    auto getoutcome = client.GetObject(getrequest);

    /* ファイルを削除する際に、リクエスト元支払いモードを設定します。*/
    DeleteObjectRequest delrequest(BucketName, ObjectName);
    delrequest.setRequestPayer(RequestPayer::Requester);
    auto deloutcome = client.DeleteObject(delrequest);

    /* ネットワークリソースを解放します。*/
    ShutdownSdk();
    return 0;
}

ossutil

ossutil を使用する前に、ossutil をインストールする必要があります。

たとえば、cp コマンドを使用してオブジェクトをダウンロードするには、--request-payer=requester パラメーターを指定します。

ossutil cp oss://examplebucket/examplefile.txt  /localpath  --request-payer=requester

API

直接 REST API リクエストを行う場合、リクエストに x-oss-request-payer: requester ヘッダーを含めます。このヘッダーが署名計算にも含まれていることを確認してください。署名計算の詳細については、「ヘッダーに署名を含める」をご参照ください。

GET /oss.jpg HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 24 Feb 2012 06:38:30 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e

本番運用時の注意点

  • RAM ロール経由のアクセスに対する課金:リクエスト元が Alibaba Cloud RAM ロールを偽装してデータにアクセスする場合、その RAM ロールが属するアカウントがリクエストの料金を支払います。

    • 誤った実践:リクエスト元がバケット所有者のアカウントの RAM ロールを偽装してアクセス権限を取得できるようにします。このシナリオでは、すべてのリクエストはバケット所有者として実行され、結果として生じるリクエスト料金とデータ転送料金はバケット所有者に課金されます。この実践では、費用はリクエスト元に転嫁されません。

    • 正しい実践:バケットポリシーを使用して、リクエスト元に直接アクセス権限を付与します。

  • 署名付き URL の落とし穴

    • 誤った実践:バケット所有者が自身のアクセス認証情報 (AccessKey ペアまたは STS 一時認証情報) を使用して署名付き URL を生成し、共有します。この場合、リクエストはバケット所有者として行われ、関連する料金はバケット所有者に課金されます。

    • 正しい実践:リクエスト元が自身のアクセス認証情報 (AccessKey ペアまたは STS 一時認証情報) を使用して署名付き URL を生成し、URL の生成時に x-oss-request-payer=requester パラメーターを含めます。署名の計算方法の詳細については、「URL に署名を含める」をご参照ください。この URL が共有されて使用されると、料金はそれを生成したリクエスト元に課金されます。

  • 互換性のリスク:リクエスト元支払いモードを有効にすると、静的 Web サイトホスティングに必要な匿名アクセスが妨げられ、Web サイトが利用できなくなる可能性があります。Web サイトのフロントエンドリソース (HTML、CSS、JS) と、リクエスト元支払いモードが必要なデータを、別々のバケットにデプロイすることを推奨します。

課金

バケットでリクエスト元支払いモードが有効になる前は、すべての料金はバケット所有者によって支払われます。リクエスト元支払いモードが有効になった後、リクエスト元のアカウントは次の課金項目を支払います。バケット所有者のアカウントには、他のすべての課金項目が引き続き課金されます。課金項目の完全なリストについては、OSS 料金をご参照ください。

料金

課金項目

トラフィック料金

インターネット経由のアウトバウンドトラフィック

オリジントラフィック

リクエスト料金

PUT リクエスト

GET リクエスト

データ処理

低頻度アクセスからのデータ取得

アーカイブストレージからのデータ取得