使用阿里云CLI调用弹性伸缩OpenAPI

本文以调用弹性伸缩 ESS(Auto Scaling)DescribeScalingActivities接口查看指定伸缩活动详情为例,为您介绍使用阿里云CLI调用弹性伸缩OpenAPI的操作步骤。

前置概念

阿里云CLI(Alibaba Cloud Command Line Interface)是基于OpenAPI构建的通用命令行工具,您可以通过阿里云CLI实现自动化管理和维护弹性伸缩。更多信息,请参见什么是阿里云CLI

步骤一:安装阿里云CLI

使用阿里云CLI前,您需要先安装阿里云CLI。阿里云CLI为用户提供了Windows、Linux和macOS三种操作系统下的安装服务,请根据您使用设备的操作系统选择对应的安装服务。

云命令行(Cloud Shell)预装了阿里云CLI,且自动为您配置身份凭证,无需手动操作。您可在云命令行中调试阿里云CLI命令。更多信息,请参见什么是云命令行

步骤二:配置阿里云CLI

重要

阿里云账号(主账号)拥有所有产品OpenAPI的管理和访问权限,风险很高。强烈建议您创建RAM用户(子账号),并依据最小化权限原则授予权限,使用RAM用户身份访问OpenAPI。弹性伸缩支持的权限策略,请参见弹性伸缩系统权限策略参考弹性伸缩自定义权限策略参考

使用阿里云CLI之前,您需要在阿里云CLI中配置身份凭证、地域ID等信息。阿里云CLI支持多种身份凭证,详情请参见身份凭证类型。阿里云CLI支持使用RAM用户的AccessKey信息配置AK类型身份凭证,具体操作步骤如下:

  1. 创建一个RAM用户,并创建AccessKey,以便后续配置身份凭证使用。具体操作,请参见创建RAM用户创建AccessKey

  2. 为RAM用户授权。本文示例需授予RAM用户只读访问弹性伸缩的权限AliyunESSReadOnlyAccess。具体操作,请参见为RAM用户授权

  3. 获取可用的地域ID,以便后续配置身份凭证使用。阿里云CLI将使用您指定的地域发起OpenAPI调用。弹性伸缩的可用地域请参见服务接入点

    说明

    使用阿里云CLI过程中您可使用--region选项指定地域发起命令调用,该选项在使用时将忽略默认身份凭证配置及环境变量设置中的地域信息。详情请参见API命令可用选项

  4. 使用RAM用户的AccessKey配置AK类型凭证,配置文件命名为AkProfile。具体操作,请参见配置示例

步骤三:生成CLI命令示例

  1. 在OpenAPI门户中,访问DescribeScalingActivities调试地址

    image

  2. 参数配置中输入请求参数,单击CLI示例页签,查看生成的CLI示例。

  3. 复制CLI示例或在云命令行中快速执行:

    • 单击运行命令image按钮,可唤出云命令行并快速完成命令调试。

    • 单击复制按钮image,将CLI示例复制到剪贴板中,可粘贴至本地Shell工具中运行或用于编辑自动化命令行脚本。

    说明

    复制CLI示例到本地Shell工具中进行调试时请注意参数格式。关于阿里云CLI命令参数使用格式的详细信息,请参见参数格式说明

    OpenAPI门户生成示例中会默认添加--region选项,复制命令到本地调用时阿里云CLI将忽略默认身份凭证配置及环境变量设置中的地域信息,优先使用指定的地域调用命令,您可根据需要对该选项进行删除或保留。

步骤四:调用弹性伸缩OpenAPI

说明
  • 阿里云CLI集成弹性伸缩OpenAPI版本较早,建议您使用--force选项及--version选项优先调用弹性伸缩2022-02-22版本OpenAPI。具体操作,请参见强制调用接口

  • OpenAPI门户在为弹性伸缩2022-02-22版本OpenAPI生成命令示例时会自动添加--force选项及--version选项,无需手动更改。

  • 更多可用API信息,请参见API概览

以下示例将为您展示如何使用阿里云CLI调用弹性伸缩DescribeScalingActivities接口,查看指定伸缩活动的详情。更多接口信息,请参见DescribeScalingActivities - 查询伸缩活动

  1. 执行命令。

    aliyun ess DescribeScalingActivities --RegionId 'cn-hangzhou' --ScalingGroupId 'asg-bp18p2yfxow2dloq****' --version 2022-02-22 --method POST --force
  2. 输出结果。

    {
      "RequestId": "CC107349-57B7-4405-B1BF-9BF5AF7F****",
      "PageNumber": 1,
      "PageSize": 10,
      "TotalCount": 1,
      "ScalingActivities": [
        {
          "Progress": 100,
          "ScalingInstanceNumber": 1,
          "AttachedCapacity": "0",
          "TotalCapacity": "2",
          "ScalingGroupId": "asg-bp18p2yfxow2dloq****",
          "AutoCreatedCapacity": "2",
          "EndTime": "2020-09-10T09:54Z",
          "StartTime": "2020-09-10T09:54Z",
          "Description": "Add \\\"1\\\" ECS instance",
          "StatusCode": "Successful",
          "Cause": "A user requests to execute scaling rule \\\"asr-bp12tcnol686y1ik****\\\", changing the Total Capacity from \\\"1\\\" to \\\"2\\\".",
          "ScalingActivityId": "asa-bp161xudmuxdzofe****",
          "StatusMessage": "\\\"1\\\" ECS instances are added",
          "CreatedCapacity": 1,
          "DestroyedCapacity": 1,
          "StartedCapacity": 1,
          "StoppedCapacity": 1,
          "CreatedInstances": [
            "[\"i-abc1\",\"i-abc2\"]"
          ],
          "DestroyedInstances": [
            "[\n      \"i-abc1\",\n      \"i-abc2\"\n]"
          ],
          "StartedInstances": [
            "[\n      \"i-abc1\",\n      \"i-abc2\"\n]"
          ],
          "StoppedInstances": [
            "[\n      \"i-abc1\",\n      \"i-abc2\"\n]"
          ],
          "ErrorCode": "OperationDenied.NoStock",
          "ErrorMessage": "The specified ECS resource is out of stock in this region. Please try again later.",
          "Detail": "\"new ECS instances \"i-j6c8ilerw, i-j6c8iler4mx\" are created.\"",
          "TriggerSourceType": "Api",
          "TriggerSourceId": "2346366580*****",
          "LifecycleHookContext": {
            "DisableLifecycleHook": false,
            "IgnoredLifecycleHookIds": [
              "ash-bp14zolna43z266bq***\n"
            ]
          },
          "ActivityMetadata": "{\\\"goatscaler.io/managed\\\":\\\"true\\\"}",
          "InstanceRefreshTaskId": "ir-asdf12adsxg*****"
        }
      ]
    }
    说明

    如果调用弹性伸缩OpenAPI后返回错误,您需要根据返回的错误码提示检查传入的请求参数及其取值是否正确。

    您可以记录下调用返回的RequestID或SDK报错信息,通过阿里云OpenAPI诊断平台进行自助诊断。