本文为您介绍如何通过阿里云CLI(3.0.25及以上版本)调用更改集相关的API。

CreateChangeSet

创建更改集。

名称 类型 是否必选 示例值 描述
Action String CreateChangeSet

要执行的操作,取值:CreateChangeSet。

--ChangeSetName String MyChangeSet

更改集的名称。

必须以数字或字母开头,可包含数字、字母、短划线(-)和下划线(_),长度不超过255个字符。

说明 更改集名称在与指定资源栈关联的所有更改集中必须是唯一的。
--Parameters.N.ParameterKey String Amount

参数的名称。如果未指定特定参数的名称和值,则ROS将使用模板中指定的默认值。N的最大值为200。

--Parameters.N.ParameterValue String 12

参数的值。N的最大值为200。

--RegionId String cn-hangzhou

更改集所属的地域ID。您可以调用DescribeRegions查询最新的阿里云地域列表。DescribeRegions详情,请参见DescribeRegions

StackId String 4a6c9851-3b0f-4f5f-b4ca-a14bf691****

创建更改集的资源栈的ID。ROS通过将此资源栈的信息与您提交的信息(例如修改的模板或不同的参数输入值)进行比较来生成更改集。

此参数仅在更改集类型为UPDATE时生效。

StackPolicyURL String oss://ros/stack-policy/demo

包含资源栈策略的文件的位置。 URL必须指向位于Web服务器(HTTP或HTTPS)或阿里云OSS存储桶(例如:oss://ros/stack-policy/demo、oss://ros/stack-policy/demo?RegionId=cn-hangzhou)的策略,策略文件长为16,384个字节。

说明 OSS地域如未指定,默认与接口参数RegionId相同。

您可以指定StackPolicyBody或StackPolicyURL参数,但不能同时指定。

URL的最大长度为1350个字节。

当更改集类型为CREATE时,您可以指定StackPolicyBody或StackPolicyURL参数,但不能同时指定。当更改集类型为UPDATE时,您只能指定以下参数之一:

  • StackPolicyBody
  • StackPolicyURL
  • StackPolicyDuringUpdateBody
  • StackPolicyDuringUpdateURL
StackPolicyBody String {"Statement":[{"Effect":"Allow","Action":"Update:*","Principal":"*","Resource":"*"}]}

资源栈策略的结构,长度为1~16384个字节。当更改集类型为CREATE时,您可以指定StackPolicyBody或StackPolicyURL参数,但不能同时指定。当更改集类型为UPDATE时,您只能指定以下参数之一:

  • StackPolicyBody
  • StackPolicyURL
  • StackPolicyDuringUpdateBody
  • StackPolicyDuringUpdateURL
StackName String MyStack

创建更改集的资源栈的名称。

必须以数字或字母开头,可包含数字、字母、短划线(-)和下划线(_),长度不超过255个字符。

此参数仅在更改集类型为CREATE时生效。

UsePreviousParameters Boolean true

对于未传递的参数,是否使用上次传递的值。取值:

  • true
  • false(默认值)

此参数仅在更改集类型为UPDATE时生效。

ChangeSetType String UPDATE

更改集的类型。取值:

  • CREATE:为新资源栈创建更改集。
  • UPDATE(默认值):为现有资源栈创建更改集。

当为新资源栈创建更改集时,ROS会创建具有唯一资源栈ID的资源栈,资源栈将处于REVIEW_IN_PROGRESS状态,直到您执行更改集。

禁止使用UPDATE类型为新资源栈创建更改集,或使用CREATE类型为现有资源栈创建更改集。

Description String It is a demo.

更改集的描述。最大长度为1024个字节。

ClientToken String 123e4567-e89b-12d3-a456-42665544****

保证请求的幂等性。此参数值由客户端生成,并且必须全局唯一。

长度最大为64个字符,可包含英文字符、数字、短划线(-)和下划线(_)。

更多详情,请参见如何保证幂等性

--TemplateURL String oss://ros/template/demo

包含模板主体的文件的位置。 URL必须指向位于Web服务器(HTTP或HTTPS)或阿里云OSS存储桶(例如:oss://ros/template/demo、oss://ros/template/demo?RegionId=cn-hangzhou)中的模板,模板最大值为524,288个字节。

说明 如果OSS地域未指定,默认与接口参数RegionId相同。

您可以指定TemplateBody或TemplateURL参数,但不能同时指定。

URL最大长度为1024个字节。

StackPolicyDuringUpdateURL String oss://ros/stack-policy/demo

更新资源栈策略的文件的位置。URL必须指向位于Web服务器(HTTP或HTTPS)或阿里云OSS存储空间(例如:oss://ros/stack-policy/demo、oss://ros/stack-policy/demo?RegionId=cn-hangzhou)中的策略,策略文件最长为16,384个字节。

说明 OSS地域如未指定,默认与接口参数RegionId相同。

您可以指定参数StackPolicyBody或StackPolicyURL,但不能同时指定。

URL最大长度为1350个字节。

如果要更新受保护的资源,请在更新期间指定临时覆盖资源栈策略。如果未指定资源栈策略,则将使用与资源栈关联的当前策略。此参数仅在更改集类型为UPDATE时生效。您只能指定以下参数之一:

  • StackPolicyBody
  • StackPolicyURL
  • StackPolicyDuringUpdateBody
  • StackPolicyDuringUpdateURL
TemplateBody String {"ROSTemplateFormatVersion":"2015-09-01"}

模板主体的结构。长度为1~524288个字节。

如果长度较大,建议通过HTTP POST+Body Param的方式,将参数放在请求体中进行传递,避免URL过长而导致请求失败。

您必须指定参数TemplateBody或TemplateURL,但不能同时指定。

TimeoutInMinutes Long 12

资源栈状态变为CREATE_FAILED或UPDATE_FAILED之前可以经过的时间量。

当更改集类型为CREATE时,此参数为必选参数;当更改集类型为UPDATE时,此参数为可选参数。

  • 单位:分钟。
  • 取值范围:10~1440。
  • 默认值:60。
DisableRollback Boolean false

当创建资源栈失败时,是否禁用回滚策略。

取值:

  • true:禁用回滚,即在创建资源栈失败时不进行回滚。
  • false(默认值):不禁用回滚,即在创建资源栈失败时进行回滚。

此参数仅在更改集类型为CREATE时生效。

StackPolicyDuringUpdateBody String {"Statement":[{"Effect":"Allow","Action":"Update:*","Principal":"*","Resource":"*"}]}

临时覆盖资源栈策略的结构。长度为1~16384个字节。

如果要更新受保护资源,请在此更新期间指定临时覆盖资源栈策略,如未指定,则将使用与资源栈关联的当前策略。

此参数仅在更改集类型为UPDATE时生效,您只能指定以下参数之一:

  • StackPolicyBody
  • StackPolicyURL
  • StackPolicyDuringUpdateBody
  • StackPolicyDuringUpdateURL
NotificationURLs.N RepeatList http://example.com/ros-notify

接收资源栈事件的URL回调地址。目前仅支持HTTP POST。

  • N最大值:5。
  • 每个URL的最大长度:1024个字节。
  • 当资源栈的状态发生变化时,会进行通知。当资源栈启用回滚时,CREATE_FAILED(创建失败)和UPDATE_FAILED(更新失败)不会通知,而CREATE_ROLLBACK(创建失败回滚)和ROLLBACK(更新失败回滚)会进行通知。
说明 IN_PROGRESS状态不会通知。

无论资源栈是否定义了Outputs都会进行通知。通知的内容示例如下:

{
    "Outputs": [
        {
            "Description": "No description given",
            "OutputKey": "InstanceId",
            "OutputValue": "i-xxx"
        }
    ],
    "StackId": "80bd6b6c-e888-4573-ae3b-93d291******",
    "StackName": "test-notification-url",
    "Status": "CREATE_COMPLETE"
}                               
RamRoleName String test-role

RAM角色名称。ROS会扮演该角色创建资源栈,使用角色的凭证代表用户进行接口调用。

ROS始终将此角色用于资源栈上将进行的操作。只要用户有权在资源栈上进行操作,即使用户无权使用角色,ROS也会使用此角色,确保角色授予最少的权限。

如果用户未指定该值,ROS将使用以前与资源栈关联的角色。如果没有可用角色,ROS将使用从您的用户凭证中生成的临时凭证。

RAM角色名称最大长度为64个字节。

请求示例

aliyun ros CreateChangeSet --RegionId cn-beijing  --ChangeSetName MyChangeSet --Parameters.1.ParameterKey Amount --Parameters.1.ParameterValue  --TemplateURL oss://ros/template/demo

正常返回示例

{
        "ChangeSetId":"e8dshe0c-6428-46ab-a5g3-fddss6hg****",
        "StackId":"4a6c2547-3v5f-4y7f-bs8a-a14bf639****",
        "RequestId":"9C039DDC-98B2-4668-9FCC-EAE9BAEFDD36"
}

GetChangeSet

查询更改集信息。

名称 类型 是否必选 示例值 描述
Action String GetChangeSet 要执行的操作,取值:GetChangeSet。
--ChangeSetId String 1f6521a4-05af-4975-afe9-bc4b45ad****

更改集ID。

RegionId String cn-hangzhou

更改集所属的地域ID。您可以调用DescribeRegions查询最新的阿里云地域列表。DescribeRegions详情,请参见DescribeRegions

--ShowTemplate Boolean true

是否获取模板。

默认值:false。

请求示例


aliyun ros GetChangeSet --ChangeSetId 1f6521a4-05af-4975-afe9-bc4b45ad**** --ShowTemplate true

正常返回示例

{
    "ExecutionStatus": "AVAILABLE",
    "Parameters": [{
            "ParameterValue": "342546988786****",
            "ParameterKey": "ALIYUN::AccountId"
        },
        {
            "ParameterValue": "None",
            "ParameterKey": "ALIYUN::NoValue"
        },
        {
            "ParameterValue": "cn-beijing",
            "ParameterKey": "ALIYUN::Region"
        },
        {
            "ParameterValue": "c18d62d8-51ce-4e8e-b8f6-e00be431****",
            "ParameterKey": "ALIYUN::StackId"
        },
        {
            "ParameterValue": "MyStack",
            "ParameterKey": "ALIYUN::StackName"
        },
        {
            "ParameterValue": "sg-bfwb3h3eosga1tj5****",
            "ParameterKey": "SecurityGroupId"
        }
    ],
    "Changes": [{
        "Type": "Resource",
        "ResourceChange": {
            "LogicalResourceId": "WebServer",
            "ResourceType": "ALIYUN::ECS::Instance",
            "Action": "Add",
            "Details": [],
            "Scope": []
        }
    }],
    "Description": "It is a demo.",
    "TimeoutInMinutes": 12,
    "ChangeSetId": "1f6521a4-05af-4975-afe9-bc4b45ad****",
    "StackId": "c18d62d8-51ce-4e8e-b8f6-e00be431****",
    "DisableRollback": false,
    "ChangeSetName": "MyChangeSet",
    "ChangeSetType": "CREATE",
    "StackName": "MyStack",
    "Status": "CREATE_COMPLETE",
    "TemplateBody": "{\"ROSTemplateFormatVersion\":\"2015-09-01\",\"Parameters\":{\"SecurityGroupId\":{\"Type\":\"String\"}},\"Resources\":{\"WebServer\":{\"Type\":\"ALIYUN::ECS::Instance\",\"Properties\":{\"ImageId\":\"centos_7\",\"InstanceType\":\"ecs.c6.large\",\"SecurityGroupId\":{\"Ref\":\"SecurityGroupId\"}}}},\"Outputs\":{\"InstanceId\":{\"Value\":{\"Fn:GetAtt\":[\"WebServer\",\"InstanceId\"]}},\"PublicIp\":{\"Value\":{\"Fn:GetAtt\":[\"WebServer\",\"PublicIp\"]}}}}",
    "RequestId": "A46D85A6-9C8E-4603-9989-1FF3F91512F6",
    "RegionId": "cn-beijing",
    "CreateTime": "2019-09-05T14:39:31"
}

DeleteChangeSet

删除更改集。

名称 类型 是否必选 示例值 描述
Action String DeleteChangeSet

要执行的操作,取值:DeleteChangeSet。

RegionId String cn-hangzhou

更改集所属的地域ID。您可以调用DescribeRegions查询最新的阿里云地域列表。DescribeRegions详情,请参见DescribeRegions

--ChangeSetId String 1f6521a4-05af-4975-afe9-bc4b45ad****

更改集ID。

请求示例

aliyun ros DeleteChangeSet --ChangeSetId 1f6521a4-05af-4975-afe9-bc4b45ad****

正常返回示例

{
        "RequestId":"A74B9A63-C40A-41B9-9CCE-E4757E48FFA0"
}

ExecuteChangeSet

执行更改集。

名称 类型 是否必选 示例值 描述
Action String ExecuteChangeSet

要执行的操作,取值:ExecuteChangeSet。

RegionId String cn-hangzhou

更改集所属的地域ID。您可以调用DescribeRegions查询最新的阿里云地域列表。DescribeRegions详情,请参见DescribeRegions

--ChangeSetId String 1f6521a4-05af-4975-afe9-bc4b45ad****

更改集ID。

请求示例

aliyun ros ExecuteChangeSet --ChangeSetId 1f6521a4-05af-4975-afe9-bc4b45ad****

正常返回示例

{
        "RequestId":"0A46C1A6-6823-43A7-8EF1-D8950DCF29D8"
}

ListChangeSets

查询更改集列表。

名称 类型 是否必选 示例值 描述
Action String ListChangeSets

要执行的操作,取值:ListChangeSets。

RegionId String cn-hangzhou

更改集所属的地域ID。您可以调用DescribeRegions查询最新的阿里云地域列表。DescribeRegions详情,请参见DescribeRegions

--StackId String 4a6c9851-3b0f-4f5f-b4ca-a14bf691****

资源栈ID。

ChangeSetName.N RepeatList MyChangeSet

更改集的名称。N的最大值为5。支持使用星号(*)进行模糊搜索。

Status.N RepeatList CREATE_COMPLETE

更改集的状态。N的最大值为5。取值:

  • CREATE_PENDING
  • CREATE_IN_PROGRESS
  • CREATE_COMPLETE
  • CREATE_FAILED
  • DELETE_FAILED
  • DELETE_COMPLETE
ExecutionStatus.N RepeatList AVAILABLE

更改集的执行状态。N的最大值为5。取值:

  • UNAVAILABLE
  • AVAILABLE
  • EXECUTE_IN_PROGRESS
  • EXECUTE_COMPLETE
  • EXECUTE_FAILED
  • OBSOLETE
PageNumber Long 1

更改集列表的页码。起始值:1。默认值:1。

PageSize Long 10

分页查询时设置的每页行数。取值:1~50。默认值:10。

ChangeSetId String 1f6521a4-05af-4975-afe9-bc4b45ad****

更改集ID。如果不需要更改集详细信息,可使用此参数代替GetChangeSet接口。

请求示例

aliyun ros ListChangeSets --StackId 4a6c9851-3b0f-4f5f-b4ca-a14bf691****

正常返回示例

{
        "PageNumber":1,
        "TotalCount":1,
        "PageSize":10,
        "RequestId":"24AA105D-6AFB-4EBD-923A-DC3A5B10D62A",
        "ChangeSets":[
                {
                        "ExecutionStatus":"AVAILABLE",
                        "Status":"CREATE_COMPLETE",
                        "Description":"It is a demo.",
                        "ChangeSetId":"1f6521a4-05af-4975-afe9-bc4b45ad****",
                        "StackId":"a6c9851-3b0f-4f5f-b4ca-a14bf691****",
                        "RegionId":"cn-beijing",
                        "CreateTime":"2019-09-05T14:39:31",
                        "ChangeSetName":"MyChangeSet",
                        "ChangeSetType":"UPDATE",
                        "StackName":"MyStack"
                }
        ]
}