当您将文件上传至 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;
}
关于自定义域名配置的更多信息,请参见自定义域名。