You need to enable JavaScript to run this app.
导航

管理自定义域名(C++ SDK)

最近更新时间2024.02.04 18:31:05

首次发布时间2023.03.15 15:05:53

当您将文件上传至 TOS 后,您可以使用 TOS 自动生成的文件 URL 访问或下载文件。如果您希望使用您自己的域名访问存储在 TOS 的文件,您可以为存储桶绑定您自己的域名。绑定后,即可使用相应域名访问文件。TOS C++ SDK 支持给存储桶绑定自定义域名。

设置自定义域名规则

注意

  • 一个域名只能绑定一个存储桶。
  • 一个存储桶最多可以绑定 20 个域名。

示例代码

以下代码用于设置桶 examplebucket 的自定义域名规则。

#include "TosClientV2.h"
using namespace VolcengineTos;

int main(void){
    // 初始化 TOS 账号信息
    // Your Region 填写 Bucket 所在 Region
    std::string region = "Your Region";
    std::string accessKey = std::getenv("TOS_ACCESS_KEY");
    std::string secretKey = std::getenv("TOS_SECRET_KEY");
    // 填写 Bucket 名称,例如 examplebucket
    std::string bucketName = "examplebucket";
    // 填写自定义域名。
    std::string domain = "www.example.com";
    // 初始化网络等资源
    InitializeClient();
    // 创建交互的 client
    TosClientV2 client(region, accessKey, secretKey);

    PutBucketCustomDomainInput input(bucketName);
    CustomDomainRule rule;
    // 设置域名
    rule.setDomain(domain);
    // 设置证书id,为证书服务上证书对应的id
    rule.setCertId("your cert id");
    // 设置证书状态
    rule.setCertStatus(CertStatusType::Bound);
    // 设置是否拒绝
    rule.setForbidden(true);
    // 设置禁用的原因
    rule.setForbiddenReason("your forbidden reason");
    input.setRules({rule});
    auto output = client.putBucketCustomDomain(input);
    if (!output.isSuccess()) {
        // 异常处理
        std::cout << "PutBucketCustomDomain failed." << output.error().String() << std::endl;
        // 释放网络等资源
        CloseClient();
        return -1;
    }
    std::cout << "PutBucketCustomDomain success." << std::endl;

    // 释放网络等资源
    CloseClient();
    return 0;
}

列举自定义域名规则

注意

要列举桶的自定义域名规则,默认您必须为桶所有者。

示例代码

以下代码用于列举桶 examplebucket 的自定义域名规则。

#include "TosClientV2.h"
using namespace VolcengineTos;

int main(void){
    // 初始化 TOS 账号信息
    // Your Region 填写 Bucket 所在 Region
    std::string region = "Your Region";
    std::string accessKey = std::getenv("TOS_ACCESS_KEY");
    std::string secretKey = std::getenv("TOS_SECRET_KEY");
    // 填写 Bucket 名称,例如 examplebucket
    std::string bucketName = "examplebucket";

    // 初始化网络等资源
    InitializeClient();
    // 创建交互的 client
    TosClientV2 client(region, accessKey, secretKey);
    ListBucketCustomDomainInput input(bucketName);

    auto output = client.listBucketCustomDomain(input);
    if (!output.isSuccess()) {
        // 异常处理
        std::cout << "ListBucketCustomDomain failed." << output.error().String() << std::endl;
        // 释放网络等资源
        CloseClient();
        return -1;
    }
    std::cout << "ListBucketCustomDomain success." << std::endl;
    for (const auto& rule : output.result().getRules()) {
        std::cout << "domain:" << rule.getDomain() << std::endl;
        std::cout << "cname:" << rule.getCname() << std::endl;
        std::cout << "cert id:" << rule.getCertId() << std::endl;
        std::cout << "cert status:" << rule.getStringFormatCertStatus() << std::endl;
        std::cout << "is forbidden:" << rule.isForbidden() << std::endl;
        std::cout << "forbidden reason:" << rule.getForbiddenReason() << std::endl;
    }

    // 释放网络等资源
    CloseClient();
    return 0;
}

删除自定义域名规则

注意

要删除桶的自定义域名规则,默认您必须为桶所有者。

示例代码

以下代码用于删除桶 examplebucket 的自定义域名规则。

#include "TosClientV2.h"
using namespace VolcengineTos;

int main(void){
    // 初始化 TOS 账号信息
    // Your Region 填写 Bucket 所在 Region
    std::string region = "Your Region";
    std::string accessKey = std::getenv("TOS_ACCESS_KEY");
    std::string secretKey = std::getenv("TOS_SECRET_KEY");
    // 填写 Bucket 名称,例如 examplebucket
    std::string bucketName = "examplebucket";
    // 填写自定义域名。
    std::string domain = "www.example.com";

    // 初始化网络等资源
    InitializeClient();
    // 创建交互的 client
    TosClientV2 client(region, accessKey, secretKey);
    DeleteBucketCustomDomainInput input(bucketName,domain);
    auto output = client.deleteBucketCustomDomain(input);
    if (!output.isSuccess()) {
        // 异常处理
        std::cout << "DeleteBucketCustomDomain failed." << output.error().String() << std::endl;
        // 释放网络等资源
        CloseClient();
        return -1;
    }
    std::cout << "DeleteBucketCustomDomain success." << std::endl;
    // 释放网络等资源
    CloseClient();
    return 0;
}

相关文档

关于自定义域名配置的更多信息,请参见自定义域名