云服务器内容精选

  • 可用的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 WithCustomDomainName(cname bool) 是否通过自定义 域名 访问OBS服务。默认为false。 默认 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的值。
  • 代码示例 您可以通过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() } } 您还可以通过配置系统环境变量的方式或者通过访问E CS 服务器获取临时访问密钥的方式创建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_AC CES S_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中指定。
  • 参数描述 字段名 类型 约束 说明 ak string 必选 访问密钥中的AK。 sk string 必选 访问密钥中的SK。 endpoint string 必选 连接OBS的服务地址。包含协议类型、域名(或IP)、端口号。示例:https://your-endpoint:443。(出于安全性考虑,建议使用https协议) 您可以从这里查看OBS当前开通的服务地址。 securityToken string 可选 临时访问密钥中的SecurityToken。 configurers configurer(obs包中的私有类型) 可选 一组用于配置ObsClient的参数,可进行连接超时时间、最大重试次数、最大连接数等配置。