PreviewStack - 预览指定模板将要创建的资源栈信息

预览指定模板将要创建的资源栈信息,验证模板资源的准确性。

接口说明

本文将提供一个示例,在杭州地域创建并预览一个名为MyStack的资源栈,该资源栈的模板TemplateBody设置为{"ROSTemplateFormatVersion":"2015-09-01"}

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

授权信息

下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:

  • 操作:是指具体的权限点。
  • 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。
  • 资源类型:是指操作中支持授权的资源类型。具体说明如下:
    • 对于必选的资源类型,用背景高亮的方式表示。
    • 对于不支持资源级授权的操作,用全部资源表示。
  • 条件关键字:是指云产品自身定义的条件关键字。
  • 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。
操作访问级别资源类型条件关键字关联操作
ros:PreviewStackget
  • Stack
    acs:ros:{#regionId}:{#accountId}:stack/{#StackId}

请求参数

名称类型必填描述示例值
DisableRollbackboolean

当创建资源栈失败时,是否禁用回滚。取值:

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

创建资源栈的超时时间。

单位:分钟。

默认值:60。

60
TemplateBodystring

模板主体的结构。长度为 1~524,288 个字节。如果长度较长,则建议通过 HTTP POST+Body Param 的方式,将参数放在请求体中进行传递,避免因 URL 过长而导致请求失败。

说明 您必须且仅能指定 TemplateBody、TemplateURL、TemplateId 和 TemplateScratchId 其中一个参数。
{"ROSTemplateFormatVersion":"2015-09-01"}
StackPolicyURLstring

包含资源栈策略的文件的位置。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 个字节。

oss://ros-stack-policy/demo
RegionIdstring

资源栈所属的地域 ID。您可以调用 DescribeRegions 查看最新的阿里云地域列表。

cn-hangzhou
StackPolicyBodystring

包含资源栈策略主体的结构,长度为 1~16,384 个字节。

说明 您仅能指定 StackPolicyBody 和 StackPolicyURL 其中一个参数。
{"Statement": [{"Action": "Update:*", "Resource": "*", "Effect": "Allow", "Principal": "*"}]}
StackNamestring

资源栈名称。预览创建资源栈。 长度不超过 255 个字符,必须以数字或英文字母开头,可包含数字、英文字母、短划线(-)和下划线(_)。

说明 您必须且仅能指定 StackName 或 StackId 其中一个参数。
MyStack
ClientTokenstring

保证请求的幂等性。该值由客户端生成,并且必须是全局唯一的。
长度不超过 64 个字符,可包含英文字母、数字、短划线(-)和下划线(_)。
更多详情,请参见如何保证幂等性

123e4567-e89b-12d3-a456-42665544****
TemplateURLstring

包含模板主体的文件的位置。URL 必须指向位于 Web 服务器(HTTP 或 HTTPS)或阿里云 OSS 存储空间(例如:oss://ros/stack-policy/demo、oss://ros/stack-policy/demo?RegionId=cn-hangzhou)中的模板,模板的最大长度为 524,288 个字节。如未指定 OSS 地域,默认与 RegionId 取值相同。

说明 您必须且仅能指定 TemplateBody、TemplateURL、TemplateId 和 TemplateScratchId 其中一个参数。
oss://ros-template/demo
TemplateIdstring

模板 ID。支持共享模板和私有模板。

说明 您必须且仅能指定 TemplateBody、TemplateURL、TemplateId 和 TemplateScratchId 其中一个参数。
5ecd1e10-b0e9-4389-a565-e4c15efc****
TemplateVersionstring

模板版本。仅在指定 TemplateId 时生效。

v1
Parametersarray<object>

参数。

object
ParameterKeystring

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

说明 若指定了 Parameters,则 Parameters.N.ParameterKey 为必选参数。
ALIYUN::AccountId
ParameterValuestring

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

说明 若指定了 Parameters,则 Parameters.N.ParameterValue 为必选参数。
151266687691****
Parallelismlong

资源最大并发数。仅对 Terraform 类型资源栈生效。

默认为空,用户可以输入大于等于零的整数。

说明 若设置为大于零的整数,则使用该整数;若设置为零或者不设置,则使用 Terraform 默认值(通常为 10)。
1
TemplateScratchIdstring

资源场景 ID。

关于如何获取资源场景 ID,请参见 ListTemplateScratches

说明 您必须且仅能指定 TemplateBody、TemplateURL、TemplateId 和 TemplateScratchId 其中一个参数。
ts-aa9c62feab844a6b****
TemplateScratchRegionIdstring

资源场景所属的地域 ID,默认与 RegionId 取值相同。

您可以调用 DescribeRegions 查看最新的阿里云地域列表。

cn-hangzhou
StackIdstring

资源栈 ID。预览更新资源栈。

说明
  • 您必须且仅能指定 StackName 或 StackId 其中一个参数。
  • 预览创建或更新资源栈的场景中不支持预览嵌套资源栈中的资源。
  • 4a6c9851-3b0f-4f5f-b4ca-a14bf691****
    EnablePreConfigboolean

    是否获取合规预检参数。

    取值:

    • true:获取合规预检参数。

    • false(默认值):不获取合规预检参数。

    false

    关于公共请求参数的详情,请参见公共参数

    返回参数

    名称类型描述示例值
    object
    RequestIdstring

    请求 ID。

    B288A0BE-D927-4888-B0F7-B35EF84B6E6F
    Stackobject

    资源栈预览数据。

    TemplateDescriptionstring

    模板描述。

    One ECS instance.
    Parametersarray<object>

    资源栈参数。

    object
    ParameterKeystring

    参数名称。

    ALIYUN::AccountId
    ParameterValuestring

    参数值。

    151266687691****
    Descriptionstring

    资源栈描述。

    One ECS instance.
    DisableRollbackboolean

    是否禁用回滚。

    false
    StackNamestring

    资源栈名称。

    MyStack
    TimeoutInMinutesinteger

    超时时间。

    单位:分钟。

    60
    StackPolicyBodyobject

    资源栈策略内容。

    { "Statement": [ { "Action": "Update:*", "Resource": "*", "Effect": "Allow", "Principal": "*" }, { "Action": "Update:*", "Resource": "LogicalResourceId/apple1", "Effect": "Deny", "Principal": "*" } ] }
    Resourcesarray<object>

    资源栈中的资源列表。

    object
    LogicalResourceIdstring

    资源逻辑 ID。

    WebServer
    AcsResourceTypestring

    ACS 资源类型。

    ACS::ECS::Instance
    ResourceTypestring

    资源类型。

    ALIYUN::ECS::Instance
    Descriptionstring

    资源描述。

    ECS instance.
    Stackobject

    子资源栈信息。数据结构同整个返回值。

    {}
    RequiredByarray

    资源栈依赖的资源。

    string

    资源栈依赖的资源。

    ["Resource1", "Resource2"]
    Propertiesobject

    资源属性。

    { "DiskMappings": [ { "Category": "cloud_ssd", "Size": "20" } ], "SystemDisk_Category": "cloud_ssd", "InstanceChargeType": "PostPaid", "AutoRenew": "False", "WillReplace": true, "ImageId": "centos_7", "InstanceType": "ecs.g6.large", "AllocatePublicIP": true, "AutoRenewPeriod": 1, "IoOptimized": "optimized", "ZoneId": "cn-beijing-g", "VSwitchId": "", "SecurityGroupId": "", "Period": 1, "InternetChargeType": "PayByTraffic", "SystemDiskCategory": "cloud_efficiency", "InternetMaxBandwidthOut": 1, "VpcId": "", "InternetMaxBandwidthIn": 200, "PeriodUnit": "Month" }
    Actionstring

    资源行为。取值:

    • Add:增加资源。
    • Modify:修改资源。
    • Remove:删除资源。
    • None:无变化。
    Add
    Replacementstring

    模板是否为替换更新。取值:

    • True:替换更新。
    • False:修改更新。
    • Conditional:可能是替换更新,模板运行时才能确定。
    说明 仅当 Action 取值为 Modify 时,返回本参数。
    False
    PhysicalResourceIdstring

    资源物理 ID。

    当 Action 为 Modify 或 Remove 时,返回本参数。

    i-a1b2c3***
    RegionIdstring

    资源栈所在地域。

    cn-hangzhou
    Logobject

    资源栈相关输出日志。

    TerraformLogsarray<object>

    Terraform 输出日志。仅 Terraform 类型资源栈返回该参数。

    说明 该参数表示预览资源栈的日志。
    object
    Commandstring

    执行的 Terraform 命令名称。取值:

    • apply

    • plan

    • destroy

    • version

    关于命令含义的更多信息,请参见 Command

    apply
    Streamstring

    输出流。取值:

    • stdout:标准输出。

    • stderr:标准错误。

    stdout
    Contentstring

    当前命令在当前输出流中输出的内容。

    Apply complete! Resources: 42 added, 0 changed, 0 destroyed.

    示例

    正常返回示例

    JSON格式

    {
      "RequestId": "B288A0BE-D927-4888-B0F7-B35EF84B6E6F",
      "Stack": {
        "TemplateDescription": "One ECS instance.",
        "Parameters": [
          {
            "ParameterKey": "ALIYUN::AccountId",
            "ParameterValue": "151266687691****"
          }
        ],
        "Description": "One ECS instance.",
        "DisableRollback": false,
        "StackName": "MyStack",
        "TimeoutInMinutes": 60,
        "StackPolicyBody": {
          "Statement": [
            {
              "Action": "Update:*",
              "Resource": "*",
              "Effect": "Allow",
              "Principal": "*"
            },
            {
              "Action": "Update:*",
              "Resource": "LogicalResourceId/apple1",
              "Effect": "Deny",
              "Principal": "*"
            }
          ]
        },
        "Resources": [
          {
            "LogicalResourceId": "WebServer",
            "AcsResourceType": "ACS::ECS::Instance",
            "ResourceType": "ALIYUN::ECS::Instance",
            "Description": "ECS instance.",
            "Stack": {},
            "RequiredBy": [
              "[\"Resource1\", \"Resource2\"]"
            ],
            "Properties": {
              "DiskMappings": [
                {
                  "Category": "cloud_ssd",
                  "Size": "20"
                }
              ],
              "SystemDisk_Category": "cloud_ssd",
              "InstanceChargeType": "PostPaid",
              "AutoRenew": "False",
              "WillReplace": true,
              "ImageId": "centos_7",
              "InstanceType": "ecs.g6.large",
              "AllocatePublicIP": true,
              "AutoRenewPeriod": 1,
              "IoOptimized": "optimized",
              "ZoneId": "cn-beijing-g",
              "VSwitchId": "",
              "SecurityGroupId": "",
              "Period": 1,
              "InternetChargeType": "PayByTraffic",
              "SystemDiskCategory": "cloud_efficiency",
              "InternetMaxBandwidthOut": 1,
              "VpcId": "",
              "InternetMaxBandwidthIn": 200,
              "PeriodUnit": "Month"
            },
            "Action": "Add",
            "Replacement": "False",
            "PhysicalResourceId": "i-a1b2c3***"
          }
        ],
        "RegionId": "cn-hangzhou",
        "Log": {
          "TerraformLogs": [
            {
              "Command": "apply",
              "Stream": "stdout",
              "Content": "Apply complete! Resources: 42 added, 0 changed, 0 destroyed."
            }
          ]
        }
      }
    }

    错误码

    访问错误中心查看更多错误码。

    变更历史

    变更时间变更内容概要操作
    2024-01-11API 内部配置变更,不影响调用查看变更详情

    访问公共错误码查看更多错误码。

    HttpCode错误码错误信息描述
    400CircularDependencyCircular Dependency Found: {reason}.模板包含循环引用。reason 为具体原因。
    400InvalidSchema{reason}.模板格式不正确。reason 为具体原因。
    400InvalidTemplateAttributeThe Referenced Attribute ({resource} {name}) is incorrect.模板包含不正确的资源属性(输出)引用。resource 为资源名,name 为属性名。
    400InvalidTemplatePropertyTypeThe specified value type of ({resource} {section}) is incorrect.模板资源定义中的字段类型不正确。resource 为资源名,section 为字段名。
    400InvalidTemplateReferenceThe specified reference "{name}" (in {referencer}) is incorrect.模板包含不正确的引用。name 为引用名,referencer 为引用者。
    400InvalidTemplateSectionThe template section is invalid: {section}.模板包含无效的字段。section 为字段名。
    400InvalidTemplateVersionThe template version is invalid: {reason}.模板版本不正确。reason 为具体原因。
    400StackValidationFailed{reason}.资源栈校验失败。reason 为具体原因。
    400UnknownUserParameterThe Parameter ({name}) was not defined in template.传递的参数在模板中未定义。name 为参数名。
    400UserParameterMissingThe Parameter {name} was not provided.参数在模板中已定义,但未传递值。name 为参数名。
    409StackExistsThe Stack ({name}) already exists.同名资源栈已存在。name 为资源栈名称。
    404TemplateNotFoundThe Template ({ ID }) could not be found.模板不存在。ID 为模板 ID。
    404TemplateNotFoundThe Template { ID } with version { version } could not be found.模板或指定版本不存在。ID 为模板 ID,version 为模板版本。