当您将文件上传至 TOS 后,您可以使用 TOS 自动生成的文件 URL 访问或下载文件。如果您希望使用您自己的域名访问存储在 TOS 的文件,您可以为存储桶绑定您自己的域名。绑定后,即可使用相应域名访问文件。TOS C++ SDK 支持给存储桶绑定自定义域名。
注意
以下代码用于设置桶 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; }
关于自定义域名配置的更多信息,请参见自定义域名。