
# 创建OBS客户端
OBS客户端（OBSClient）是访问OBS服务的iOS客户端，它为调用者提供一系列与OBS服务进行交互的接口，用于管理、操作桶（Bucket）和对象（Object）等OBS服务上的资源。使用OBS iOS SDK向OBS发起请求，您需要初始化一个OBSClient实例，并根据需要修改OBSServiceConfiguration的默认配置项。
永久访问密钥（AK/SK）创建OBS客户端代码如下:
```
NSString *endPoint = @"https://your-endpoint";
// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险，建议在配置文件或者环境变量中密文存放，使用时解密，确保安全；本示例以ak和sk保存在环境变量中为例，运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。
// 您可以登录访问管理控制台获取访问密钥AK/SK，获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
char* ak_env = getenv("AccessKeyID");
char* sk_env = getenv("SecretAccessKey");
if (ak_env == NULL || sk_env == NULL) {
    NSLog(@"Error: AccessKeyID or SecretAccessKey environment variable not set");
    return;
}
NSString *AK = [NSString stringWithUTF8String:ak_env];
NSString *SK = [NSString stringWithUTF8String:sk_env];
// 初始化身份验证
OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK];
// 初始化服务配置
OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider];
// 初始化client
OBSClient *client  = [[OBSClient alloc] initWithConfiguration:conf];
```
临时访问密钥（AK/SK和SecurityToken）创建OBS客户端代码如下：
```
NSString *endPoint = @"https://your-endpoint";
// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险，建议在配置文件或者环境变量中密文存放，使用时解密，确保安全；本示例以ak和sk保存在环境变量中为例，运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。
// 您可以登录访问管理控制台获取访问密钥AK/SK，获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
char* ak_env = getenv("AccessKeyID");
char* sk_env = getenv("SecretAccessKey");
if (ak_env == NULL || sk_env == NULL) {
    NSLog(@"Error: AccessKeyID or SecretAccessKey environment variable not set");
    return;
}
NSString *AK = [NSString stringWithUTF8String:ak_env];
NSString *SK = [NSString stringWithUTF8String:sk_env];
// 初始化身份验证
OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK];
// securityToken
char* securityToken_env = getenv("SecurityToken");
NSString *SecurityToken = [NSString stringWithUTF8String:securityToken_env ?: ""];
credentialProvider.securityToken = SecurityToken;
// 初始化服务配置
OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider];
// 初始化client
OBSClient *client  = [[OBSClient alloc] initWithConfiguration:conf];
```
![](https://support.huaweicloud.com/sdk-ios-devg-obs/public_sys-resources/note_3.0-zh-cn.png)
当前，对于断点续传任务，当有多个上传任务需并发执行时，需要对每个上传任务初始化一个单独的客户端对请求进行处理。
以自定义域名访问方式创建OBS客户端代码如下：
```
NSString *endPoint = @"your-custom-domain";
// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险，建议在配置文件或者环境变量中密文存放，使用时解密，确保安全；本示例以ak和sk保存在环境变量中为例，运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。
// 您可以登录访问管理控制台获取访问密钥AK/SK，获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
char* ak_env = getenv("AccessKeyID");
char* sk_env = getenv("SecretAccessKey");
if (ak_env == NULL || sk_env == NULL) {
    NSLog(@"Error: AccessKeyID or SecretAccessKey environment variable not set");
    return;
}
NSString *AK = [NSString stringWithUTF8String:ak_env];
NSString *SK = [NSString stringWithUTF8String:sk_env];
// 初始化身份验证
OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK];
// 初始化服务配置
OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider];
// 设定以自定义域名访问OBS服务
conf.defaultDomainMode = OBSDomainModeCustom;
// 初始化client
OBSClient *client  = [[OBSClient alloc] initWithConfiguration:conf];
```
通过设置OBSServiceConfiguration.defaultDomainMode参数为OBSDomainModeCustom可以指定以自定义域名方式访问OBS服务，此时endPoint参数应设置为指定的自定义域名。
#### 自定义域名访问介绍与配置
若需通过自定义域名访问OBS桶，须先将该域名绑定至OBS桶的访问域名[自定义域名绑定简介](https://support.huaweicloud.com/usermanual-obs/obs_03_0032.html)，[自定义域名绑定配置](https://support.huaweicloud.com/usermanual-obs/obs_03_0032.html)。
![](https://support.huaweicloud.com/sdk-ios-devg-obs/public_sys-resources/caution_3.0-zh-cn.png)
当在自定义域名上配置了CDN加速服务，即自定义域名为CDN服务的加速域名时，需要额外对CDN服务进行配置，以保证可以正常使用自定义域名访问OBS服务。
以华为云CDN服务为例，相关配置如下所示：
1. 登录华为云CDN服务，从CDN服务左侧列表中选择域名管理项，在该项中可以查看到所有配置的CDN服务域名信息。
2. 配置源站。单击要使用的自定义域名项，进入域名配置界面，编辑源站配置，选择主源站类型为源站域名类型，对应源站为要访问的OBS桶域名。 
   ![](https://support.huaweicloud.com/sdk-ios-devg-obs/zh-cn_image_0000001880248921.png "点击放大")
   
   
3. 配置回源HOST。回源HOST必须指定为加速域名即访问OBS服务时访问的自定义域名，否则可能会出现回源鉴权失败的问题。 
   ![](https://support.huaweicloud.com/sdk-ios-devg-obs/zh-cn_image_0000001833289840.png "点击放大")
   
   
 
