云服务器内容精选

  • 代码样例 通过构造函数创建OBS客户端,永久访问密钥(AK/SK)创建OBS客户端代码如下: # 引入模块 from obs import ObsClient # 推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 # 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。 ak = os.getenv("AccessKeyID") sk = os.getenv("SecretAccessKey") # server填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。 server = "https://obs.cn-north-4.myhuaweicloud.com" # 创建obsClient实例 securityToken值 obsClient = ObsClient(access_key_id=ak, secret_access_key=sk, server=server) # 使用访问OBS # 关闭obsClient obsClient.close() 临时访问密钥(AK/SK和SecurityToken)创建OBS客户端代码如下: # 引入模块 from obs import ObsClient # 推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 # 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。 ak = os.getenv("AccessKeyID") sk = os.getenv("SecretAccessKey") # 【可选】如果使用临时AKSK和SecurityToken访问OBS,则同样推荐通过环境变量获取 security_token = os.getenv("SecurityToken") # server填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。 server = "https://obs.cn-north-4.myhuaweicloud.com" # 创建obsClient实例 # 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过security_token参数指定securityToken值 obsClient = ObsClient( access_key_id=ak, secret_access_key=sk, server=server, security_token=security_token ) # 使用访问OBS # 关闭obsClient obsClient.close() 指定获取临时访问密钥的方式 使用单一的获取方式,以从环境变量获取访问密钥的方式为例: # 引入模块 from obs import ObsClient from obs import loadtoken # 创建ObsClient实例 # 提供ENV方式获取访问密钥 obsClient = ObsClient( server='https://your-endpoint', security_providers=[loadtoken.ENV] ) # 使用访问OBS # 关闭obsClient obsClient.close() 通过配置系统环境变量的方式或者通过访问ECS服务器获取临时访问密钥的方式创建OBS客户端。 使用ENV方式创建OBS客户端的代码如下: # 引入模块 from obs import ObsClient # 创建ObsClient实例 # 提供ENV方式获取访问密钥 obsClient = ObsClient( server='https://your-endpoint', security_provider_policy='ENV' ) # 使用访问OBS # 关闭obsClient obsClient.close() 以上方式会从当前系统的环境变量中寻找访问密钥,需要对应在环境变量中定义OBS_ACCESS_KEY_ID、OBS_SECRET_ACCESS_KEY字段。同时如果采用临时访问密钥时,还需要在环境变量中定义OBS_SECURITY_TOKEN字段。 使用ECS方式创建OBS客户端的代码如下: # 引入模块 from obs import ObsClient # 创建ObsClient实例 # 提供ECS方式获取临时访问密钥 obsClient = ObsClient( server='https://your-endpoint', security_provider_policy='ECS' ) # 使用访问OBS # 关闭obsClient obsClient.close() 当应用程序部署在ECS服务器上时,可以采用以上方式从ECS服务器上自动获取临时访问密钥和定期自动刷新。 如果客户端报401错误,则需要排查在创建ECS时是否有添加委托。 在使用该方式获取临时访问密钥时,请确保服务端和应用程序部署所在环境的UTC时间一致,否则可能会导致临时访问密钥无法及时刷新的问题。 除了上述指定一种方式获取访问密钥外,还可以以链式的形式从环境变量及ECS服务器上进行搜索以获取对应的访问密钥。 通过设定security_provider_policy参数为OBS_DEFAULT来指定OBS客户端以链式的方式搜索访问密钥: # 引入模块 from obs import ObsClient # 创建ObsClient实例 # 以链式的方式从环境变量和ECS中搜索访问密钥 obsClient = ObsClient( server='https://your-endpoint', security_provider_policy='OBS_DEFAULT' ) # 使用访问OBS # 关闭obsClient obsClient.close() 以上方式通过设定security_provider_policy为OBS_DEFAULT,可以指定以链式的方式从预定义方式列表中搜索访问密钥。当前默认提供从环境变量中以及从ECS服务器上获取访问密钥两种预定义搜索方式,并按照先从环境变量,再从ECS服务器的顺序进行搜索。链式搜索方式会以第一组成功获取到的访问密钥创建OBS客户端。 工程中可以有多个ObsClient,也可以只有一个ObsClient。 ObsClient是线程安全的,可在并发场景下使用。
  • 构造函数参数描述 参数 描述 建议值 access_key_id 访问密钥中的AK。默认为空字符串表示匿名用户。 N/A secret_access_key 访问密钥中的SK。默认为空字符串表示匿名用户。 N/A security_token 临时访问密钥中的SecurityToken。 如何获取临时访问密钥和securitytoken请参见临时访问密钥AK/SK获取; N/A server 连接OBS的服务地址。可包含协议类型、域名、端口号。示例:https://your-endpoint:443。(出于安全性考虑,建议使用https协议) N/A max_retry_count HTTP/HTTPS连接异常时的请求重试次数。默认为3次。 [1,5] max_redirect_count HTTP/HTTPS请求重定向的最大次数。默认为10次 [1, 10] timeout HTTP/HTTPS请求超时时间(单位:秒)。默认为60秒。 [10, 60] ssl_verify 验证服务端证书参数,即验证服务端证书与客户端证书配置的证书是否一致。可能的取值: 服务端pem格式根证书文件路径。 True:从操作系统根证书库中获取服务端证书列表并验证服务端证书(仅支持Windows操作系统)。 False:表示不验证服务端证书。 默认为False。 N/A chunk_size 读写socket流时的块大小(单位:字节),您可以根据自身需求设置块大小。默认为65536字节。 默认 long_conn_mode 是否启用长连接模式。默认为False。 N/A proxy_host 代理服务器的主机地址。默认为空。 说明: 请注意,代理服务器的主机地址不要指定http://或https://; N/A proxy_port 代理服务器的端口号。默认为空。 N/A proxy_username 连接代理服务器时使用的用户名。默认为空。 N/A proxy_password 连接代理服务器时使用的用户密码。默认为空。 N/A is_cname 是否通过自定义域名访问OBS服务。默认为False。 更多关于自定义域名相关信息请参见自定义域名。 N/A security_providers 指定允许的访问密钥搜索方式,OBS客户端将使用该参数指定的搜索方式,搜索并获取访问密钥。默认为None。 说明: security_providers参数必须采用列表形式,默认情况下security_providers为None,此时默认提供从环境变量中获取访问密钥,或从ECS服务器获取临时访问密钥两种方式作为security_providers的默认搜索方式。 当指定了security_providers参数时,则不会提供默认搜索方式,此时仅可以使用security_providers中提供的搜索方式。 N/A security_provider_policy 指定访问密钥搜索策略。默认为None。 说明: security_provider_policy参数用于设置搜索策略,默认为None,此时需要显示指定访问密钥;同时,在已经指定了访问密钥参数的情况下,security_provider_policy参数将被忽略。 security_provider_policy设置为OBS_DEFAULT时采用链式搜索方式获取访问密钥; 设置security_provider_policy为预定义方式名(ENV,ECS)时采用对应方式获取访问密钥。 N/A 建议值为N/A的表示需要根据实际情况进行设置。 如网络状况不佳,建议增大timeout的值。 如果设置的server不带协议类型,则默认使用HTTPS协议。 如果启用了长连接模式,使用完OBS客户端后必须调用ObsClient.close方法显式关闭,回收连接资源。 出于DNS解析性能和OBS服务可靠性的考虑,不允许将server设置为IP,必须使用域名访问OBS服务。
  • 初始化SDK 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。 OBS客户端(ObsClient)是访问OBS服务的C客户端,它为调用者提供一系列与OBS服务进行交互的接口,用于管理、操作桶(Bucket)和对象(Object)等OBS服务上的资源。使用OBS C SDK发起OBS请求,您需要先调用初始化接口,在进程退出的时候调用取消初始化的接口,释放资源。 在使用C SDK前要先调用初始化接口obs_initialize,而且进程中只需要调用一次: obs_status ret_status = OBS_STATUS_BUTT; ret_status = obs_initialize(OBS_INIT_ALL); if (OBS_STATUS_OK != ret_status) { printf("obs_initialize failed(%s).\n", obs_get_status_name(ret_status)); return ret_status; } obs_deinitialize(); // 请不要多次调用obs_initialize和obs_deinitialize,否则会导致程序访问无效的内存 父主题: 初始化
  • 自定义域名访问介绍与配置 当以自定义域名访问OBS桶时,需要先将该自定义域名同对应OBS桶访问域名进行绑定,相关配置请参见自定义域名绑定简介,自定义域名绑定配置。 当在自定义域名上配置了CDN加速服务,即自定义域名为CDN服务的加速域名时,需要额外对CDN服务进行配置,以保证可以正常采用自定义域名访问OBS服务。 以华为云CDN服务为例,相关配置如下所示: 登录华为云CDN服务,从CDN服务左侧列表中选择域名管理项,在该项中可以查看到所有配置的CDN服务域名信息。 配置源站。单击要使用的自定义域名项,进入域名配置界面,编辑源站配置,选择主源站类型为源站域名类型,对应源站为要访问的OBS桶域名。 配置回源HOST。回源HOST必须指定为加速域名即访问OBS服务时访问的自定义域名,否则可能会出现回源鉴权失败的问题。
  • 手动执行脚本初始化Windows数据盘 登录弹性云服务器,访问https://ecs-instance-driver.obs.cn-north-1.myhuaweicloud.com/datadisk/WinVMDataDiskAutoInitialize.ps1获取自动初始化磁盘脚本,并将其保存在C:\Windows\System32路径下。 在弹性云服务器桌面,单击“开始”,选中“Windows PowerShell”后右键单击“以管理员身份运行”。 图1 以管理员身份运行Windows PowerShell 在对话框中输入以下命令,设置脚本执行策略。 Set-ExecutionPolicy -ExecutionPolicy Bypass -Force 在对话框中输入以下命令,执行自动化脚本。 C:\Windows\System32\WinVMDataDiskAutoInitialize.ps1 回显类似如下信息: 如果回显PowerShell无法加载文件,原因是通过网络下载的PowerShell脚本在未签名的情况下,Windows系统策略会禁止执行。 您可以通过以下方法解决:首先执行命令set-ExecutionPolicy RemoteSigned,然后重启PowerShell即可。 (可选)在“磁盘管理”页面,可以查看初始化结果。 图2 磁盘管理
  • 参数描述 字段名 类型 约束 说明 access_key_id String 可选 访问密钥中的AK。 secret_access_key String 可选 访问密钥中的SK。 server String 必选 连接OBS的服务地址。可包含协议类型、域名、端口号。示例:https://your-endpoint:443。 您可以从这里查看OBS当前开通的服务地址。 timeout Number 可选 HTTP/HTTPS请求的总超时时间(单位:秒)。默认为300秒。如网络状况不佳或者上传文件较大,建议增大timeout的值。 is_cname Boolean 可选 是否通过自定义域名访问OBS服务。默认为false。 useRawXhr Boolean 可选 是否使用原生XHR发送Ajax请求。默认为false。
  • 代码样例 // 创建ObsClient实例 var obsClient = new ObsClient({ // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 前端本身没有process对象,可以使用webpack类打包工具定义环境变量,就可以在代码中运行了。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html access_key_id: process.env.AccessKeyID, secret_access_key: process.env.SecretAccessKey, timeout : 300, // 这里以华北-北京四为例,其他地区请按实际情况填写 server: 'https://obs.cn-north-4.myhuaweicloud.com' });
  • 操作场景 磁盘挂载至弹性云服务器后,需要登录弹性云服务器初始化磁盘,即格式化磁盘,之后磁盘才可以正常使用。 系统盘 系统盘不需要初始化,创建弹性云服务器时会自带系统盘并且自动初始化,默认磁盘分区形式为主启动记录分区(MBR, Master boot record)。 数据盘 创建弹性云服务器时直接创建数据盘,数据盘会自动挂载至弹性云服务器。 单独创建数据盘,然后将该数据盘挂载至弹性云服务器。 以上两种情况创建的数据盘挂载至弹性云服务器后,均需要初始化后才可以使用,请您根据业务的实际规划选择合适的分区方式。
  • 磁盘分区操作指导 常用的磁盘分区形式如表1所示,并且针对Linux操作系统,不同的磁盘分区形式需要选择不同的分区工具。 表1 磁盘分区形式 磁盘分区形式 支持最大磁盘容量 支持分区数量 Linux分区工具 主启动记录分区(MBR) 2 TiB 4个主分区 3个主分区和1个扩展分区 MBR分区包含主分区和扩展分区,其中扩展分区里面可以包含若干个逻辑分区。扩展分区不可以直接使用,需要划分成若干个逻辑分区才可以使用。以创建6个分区为例,以下两种分区情况供参考: 3个主分区,1个扩展分区,其中扩展分区中包含3个逻辑分区。 1个主分区,1个扩展分区,其中扩展分区中包含5个逻辑分区。 以下两种工具均可以使用: fdisk工具 parted工具 全局分区表 (GPT, Guid Partition Table) 18 EiB 1 EiB = 1048576 TiB 不限制分区数量 GPT格式下没有主分区、扩展分区以及逻辑分区之分。 parted工具
  • 创建OBS客户端 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS客户端(ObsClient)是访问OBS服务的Android客户端,它为调用者提供一系列与OBS服务进行交互的接口,用于管理、操作桶(Bucket)和对象(Object)等OBS服务上的资源。使用OBS Android SDK向OBS发起请求,您需要初始化一个ObsClient实例,并根据需要修改ObsConfiguration的默认配置项。 直接使用服务地址创建OBS客户端(ObsClient),所有配置均为默认值,且后续不支持修改。示例代码如下: 永久访问密钥(AK/SK)创建OBS客户端的代码如下: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); // 使用访问OBS // 关闭obsClient obsClient.close(); 临时访问密钥(AK/SK/SecurityToken)创建OBS客户端的代码如下: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; String securityToken = "*** Provide your Security Token ***"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint); // 使用访问OBS // 关闭obsClient obsClient.close(); OBS属于全局级服务,所以在获取临时访问密钥时,需要设置Token的使用范围取值为domain,表示获取的Token可以作用于全局服务,全局服务不区分项目或者区域。 使用可定制各参数的配置类(ObsConfiguration)创建OBS客户端(ObsClient),创建完成后不支持再次修改参数,具体可配置的参数参见配置OBS客户端。示例代码如下: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsConfiguration配置类实例 ObsConfiguration config = new ObsConfiguration(); config.setEndPoint(endPoint); config.setSocketTimeout(30000); config.setMaxErrorRetry(1); // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, config); // 使用访问OBS // 关闭obsClient obsClient.close(); 您的工程中可以有多个ObsClient,也可以只有一个ObsClient。 ObsClient是线程安全的,可在并发场景下使用。 ObsClient在调用ObsClient.close方法关闭后不能再次使用。 父主题: 初始化
  • 创建OBS客户端 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS客户端(ObsClient)是访问OBS服务的.NET客户端,它为调用者提供一系列与OBS服务进行交互的接口,用于管理、操作桶(Bucket)和对象(Object)等OBS服务上的资源。使用OBS .NET SDK向OBS发起请求,您需要初始化一个ObsClient实例,并根据需要修改ObsConfig的默认配置项。 直接使用服务地址创建OBS客户端(ObsClient),所有配置均为默认值,且后续不支持修改。 永久访问密钥(accessKey/secretKey)创建OBS客户端的代码如下 // 初始化配置参数 // 认证用的accessKey和secretKey硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, "https://your-endpoint"); // 使用访问OBS 临时访问密钥(accessKey/secretKey/securityToken)创建OBS客户端的代码如下 // 初始化配置参数 // 认证用的accessKey和secretKey硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); string securityToken= "your_securityToken" // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey,securityToken, "https://your-endpoint"); // 使用访问OBS 使用配置类(ObsConfig)创建OBS客户端(ObsClient),可自定义配置各参数,后续不支持修改,具体参数配置可参见配置OBS客户端。 // 创建ObsConfig配置类实例 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的accessKey和secretKey硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 使用访问OBS 您的工程中可以有多个ObsClient,也可以只有一个ObsClient。 ObsClient是线程安全的,可在并发场景下使用。 父主题: 初始化
  • 代码示例 您可以通过New函数创建OBS客户端,永久访问密钥(AK/SK)创建OBS客户端示例代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 // 引入依赖包 import ( obs "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs" ) func main() { //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。 ak := os.Getenv("AccessKeyID") sk := os.Getenv("SecretAccessKey") // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。 endPoint := "https://obs.cn-north-4.myhuaweicloud.com" // 创建obsClient实例 obsClient, err := obs.New(ak, sk, endPoint) if err == nil { // 使用访问OBS // 关闭obsClient obsClient.Close() } } 携带代理proxy创建OBS客户端代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 // 引入依赖包 import ( "obs" ) func main() { //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。 ak := os.Getenv("AccessKeyID") sk := os.Getenv("SecretAccessKey") // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。 endPoint := "https://obs.cn-north-4.myhuaweicloud.com" // 创建obsClient实例 obsClient, err := obs.New(ak, sk, endPoint, obs.WithProxyUrl("https://username:password!@yourProxy")) if err == nil { // 使用访问OBS // 关闭obsClient obsClient.Close() } } 临时访问密钥(AK/SK和SecurityToken)创建OBS客户端代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 // 引入依赖包 import ( obs "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs" ) func main() { //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。 ak := os.Getenv("AccessKeyID") sk := os.Getenv("SecretAccessKey") // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。 // securityToken := os.Getenv("SecurityToken") // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。 endPoint := "https://obs.cn-north-4.myhuaweicloud.com" // 创建obsClient实例 // 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过obs.WithSecurityToken方法指定securityToken值。 obsClient, err := obs.New(ak, sk, endPoint, obs.WithSecurityToken(securityToken)) if err == nil { // 使用访问OBS // 关闭obsClient obsClient.Close() } } 您还可以通过配置系统环境变量的方式或者通过访问ECS服务器获取临时访问密钥的方式创建OBS客户端。 从环境变量中获取访问密钥创建OBS客户端的代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 // 引入依赖包 import ( obs "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs" ) func main() { //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。 ak := os.Getenv("AccessKeyID") sk := os.Getenv("SecretAccessKey") // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。 // securityToken := os.Getenv("SecurityToken") // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。 endPoint := "https://obs.cn-north-4.myhuaweicloud.com" // 创建obsClient实例 // 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过obs.WithSecurityToken方法指定securityToken值。 obsClient, err := obs.New(ak, sk, endPoint, obs.WithSecurityProviders(obs.NewEnvSecurityProvider("")) if err == nil { // 使用访问OBS // 关闭obsClient obsClient.Close() } } 以上方式会从当前系统的环境变量中寻找访问密钥,需要对应在环境变量中定义OBS_ACCESS_KEY_ID、OBS_SECRET_ACCESS_KEY字段。同时如果采用临时访问密钥时,还需要在环境变量中定义OBS_SECURITY_TOKEN字段。 从ECS获取临时访问密钥创建OBS客户端的代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 // 引入依赖包 import ( obs "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs" ) func main() { //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。 ak := os.Getenv("AccessKeyID") sk := os.Getenv("SecretAccessKey") // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。 // securityToken := os.Getenv("SecurityToken") // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。 endPoint := "https://obs.cn-north-4.myhuaweicloud.com" // 创建obsClient实例 // 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过obs.WithSecurityToken方法指定securityToken值。 obsClient, err := obs.New(ak, sk, endPoint, obs.WithSecurityProviders(obs.NewEcsSecurityProvider(1)) if err == nil { // 使用访问OBS // 关闭obsClient obsClient.Close() } } 当应用程序部署在ECS服务器上且该ECS绑定了相关委托项时,可以采用以上方式从ECS服务器上自动获取临时访问密钥。 使用链式方式从系统环境变量及ECS上获取访问密钥创建OBS客户端的代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 // 引入依赖包 import ( obs "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs" ) func main() { //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。 ak := os.Getenv("AccessKeyID") sk := os.Getenv("SecretAccessKey") // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。 // securityToken := os.Getenv("SecurityToken") // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。 endPoint := "https://obs.cn-north-4.myhuaweicloud.com" // 创建obsClient实例 // 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过obs.WithSecurityToken方法指定securityToken值。 obsClient, err := obs.New(ak, sk, endPoint, obs.WithSecurityProviders(obs.NewEnvSecurityProvider(""), obs.NewEcsSecurityProvider(1)) ) if err == nil { // 使用访问OBS // 关闭obsClient obsClient.Close() } } 以上初始化过程指定以链式的方式从环境变量和ECS中顺序获取访问密钥,并采用第一组成功获取到的访问密钥创建obsClient。 您的工程中可以有多个ObsClient,也可以只有一个ObsClient。 ObsClient是协程安全的,可在并发场景下使用。 ObsClient在调用ObsClient.close方法关闭后不能再次使用。 您可以通过调用WithHttpTransport传入自定义Transport实现指定单Host最大连接数的功能,示例代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 // 引入依赖包 import ( "time" obs "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs" ) // 创建ObsClient结构体 var obsClient, err = obs.New(ak, sk, endpoint, obs.WithHttpTransport(transport)) func main() { //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。 ak := os.Getenv("AccessKeyID") sk := os.Getenv("SecretAccessKey") // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。 // securityToken := os.Getenv("SecurityToken") // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。 endPoint := "https://obs.cn-north-4.myhuaweicloud.com" // 初始化自定义transport var maxIdleConns = 1000 var maxConnsPerHost = 1000 var idleConnTimeout = 30 var transport = &http.Transport{ MaxIdleConns: maxIdleConns, MaxIdleConnsPerHost: maxIdleConns, MaxConnsPerHost: maxConnsPerHost, IdleConnTimeout: time.Second * time.Duration(idleConnTimeout), } // 创建obsClient实例 // 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过obs.WithSecurityToken方法指定securityToken值。 obsClient, err := obs.New(ak, sk, endPoint,obs.WithHttpTransport(transport)) if err == nil { // 使用访问OBS // 关闭obsClient obsClient.Close() } } 只有在Golang 1.11以上的版本中才支持在Transport结构中指定MaxConnsPerHost参数。 如果指定了自定义的Transport,则无法通过WithMaxConnections、WithProxyUrl等配置方法配置Transport相关的最大空闲连接数、代理配置等参数,对应参数应直接在自定义Transport中指定。
  • 可用的configurer 您可通过configurer(obs命名空间中的私有类型)对ObsClient进行配置,可用的configurer见下表: 创建方式 描述 建议值 WithSslVerifyAndPemCerts(sslVerify bool, pemCerts []byte) 配置验证服务端证书的参数。默认为不验证。 N/A WithHeaderTimeout(headerTimeout int) 配置获取响应头的超时时间。默认为60秒。 [10,60] WithMaxConnections(maxIdleConns int) 配置允许最大HTTP空闲连接数。默认为1000。 N/A WithConnectTimeout(connectTimeout int) 配置建立HTTP/HTTPS连接的超时时间(单位:秒)。默认为60秒。 [10,60] WithSocketTimeout(socketTimeout int) 配置读写数据的超时时间(单位:秒)。默认为60秒。 [10,60] WithIdleConnTimeout(idleConnTimeout int) 配置空闲的HTTP连接在连接池中的超时时间(单位:秒)。默认为30秒。 默认 WithMaxRetryCount(maxRetryCount int) 配置HTTP/HTTPS连接异常时的请求重试次数。默认为3次。 [1,5] WithProxyUrl(proxyUrl string) 配置HTTP代理。 N/A WithHttpTransport(transport *http.Transport) 配置自定义的Transport。 默认 WithRequestContext(ctx context.Context) 配置每次HTTP请求的上下文。 N/A WithMaxRedirectCount(maxRedirectCount int) 配置HTTP/HTTPS请求重定向的最大次数。默认为3次。 [1,5] WithSecurityToken(securityToken string) 配置临时访问密钥中的SecurityToken N/A 建议值为N/A的表示需要根据实际情况进行设置。 如网络状况不佳,建议增大WithConnectTimeout和WithSocketTimeout的值。
  • 参数描述 字段名 类型 约束 说明 ak string 必选 访问密钥中的AK。 sk string 必选 访问密钥中的SK。 endpoint string 必选 连接OBS的服务地址。包含协议类型、域名(或IP)、端口号。示例:https://your-endpoint:443。(出于安全性考虑,建议使用https协议) 您可以从这里查看OBS当前开通的服务地址。 securityToken string 可选 临时访问密钥中的SecurityToken。 configurers configurer(obs包中的私有类型) 可选 一组用于配置ObsClient的参数,可进行连接超时时间、最大重试次数、最大连接数等配置。
  • 可用的拓展请求头 创建方式 说明 WithTrafficLimitHeader(trafficLimit int64) 配置在请求中携带单链接限速头域。目前仅支持 GetObject 方法。 取值范围:819200 ~ 838860800,单位:bit/s。 表1 PayerType 常量名 原始值 说明 BucketOwnerPayer BucketOwner 表示桶拥有者支付所有费用。 RequesterPayer Requester 表示请求者支付流量和请求次数费用,桶拥有者支付存储费用。