详情页标题前

阿里云对象存储OSSC++请求者付费模式-云淘科技

详情页1

请求者付费模式是指由请求者支付读取存储空间(Bucket)内数据时产生的流量费用和请求费用,而Bucket拥有者仅支付存储费用。当您希望共享数据,但又不希望产生流量费用和请求费用时,您可以开启此功能。

注意事项

  • 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见访问域名和数据中心。
  • 本文以OSS域名新建OSSClient为例。如果您希望通过自定义域名、STS等方式新建OSSClient,请参见新建OssClient。
  • 设置请求者付费模式,您必须有oss:PutBucketRequestPayment权限;要获取请求者付费模式,您必须有oss:GetBucketRequestPayment权限。具体操作,请参见为RAM用户授权自定义的权限策略。

设置请求者付费模式

以下代码用于设置请求者付费模式。

#include 
using namespace AlibabaCloud::OSS;

int main(void)
{
    /*初始化OSS账号信息。*/
    
    /*yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。*/
    std::string Endpoint = "yourEndpoint";
    /*填写Bucket名称,例如examplebucket。*/
    std::string BucketName = "examplebucket";

    /*初始化网络等资源。*/
    InitializeSdk();

    ClientConfiguration conf;
    /* 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。*/
    auto credentialsProvider = std::make_shared();
    OssClient client(Endpoint, credentialsProvider, conf);

    /*设置请求者付费模式。*/
    SetBucketRequestPaymentRequest request(BucketName);
    request.setRequestPayer(RequestPayer::Requester);

    auto outcome = client.SetBucketRequestPayment(request);

    if (!outcome.isSuccess()) {
        /*异常处理。*/
        std::cout << "SetBucketRequestPayment fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /*释放网络等资源。*/
    ShutdownSdk();
    return 0;
}

获取请求者付费模式配置

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

#include 
using namespace AlibabaCloud::OSS;

const char* ToRequestPayerName(RequestPayer payer)
{
    static const char* PayerName[] = { "NotSet", "BucketOwner", "Requester"};
    return PayerName[static_cast(payer) - static_cast(RequestPayer::NotSet)];
}

int main(void)
{
    /*初始化OSS账号信息。*/
    
    /*yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。*/
    std::string Endpoint = "yourEndpoint";
    /*填写Bucket名称,例如examplebucket。*/
    std::string BucketName = "examplebucket";

    /*初始化网络等资源。*/
    InitializeSdk();

    ClientConfiguration conf;
    /* 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。*/
    auto credentialsProvider = std::make_shared();
    OssClient client(Endpoint, credentialsProvider, conf);

    /*获取请求者付费模式配置。*/
    GetBucketRequestPaymentRequest request(BucketName);
    auto outcome = client.GetBucketRequestPayment(request);

    if (outcome.isSuccess())
    {
        std::cout << "GetBucketRequestPayment success Payer:" << ToRequestPayerName(outcome.result().Payer()) << std::endl;
    }
    else {
        /*异常处理。*/
        std::cout << "GetBucketPayment fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /*释放网络等资源。*/
    ShutdownSdk();
    return 0;
}

第三方付费访问Object

第三方操作Object时需在HTTP Header中携带x-oss-request-payer:requester参数,否则会报错。

以下代码以PutObject、GetObject和DeleteObject为例,用于指定第三方付费访问Object。其他用于指定第三方付费的Object读写操作接口设置方法类似。


#include 
#include 
using namespace AlibabaCloud::OSS;
int main(void)
{
    /*初始化OSS账号信息。*/
    
    /*填写请求者访问Bucket所在地域对应的Endpoint。*/
    std::string Endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    /*填写请求者访问的Bucket名称,例如examplebucket。*/
    std::string BucketName = "examplebucket";    
    /*填写请求者访问的Object的完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。*/
    std::string ObjectName = "exampleobject.txt";
    /* 初始化网络等资源。*/
    InitializeSdk();

    ClientConfiguration conf;
    /* 从环境变量中获取访问凭证。运行本代码示例之前,请确保已通过环境变量设置请求者的OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。*/
    auto credentialsProvider = std::make_shared();
    OssClient client(Endpoint, credentialsProvider, conf);    

    /* 上传文件时设置请求者付费模式。*/
    std::shared_ptr content = std::make_shared();
    *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;
}

相关文档

  • 关于请求者付费模式的完整示例代码,请参见GitHub示例。

  • 关于设置请求者付费模式的API接口说明,请参见PutBucketRequestPayment。

  • 关于获取请求者付费模式配置信息的API接口说明,请参见GetBucketRequestPayment。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/158279.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云人工智能平台PAI读CSV文件-云淘科技

    读CSV文件支持从OSS、HTTP、HDFS读取CSV类型的文件数据。本文为您介绍读CSV文件的参数配置。 使用限制 通过可视化方式使用时,支持的计算资源为MaxCompute或Flink。 通过PyAlink脚本方式使用时,需要使用PyAlink脚本组件进行代码调用,详情请参见PyAlink脚本。 前提条件 (可选)已完成OSS授权,详情请参见云产品依赖与…

    阿里云人工智能平台PAI 2023年12月10日
  • 阿里云对象存储OSSTerraform简介-云淘科技

    Terraform 是一个开源的自动化的资源编排工具,支持多家云服务提供商。阿里云作为第三大云服务提供商,terraform-alicloud-provider 已经支持了超过 90 多个 Resource 和 Data Source,覆盖 20 多个服务和产品,吸引了越来越多的开发者加入到阿里云 Terraform 生态的建设中。 HashiCorp Te…

    阿里云对象存储 2023年12月10日
  • 阿里云云原生大数据计算服务 MaxCompute读取以分区方式存储的OSS数据-云淘科技

    MaxCompute支持创建OSS外部表为分区表,访问OSS上以分区方式存储的数据,通过该方式可降低读取数据量并提升数据处理效率。本文为您介绍MaxCompute支持的OSS标准分区路径格式和自定义分区路径格式。 背景信息 创建OSS外部表后,MaxCompute会全量扫描OSS目录下的所有数据,包括子目录下的数据文件。但当数据量比较大时,对全目录扫描会产生…

  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云云原生大数据计算服务 MaxCompute数据分析作业-云淘科技

    MaxCompute是适用于数据分析场景的企业级SaaS模式云数据仓库,支持在多种工具上使用MaxCompute运行大数据计算分析作业。如果您需要进行简单的查询等数据分析作业,推荐您使用SQL查询或DataWorks的临时查询等工具,高效便捷地完成数据分析作业。本文为您介绍数据分析场景下的常用工具与使用注意事项。 使用SQL查询 您可以在使用SQL分析连接的…

  • 阿里云日志服务SLS接入OpenCensus Trace数据-云淘科技

    您可以通过OpenCensus SDK将OpenCensus平台上的Trace数据发送至OpenTelemetry Collector,再通过OpenTelemetry Collector转发至日志服务。本文介绍通过OpenTelemetry Collector转发Trace数据到日志服务的操作步骤。 前提条件 已创建Trace实例。更多信息,请参见创建Tr…

    阿里云日志服务SLS 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。