预览指定模板将要创建的资源栈信息,验证模板资源的准确性。
接口说明
本文将提供一个示例,在杭州地域创建并预览一个名为MyStack
的资源栈,该资源栈的模板TemplateBody
设置为{"ROSTemplateFormatVersion":"2015-09-01"}
。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
授权信息
下表是API对应的授权信息,可以在RAM权限策略语句的Action
元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:
- 操作:是指具体的权限点。
- 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。
- 资源类型:是指操作中支持授权的资源类型。具体说明如下:
- 对于必选的资源类型,用背景高亮的方式表示。
- 对于不支持资源级授权的操作,用
全部资源
表示。
- 条件关键字:是指云产品自身定义的条件关键字。
- 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。
操作 | 访问级别 | 资源类型 | 条件关键字 | 关联操作 |
---|---|---|---|---|
ros:PreviewStack | READ |
|
| 无 |
请求参数
名称 | 类型 | 必填 | 描述 | 示例值 |
---|---|---|---|---|
DisableRollback | boolean | 否 | 当创建资源栈失败时,是否禁用回滚。取值:
| false |
TimeoutInMinutes | long | 否 | 创建资源栈的超时时间。 单位:分钟。 默认值:60。 | 60 |
TemplateBody | string | 否 | 模板主体的结构。长度为1~524,288个字节。如果长度较长,则建议通过HTTP POST+Body Param的方式,将参数放在请求体中进行传递,避免因URL过长而导致请求失败。 说明您必须且仅能指定TemplateBody、TemplateURL、TemplateId和TemplateScratchId其中一个参数。 | {"ROSTemplateFormatVersion":"2015-09-01"} |
StackPolicyURL | string | 否 | 包含资源栈策略的文件的位置。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 |
RegionId | string | 是 | 资源栈所属的地域ID。您可以调用DescribeRegions查看最新的阿里云地域列表。 | cn-hangzhou |
StackPolicyBody | string | 否 | 包含资源栈策略主体的结构,长度为1~16,384个字节。 说明您仅能指定StackPolicyBody和StackPolicyURL其中一个参数。 | {"Statement": [{"Action": "Update:*", "Resource": "*", "Effect": "Allow", "Principal": "*"}]} |
StackName | string | 否 | 资源栈名称。预览创建资源栈。 长度不超过255个字符,必须以数字或英文字母开头,可包含数字、英文字母、短划线(-)和下划线(_)。 说明您必须且仅能指定StackName或StackId其中一个参数。 | MyStack |
ClientToken | string | 否 | 保证请求的幂等性。该值由客户端生成,并且必须是全局唯一的。 | 123e4567-e89b-12d3-a456-42665544**** |
TemplateURL | string | 否 | 包含模板主体的文件的位置。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 |
TemplateId | string | 否 | 模板ID。支持共享模板和私有模板。 说明您必须且仅能指定TemplateBody、TemplateURL、TemplateId和TemplateScratchId其中一个参数。 | 5ecd1e10-b0e9-4389-a565-e4c15efc**** |
TemplateVersion | string | 否 | 模板版本。仅在指定TemplateId时生效。 | v1 |
Parameters | array | 否 | 参数。 | |
object | 否 | |||
ParameterKey | string | 是 | 参数名称。如果未指定参数名称和参数值,ROS将使用模板中指定的默认值。N的最大值为200。 说明若指定了Parameters,则Parameters.N.ParameterKey为必选参数。 | ALIYUN::AccountId |
ParameterValue | string | 是 | 参数值。N的最大值为200。 说明若指定了Parameters,则Parameters.N.ParameterValue为必选参数。 | 151266687691**** |
Parallelism | long | 否 | 资源最大并发数。仅对Terraform类型资源栈生效。 默认为空,用户可以输入大于等于零的整数。 说明若设置为大于零的整数,则使用该整数;若设置为零或者不设置,则使用Terraform默认值(通常为10)。 | 1 |
TemplateScratchId | string | 否 | 资源场景ID。 关于如何获取资源场景ID,请参见ListTemplateScratches。 说明您必须且仅能指定TemplateBody、TemplateURL、TemplateId和TemplateScratchId其中一个参数。 | ts-aa9c62feab844a6b**** |
TemplateScratchRegionId | string | 否 | 资源场景所属的地域ID,默认与RegionId取值相同。 您可以调用DescribeRegions查看最新的阿里云地域列表。 | cn-hangzhou |
StackId | string | 否 | 资源栈ID。预览更新资源栈。 说明
| 4a6c9851-3b0f-4f5f-b4ca-a14bf691**** |
EnablePreConfig | boolean | 否 | 是否获取合规预检参数。 取值:
| false |
关于公共请求参数的详情,请参见公共参数。
返回参数
示例
正常返回示例
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": {
"test": "test",
"test2": 1
},
"Resources": [
{
"LogicalResourceId": "WebServer",
"AcsResourceType": "ACS::ECS::Instance",
"ResourceType": "ALIYUN::ECS::Instance",
"Description": "ECS instance.",
"Stack": {
"test": "test",
"test2": 1
},
"RequiredBy": [
"[\"Resource1\", \"Resource2\"]"
],
"Properties": {
"test": "test",
"test2": 1
},
"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."
}
]
}
}
}
错误码
访问错误中心查看更多错误码。
访问公共错误码查看更多错误码。
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为模板版本。 |