Package: tccli
命令行工具简介欢迎使用腾讯云命令行工具(TCCLI)，TCCLI是管理腾讯云资源的统一工具。通过腾讯云命令行工具，您可以快速轻松的调用腾讯云 API来管理您的腾讯云资源。您还可以基于腾讯云的命令行工具来做自动化和脚本处理，能够以更多样的方式进行组合和重用。安装TCCLI安装 Python 环境和 Pip 工具，安装命令行工具前请确保您的系统已经安装了 Python 环境和 Pip 工具。注意python版本必须为2.7及以上版本,更多内容请参考python主页和pip主页。TCCLI依赖于TencentCloudApi Python SDK，如果TencentCloudApi Python SDK的版本号小于要安装TCCLI版本号，在安装TCCLI时会自动升级TencentCloudApi Python SDK。安装TCCLI，执行以下命令：pipinstalltccli如果是MacOS用户，您还可以使用homebrew来安装tccli：执行如下命令之前您需要先安装homebrew，安装的方法可以参考homebrew官网brewtaptencentcloud/tccli
brewinstalltccli注意：如果是从3.0.252.3以下版本升级的需要执行sudopipuninstalltcclijmespath
sudopipinstalltccli安装完成之后执行tccli --version检测是否安装成功。如果您的环境是linux环境，您可以通过以下命令启动自动补全功能：complete-C'tccli_completer'tccli可以将命令complete -C 'tccli_completer' tccli加入环境变量(/etc/profile)中，使自动补全功能一直有效。在 Docker 上使用dockerrun--rm-ittencentcom/tencentcloud-cli--version
dockerrun--rm-ittencentcom/tencentcloud-clihelp在 Coding-CI 上使用master:push:-stages:-name:run with tencentcloud-cliimage:tencentcom/tencentcloud-clicommands:|tccli --versiontccli help配置TCCLI要使用腾讯云命令行工具，您还需要进行一些初始化配置，使其完成使用 云 API的必要前提条件。交互模式，您可以通过tccli configure命令进入交互模式快速配置。$tccliconfigure
TencentCloudAPIsecretId[*afcQ]:AKIDwLw1234MMfPRle2g9nR2OTI787aBCDP
TencentCloudAPIsecretKey[*ArFd]:OxXj7khcV1234dQSSYNABcdCc1LiArFd
region:ap-guangzhou
output[json]:secretId: 云 API 密钥SecretId。
secretIKey: 云 API 密钥SecretKey。
region： 云产品地域，请移驾对应产品页面获取可用的region。
output： 可选参数，请求回包输出格式，支持[json table text]三种格式，默认为json。
更多信息请执行tccli configure help查看。注意：如果环境变量定义了相关配置，则会优先于配置文件生效。分别为 TENCENTCLOUD_SECRET_ID，TENCENTCLOUD_SECRET_KEY，TENCENTCLOUD_REGION。命令行模式，通过命令行模式您可以在自动化脚本中配置您的信息。# set子命令可以设置某一配置，也可同时配置多个。tccliconfiguresetsecretIdAKIDwLw1234MMfPRle2g9nR2OTI787aBCDP
tccliconfiguresetregionap-guangzhououtputjsonlanguagezh-CN# get子命令用于获取配置信息。tccliconfiguregetsecretKeysecretKey=OxXj7khcV1234dQSSYNABcdCc1LiArFd# list子命令打印所有配置信息。tccliconfigurelist
credential:secretId=AKIDwLw1234MMfPRle2g9nR2OTI787aBCDPsecretKey=OxXj7khcV1234dQSSYNABcdCc1LiArFd
configure:region=ap-guangzhououtput=jsonlanguage=zh-CN# remove子命令删除配置文件tccliconfigureremove更多信息请执行tccli configure [list get set remove] help查看。多账户支持，TCCLI支持多账户，方便您多种配置同时使用。在交互模式中指定账户名test。
$tccliconfigure--profiletestTencentCloudAPIsecretId[*BCDP]:AKIDwLw1234MMfPRle2g9nR2OTI787aBCDP
TencentCloudAPIsecretKey[*ArFd]:OxXj7khcV1234dQSSYNABcdCc1LiArFd
region:ap-guangzhou
output[json]:# set/get/list/remove子命令指定账户名test。tccliconfiguresetregionap-guangzhououtputjsonlanguagezh-CN--profiletesttccliconfiguregetsecretKey--profiletesttccliconfigurelist--profiletesttccliconfigureremove--profiletest在调用接口时指定账户(以cvmDescribeZones接口为例)。
tcclicvmDescribeZones--profiletest如果不希望输入命令是手动指定账户名，还可以设置环境变量，tccli能从环境变量中读取指定的profileexportTCCLI_PROFILE=test您可以配置https代理，让tccli通过代理调用API在环境变量中配置https代理# 在Linux/Unix和macOS中执行如下类似命令配置环境变量exporthttps_proxy=https://192.168.1.1:1111exporthttps_proxy=https://myproxy.com:1111# 在Windows的终端中执行如下类似命令配置环境变量setxhttp_proxy=https://192.168.1.1:1111sethttp_proxy=https://myproxy.com:1111# setx表示设置永久环境变量，设置后重启终端生效您也可以直接使用'--https-proxy'选项设置https代理# 例如tcclicvmDescribeRegions--https-proxyhttps://192.168.1.1:1111凭证管理腾讯云命令行工具（TCCLI）目前支持以下几种方式进行凭证管理，获取凭证的优先级：实例角色 > 角色 > TKE OIDC > 临时密钥 > 永久密钥：实例角色有关实例角色的相关概念请参阅：腾讯云实例角色在您为实例绑定角色后，您可以在实例中访问相关元数据接口获取临时凭证，SDK 会自动刷新临时凭证。相关命令如下：使用方式：命令行输入tcclicvmDescribeRegions--use-cvm-role角色有关角色的相关概念请参阅：腾讯云角色概述要使用此种方式，您必须在腾讯云访问管理控制台上创建了一个角色，具体创建过程请参阅：腾讯云角色创建在您拥有角色后，可以通过如下方式获取临时凭证，相关命令如下：命令行输入tcclicvmDescribeRegions--secretIdxx--secretKeyxx--role-arnxx--role-session-name环境变量配置环境变量：TENCENTCLOUD_SECRET_ID,TENCENTCLOUD_SECRET_KEY,TENCENTCLOUD_ROLE_ARN,TENCENTCLOUD_ROLE_SESSION_NAMETKE OIDC环境变量
配置环境变量：TKE_REGION,TKE_PROVIDER_ID,TKE_WEB_IDENTITY_TOKEN_FILE,TKE_ROLE_ARN临时密钥命令行输入tcclicvmDescribeRegions--secretIdxx--secretKeyxx--tokenxx环境变量
配置环境变量：TENCENTCLOUD_SECRET_ID,TENCENTCLOUD_SECRET_KEY,TENCENTCLOUD_TOKENxxx.credential文件{"secretId":"AKIDxxxxxxxxxxxxxxxxxxxxQsPk","secretKey":"QgoxxxxxxxxxxxxxxxxgvW4","token":"xxxxxxxxxxxxxxxxxx"}永久密钥命令行输入tcclicvmDescribeRegions--secretIdxx--secretKeyxx环境变量
配置环境变量：TENCENTCLOUD_SECRET_ID,TENCENTCLOUD_SECRET_KEYxxx.credential文件{"secretId":"AKIDxxxxxxxxxxxxxxxxxxxxQsPk","secretKey":"QgoxxxxxxxxxxxxxxxxgvW4"}使用TCCLI命令行工具集成了腾讯云所有支持云 API 的产品，可以在命令行下完成对腾讯云产品的配置和管理。包括使用TCCLI创建云服务器，操作云服务器，通过TCCLI创建CBS盘、查看CBS盘使用情况，通过TCCLI创建VPC网络、往VPC网络中添加资源等等，所有在控制台页面能完成的操作，均能再命令行工具上执行命令实现。通过tccli cvm DescribeInstances命令查看当前账号有哪些云服务器。通过tccli cbs DescribeDisks命令查看有CBS盘列表。以创建一台cvm为例(请注意demo中非简单类型的参数必须为标准json格式)：tcclicvmRunInstances--InstanceChargeTypePOSTPAID_BY_HOUR--InstanceChargePrepaid'{"Period":1,"RenewFlag":"DISABLE_NOTIFY_AND_MANUAL_RENEW"}'--Placement'{"Zone":"ap-guangzhou-2"}'--InstanceTypeS1.SMALL1--ImageIdimg-8toqc6s3--SystemDisk'{"DiskType":"CLOUD_BASIC", "DiskSize":50}'--InternetAccessible'{"InternetChargeType":"TRAFFIC_POSTPAID_BY_HOUR","InternetMaxBandwidthOut":10,"PublicIpAssigned":true}'--InstanceCount1--InstanceNameTCCLI-TEST--LoginSettings'{"Password":"isd@cloud"}'--SecurityGroupIds'["sg-0rszg2vb"]'--HostNameTCCLI-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。tccliconfiguresetcvm.version2017-03-12# 在实时使用时指定版本号。tcclicvmhelp--version2017-03-12
tcclicvmDescribeZoneshelp--version2017-03-12
tcclicvmDescribeZones--version2017-03-12指定输出语言指定公共参数language可以获得接口指定语言的返回，language参数也支持在配置文件中配置，默认值为"zh-CN"# 在实时使用时指定语言
tccli cvm DescribeZones --language zh-CN
tccli cvm DescribeZones --language en-US指定最近的接入点(Endpoint)TCCLI默认会请求就近的接口点访问服务，你也可以针对某一产品指定自己的Endpoint(以cvm为例)。# 设置cvm产品默认endpoint。tccliconfiguresetcvm.endpointcvm.ap-guangzhou.tencentcloudapi.com# 调用时实时指定。tcclicvmDescribeZones--endpointcvm.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 TotalCount4指定某个数组类型对象的第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文件中，您可以添加如下参数，设置系统超时时间为180诗，睡眠时间为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}