{"id":13523601,"url":"https://github.com/aliyun/aliyun-cli","last_synced_at":"2026-01-07T10:16:36.863Z","repository":{"id":34366918,"uuid":"38291591","full_name":"aliyun/aliyun-cli","owner":"aliyun","description":"Alibaba Cloud CLI","archived":false,"fork":false,"pushed_at":"2025-05-07T06:52:21.000Z","size":18404,"stargazers_count":863,"open_issues_count":32,"forks_count":199,"subscribers_count":49,"default_branch":"master","last_synced_at":"2025-05-07T07:43:38.516Z","etag":null,"topics":["a-li-yun","alibaba","alibaba-cloud-cli","alibaba-cloud-openapi","alibabacloud","aliyun","cli","client","cloud-api","openapi","rpc-api","sdk"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aliyun.png","metadata":{"files":{"readme":"README-CN.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-06-30T06:21:57.000Z","updated_at":"2025-05-07T06:52:24.000Z","dependencies_parsed_at":"2023-10-24T02:38:57.657Z","dependency_job_id":"eed3e723-5780-47c5-ac95-666dc16ea15d","html_url":"https://github.com/aliyun/aliyun-cli","commit_stats":{"total_commits":901,"total_committers":45,"mean_commits":"20.022222222222222","dds":0.8024417314095449,"last_synced_commit":"fae82413e78a15352e78654a6c966447d7180ee3"},"previous_names":[],"tags_count":273,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliyun%2Faliyun-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliyun%2Faliyun-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliyun%2Faliyun-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliyun%2Faliyun-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aliyun","download_url":"https://codeload.github.com/aliyun/aliyun-cli/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254053355,"owners_count":22006717,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["a-li-yun","alibaba","alibaba-cloud-cli","alibaba-cloud-openapi","alibabacloud","aliyun","cli","client","cloud-api","openapi","rpc-api","sdk"],"created_at":"2024-08-01T06:01:01.700Z","updated_at":"2026-01-07T10:16:36.827Z","avatar_url":"https://github.com/aliyun.png","language":"Go","funding_links":[],"categories":["Command Line","Go","0x02 工具 :hammer_and_wrench:"],"sub_categories":["Dependency Management","1 云服务工具"],"readme":"[English](./README.md) | 简体中文\n\n\u003ch1 align=\"center\"\u003eAlibaba Cloud CLI\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/aliyun/aliyun-cli/actions/workflows/go.yml\"\u003e\u003cimg src=\"https://github.com/aliyun/aliyun-cli/actions/workflows/go.yml/badge.svg\" alt=\"Go build Status\"\u003e\u003c/a\u003e\n\u003ca href=\"https://codecov.io/gh/aliyun/aliyun-cli\"\u003e\u003cimg src=\"https://codecov.io/gh/aliyun/aliyun-cli/branch/master/graph/badge.svg\" alt=\"codecov\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/aliyun/aliyun-cli/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/aliyun/aliyun-cli.svg\" alt=\"License\"\u003e\u003c/a\u003e\n\u003ca href=\"https://goreportcard.com/report/github.com/aliyun/aliyun-cli\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/aliyun/aliyun-cli\" alt=\"Go Report\" \u003e\u003c/a\u003e\n\u003cbr/\u003e\n\u003ca href=\"https://github.com/aliyun/aliyun-cli/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/release/aliyun/aliyun-cli.svg\" alt=\"Latest Stable Version\" \u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/aliyun/aliyun-cli/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/release-date/aliyun/aliyun-cli.svg\" alt=\"GitHub Release Date\"\u003e\u003c/a\u003e\n\u003cbr/\u003e\n\u003ca href=\"https://github.com/aliyun/aliyun-cli/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/downloads/aliyun/aliyun-cli/total.svg\" alt=\"GitHub All Releases\" \u003e\u003c/a\u003e\n\u003cp\u003e\n\n阿里云命令行工具是开源项目，您可以从 [Github](https://github.com/aliyun/aliyun-cli) 上获取最新版本的 CLI。\n您也可以在安装 CLI 前在 Cloud Shell 进行试用：\n\n\u003ca href=\"https://shell.aliyun.com/\" target=\"cloudshell\"\u003e\n  \u003cimg src=\"https://img.alicdn.com/tfs/TB1wt1zq9zqK1RjSZFpXXakSXXa-1066-166.png\" width=\"180\" alt=\"cloudshell\" /\u003e\n\u003c/a\u003e\n\n## 简介\n\n阿里云命令行工具是用 Go 语言编写的, 基于阿里云 OpenAPI 打造的，用于管理阿里云资源的工具。通过下载和配置该工具，您可以在一个命令行方式下管理多个阿里云产品资源。\n\n如果您在使用 CLI 的过程中遇到任何问题，请直接提交 Issues。\n\n**注意**：阿里云 CLI 使用 OpenAPI 方式访问云产品，确保您已经开通了要使用的云产品并了解该产品的 OpenAPI 的使用。您可以在[阿里云 OpenAPI 开发者门户](https://api.aliyun.com/)查看产品 API 文档，了解 API 的使用方式及参数列表。\n\n## 使用诊断\n\n[Troubleshoot](https://api.aliyun.com/troubleshoot?source=github_sdk) 提供 OpenAPI 使用诊断服务，通过 `RequestID` 或 `报错信息` ，帮助开发者快速定位，为开发者提供解决方案。\n\n## CLI Releases\n\nCLI 版本更改说明请参考 [CHANGELOG](./CHANGELOG.md)\n\n## 安装\n\n- **下载安装包 (推荐)**  \n\n  阿里云 CLI 工具下载、解压后即可使用，支持 Mac、Linux(amd64/arm64)、Windows 平台(x64版本)。您可以将解压的`aliyun` 可执行文件移至 `/usr/local/bin` 目录下，或添加到 `$PATH` 中。\n\n  下载链接如下 (![Latest Stable Version](https://img.shields.io/github/release/aliyun/aliyun-cli.svg))：\n\n  - [Mac 图形界面安装器](https://aliyuncli.alicdn.com/aliyun-cli-latest.pkg)\n  - [Mac Universal](https://aliyuncli.alicdn.com/aliyun-cli-macosx-latest-universal.tgz)\n  - [Linux (AMD64)](https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz)\n  - [Linux (ARM64)](https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-arm64.tgz)\n  - [Windows (64 bit)](https://aliyuncli.alicdn.com/aliyun-cli-windows-latest-amd64.zip)\n\n  点击查看[所有版本](https://github.com/aliyun/aliyun-cli/releases)。\n\n- **使用 brew**\n\n  如果你的电脑上安装了 `brew`, 你可以使用它来安装阿里云命令行工具:\n\n  ```sh\n  brew install aliyun-cli\n  ```\n\n- **使用一键安装脚本**\n\n  你可以在 macOS 或 Linux 的命令行终端运行下面的命令：\n\n  ```sh\n  /bin/bash -c \"$(curl -fsSL https://aliyuncli.alicdn.com/install.sh)\"\n  ```\n\n如果需要详细安装步骤或者编译安装步骤请访问官网文档 [安装 CLI](https://help.aliyun.com/document_detail/121988.html)\n\n## 配置\n\n详细配置指引请访问官网 [配置 CLI](https://help.aliyun.com/document_detail/110341.html)\n\n在使用阿里云 CLI 之前，您需要配置调用阿里云资源所需的凭证信息、地域、语言等。\n\n你可以运行 `aliyun configure` 命令进行快速配置：\n\n```sh\n$ aliyun configure\nConfiguring profile 'default' in '' authenticate mode...\nAccess Key Id []: AccessKey ID\nAccess Key Secret []: AccessKey Secret\nDefault Region Id []: cn-hangzhou\nDefault Output Format [json]: json (Only support json))\nDefault Language [zh|en] en:\nSaving profile[akProfile] ...Done.\n```\n\n这将会以 AK 的认证模式对 default 进行凭证和其它配置。\n\n### 所有凭证模式\n\n可通过在 `configure` 命令后增加 `--mode \u003cauthenticationMethod\u003e` 参数的方式来使用不同的凭证方式，目前支持的认证方式如下：\n\n| 凭证模式              | 说明                                    |\n|---------------------|-----------------------------------------|\n| AK                  | 使用直接的 AccessKey ID/Secret 访问凭证    |\n| RamRoleArn          | 使用 RAM 子账号角色扮演提供访问凭证          |\n| EcsRamRole          | 使用 ECS 实例角色提供访问凭证               |\n| OIDC                | 使用 OIDC 角色扮演的方式访问                |\n| External            | 使用外部进程提供访问凭证                    |\n| CredentialsURI      | 使用外部服务提供访问凭证                    |\n| ChainableRamRoleArn | 使用链式角色扮演的方式提供访问凭证            |\n\n如果在配置时不传递 `--mode`，将默认使用 AK 模式。\n\n### RAM 子账号角色扮演\n\n您可以使用 `--mode RamRoleArn` 指定通过 RAM 子账号进行角色扮演来获取凭证。它的底层是通过 AssumeRole 方法来换取\n临时凭证。示例如下：\n\n```shell\n$ aliyun configure --mode RamRoleArn --profile subaccount\nConfiguring profile 'subaccount' in 'RamRoleArn' authenticate mode...\nAccess Key Id []: AccessKey ID\nAccess Key Secret []: AccessKey Secret\nSts Region []: cn-hangzhou\nRam Role Arn []: acs:ram::******:role/ecs-test\nRole Session Name []: sessionname\nExpired Seconds []: 900\nDefault Region Id []: cn-hangzhou\nDefault Output Format [json]: json (Only support json)\nDefault Language [zh|en] en:\nSaving profile[subaccount] ...Done.\n```\n\n### 使用外部程序获取凭证\n\n您可以使用 `--mode External` 指定通过外部程序获取凭证数据，CLI 将会以执行该程序命令并将其返回作为凭证来使用。\n\n约定：\n\n1. 外部程序输出位置为标准输出\n2. 输出为json结构字符串\n3. 输出包含关键字段以及凭证字段\n\n关键字段:\n\n- mode: 指定返回凭证类型，目前支持两种静态的凭证。\n\n各凭证返回结构示例:\n\n- AK\n\n```json\n{\n  \"mode\": \"AK\",\n  \"access_key_id\": \"accessKeyId\",\n  \"access_key_secret\": \"accessKeySecret\"\n}\n```\n\n- StsToken\n\n```json\n{\n  \"mode\": \"StsToken\",\n  \"access_key_id\": \"accessKeyId\",\n  \"access_key_secret\": \"accessKeySecret\",\n  \"sts_token\": \"stsToken\"\n}\n```\n\n#### 示例\n\n```shell\n$ aliyun configure --mode External --profile externalTest\nConfiguring profile 'externalTest' in 'External' authenticate mode...\nProcess Command []: \u003cgetCredential ak\u003e\nDefault Region Id []: cn-hangzhou\nDefault Output Format [json]: json (Only support json)\nDefault Language [zh|en] en: \nSaving profile[externalTest] ...Done.\n```\n\n### 使用链式 RamRoleArn\n\n通过 ChainableRamRoleArn ，可以指定一个前置凭证配置，然后再进行角色扮演。前置凭证的设置会更灵活，它可以是子账号的 AK，也可以是通过其它方式换取的 STS，比如 EcsRamRole。\n\n你可以使用 `--mode ChainableRamRoleArn` 来组合源配置和 RamRoleARN 的角色扮演流程。下面的例子从源配置中获取中间凭证，再基于中间凭证完成角色扮演，获取最终的凭证。\n\n```json\n{\n  \"profiles\": [\n    {\n      \"name\": \"chain\",\n      \"mode\": \"ChainableRamRoleArn\",\n      \"ram_role_arn\": \"acs:ram::\u003cAccount ID\u003e:role/\u003cRole Name\u003e\",\n      \"ram_session_name\": \"session\",\n      \"source_profile\": \"cli-test\"\n    },\n    {\n      \"name\": \"cli-test\",\n      \"mode\": \"AK\",\n      \"access_key_id\": \"\u003cAccess Key ID\u003e\",\n      \"access_key_secret\": \"\u003cAccess Key Secret\u003e\"\n    }\n  ]\n}\n```\n\n### 使用 Credentials URI\n\n你可以通过 `--mode CredentialsURI` 来从一个本地或远程的 URI 地址实现 Credentials 的获取。\n\n```json\n{\n  \"profiles\": [\n    {\n      \"name\": \"uri\",\n      \"mode\": \"CredentialsURI\",\n      \"credentials_uri\": \"http://localhost:6666/?user=jacksontian\"\n    }\n  ]\n}\n```\n\n这个 Credentials URI 必须相应 200 和如下的结构：\n\n```json\n{\n  \"Code\": \"Success\",\n  \"AccessKeyId\": \"\u003cak id\u003e\",\n  \"AccessKeySecret\": \"\u003cak secret\u003e\",\n  \"SecurityToken\": \"\u003csecurity token\u003e\",\n  \"Expiration\": \"2006-01-02T15:04:05Z\" // utc time\n}\n```\n\n其他情况，CLI 会当作失败案例处理。\n\n### 使用 OIDC 获取凭证\n\n你可以通过 `--mode OIDC` 来使用基于 OIDC 的 SSO 角色扮演获取凭证。示例如下：\n\n```shell\n$ aliyun configure --mode OIDC --profile oidc_p\nConfiguring profile 'oidc_p' in 'OIDC' authenticate mode...\nOIDC Provider ARN []: xxxx\nOIDC Token File []: xxx\nRAM Role ARN []: xxx\nRole Session Name []: xxx\nDefault Region Id []: xxx\nDefault Output Format [json]: json (Only support json)\nDefault Language [zh|en] en: \nSaving profile[oidc_p] ...Done.\n```\n\n### 启用 zsh/bash 自动补全\n\n- 使用 `aliyun auto-completion` 命令开启自动补全，目前支持 zsh/bash\n- 使用 `aliyun auto-completion --uninstall` 命令关闭自动补全\n\n## 使用阿里云 CLI\n\n这里是基础使用指引，如需要详细使用手册，请访问 [这里](https://help.aliyun.com/document_detail/110344.html)。\n\n阿里云云产品的 OpenAPI 有 RPC 和 RESTful 两种风格，大部分产品使用的是 RPC 风格。不同风格的 API 的调用方法也不同。\n\n您可以通过以下特点判断API风格：\n\n- API 参数中包含 `Action` 字段的是RPC风格，需要 `PathPattern` 参数的是 Restful 风格。\n- 一般情况下，每个产品内，所有 API 的调用风格是统一的。\n- 每个 API 仅支持特定的一种风格，传入错误的标识，可能会调用到其他 API，或收到“ApiNotFound”的错误信息。\n\n### 调用 RPC 风格的 API\n\n阿里云 CLI 中 RPC 风格的 API 调用的基本结构如下：\n\n```sh\naliyun \u003cproduct\u003e \u003coperation\u003e [--parameter1 value1 --parameter2 value2 ...]\n```\n\n代码示例：\n\n```sh\naliyun rds DescribeDBInstances --PageSize 50\naliyun ecs DescribeRegions\naliyun rds DescribeDBInstanceAttribute --DBInstanceId xxxxxx\n```\n\n### 调用 RESTful 风格的 API\n\n部分阿里云产品如容器服务的 OpenAPI 为 Restful 风格，调用 Restful 风格的接口与调用 RPC 风格的接口方式不同。参考以下代码示例，调用 RESTful API。\n\n- GET请求示例：\n\n    ```sh\n    aliyun cs GET /clusters\n    ```\n\n- POST请求示例：\n\n    ```sh\n    aliyun cs POST /clusters --body \"$(cat input.json)\"\n    ```\n\n- DELETE请求示例：\n\n    ```sh\n    aliyun cs DELETE /clusters/ce2cdc26227e09c864d0ca0b2d5671a07\n   ```\n\n### 获取帮助信息\n\n阿里云 CLI 集成了一部分产品的 API 和参数列表信息, 您可以使用如下命令来获取帮助：\n\n- `$ aliyun help`: 获取产品列表\n\n- `$ aliyun help \u003cproduct\u003e`: 获取产品的API信息\n\n  如获取 ECS 的 API 信息：`$ aliyun help ecs`\n\n- `$ aliyun help \u003cproduct\u003e \u003capiName\u003e`: 获取 API 的调用信息\n\n  如获取 ECS 的 CreateInstance 的信息： `aliyun help ecs CreateInstance`\n\n### 使用`--force`参数\n\n阿里云 CLI 集成了一部分云产品的元数据，在调用时会对参数的合法性进行检查。如果使用了一个元数据中未包含的API或参数会导致`unknown api`或`unknown parameter`错误。可以使用`--force`参数跳过API和参数检查，强制调用元数据列表外的API和参数，如:\n\n```sh\naliyun newproduct --version 2018-01-01 --endpoint newproduct.aliyuncs.com --param1 ... --force\n```\n\n在使用`--force`参数时，必须指定以下两个参数：\n\n- `--version`: 指定API的版本，你可以在API文档中找到版本号，如ECS的版本号是`2014-05-26`。\n- `--endpoint`: 指定产品的接入地址。请参考各产品的API文档。\n\n#### 使用`--output`参数\n\n阿里云产品的查询接口会返回 JSON 结构化数据，不方便阅读。例如：\n\n```sh\naliyun ecs DescribeInstances\n```\n\n执行以上命令将得到以下 JSON 结果：\n\n```sh\n{\n  \"PageNumber\": 1,\n  \"TotalCount\": 2,\n  \"PageSize\": 10,\n  \"RequestId\": \"2B76ECBD-A296-407E-BE17-7E668A609DDA\",\n  \"Instances\": {\n    \"Instance\": [\n      {\n        \"ImageId\": \"ubuntu_16_0402_64_20G_alibase_20171227.vhd\",\n        \"InstanceTypeFamily\": \"ecs.xn4\",\n        \"VlanId\": \"\",\n        \"InstanceId\": \"i-12345678912345678123\",\n        \"Status\": \"Stopped\",\n        //omit some fields\n      },\n      Instance\": [\n      {\n        \"ImageId\": \"ubuntu_16_0402_64_20G_alibase_20171227.vhd\",\n        \"InstanceTypeFamily\": \"ecs.xn4\",\n        \"VlanId\": \"\",\n        \"InstanceId\": \"i-abcdefghijklmnopqrst\",\n        \"Status\": \"Running\",\n        //omit some fields\n      },\n    ]\n  }\n}\n```\n\n可以使用`--output`参数提取结果中感兴趣的字段，并进行表格化输出。例如：\n\n```sh\naliyun ecs DescribeInstances --output cols=InstanceId,Status rows=Instances.Instance[]\n```\n\n执行以上命令将得到以下形式的结果：\n\n```sh\nInstanceId             | Status\n-----------------------|--------\ni-12345678912345678123 | Stopped\ni-abcdefghijklmnopqrst | Running\n```\n\n在使用`--output`参数时，必须指定以下子参数：\n\n- `cols`: 表格的列名，需要与json数据中的字段相对应。如ECS DescribeInstances 接口返回结果中的字段`InstanceId` 以及 `Status`。\n\n可选子参数：\n\n- `rows`: 通过 [jmespath](http://jmespath.org/) 查询语句来指定表格行在json结果中的数据来源。\n  \n### 使用`--waiter`参数\n\n该参数用于轮询实例信息直到出现特定状态。\n\n例如使用ECS创建实例后，实例会有启动的过程。我们会不断的查询实例的运行状态，直到状态变为\"Running\"。\n\n例如：\n\n```sh\naliyun ecs DescribeInstances --InstanceIds '[\"i-12345678912345678123\"]' --waiter expr='Instances.Instance[0].Status' to=Running\n```\n\n执行以上命令后,命令行程序将以一定时间间隔进行实例状态轮询，并在实例状态变为`Running`时停止轮询。\n\n在使用 `--waiter` 参数时，必须指定以下两个子参数：\n\n- `expr`: 通过 [jmespath](http://jmespath.org/) 查询语句来指定json结果中的被轮询字段。\n- `to`: 被轮询字段的目标值。\n\n可选子参数：\n\n- `timeout`: 轮询的超时时间(秒)。\n- `interval`: 轮询的间隔时间(秒)。\n\n## 环境变量支持\n\n我们支持下面的环境变量：\n\n- `ALIBABA_CLOUD_PROFILE`： 当 `--profile` 没有指定，CLI 将使用该环境变量。\n- `ALIBABA_CLOUD_IGNORE_PROFILE=TRUE`: 当这个变量被指定，CLI 忽略配置文件。\n- `ALIBABA_CLOUD_ACCESS_KEY_ID`： 当没有任何 Access Key Id 的指定，CLI 将使用该环境变量。\n- `ALIBABA_CLOUD_ACCESS_KEY_SECRET`： 当没有任何 Access Key Secret 的指定，CLI 将使用该环境变量。\n- `ALIBABA_CLOUD_SECURITY_TOKEN`： 当没有任何 Security Token 的指定，CLI 将使用该环境变量。\n- `ALIBABA_CLOUD_REGION_ID`： 当没有任何 RegionId 的指定，CLI 将使用该环境变量。\n- `DEBUG=sdk`：通过该环境变量，CLI 将打印 HTTP 请求信息。这对于排查故障非常有用。\n\n## 获取帮助\n\n我们使用 GitHub issues 追踪用户反馈的 bug 和功能请求。请访问以下站点获取帮助：\n\n- 基本使用方法请访问官网 [阿里云 CLI](https://help.aliyun.com/document_detail/110244.html)\n- 在 [Stack Overflow](https://stackoverflow.com/) 上提问并使用标签 [aliyun-cli](https://stackoverflow.com/questions/tagged/aliyun-cli)\n- 如果您发现了一个 BUG 或是希望新增一个特性，请[提交 issue](https://github.com/aliyun/aliyun-cli/issues/new/choose)。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faliyun%2Faliyun-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faliyun%2Faliyun-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faliyun%2Faliyun-cli/lists"}