设置桶的自定义域名(Java SDK)
功能介绍
设置OBS桶的自定义域名。
接口约束
- 您必须是桶拥有者或拥有设置桶加密配置的权限,才能设置桶加密配置。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:SetBucketCustomDomain权限,如果使用桶策略则需授予SetBucketCustomDomain权限。
方法定义
ObsClient.setBucketCustomDomain(SetBucketCustomDomainRequest request)
请求参数说明
参数名称 | 参数类型 | 是否必选 | 描述 |
|---|---|---|---|
bucketName | String | 必选 | 参数解释: 桶名。 约束限制:
取值范围: 无 默认取值: 无 |
domainName | String | 必选 | 参数解释: 自定义域名。 约束限制: 无 取值范围: 无 默认取值: 无 |
customDomainCertificateConfig | 可选 | 参数解释: 自定义域名证书配置。 约束限制: 自定义域名证书配置只支持https协议请求。 取值范围: 默认取值: 无 |
参数名称 | 参数类型 | 是否必选 | 描述 |
|---|---|---|---|
name | String | 必选 | 参数解释: 证书名称。 约束限制: 无 取值范围: 长度为3~63的字符串。 默认取值: 无 |
certificateId | String | 可选 | 参数解释: CCM上的证书证书ID。 约束限制: 无 取值范围: 长度为16的字符串。 默认取值: 无 |
certificate | String | 必选 | 参数解释: 证书内容,可包含中间证书及根证书。若certificateChain字段传入证书链,则该字段只取证书本身。回车换行需要使用转义字符\n或者\r\n替换。 约束限制: 无 取值范围: 无 默认取值: 无 |
certificateChain | String | 可选 | 参数解释: 证书链,非必填,可通过certificate字段传入。回车换行需要使用转义字符\n或者\r\n替换。 约束限制: 无 取值范围: 无 默认取值: 无 |
privateKey | String | 必选 | 参数解释: 证书私钥。 不能上传带有口令保护的私钥,回车换行需要使用转义字符\n或者\r\n替换。 约束限制: 无 取值范围: 无 默认取值: 无 |
返回结果说明
类型 | 说明 |
|---|---|
参数解释: SDK公共结果对象。 |
代码示例
import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.CustomDomainCertificateConfig; import com.obs.services.model.HeaderResponse; import com.obs.services.model.SetBucketCustomDomainRequest; import java.util.Map; public class SetBucketCustomDomain { public static void main(String[] args) { // 您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。 // 您可以登录访问管理控制台获取访问密钥AK/SK String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。 // 您可以通过环境变量获取访问密钥AK/SK/SecurityToken,也可以使用其他外部引入方式传入。 String securityToken = System.getenv("SECURITY_TOKEN"); // endpoint填写桶所在的endpoint, 此处以华北-北京四为例,其他地区请按实际情况填写。 // 您可以通过环境变量获取endPoint,也可以使用其他外部引入方式传入。 // String endPoint = System.getenv("ENDPOINT_S"); String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint); try { // 示例桶名 String exampleBucket = "example-bucket"; // 示例自定义域名 String exampleDomainName = "example.domain.name.com"; // 示例自定义域名证书名称 String exampleDomainCertificateName = "exampleCertName"; // 示例自定义域名证书ID String exampleDomainCertificateId = "1234512345123450"; // 示例自定义域名证书 String exampleDomainCertificate = "exampleDomainCertificate"; // 示例自定义域名证书链 String exampleDomainCertificateChain = "exampleDomainCertificateChain"; // 示例自定义域名证书私钥 String exampleDomainCertificatePrivateKey = "exampleDomainCertificatePrivateKey"; CustomDomainCertificateConfig customDomainCertificateConfig = new CustomDomainCertificateConfig(); customDomainCertificateConfig.setName(exampleDomainCertificateName); customDomainCertificateConfig.setCertificateId(exampleDomainCertificateId); customDomainCertificateConfig.setCertificate(exampleDomainCertificate); customDomainCertificateConfig.setCertificateChain(exampleDomainCertificateChain); customDomainCertificateConfig.setPrivateKey(exampleDomainCertificatePrivateKey); SetBucketCustomDomainRequest setBucketCustomDomainRequest = new SetBucketCustomDomainRequest(exampleBucket, exampleDomainName, customDomainCertificateConfig); // 设置桶的自定义域名 HeaderResponse response = obsClient.setBucketCustomDomain(setBucketCustomDomainRequest); System.out.println("StatusCode:" + response.getStatusCode()); System.out.println("RequestId:" + response.getRequestId()); System.out.println("SetBucketCustomDomain successfully"); } catch (ObsException e) { System.out.println("SetBucketCustomDomain failed"); // 请求失败,打印http状态码 System.out.println("HTTP Code:" + e.getResponseCode()); // 请求失败,打印服务端错误码 System.out.println("Error Code:" + e.getErrorCode()); // 请求失败,打印详细错误信息 System.out.println("Error Message:" + e.getErrorMessage()); // 请求失败,打印请求id System.out.println("Request ID:" + e.getErrorRequestId()); System.out.println("Host ID:" + e.getErrorHostId()); // 遍历Map的entry,打印所有报错相关头域 Map<String, String> headers = e.getResponseHeaders(); if(headers != null){ for (Map.Entry<String, String> header : headers.entrySet()) { System.out.println(header.getKey()+":"+header.getValue()); } } e.printStackTrace(); } catch (Exception e) { System.out.println("SetBucketCustomDomain failed"); // 其他异常信息打印 e.printStackTrace(); } } }

