使用 Python 调用云 API 实现批量共享自定义镜像

本文介绍如何通过 Python SDK 调用 API 接口,通过子用户批量共享云服务器自定义镜像。若您具备类似需求,或想了解如何使用 SDK,可参考本文进行操作。

前提条件

已创建子用户,并已具备云服务器及云 API 所有权限。

创建子用户请参见 新建子用户。

为子用户授予权限请参见 子用户权限设置,本文为子用户授予 QcloudCVMFullAccessQcloudAPIFullAccess 预设策略。

为子用户创建 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 json

from tencentcloud.common import credential

from tencentcloud.common.profile.client_profile import ClientProfile

from tencentcloud.common.profile.http_profile import HttpProfile

from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException

from 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%86

cred = credential.EnvironmentVariableCredential().get_credential()

httpProfile = HttpProfile()

httpProfile.endpoint = "cvm.tencentcloudapi.com"

clientProfile = ClientProfile()

clientProfile.httpProfile = httpProfile

# 举例为南京 请按实际情况进行修改 例如上海请修改为ap-shanghai

aria = '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。如下图所示:



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/58275.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[mysql]修改表和课后练习

目录 DDL数据定义语言 添加一个字段 添加一个字段到最后一个 添加到表中的第一个一个字段 选择其中一个位置: 修改一个字段:数据类型,长度,默认值(略) 重命名一个字段 删除一个字段 重命名表 删除表 清空表 DCL中事务相关内容 DCL中COMMIT和ROLLBACK的讲解 对比TR…

苍穹外卖 商家接单、拒单

