赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 对象存储
  4. 开发参考
  5. SDK参考
  6. Python
  7. 2.0手册(预览版本)
  8. 存储空间
  9. 请求者付费模式

请求者付费模式

  • 存储空间
  • 发布于 2025-04-21
  • 0 次阅读
文档编辑
文档编辑

请求者付费模式是指由请求者支付读取存储空间(Bucket)内数据时产生的流量费用和请求费用,而Bucket拥有者仅支付存储费用。您可以启用此功能,适用于需要共享数据且避免承担额外流量费用和请求费用的情况。

注意事项

  • 本文示例代码以华东1(杭州)的地域IDcn-hangzhou为例,默认使用外网Endpoint,如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见OSS地域和访问域名。

  • 要设置请求者付费模式,您必须有oss:PutBucketRequestPayment权限;要获取请求者付费模式,您必须有oss:GetBucketRequestPayment权限。具体操作,请参见为RAM用户授权自定义的权限策略。

示例代码

设置请求者付费模式

您可以使用以下代码设置请求者付费模式。

import argparse
import alibabacloud_oss_v2 as oss

# 创建命令行参数解析器,并描述脚本用途:设置存储空间(Bucket)的请求支付配置
parser = argparse.ArgumentParser(description="put bucket request payment sample")

# 定义命令行参数,包括必需的区域、存储空间名称、可选的endpoint以及支付方
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
parser.add_argument('--payer', help='Indicates who pays the download and request fees. Possible values: "Requester" or "BucketOwner"', required=True)

def main():
    # 解析命令行参数,获取用户输入的值
    args = parser.parse_args()

    # 从环境变量中加载访问凭证信息,用于身份验证
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # 使用SDK默认配置创建配置对象,并设置认证提供者
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # 设置配置对象的区域属性,根据用户提供的命令行参数
    cfg.region = args.region

    # 如果提供了自定义endpoint,则更新配置对象中的endpoint属性
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # 使用上述配置初始化OSS客户端,准备与OSS交互
    client = oss.Client(cfg)

    # 发送请求以设置指定存储空间的请求支付配置
    result = client.put_bucket_request_payment(oss.PutBucketRequestPaymentRequest(
            bucket=args.bucket,  # 存储空间名
            request_payment_configuration=oss.RequestPaymentConfiguration(
                payer=args.payer,  # 支付方,可以是 "Requester" 或 "BucketOwner"
            ),
    ))

    # 打印操作结果的状态码和请求ID,以便确认请求状态
    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
          )

# 当此脚本被直接执行时,调用main函数开始处理逻辑
if __name__ == "__main__":
    main()  # 脚本入口点,控制程序流程从这里开始

获取请求者付费模式配置

您可以使用以下代码获取请求者付费模式配置信息。

import argparse
import alibabacloud_oss_v2 as oss

# 创建命令行参数解析器,并描述脚本用途:获取存储空间(Bucket)的请求支付配置
parser = argparse.ArgumentParser(description="get bucket request payment sample")

# 定义命令行参数,包括必需的区域、存储空间名称以及可选的endpoint
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')

def main():
    # 解析命令行参数,获取用户输入的值
    args = parser.parse_args()

    # 从环境变量中加载访问凭证信息,用于身份验证
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # 使用SDK默认配置创建配置对象,并设置认证提供者
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # 设置配置对象的区域属性,根据用户提供的命令行参数
    cfg.region = args.region

    # 如果提供了自定义endpoint,则更新配置对象中的endpoint属性
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # 使用上述配置初始化OSS客户端,准备与OSS交互
    client = oss.Client(cfg)

    # 发送请求以获取指定存储空间的请求支付配置
    result = client.get_bucket_request_payment(oss.GetBucketRequestPaymentRequest(
            bucket=args.bucket,  # 存储空间名
    ))

    # 打印操作结果的状态码、请求ID和支付方信息,以便确认请求状态和配置详情
    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
          f' payer: {getattr(result.request_payment_configuration, "payer", "Not set")},'
          )

# 当此脚本被直接执行时,调用main函数开始处理逻辑
if __name__ == "__main__":
    main()  # 脚本入口点,控制程序流程从这里开始

相关文档

  • 关于配置请求者付费模式的完整示例代码,请参见put_bucket_request_payment.py。

  • 关于获取请求者付费模式配置的完整示例代码,请参见get_bucket_request_payment.py。

相关文章

创建存储空间 2025-04-21 18:15

存储空间(Bucket)是对象(Object)的容器,您上传的文件都将以对象的形式放在存储空间中。本文介绍如何通过Python SDK V2创建存储空间。 权限说明 阿里云账号默认拥有全部权限。阿里云账号下的RAM用户或RAM角色默认没有任何权限,需要阿里云账号或账号管理员通过RAM Policy或

列举存储空间 2025-04-21 18:15

本文介绍如何列举当前账号所有地域下符合指定条件的存储空间。 注意事项 本文示例代码以华东1(杭州)的地域IDcn-hangzhou为例,默认使用外网Endpoint,如果您希望通过与OSS同地域的其他

判断存储空间是否存在 2025-04-21 18:15

本文介绍如何通过Python SDK V2判断指定的存储空间是否存在。 注意事项 本文示例代码以华东1(杭州)的地域IDcn-hangzhou为例,默认使用外网Endpoint,如果您希望通过与OSS

获取存储空间的地域 2025-04-21 18:15

本文介绍如何通过Python SDK V2获取存储空间所在的地域。 注意事项 本文示例代码以华东1(杭州)的地域IDcn-hangzhou为例,默认使用外网Endpoint,如果您希望通过与OSS同地

获取存储空间的信息 2025-04-21 18:15

本文介绍如何通过OSS Python SDK获取指定存储空间的访问跟踪状态信息、地域、创建日期、读写权限、拥有者的名称和ID、存储类型、数据容灾类型、外网域名、内网域名、跨区域复制状态、版本控制状态、加密方式等内容,以便进行相应操作。 注意事项 本文示例代码以华东1(杭州)的地域ID

获取存储空间的存储容量 2025-04-21 18:15

本文介绍如何获取指定存储空间(Bucket)的存储容量以及Bucket内不同存储类型文件(Object)的数量及其存储容量。 注意事项 本文示例代码以华东1(杭州)的地域IDcn-hangzhou为例

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号