云服务器内容精选

  • 代码样例 通过构造函数创建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() 通过配置系统环境变量的方式或者通过访问E CS 服务器获取临时访问密钥的方式创建OBS客户端。 使用ENV方式创建OBS客户端的代码如下: # 引入模块 from obs import ObsClient # 创建ObsClient实例 # 提供ENV方式获取访问密钥 obsClient = ObsClient( server='https://your-endpoint', security_provider_policy='ENV' ) # 使用访问OBS # 关闭obsClient obsClient.close() 以上方式会从当前系统的环境变量中寻找访问密钥,需要对应在环境变量中定义OBS_AC CES S_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服务。
  • 参数描述 表1 LogConfig 参数名称 参数类型 是否必选 描述 level LogLevel 必选 参数解释: 日志级别。 表2 LogLevel 常量名 原始值 说明 OFF off 关闭级别,如果设置为这个级别,日志打印功能将被关闭。 ERROR error 错误级别,如果设置为这个级别,仅打印发生异常时的错误信息。 WARN warn 告警级别,如果设置为这个级别,除了打印错误级别的信息外,还将打印一些关键事件的信息。 INFO info 信息级别,如果设置为这个级别,除了打印告警级别的信息外,还将打印HTTP/HTTPS请求的耗时时间,ObsClient接口的耗时时间等。 DEBUG debug 调试级别,如果设置为这个级别,除了打印INFO级别的信息外,还将打印每次HTTP/HTTPS请求和响应的头信息、鉴权算法计算出的stringToSign信息等。
  • 配置密钥(Node.js SDK) 开发过程中,您有任何问题可以在github上提交issue,或者在华为云 对象存储服务 论坛中发帖求助。 要接入OBS服务,您需要拥有一组有效的访问密钥(AK和SK)用来进行签名认证。具体可参考OBS服务环境搭建。 获取AK和SK之后,可以通过创建OBS客户端,调用SDK接口。 获取AK和SK之后,您便可以按照以下步骤进行初始化。 创建OBS客户端(Node.js SDK) 配置OBS客户端(Node.js SDK) 配置SDK日志(Node.js SDK) 配置SDK代理(Node.js SDK) 父主题: 初始化(Node.js SDK)
  • 设置开机自动挂载磁盘 如果您需要在服务器系统启动时自动挂载磁盘,不能采用在 /etc/fstab直接指定 /dev/sdb1的方法,因为云中设备的顺序编码在关闭或者开启服务器过程中可能发生改变,例如/dev/sdb可能会变成/dev/sdc。推荐使用UUID来配置自动挂载数据盘。 磁盘的UUID(Universally Unique Identifier)是Linux系统为磁盘分区提供的唯一的标识字符串。 执行如下命令,查询磁盘分区的UUID。 blkid 磁盘分区 以查询磁盘分区“/dev/sdb1”的UUID为例: blkid /dev/sdb1 回显类似如下信息: [root@bms-b656 test]# blkid /dev/sdb1 /dev/sdb1: UUID="1851e23f-1c57-40ab-86bb-5fc5fc606ffa" TYPE="ext4" 表示“/dev/sdb1”的UUID。 执行以下命令,使用vi编辑器打开“fstab”文件。 vi /etc/fstab 按“i”,进入编辑模式。 将光标移至文件末尾,按“Enter”,添加如下内容。 UUID=1851e23f-1c57-40ab-86bb-5fc5fc606ffa /mnt/sdc ext4 defaults 0 2 按“ESC”后,输入:wq,按“Enter”。 保存设置并退出编辑器。
  • 操作场景 本文以裸金属服务器的操作系统为“CentOS 7.0 64位”为例,采用fdisk分区工具为数据盘设置分区。 MBR格式分区支持的磁盘最大容量为2 TB,GPT分区表最大支持的磁盘容量为18 EB,因此当为容量大于2 TB的磁盘分区时,请采用GPT分区方式。对于Linux操作系统而言,当磁盘分区形式选用GPT时,fdisk分区工具将无法使用,需要采用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方法关闭后不能再次使用。 父主题: 初始化
  • 配置SDK日志 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.initLog开启日志功能并进行配置。示例代码如下: obsClient.initLog({ level:'warn', // 配置日志级别 }); SDK打印的日志均会显示在浏览器提供的 开发者工具 的控制台上。 日志功能默认是关闭的,需要主动开启。 您可以从 日志分析 章节获取更多关于SDK日志的信息。 父主题: 初始化
  • 可用的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() } } 您还可以通过配置系统环境变量的方式或者通过访问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中指定。
  • 参数描述 字段名 类型 约束 说明 ak string 必选 访问密钥中的AK。 sk string 必选 访问密钥中的SK。 endpoint string 必选 连接OBS的服务地址。包含协议类型、域名(或IP)、端口号。示例:https://your-endpoint:443。(出于安全性考虑,建议使用https协议) 您可以从这里查看OBS当前开通的服务地址。 securityToken string 可选 临时访问密钥中的SecurityToken。 configurers configurer(obs包中的私有类型) 可选 一组用于配置ObsClient的参数,可进行连接超时时间、最大重试次数、最大连接数等配置。
  • 初始化概述(Java SDK) 完成SDK安装之后,您还需要进行初始化工作,初始化工作主要包括两方面,一方面客户端的创建和配置,另一方面是SDK日志配置。 表1 初始化概述 初始化任务 子任务 是否必选 说明 创建并配置客户端 创建客户端 是 OBS客户端是使用Java SDK访问OBS服务的必备媒介,它为调用者提供一系列与OBS服务进行交互的接口,使用OBS Java SDK向OBS发起请求,您需要创建并初始化一个客户端,即一个ObsClient实例。 配置访问密钥 是 基于安全需要,您需要为客户端配置访问凭证以便服务端校验请求的合法性。 配置终端节点及其他选项 终端节点必选,其余配置项可选 为了快速创建和检索到您的资源,需要配置客户端的终端节点,即告知服务端资源所在的区域。 除了访问密钥和终端节点外,您可以根据自身使用场景,为客户端配置其他选项。 配置SDK日志 配置日志等级 否 OBS Java SDK基于Apache Log4j2开源库提供了日志功能,Log4j2框架按照优先级将日志进行了分级处理,您可以配置存储某个级别以上的日志,自行决定存储日志的范围。 OBS Java SDK默认将WARN及WARN以上级别的日志保存到本地。 配置日志存放路径 否 配置日志在本地的存储路径。 父主题: 初始化(Java SDK)
  • 通过构造函数创建 永久访问密钥(AK/SK)创建OBS客户端代码如下: // 引入obs库 // 使用npm安装 const ObsClient = require("esdk-obs-nodejs"); // 使用源码安装 // var ObsClient = require('./lib/obs'); // 创建ObsClient实例 const obsClient = new ObsClient({ // 推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html access_key_id: process.env.ACCESS_KEY_ID, secret_access_key: process.env.SECRET_ACCESS_KEY, // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写 server: "https://obs.cn-north-4.myhuaweicloud.com", }); // 使用访问OBS // 关闭obsClient // obsClient.close(); 临时访问密钥(AK/SK/SecurityToken)创建OBS客户端代码如下: // 引入obs库 // 使用npm安装 const ObsClient = require("esdk-obs-nodejs"); // 使用源码安装 // var ObsClient = require('./lib/obs'); // 创建ObsClient实例 const obsClient = new ObsClient({ // 推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html access_key_id: process.env.ACCESS_KEY_ID, secret_access_key: process.env.SECRET_ACCESS_KEY, // 如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入 security_token: process.env.SECURITY_TOKEN, // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写 server: "https://obs.cn-north-4.myhuaweicloud.com", }); // 使用访问OBS // 关闭obsClient // obsClient.close();
  • 通过工厂方法创建 永久访问密钥(AK/SK)创建OBS客户端代码如下: // 引入obs库 // 使用npm安装 var ObsClient = require('esdk-obs-nodejs'); // 使用源码安装 // var ObsClient = require('./lib/obs'); // 通过工厂方法初始化ObsClient实例 var obsClient = new ObsClient(); obsClient.factory({ // 推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html access_key_id: process.env.ACCESS_KEY_ID, secret_access_key: process.env.SECRET_ACCESS_KEY, // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写 server: "https://obs.cn-north-4.myhuaweicloud.com", }); // 使用访问OBS // 关闭obsClient // obsClient.close(); 临时访问密钥(AK/SK/SecurityToken)创建OBS客户端代码如下: // 引入obs库 // 使用npm安装 var ObsClient = require('esdk-obs-nodejs'); // 使用源码安装 // var ObsClient = require('./lib/obs'); // 通过工厂方法初始化ObsClient实例 var obsClient = new ObsClient(); obsClient.factory({ // 推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html access_key_id: process.env.ACCESS_KEY_ID, secret_access_key: process.env.SECRET_ACCESS_KEY, // 如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入 security_token: process.env.SECURITY_TOKEN, // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写 server: "https://obs.cn-north-4.myhuaweicloud.com", }); // 使用访问OBS // 关闭obsClient // obsClient.close(); 您的工程中可以有多个obsClient实例,也可以只有一个。 obsClient实例在调用close方法关闭后不能再次使用。 配置SDK代理请参见配置SDK代理(Node.js SDK)。
  • 初始化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,否则会导致程序访问无效的内存 父主题: 初始化