tencent cloud

Cloud Virtual Machine

最新情報とお知らせ
製品情報
パブリックイメージの更新情報
OSの公式サポート終了計画
製品に関するお知らせ
製品概要
CVM概要
製品の強み
基本概念
リージョンとゾーン
初心者ガイド
Service Regions and Service Providers
製品の課金
課金概要
課金モデル
課金項目
課金モデルの変更
購入インスタンス
仕様変更の料金説明
料金未払いに関する説明
クイックスタート
カスタム設定によるLinuxインスタンスの購入
カスタム設定によるWindowsインスタンスの購入
ユーザーガイド
操作ガイド一覧
ご利用制限一覧
インスタンス
スポットインスタンス
リザーブドインスタンス
イメージ
ストレージ
バックアップと復元
ネットワーク
セキュリティ
パスワード/キー
監視とアラート
運用管理
便利な機能
サーバー移行
オンライン移行
オフライン移行
移行に関するご相談
トラブルシューティング
CVMインスタンスにログインできない原因や対処法
Windowsインスタンスのログインに関する障害
Linuxインスタンスのログインに関する障害
その他のインスタンスログインに関する障害
インスタンス実行時の障害
Linuxインスタンスのメモリに関する障害
ネットワーク障害
実践チュートリアル
CVMの選定ガイド
環境構築
ウェブサイトの構築
アプリケーションの構築
可視化ページの構築
ローカルファイルをCVMへアップロード
ネットワークパフォーマンステスト
その他の実践チュートリアル
API リファレンス
History
Introduction
API Category
Making API Requests
Region APIs
Instance APIs
Cloud Hosting Cluster APIs
Image APIs
Instance Launch Template APIs
Placement Group APIs
Key APIs
Security Group APIs
Network APIs
Data Types
Error Codes
セキュリティとコンプライアンス
Cloud Access Management(CAM)
ネットワーク
よくあるご質問
リージョンとアベイラビリティゾーンに関するご質問
課金クラス
インスタンスに関するご質問
ストレージに関するご質問
イメージに関するご質問
サーバー移行について
ネットワークに関するご質問
セキュリティに関するご質問
OSに関するご質問
運用と監視に関するご質問
CAMに関するご質問
NTPサービスに関するご質問
適用シナリオに関するご質問
Agreements
CVM Service Level Agreements
Red Hat Enterprise Linux Image Service Agreement
Public IP Service Level Agreement
用語集
ドキュメントCloud Virtual Machine実践チュートリアルその他の実践チュートリアルPythonによるクラウドAPI呼び出しでカスタムイメージを一括共有

PythonによるクラウドAPI呼び出しでカスタムイメージを一括共有

PDF
フォーカスモード
フォントサイズ
最終更新日: 2023-06-25 18:00:02

操作步骤

このドキュメントでは、Python SDKを使用してAPIを呼び出し、サブユーザーを通じてCVMのカスタムイメージを一括でまとめて共有する方法について説明します。同様のニーズがある場合、またはSDKの使用方法を知りたい場合は、このドキュメントをご覧ください。

前提条件

サブユーザーを作成しました。そのサブユーザーは CVM およびクラウド APIに対するすべての権限を持ちます。
サブユーザーの作成方法については、 サブユーザーの作成 をご参照ください。
サブユーザーに権限を付与する方法については、サブユーザー権限の設定 をご参照ください。このドキュメントでは、サブユーザーに QcloudCVMFullAccessQcloudAPIFullAccess のプリセットポリシーを付与します。
サブユーザーの SecretId と SecretKey を作成します。操作手順については、アクセスキー をご参照ください。作成したSecretId と SecretKeyを適切に保存する必要があります。
共有するカスタムイメージがあります。カスタムイメージを作成する必要がある場合は、 カスタムイメージの作成 をご参照ください。

操作手順

Pythonのインストール

1. 次のコマンドを実行して、Python 3.6 以降が現在のCVMインスタンスにインストールされているかどうかを確認します。インストールされている場合は、このステップをスキップしてください。
python --version
2. CVMインスタンスに Python がインストールされていない場合。
CentOS 上の CVM インスタンスの場合は、次のコマンドを実行して Python をインストールします。
yum install python3
Ubuntu または Debian上のCVM インスタンスの場合は、次のコマンドを実行して Python をインストールします。
sudo apt install python3
他のOS上の CVM インスタンスの場合は、 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\\n1 または 2 を入力して Enter キーを押します。 デフォルト値: 2:') or '2'
accountids = input('イメージを共有するユーザーの UIN を入力し、複数の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. ターゲットマシンで次のコマンドを実行してコードを実行します。
画面上の指示に従って1または2を入力(すべてのイメージを同時に共有するか、イメージを 1 つずつ選択して共有するかを選択)、ピアアカウントIDを入力します。ピアアカウント所有者に アカウント情報 ページに移動してアカウントIDを取得するように通知できます。 イメージが正常に共有されると、対応する数の RequestID が返されます。

関連する API ドキュメント

このドキュメントで使用されるAPIは DescribeImagesModifyImageSharePermissionです。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック