CLI集成示例

本文以调用DDoS原生防护ListPolicy接口查询防护策略为例,为您介绍使用阿里云CLI调用DDoS原生防护的操作步骤。

前置概念

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

  • 暂不支持使用阿里云CLI调用DDoS代播防护(DDoS原生防护2023-07-01版本OpenAPI)。若您需要产品提供相关支持,可提交工单反馈。

步骤一:安装阿里云CLI

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

云命令行(Cloud Shell)中预装了阿里云CLI,且会定期更新软件版本。您可在云命令行中快速调试阿里云CLI命令。更多信息,请参见什么是云命令行

步骤二:配置阿里云CLI

重要

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

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

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

  2. 为RAM用户授权。本文示例需授予RAM用户只读访问DDoS原生防护的权限AliyunYundunAntiDDoSBagReadOnlyAccess。具体操作,请参见为RAM用户授权

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

    说明

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

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

步骤三:生成CLI命令示例

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

    image

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

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

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

    • 单击复制按钮image,将CLI示例复制到剪贴板中,可粘贴至本地Shell工具中运行。

    说明

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

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

步骤四:调用DDoS原生防护OpenAPI

示例一:获取支持阿里云CLI调用的DDoS原生防护OpenAPI列表

以下示例将为您展示如何使用--help选项获取支持阿里云CLI调用的DDoS原生防护OpenAPI列表。更多信息,请参见API概览

  1. 执行命令。

    aliyun ddosbgp --help
  2. 输出结果。

    image

示例二:查询防护策略

以下示例将为您展示如何使用阿里云CLI调用DDoS原生防护ListPolicy接口,查询适用于云服务器 ECS的防护策略。

  1. 执行命令。

    aliyun ddosbgp ListPolicy --ProductType ecs
  2. 输出结果。

    {
      "RequestId": "B4B379C2-9319-4C6B-B579-FE36831B09F4",
      "PolicyList": [
        {
          "Id": "877afbdf-3982-4d36-9886-f043********",
          "Name": "test**",
          "Type": "l3",
          "Remark": "test",
          "AttachedCount": 0,
          "Content": {
            "BlackIpListExpireAt": 1716878000,
            "EnableIntelligence": true,
            "IntelligenceLevel": "default",
            "WhitenGfbrNets": false,
            "EnableDropIcmp": false,
            "RegionBlockCountryList": [
              11
            ],
            "RegionBlockProvinceList": [
              2
            ],
            "SourceLimit": {
              "Pps": 64,
              "Bps": 2048,
              "SynPps": 64,
              "SynBps": 2048
            },
            "SourceBlockList": [
              {
                "Type": 3,
                "BlockExpireSeconds": 120,
                "EverySeconds": 60,
                "ExceedLimitTimes": 5
              }
            ],
            "ReflectBlockUdpPortList": [
              123
            ],
            "PortRuleList": [
              {
                "Id": "8f3c3062-6c20-425d-8405-2bd1********",
                "Protocol": "udp",
                "SrcPortStart": 0,
                "SrcPortEnd": 65535,
                "DstPortStart": 0,
                "DstPortEnd": 65535,
                "MatchAction": "drop",
                "SeqNo": 1
              }
            ],
            "FingerPrintRuleList": [
              {
                "Id": "2c0b09cd-a565-4481-9acb-418b********",
                "Protocol": "udp",
                "SrcPortStart": 0,
                "SrcPortEnd": 65535,
                "DstPortStart": 0,
                "DstPortEnd": 65535,
                "MinPktLen": 1,
                "MaxPktLen": 1500,
                "Offset": 0,
                "PayloadBytes": "abcd",
                "MatchAction": "drop",
                "RateValue": 1000,
                "SeqNo": 1
              }
            ],
            "EnableL4Defense": true,
            "L4RuleList": [
              {
                "Name": "test**",
                "Priority": 1,
                "Method": "char",
                "Match": "1",
                "Action": "2",
                "Limited": 0,
                "ConditionList": [
                  {
                    "Arg": "test",
                    "Position": 0,
                    "Depth": 32
                  }
                ]
              }
            ]
          }
        }
      ],
      "Total": 10
    }
    说明

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

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