本文介绍如何通过 Python SDK 调用 API 接口,通过子用户批量共享云服务器自定义镜像。若您具备类似需求,或想了解如何使用 SDK,可参考本文进行操作。
前提条件
已创建子用户,并已具备云服务器及云 API 所有权限。创建子用户请参见 新建子用户。为子用户授予权限请参见 子用户权限设置,本文为子用户授予 QcloudCVMFullAccess
及 QcloudAPIFullAccess
预设策略。为子用户创建 SecretId 与 SecretKey,操作步骤请参见 子账号访问密钥管理。请记录并妥善保管。已具备待共享自定义镜像。如需创建,请参见 创建自定义镜像。
操作步骤
安装 Python
1. 执行以下命令查看当前云服务器是否已经安装 Python 3.6+版本,若已安装,则可以跳过安装步骤。
python --version
2. 若您的云服务器没有安装 Python。CentOS 操作系统的云服务器可以执行以下命令安装。
yum install python3
Ubuntu/Debian 操作系统的云服务器可以执行以下命令安装。
sudo apt install python3
其他操作系统您可以前往 Python 官网,下载 Python 3.6+版本并上传至 Linux 服务器中,解压并安装 Python。3. 安装完成后,请执行以下命令核实 Python 版本。
python --version
创建代码
1. 在调用机器上新建 test.py
文件,并输入以下代码。
import jsonfrom tencentcloud.common import credentialfrom tencentcloud.common.profile.client_profile import ClientProfilefrom tencentcloud.common.profile.http_profile import HttpProfilefrom tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKExceptionfrom tencentcloud.cvm.v20170312 import cvm_client, models
# 默认读取环境变量 TENCENTCLOUD_SECRET_ID 和 TENCENTCLOUD_SECRET_KEY 获取 secretId 和 secretKey# 更多凭证管理方式,请参考:https://github.com/TencentCloud/tencentcloud-sdk-python#%E5%87%AD%E8%AF%81%E7%AE%A1%E7%90%86cred = credential.EnvironmentVariableCredential().get_credential()httpProfile = HttpProfile()httpProfile.endpoint = "cvm.tencentcloudapi.com"clientProfile = ClientProfile()clientProfile.httpProfile = httpProfile
# 举例为南京 请按实际情况进行修改 例如上海请修改为ap-shanghaiaria = 'ap-nanjing'client = cvm_client.CvmClient(cred,aria, clientProfile)def img_share(img_id,img_name,accountids): try: req1 = models.ModifyImageSharePermissionRequest() params1 = { "ImageId": img_id, "AccountIds": accountids, "Permission": "SHARE" } req1.from_json_string(json.dumps(params1))
resp1 = client.ModifyImageSharePermission(req1) response1 = json.loads(resp1.to_json_string()) print(img_name,'共享成功!',response1) except TencentCloudSDKException as err: print(img_name,'共享失败!',err)try: req = models.DescribeImagesRequest() params = { "Filters": [ { "Name": "image-type", "Values": ["PRIVATE_IMAGE"] } ], "Limit": 100 } req.from_json_string(json.dumps(params)) resp = client.DescribeImages(req) response = json.loads(resp.to_json_string()) img_num = response["TotalCount"] print('正在获取镜像列表....') share_config = input('1.共享所有镜像\n\n2.让我决定每一个镜像\n\n输入1或2并按回车 默认为2:') or '2' accountids = input('请输入被共享人uin 多个以英文逗号隔开:').split(",") for i in range(img_num): basic = response['ImageSet'][i] img_id = basic['ImageId'] img_name = basic['ImageName'] if share_config == '1': img_share(img_id,img_name,accountids) elif share_config == '2': print('镜像id:',img_id,'镜像名称:',img_name) share_choice = input('是否共享此镜像 y/n:') or 'y' if share_choice == 'y': img_share(img_id,img_name,accountids) elif share_choice == 'n': continue else: print('请输入正确的选项!!') else: print('请输入正确的选项!!')
except TencentCloudSDKException as err: print(err)
SecretId 与 SecretKey:请替换为已在 前提条件 中创建的子用户 SecretId 与 SecretKey。aria:请替换为待共享自定义镜像实际所在地域。地域列表可参见 地域列表。2. 在调用机器的命令行中执行以下命令,运行代码。
python test.py
根据屏幕提示输入1或2,同时共享所有镜像或依次选择共享镜像,并输入对端账号 ID。您可通知对方前往 账号信息 页面获取。
共享成功后,将返回对应数量的 RequestID。如下图所示:
相关接口文档
本文代码调用接口为 查看镜像列表 及 修改镜像分享信息。
对腾讯云CVM服务器有疑惑?想了解产品收费? 联系解决方案专家
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠
阿里云解决方案也看看?: 点击对比阿里云的解决方案
本文来自投稿,不代表新手站长_郑州云淘科技有限公司立场,如若转载,请注明出处:https://www.cnzhanzhang.com/16973.html