目前华为云上,为我们提供了各种不同的云服务类型,满足我们的日常业务,通常来说,需要一个云服务,可以通过登录华为云控制台进行购买,但也有一些情况,我们需要在自己的业务代码里来实现云服务的购买;
华为云上的各项服务,目前均已经提供比较完整的API接口调用,我们可以下载云服务提供的SDK,或者自定义代码来调用云服务的API接口,来帮助我们便捷的完成云服务的申请操作;
1.1.环境说明
本次测试所使用的环境:
本地OS:MacOS 10.15.7
IDE环境:PyCharm 2020.3
代码环境:Python 3.7.5
调用云服务:弹性公有IP地址(EIP)
2. 操作过程
2.1. 本地安装SDK
注意,华为云官方SDK版本经常升级,而各个不同版本之间,需注意版本相同,否则会出现调用错误;
本次测试所需的关键SDK匹配:huaweicloudsdkcore、huaweicloudsdkeip;
如果以前安装有旧的版本,需要升级:pip install huaweicloudsdkcore --upgrade、pip install huaweicloudsdkeip --upgrade
2.2. 获取API接口代码
可以直接使用ApiExplorer提供的示例代码
获取API示例代码的网址:https://apiexplorer.developer.huaweicloud.com/apiexplorer/overview
from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkcore.http.http_config import HttpConfig from huaweicloudsdkeip.v2 import * from huaweicloudsdkeip.v2.region.eip_region import EipRegion __name__ : ak sk credentials BasicCredentials(ak, sk) \ client EipClient.new_builder() \ .with_credentials(credentials) \ .with_region(EipRegion.value_of()) \ .build() try: request CreatePublicipRequest() publicipCreatePublicipOption CreatePublicipOption( , , ) bandwidthCreatePublicipBandwidthOption CreatePublicipBandwidthOption( , ) request.body CreatePublicipRequestBody( publicipCreatePublicipOption, bandwidthCreatePublicipBandwidthOption ) response client.create_publicip(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg)
2.3. 配置个人用户信息
必须要赞一下,SDK版本升级后,所需要提供的个人帐号信息大幅减少,现在只需要提供一个 Region 信息即可,老版本还需要提供endpoint、project等信息,有点儿烦;
获取AK/SK信息路径:点击右上角帐号名-->“我的凭证”-->“访问密钥”-->“新增访问密钥”去添加,细节不再赘述;
获取Region信息:https://developer.huaweicloud.com/endpoint?all
地域信息截图如下:
3. 应用场景
通过API申请EIP云服务,除在部分代码开发场景需要使用,还有另外一种情况,遇到的也比较多;
3.1. 按需EIP跨帐号转移
以下是操作过程:
修改2.2.小节所示的API代码,在 ip_address 字段,填写将要转移的 EIP 地址;
修改API代码,在AK/SK字段,填写目标帐号的AK/SK信息;
在源帐号里,操作释放按需 EIP 资源;
执行API代码,在目的帐号里,申请指定的 EIP 资源;
使用目的帐号登录华为云控制台,检查EIP资源是否申请成功;
为了做这个实际,实打实的买了两个包月的 EIP,当然是最便宜的 1 M的那种^_^,一个在北京四地域,一个在上海二地域;
以下是操作过程:
修改2.2.小节所示的API代码,在 ip_address 字段,填写将要转移的 EIP 地址;
修改API代码,在AK/SK字段,填写目标帐号的AK/SK信息;
在源帐号里,操作 “退订使用中的资源”,退订当前的包周期资源;
注:此处可能涉及费用问题,平台不会退还全部费用,会扣除一部分,操作前请谨慎;
执行API代码,在目的帐号里,申请指定的 EIP 资源;
VPC.0522 {: {: , : , : }} Python .7.5 (default, Oct , :52:18) [Clang .0.1 (tags/RELEASE_401/final)] on darwin runfile(, ) {: {: , : datetime.datetime(2021, , , , , , tzutc()), : , : , : , : , : None, : , : , : }}
3.3. 总结
上面操作了两次包周期的EIP的转移实验,第 1 次操作是在北京4地域,操作失败,提示不是一个有效的IP地址;第 2 次操作是在上海2地域,操作成功。
至于为什么会这样,你想知道原因?