Tencent Cloud CLI について
Tencent Cloud CLI はテンセントクラウド公式のツールで、テンセントクラウドサービス管理に使用します。設定プロファイルでのアカウント・地域の切り替え、JSON 出力による自動化、統合ヘルプシステムに対応しています。
主な機能
- 01テンセントクラウドのすべての主要サービス(CVM、データベース、ネットワーク等)の API を呼び出す
- 02設定プロファイルでアカウントと地域を素早く切り替える
- 03JSON 形式の出力がスクリプトや自動化統合をサポート
- 04各コマンドの詳細なドキュメントを提供する統合ヘルプシステム
活用シーン
- 01コーディングエージェントでテンセントクラウドリソースの作成・削除・設定を自動化する
- 02自動化スクリプトで CVM インスタンスやデータベースなどのリソースを管理する
- 03JSON 出力を使用してテンセントクラウドサービスを他のツールと統合する
インストール
OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。
インストール後にtccli --versionを実行して確認します。
コマンド例
よく使うコマンドを使う順に並べています。
詳細
Tencent Cloud コマンドラインツールの概要
Tencent Cloud コマンドラインツール(TCCLI)へようこそ。TCCLI は、Tencent Cloud リソースを管理するための統合ツールです。Tencent Cloud コマンドラインツールを使用すると、Tencent Cloud API をすばやく簡単に呼び出して、Tencent Cloud リソースを管理できます。また、Tencent Cloud コマンドラインツールを利用して自動化やスクリプト処理を行い、さまざまな方法で組み合わせて再利用することもできます。
TCCLI のインストール
- Python 環境と Pip ツールをインストールします。Tencent Cloud コマンドラインツールをインストールする前に、システムに Python 環境と Pip ツールがインストールされていることを確認してください。Python のバージョンは 2.7 以上である必要があります。詳細については、Python のホームページとpip のホームページを参照してください。
- TCCLI は TencentCloudApi Python SDK に依存しています。TencentCloudApi Python SDK のバージョンが、インストールする TCCLI のバージョンより古い場合、TCCLI のインストール時に TencentCloudApi Python SDK が自動的にアップグレードされます。
- TCCLI をインストールするには、次のコマンドを実行します。
pip install tccli
MacOS ユーザーは、homebrew を使用して tccli をインストールすることもできます。
次のコマンドを実行する前に、homebrew をインストールする必要があります。インストール方法については、homebrew 公式サイトを参照してください。
brew tap tencentcloud/tccli
brew install tccli
注意:3.0.252.3 未満のバージョンからアップグレードする場合は、次のコマンドを実行する必要があります。
sudo pip uninstall tccli jmespath
sudo pip install tccli
- インストール完了後、tccli --version を実行してインストールが成功したことを確認します。
- Linux 環境の場合は、次のコマンドで自動補完機能を有効にできます。
complete -C 'tccli_completer' tccli
コマンドcomplete -C 'tccli_completer' tccliを環境変数(/etc/profile)に追加すると、自動補完機能を常に有効にできます。
Docker での使用
docker run --rm -it tencentcom/tencentcloud-cli --version
docker run --rm -it tencentcom/tencentcloud-cli help
CNB での使用
# .cnb.yml
main:
push:
- stages:
- name: run with tencentcloud-cli
image: tencentcom/tencentcloud-cli
commands: |
tccli --version
tccli help
TCCLI の設定
Tencent Cloud コマンドラインツールを使用するには、Cloud API を利用するために必要な事前設定を行う必要があります。
- 対話モードでは、tccli configure コマンドを実行して、すばやく設定できます。
$ tccli configure
# 方括号内为已配置密钥的掩码后四位;请在冒号后输入完整密钥,不要输入尖括号。
TencentCloud API secretId [*abcd]:<YOUR_SECRET_ID>
TencentCloud API secretKey [*abcd]:<YOUR_SECRET_KEY>
region: ap-guangzhou
output[json]:
secretId:Cloud API キーの SecretId です。 secretIKey:Cloud API キーの SecretKey です。 region:クラウド製品のリージョンです。利用可能な region については、該当する製品ページを参照してください。 output:省略可能なパラメーターです。リクエストのレスポンス形式を指定します。[json table text] の 3 種類に対応しており、デフォルトは json です。 詳細については、tccli configure help を実行してください。
注意:環境変数で関連する設定が定義されている場合は、設定ファイルよりも優先されます。該当する環境変数は TENCENTCLOUD_SECRET_ID、TENCENTCLOUD_SECRET_KEY、TENCENTCLOUD_REGION です。
- コマンドラインモードでは、自動化スクリプト内で情報を設定できます。
# set子命令可以设置某一配置,也可同时配置多个。
tccli configure set secretId <YOUR_SECRET_ID>
tccli configure set region ap-guangzhou output json language zh-CN
# set-root-domain命令可以将配置文件中的endpoint的根域名全部设置为同一值。
tccli configure set-root-domain internal.tencentcloudapi.com
# get子命令用于获取配置信息。
tccli configure get secretKey
secretKey = <YOUR_SECRET_KEY>
# list子命令打印所有配置信息。
tccli configure list
credential:
secretId = <YOUR_SECRET_ID>
secretKey = <YOUR_SECRET_KEY>
configure:
region = ap-guangzhou
output = json
language = zh-CN
# remove子命令删除配置文件
tccli configure remove
詳細については、tccli configure [list get set remove] help を実行してください。
- 複数アカウントのサポート:TCCLI は複数アカウントに対応しているため、複数の設定を同時に利用できます。
在交互模式中指定账户名test。
$ tccli configure --profile test
# 方括号内为已配置密钥的掩码后四位;请在冒号后输入完整密钥,不要输入尖括号。
TencentCloud API secretId [*abcd]:<YOUR_SECRET_ID>
TencentCloud API secretKey [*abcd]:<YOUR_SECRET_KEY>
region: ap-guangzhou
output[json]:
# set/get/list/remove子命令指定账户名test。
tccli configure set region ap-guangzhou output json language zh-CN --profile test
tccli configure get secretKey --profile test
tccli configure list --profile test
tccli configure remove --profile test
tccli configure set-root-domain internal.tencentcloudapi.com --profile test
在调用接口时指定账户(以cvm DescribeZones接口为例)。
tccli cvm DescribeZones --profile test
コマンド入力時にアカウント名を手動で指定したくない場合は、環境変数も設定できます。tccli は環境変数から指定された profile を読み取ります。
export TCCLI_PROFILE=test
- HTTPS プロキシを設定すると、tccli がプロキシ経由で API を呼び出すようにできます。
環境変数で HTTPS プロキシを設定します。
# 在Linux/Unix和macOS中执行如下类似命令配置环境变量
export https_proxy=https://192.168.1.1:1111
export https_proxy=https://myproxy.com:1111
# 在Windows的终端中执行如下类似命令配置环境变量
setx http_proxy=https://192.168.1.1:1111
set http_proxy=https://myproxy.com:1111
# setx表示设置永久环境变量,设置后重启终端生效
'--https-proxy' オプションを直接使用して HTTPS プロキシを設定することもできます。
# 例如
tccli cvm DescribeRegions --https-proxy https://192.168.1.1:1111
認証情報の管理
Tencent Cloud コマンドラインツール(TCCLI)は、現在、以下の方法で認証情報を管理できます。認証情報の取得優先順位は、インスタンスロール > ロール > TKE OIDC > 一時キー > 永続キーです。
- インスタンスロール
インスタンスロールの概念については、Tencent Cloud インスタンスロールを参照してください。
インスタンスにロールをバインドすると、インスタンスから関連するメタデータインターフェースにアクセスして一時認証情報を取得できます。SDK は一時認証情報を自動的に更新します。関連コマンドは次のとおりです。
使用方法:
- コマンドラインに入力
tccli cvm DescribeRegions --use-cvm-role
- ロール
ロールの概念については、Tencent Cloud ロールの概要を参照してください。
この方法を使用するには、Tencent Cloud アクセス管理コンソールでロールを作成する必要があります。作成手順については、Tencent Cloud ロールの作成を参照してください。
ロールを作成した後、次の方法で一時認証情報を取得できます。関連コマンドは次のとおりです。
- コマンドラインに入力
tccli cvm DescribeRegions --secretId xx --secretKey xx --role-arn xx --role-session-name
- 環境変数
環境変数 TENCENTCLOUD_SECRET_ID、TENCENTCLOUD_SECRET_KEY、TENCENTCLOUD_ROLE_ARN、TENCENTCLOUD_ROLE_SESSION_NAME を設定します。
- TKE OIDC
- 環境変数
環境変数
TKE_REGION、TKE_PROVIDER_ID、TKE_WEB_IDENTITY_TOKEN_FILE、TKE_ROLE_ARNを設定します。
- 一時キー
- コマンドラインに入力
tccli cvm DescribeRegions --secretId xx --secretKey xx --token xx
-
環境変数 環境変数
TENCENTCLOUD_SECRET_ID、TENCENTCLOUD_SECRET_KEY、TENCENTCLOUD_TOKENを設定します。 -
xxx.credential ファイル
{
"secretId": "AKIDxxxxxxxxxxxxxxxxxxxxQsPk",
"secretKey": "QgoxxxxxxxxxxxxxxxxgvW4",
"token": "xxxxxxxxxxxxxxxxxx"
}
- 永続キー
- コマンドラインに入力
tccli cvm DescribeRegions --secretId xx --secretKey xx
-
環境変数 環境変数
TENCENTCLOUD_SECRET_ID、TENCENTCLOUD_SECRET_KEYを設定します。 -
xxx.credential ファイル
{
"secretId": "AKIDxxxxxxxxxxxxxxxxxxxxQsPk",
"secretKey": "QgoxxxxxxxxxxxxxxxxgvW4"
}
TCCLI の使用
Tencent Cloud コマンドラインツールには、Cloud API に対応する Tencent Cloud のすべての製品が統合されており、コマンドラインから Tencent Cloud 製品の設定と管理を行えます。TCCLI を使ったクラウドサーバーの作成や操作、CBS ディスクの作成や使用状況の確認、VPC ネットワークの作成や VPC ネットワークへのリソース追加など、コンソールで実行できる操作はすべて、Tencent Cloud コマンドラインツールからコマンドを実行して行えます。
- tccli cvm DescribeInstances コマンドで、現在のアカウントにあるクラウドサーバーを確認できます。
- tccli cbs DescribeDisks コマンドで、CBS ディスクの一覧を確認できます。
cvm を 1 台作成する例です(demo では、単純型以外のパラメーターを標準の JSON 形式で指定する必要があります)。
tccli cvm RunInstances --InstanceChargeType POSTPAID_BY_HOUR --InstanceChargePrepaid '{"Period":1,"RenewFlag":"DISABLE_NOTIFY_AND_MANUAL_RENEW"}'
--Placement '{"Zone":"ap-guangzhou-2"}' --InstanceType S1.SMALL1 --ImageId img-8toqc6s3 --SystemDisk '{"DiskType":"CLOUD_BASIC", "DiskSize":50}'
--InternetAccessible '{"InternetChargeType":"TRAFFIC_POSTPAID_BY_HOUR","InternetMaxBandwidthOut":10,"PublicIpAssigned":true}' --InstanceCount 1
--InstanceName TCCLI-TEST --LoginSettings '{"Password":"isd@cloud"}' --SecurityGroupIds '["sg-0rszg2vb"]' --HostName TCCLI-HOST-NAME1
その他の機能については、tccli help で対応製品を確認し、tccli cvm help(cvm を例とします)で製品が対応するインターフェースを確認できます。tccli cbs DescribeDisks help(cbs 製品の DescribeDisks インターフェースを例とします)で、インターフェースが対応するパラメーターを確認できます。詳細情報を確認するには、help の後に '--detail' を追加します。たとえば、tccli help --detail、tccli cvm help --detail、tccli cbs DescribeDisks help --detail を実行すると、それぞれの詳細情報を確認できます。
戻り値
バージョン 3.0.1009.1 以降では、コマンドの実行に成功すると 0 が返され、失敗すると 0 以外の値が返されます。
高度な機能
複数バージョンのインターフェースへのアクセス
製品によっては複数バージョンのインターフェースが存在する場合があります。TCCLI はデフォルトで推奨バージョンのインターフェースにアクセスします。別のバージョンのインターフェースにアクセスする場合は、次の方法を使用できます(cvm を例とします)。
# 设置cvm产品默认使用版本:2017-03-12。
tccli configure set cvm.version 2017-03-12
# 在实时使用时指定版本号。
tccli cvm help --version 2017-03-12
tccli cvm DescribeZones help --version 2017-03-12
tccli cvm DescribeZones --version 2017-03-12
出力言語の指定
共通パラメーター language を指定すると、インターフェースのレスポンス言語を指定できます。language パラメーターは設定ファイルでも設定でき、デフォルト値は "zh-CN" です。
# 在实时使用时指定语言
tccli cvm DescribeZones --language zh-CN
tccli cvm DescribeZones --language en-US
最寄りの接続エンドポイント(Endpoint)の指定
TCCLI はデフォルトで最寄りのインターフェースポイントにリクエストを送信してサービスにアクセスします。製品ごとに独自の Endpoint を指定することもできます(cvm を例とします)。
# 设置cvm产品默认endpoint。
tccli configure set cvm.endpoint cvm.ap-guangzhou.tencentcloudapi.com
# 调用时实时指定。
tccli cvm DescribeZones --endpoint cvm.ap-guangzhou.tencentcloudapi.com
返回结果过滤
TCCLI 支持 JMESPath ,以下仅为部分示例,全部过滤能力请参考 JMESPath 官方文档。
- 不加任何过滤时的输出(以cvm DescribeZones接口的返回为例)。
[root@VM_180_248_centos ~]# tccli cvm DescribeZones
{
"TotalCount": 4,
"ZoneSet": [
{
"ZoneState": "AVAILABLE",
"ZoneId": "100001",
"Zone": "ap-guangzhou-1",
"ZoneName": "广州一区"
},
{
"ZoneState": "AVAILABLE",
"ZoneId": "100002",
"Zone": "ap-guangzhou-2",
"ZoneName": "广州二区"
},
{
"ZoneState": "AVAILABLE",
"ZoneId": "100003",
"Zone": "ap-guangzhou-3",
"ZoneName": "广州三区"
},
{
"ZoneState": "AVAILABLE",
"ZoneId": "100004",
"Zone": "ap-guangzhou-4",
"ZoneName": "广州四区"
}
],
"RequestId": "4fd313a6-155f-4c7a-bf86-898c02fcae02"
}
- 只看某个字段。
[root@VM_180_248_centos ~]# tccli cvm DescribeZones --filter TotalCount
4
- 指定某个数组类型对象的第N个子对象的信息。
注意:Mac OS 系统使用如下命令可能会报错
zsh: no matches found: xxx,这时需要将说明过滤行为的内容用单引号包裹起来
[root@VM_180_248_centos ~]# tccli cvm DescribeZones --filter ZoneSet[0]
{
"ZoneState": "AVAILABLE",
"ZoneId": "100001",
"Zone": "ap-guangzhou-1",
"ZoneName": "广州一区"
}
- 指定数组类型对象下所有某个名称的子对象的某个字段。
[root@VM_180_248_centos ~]# tccli cvm DescribeZones --filter ZoneSet[*].ZoneName
[
"广州一区",
"广州二区",
"广州三区",
"广州四区"
]
- 过滤数组里的子对象,同时还以新的名称展示。 注意:这里需要将说明过滤行为的内容用单引号包裹起来。
[root@VM_180_248_centos ~]# tccli cvm DescribeZones --filter 'ZoneSet[*].{name:ZoneName, id:ZoneId}'
[
{
"name": "广州一区",
"id": "100001"
},
{
"name": "广州二区",
"id": "100002"
},
{
"name": "广州三区",
"id": "100003"
},
{
"name": "广州四区",
"id": "100004"
}
]
- 高级过滤。CVM 的 DescribeInstances 接口,返回结构体中 InstanceSet 是一个数组,里面每个元素都是一个实例的信息。假设我们想要获取中国香港地域每个实例的唯一标识符 InstanceId,实例名称 InstanceName,并且过滤特定标签。标签是一个数组,里面每个元素是一个字典,键值 Key 是标签名,键值 Value 是标签值,我们想要获取标签名是
app的标签值。最后结果打印文本。注意,过滤的标签值实际为数组,我们只取第一个,确保不会因为是数组而导致换行。此外,复杂的命令行语句编写困难,维护不便,建议使用 SDK 封装为程序调用更为合理。
tccli cvm DescribeInstances --region ap-hongkong --filter 'InstanceSet[].[InstanceId,InstanceName,Tags[?Key==`app`].Value|[0]]' --output text
ins-6xe51ktg 未命名 elastic-search
结果轮询
可以使用'--waiter'参数来轮询实例的信息直到出现指定的状态
# 例如执行如下命令,程序将一定的时间间隔对实例的状态进行轮询,直到实例的状态为'RUNNING'或者超时为止,`--region`的值需改为您的实例所在的地域
tccli cvm DescribeInstancesStatus --region ap-hongkong --waiter "{'expr':'InstanceStatusSet[0].InstanceState','to':'RUNNING'}"
# 您可以自己指定超时的时间和睡眠的时间,如下面的例子,设定的超时时间为180秒,睡眠的时间为5秒。
tccli cvm DescribeInstancesStatus --region ap-hongkong --waiter "{'expr':'InstanceStatusSet[0].InstanceState','to':'RUNNING','timeout':180,'interval':5}"
使用'--waiter'参数时,必须指定一以下两个参数:
- expr: 指定被查询的字段,使用jmespath来查找被指定的字段的值
- to: 被轮询的字段的目标值
可选子参数:
- timeout: 轮询的超时时间(s)
- inaterval: 进程睡眠的时间(s)
您可以在配置文件中设置可选子参数的值,例如
# 在default.configure文件中,您可以添加如下参数,设置系统超时时间为180s,睡眠时间为5s
"waiter": {
"interval": 5,
"timeout": 180
},
输出入参骨架到json文件
[root@VM_180_248_centos ~]# tccli cvm RunInstances --generate-cli-skeleton > /tmp/RunInstances.json
从json文件读取参数,--cli-input-json后接file://+文件路径
[root@VM_180_248_centos ~]# tccli cvm RunInstances --cli-input-json file:///tmp/RunInstances.json
{
"RequestId": "20e2b42d-3260-4750-9293-79116208330e",
"InstanceIdSet": null
}