预览指定模板将要创建的资源栈信息,验证模板资源的准确性。
本文将提供一个示例,在杭州地域创建并预览一个名为MyStack的资源栈,该资源栈的模板TemplateBody设置为{"ROSTemplateFormatVersion":"2015-09-01"}。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
请求参数
| 名称 | 类型 | 是否必选 | 示例值 | 描述 |
|---|---|---|---|---|
| Action | String | 是 | PreviewStack | 要执行的操作。取值:PreviewStack。 |
| DisableRollback | Boolean | 否 | false | 当创建资源栈失败时,是否禁用回滚。取值:
|
| TimeoutInMinutes | Long | 否 | 60 | 创建资源栈的超时时间。 单位:分钟。 默认值:60。 |
| TemplateBody | String | 否 | {"ROSTemplateFormatVersion":"2015-09-01"} | 模板主体的结构。长度为1~524,288个字节。如果长度较长,则建议通过HTTP POST+Body Param的方式,将参数放在请求体中进行传递,避免因URL过长而导致请求失败。 说明 您必须且仅能指定TemplateBody、TemplateURL、TemplateId和TemplateScratchId其中一个参数。 |
| 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个字节。 |
| RegionId | String | 是 | cn-hangzhou | 资源栈所属的地域ID。您可以调用DescribeRegions查看最新的阿里云地域列表。 |
| StackPolicyBody | String | 否 | {"Statement": [{"Action": "Update:*", "Resource": "*", "Effect": "Allow", "Principal": "*"}]} | 包含资源栈策略主体的结构,长度为1~16,384个字节。 说明 您仅能指定StackPolicyBody和StackPolicyURL其中一个参数。 |
| StackName | String | 否 | MyStack | 资源栈名称。预览创建资源栈。 长度不超过255个字符,必须以数字或英文字母开头,可包含数字、英文字母、短划线(-)和下划线(_)。 说明 您必须且仅能指定StackName或StackId其中一个参数。 |
| ClientToken | String | 否 | 123e4567-e89b-12d3-a456-42665544**** | 保证请求的幂等性。该值由客户端生成,并且必须是全局唯一的。 长度不超过64个字符,可包含英文字母、数字、短划线(-)和下划线(_)。 更多详情,请参见如何保证幂等性。 |
| TemplateURL | String | 否 | oss://ros-template/demo | 包含模板主体的文件的位置。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其中一个参数。 |
| TemplateId | String | 否 | 5ecd1e10-b0e9-4389-a565-e4c15efc**** | 模板ID。支持共享模板和私有模板。 说明 您必须且仅能指定TemplateBody、TemplateURL、TemplateId和TemplateScratchId其中一个参数。 |
| TemplateVersion | String | 否 | v1 | 模板版本。仅在指定TemplateId时生效。 |
| Parameters.N.ParameterKey | String | 是 | ALIYUN::AccountId | 参数名称。如果未指定参数名称和参数值,ROS将使用模板中指定的默认值。N的最大值为200。 说明 若指定了Parameters,则Parameters.N.ParameterKey为必选参数。 |
| Parameters.N.ParameterValue | String | 是 | 151266687691**** | 参数值。N的最大值为200。 说明 若指定了Parameters,则Parameters.N.ParameterValue为必选参数。 |
| Parallelism | Long | 否 | 1 | 资源最大并发数。仅对Terraform类型资源栈生效。 默认为空,用户可以输入大于等于零的整数。 说明 若设置为大于零的整数,则使用该整数;若设置为零或者不设置,则使用Terraform默认值(通常为10)。 |
| TemplateScratchId | String | 否 | ts-aa9c62feab844a6b**** | 资源场景ID。 关于如何获取资源场景ID,请参见ListTemplateScratches。 说明 您必须且仅能指定TemplateBody、TemplateURL、TemplateId和TemplateScratchId其中一个参数。 |
| TemplateScratchRegionId | String | 否 | cn-hangzhou | 资源场景所属的地域ID,默认与RegionId取值相同。 您可以调用DescribeRegions查看最新的阿里云地域列表。 |
| StackId | String | 否 | 4a6c9851-3b0f-4f5f-b4ca-a14bf691**** | 资源栈ID。预览更新资源栈。 说明
|
| EnablePreConfig | Boolean | 否 | false | 是否获取合规预检参数。 取值:
|
关于公共请求参数的详情,请参见公共参数。
返回数据
| 名称 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| RequestId | String | B288A0BE-D927-4888-B0F7-B35EF84B6E6F | 请求ID。 |
| Stack | Object | 资源栈预览数据。 |
|
| TemplateDescription | String | One ECS instance. | 模板描述。 |
| Parameters | Array of Parameter | 资源栈参数。 |
|
| ParameterKey | String | ALIYUN::AccountId | 参数名称。 |
| ParameterValue | String | 151266687691**** | 参数值。 |
| Description | String | One ECS instance. | 资源栈描述。 |
| DisableRollback | Boolean | false | 是否禁用回滚。 |
| StackName | String | MyStack | 资源栈名称。 |
| TimeoutInMinutes | Integer | 60 | 超时时间。 单位:分钟。 |
| StackPolicyBody | Map | 资源栈策略内容。 |
|
| Resources | Array of Resource | 资源栈中的资源列表。 |
|
| LogicalResourceId | String | WebServer | 资源逻辑ID。 |
| AcsResourceType | String | ACS::ECS::Instance | ACS资源类型。 |
| ResourceType | String | ALIYUN::ECS::Instance | 资源类型。 |
| Description | String | ECS instance. | 资源描述。 |
| Stack | Map | 子资源栈信息。数据结构同整个返回值。 |
|
| RequiredBy | Array of String | ["Resource1", "Resource2"] | 资源栈依赖的资源。 |
| Properties | Map | 资源属性。 |
|
| Action | String | Add | 资源行为。取值:
|
| Replacement | String | False | 模板是否为替换更新。取值:
说明 仅当Action取值为Modify时,返回本参数。 |
| PhysicalResourceId | String | i-a1b2c3*** | 资源物理ID。 当Action为Modify或Remove时,返回本参数。 |
| RegionId | String | cn-hangzhou | 资源栈所在地域。 |
| Log | Object | 资源栈相关输出日志。 |
|
| TerraformLogs | Array of TerraformLog | Terraform输出日志。仅Terraform类型资源栈返回该参数。 说明 该参数表示预览资源栈的日志。 |
|
| Command | String | apply | 执行的Terraform命令名称。取值:
关于命令含义的更多信息,请参见Command。 |
| Stream | String | stdout | 输出流。取值:
|
| Content | String | Apply complete! Resources: 42 added, 0 changed, 0 destroyed. | 当前命令在当前输出流中输出的内容。 |
示例
请求示例
http(s)://ros.aliyuncs.com/?Action=PreviewStack
&TemplateBody={"ROSTemplateFormatVersion":"2015-09-01"}
&StackName=MyStack
&RegionId=cn-hangzhou
&<公共请求参数>
正常返回示例
XML格式
HTTP/1.1 200 OK
Content-Type:application/xml
<PreviewStackResponse>
<RequestId>B288A0BE-D927-4888-B0F7-B35EF84B6E6F</RequestId>
<Stack>
<TemplateDescription>One ECS instance.</TemplateDescription>
<Parameters>
<ParameterKey>ALIYUN::AccountId</ParameterKey>
<ParameterValue>151266687691****</ParameterValue>
</Parameters>
<Description>One ECS instance.</Description>
<DisableRollback>false</DisableRollback>
<StackName>MyStack</StackName>
<TimeoutInMinutes>60</TimeoutInMinutes>
<Resources>
<LogicalResourceId>WebServer</LogicalResourceId>
<AcsResourceType>ACS::ECS::Instance</AcsResourceType>
<ResourceType>ALIYUN::ECS::Instance</ResourceType>
<Description>ECS instance.</Description>
<RequiredBy>["Resource1", "Resource2"]</RequiredBy>
<Action>Add</Action>
<Replacement>False</Replacement>
</Resources>
<RegionId>cn-hangzhou</RegionId>
<Log>
<TerraformLogs>
<Command>apply</Command>
<Stream>stdout</Stream>
<Content>Apply complete! Resources: 42 added, 0 changed, 0 destroyed.</Content>
</TerraformLogs>
</Log>
</Stack>
</PreviewStackResponse>
JSON格式
HTTP/1.1 200 OK
Content-Type:application/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,
"Resources" : {
"LogicalResourceId" : "WebServer",
"AcsResourceType" : "ACS::ECS::Instance",
"ResourceType" : "ALIYUN::ECS::Instance",
"Description" : "ECS instance.",
"RequiredBy" : "[\"Resource1\", \"Resource2\"]",
"Action" : "Add",
"Replacement" : "False"
},
"RegionId" : "cn-hangzhou",
"Log" : {
"TerraformLogs" : {
"Command" : "apply",
"Stream" : "stdout",
"Content" : "Apply complete! Resources: 42 added, 0 changed, 0 destroyed."
}
}
}
}
错误码
访问错误中心查看更多错误码。
访问公共错误码查看更多错误码。
HttpCode |
错误码 |
错误信息 |
描述 |
|---|---|---|---|
400 |
CircularDependency |
Circular Dependency Found: {reason}. |
模板包含循环引用。reason为具体原因。 |
400 |
InvalidSchema |
{reason}. |
模板格式不正确。reason为具体原因。 |
400 |
InvalidTemplateAttribute |
The Referenced Attribute ({resource} {name}) is incorrect. |
模板包含不正确的资源属性(输出)引用。resource为资源名,name为属性名。 |
400 |
InvalidTemplatePropertyType |
The specified value type of ({resource} {section}) is incorrect. |
模板资源定义中的字段类型不正确。resource为资源名,section为字段名。 |
400 |
InvalidTemplateReference |
The specified reference "{name}" (in {referencer}) is incorrect. |
模板包含不正确的引用。name为引用名,referencer为引用者。 |
400 |
InvalidTemplateSection |
The template section is invalid: {section}. |
模板包含无效的字段。section为字段名。 |
400 |
InvalidTemplateVersion |
The template version is invalid: {reason}. |
模板版本不正确。reason为具体原因。 |
400 |
StackValidationFailed |
{reason}. |
资源栈校验失败。reason为具体原因。 |
400 |
UnknownUserParameter |
The Parameter ({name}) was not defined in template. |
传递的参数在模板中未定义。name为参数名。 |
400 |
UserParameterMissing |
The Parameter {name} was not provided. |
参数在模板中已定义,但未传递值。name为参数名。 |
409 |
StackExists |
The Stack ({name}) already exists. |
同名资源栈已存在。name为资源栈名称。 |
404 |
TemplateNotFound |
The Template ({ ID }) could not be found. |
模板不存在。ID为模板ID。 |
404 |
TemplateNotFound |
The Template { ID } with version { version } could not be found. |
模板或指定版本不存在。ID为模板ID,version为模板版本。 |