mcpField
T
Tencent Cloud CLI

Tencent Cloud CLI

公式Agent-ready
tencentcloud.comクラウド・DevOps136tccli今日更新
リポジトリ公式サイト

Tencent Cloud CLI について

Tencent Cloud CLI はテンセントクラウド公式のツールで、テンセントクラウドサービス管理に使用します。設定プロファイルでのアカウント・地域の切り替え、JSON 出力による自動化、統合ヘルプシステムに対応しています。

主な機能

  1. 01テンセントクラウドのすべての主要サービス(CVM、データベース、ネットワーク等)の API を呼び出す
  2. 02設定プロファイルでアカウントと地域を素早く切り替える
  3. 03JSON 形式の出力がスクリプトや自動化統合をサポート
  4. 04各コマンドの詳細なドキュメントを提供する統合ヘルプシステム

活用シーン

  1. 01コーディングエージェントでテンセントクラウドリソースの作成・削除・設定を自動化する
  2. 02自動化スクリプトで CVM インスタンスやデータベースなどのリソースを管理する
  3. 03JSON 出力を使用してテンセントクラウドサービスを他のツールと統合する

インストール

OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。

$
pipx install tccli

インストール後にtccli --versionを実行して確認します。

コマンド例

よく使うコマンドを使う順に並べています。

01
tccli configure
02
tccli cvm DescribeInstances
03
tccli help

詳細

Tencent Cloud コマンドラインツールの概要

Tencent Cloud コマンドラインツール(TCCLI)へようこそ。TCCLI は、Tencent Cloud リソースを管理するための統合ツールです。Tencent Cloud コマンドラインツールを使用すると、Tencent Cloud API をすばやく簡単に呼び出して、Tencent Cloud リソースを管理できます。また、Tencent Cloud コマンドラインツールを利用して自動化やスクリプト処理を行い、さまざまな方法で組み合わせて再利用することもできます。

TCCLI のインストール

  1. Python 環境と Pip ツールをインストールします。Tencent Cloud コマンドラインツールをインストールする前に、システムに Python 環境と Pip ツールがインストールされていることを確認してください。Python のバージョンは 2.7 以上である必要があります。詳細については、Python のホームページとpip のホームページを参照してください。
  2. TCCLI は TencentCloudApi Python SDK に依存しています。TencentCloudApi Python SDK のバージョンが、インストールする TCCLI のバージョンより古い場合、TCCLI のインストール時に TencentCloudApi Python SDK が自動的にアップグレードされます。
  3. 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
  1. インストール完了後、tccli --version を実行してインストールが成功したことを確認します。
  2. 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 を利用するために必要な事前設定を行う必要があります。

  1. 対話モードでは、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 です。

  1. コマンドラインモードでは、自動化スクリプト内で情報を設定できます。
# 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 を実行してください。

  1. 複数アカウントのサポート: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
  1. 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 > 一時キー > 永続キーです。

  1. インスタンスロール

インスタンスロールの概念については、Tencent Cloud インスタンスロールを参照してください。

インスタンスにロールをバインドすると、インスタンスから関連するメタデータインターフェースにアクセスして一時認証情報を取得できます。SDK は一時認証情報を自動的に更新します。関連コマンドは次のとおりです。

使用方法:

  • コマンドラインに入力
tccli cvm DescribeRegions --use-cvm-role
  1. ロール

ロールの概念については、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 を設定します。

  1. TKE OIDC
  • 環境変数 環境変数 TKE_REGION、TKE_PROVIDER_ID、TKE_WEB_IDENTITY_TOKEN_FILE、TKE_ROLE_ARN を設定します。
  1. 一時キー
  • コマンドラインに入力
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"
}
  1. 永続キー
  • コマンドラインに入力
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 官方文档。

  1. 不加任何过滤时的输出(以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"
}
  1. 只看某个字段。
[root@VM_180_248_centos ~]# tccli cvm DescribeZones  --filter TotalCount
4
  1. 指定某个数组类型对象的第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": "广州一区"
}
  1. 指定数组类型对象下所有某个名称的子对象的某个字段。
[root@VM_180_248_centos ~]# tccli cvm DescribeZones  --filter ZoneSet[*].ZoneName
[
    "广州一区",
    "广州二区",
    "广州三区",
    "广州四区"
]
  1. 过滤数组里的子对象,同时还以新的名称展示。 注意:这里需要将说明过滤行为的内容用单引号包裹起来。
[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"
    }
]
  1. 高级过滤。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
}

コメント