OrderController /*** 接单** param ordersConfirmDTO* return*/PutMapping("/confirm")ApiOperation("接单")public Result confirm(RequestBody OrdersConfirmDTO ordersConfirmDTO) {orderService.confirm(ordersConfirmDTO);return Result.success();…

对于IIC的理解

IIC是一种通信协议 具体特点: 1:同步传输(不会因为中断而影响数据传输,但是会多一根传输线) 2:半双工 (少一根线,但是一次只能收或者发送数据) 对于IIC有两种模式&am…

Python异常检测 - LSTM(长短期记忆网络)

系列文章目录 Python异常检测- Isolation Forest(孤立森林) python异常检测 - 随机离群选择Stochastic Outlier Selection (SOS) python异常检测-局部异常因子(LOF)算法 Python异常检测- DBSCAN Python异常检测- 单类支持向量机(…

常见Transformer位置编码

文章目录 概述绝对位置编码相对位置编码T5 BiasALiBiRoPE 参考资料 概述 相对于RNN这样的序列模型来说,Transformer可并行是一个很大的优势,但可并行性带来一个问题,由于不是从前到后,所以模型对于位置信息是不敏感的。于是在Tra…

【IEEE出版 | EI稳定检索】2024智能机器人与自动控制国际学术会议 (IRAC 2024,11月29-12月1日)

2024智能机器人与自动控制国际学术会议 (IRAC 2024) 2024 International Conference on Intelligent Robotics and Automatic Control 官方信息 会议官网:www.icirac.org 2024 International Conference on Intelligent Robotics and Autom…

Golang | Leetcode Golang题解之第535题TinyURL的加密与解密

题目: 题解: import "math/rand"type Codec map[int]stringfunc Constructor() Codec {return Codec{} }func (c Codec) encode(longUrl string) string {for {key : rand.Int()if c[key] "" {c[key] longUrlreturn "http:/…

特朗普当选或将引爆比特币市场,赔率与预测平台暗示胜算更高

11月5日消息,去中心化预测市场平台Polymarket数据显示,前总统特朗普在2024年美国大选中的获胜概率已攀升至61.8%。据悉,Polymarket通过用户下注来反映市场对各类事件的预期。不同于传统民调,这类平台更关注资金流向和市场情绪的变…

pdf添加目录标签python(手动配置)

先安装对应的库: pip install pypdf 代码分为两个部分,一部分是config.py,代码如下: offset=10 catgorys=[("第一章",12),("第二章",45), ] 需要自己手动更改offset,和目录列表 下面是主要代码: import pypdf # import sys from config import…

影响神经网络速度的因素- FLOPs、MAC、并行度以及计算平台

影响神经网络速度的四个主要因素分别是 FLOPs(浮点操作数)、MAC(内存访问成本)、并行度以及计算平台。这些因素共同作用,直接影响到神经网络的计算速度和资源需求。 1. FLOPs(Floating Point Operations&a…

Streamlit 入门使用指南及与 FastAPI 的配合使用

Streamlit 入门使用指南及与 FastAPI 的配合使用 Streamlit 是一个用于构建数据应用的快速 Web 应用框架,它特别适合数据科学家和机器学习工程师,无需复杂的前端开发知识即可创建交互式应用。结合 FastAPI,可以轻松构建后端服务并将其与 Str…

【北京迅为】《STM32MP157开发板嵌入式开发指南》-第七十六章 C++入门

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐…

小菜家教平台:基于SpringBoot+Vue打造一站式学习管理系统

前言 现在已经学习了很多与Java相关的知识,但是迟迟没有进行一个完整的实践(之前这个项目开发到一半,很多东西没学搁置了,同时原先的项目中也有很多的问题),所以现在准备从零开始做一个基于SpringBootVue的…

【系统架构设计师】2022年真题论文: 论软件维护方法及其应用(包括解题思路和素材)

更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2022年 试题2)解题思路软件维护的类型软件维护的方法软件维护方法的应用案例论文素材参考真题题目(2022年 试题2) 软件维护是指在软件交付使用后,直至软件被淘汰的整个时间范围内,为了改正错误或满…

基于Matlab的语音识别

一、引言 语音识别技术是让计算机识别一些语音信号,并把语音信号转换成相应的文本或者命令的一种高科技技术。语音识别技术所涉及的领域非常广泛,包括信号处理、模式识别、人工智能等技术。近年来已经从实验室开始走向市场,渗透到家电、通信…

如何在 IntelliJ IDEA 中调整 `Ctrl+/` 快捷键生成注释的位置

前言 在使用 IntelliJ IDEA 编写代码时,注释是代码可读性和维护性的重要组成部分。IDEA 提供了快捷键 Ctrl/ 用于快速生成单行注释。然而,默认情况下,使用此快捷键生成的注释会出现在行首,导致注释与代码之间存在较大的空格&…

分布式和微服务系统区别

一、分布式是更广泛的概念,指将计算分布在多个物理节点上的系统。 适用于需要高可用性、高性能、可扩展性的系统。 应用场景:分布式数据库—数据高可用存储、分布式缓存—提升数据访问速度 分布式计算框架—大规模数据计算、分布式文件系统—海量数据的…

Next.js 版本从 15 降级至 14 的操作指南

清除node_modules文件夹:为确保安装环境的整洁性,请先删除node_modules文件夹。 更新package.json文件:在package.json中,将react、react-dom和next的版本号分别修改为18.xx、18.xx(注意:react-dom的版本通…

源鲁杯 2024 web(部分)

[Round 1] Disal F12查看: f1ag_is_here.php 又F12可以发现图片提到了robots 访问robots.txt 得到flag.php<?php show_source(__FILE__); include("flag_is_so_beautiful.php"); $a$_POST[a]; $keypreg_match(/[a-zA-Z]{6}/,$a); $b$_REQUEST[b];if($a>99999…

使用 ADB 在某个特定时间点点击 Android 设备上的某个按钮

前提条件 安装 ADB&#xff1a;确保你已经在计算机上安装了 Android SDK&#xff08;或单独的 ADB&#xff09;。并将其添加到系统环境变量中&#xff0c;以便你可以在命令行中运行 adb。 USB调试&#xff1a;确保 Android 设备已启用 USB 调试模式。这可以在设备的“设置” -…