阅读840 返回首页    go 微信


资源(Resources)__模板语法_资源编排-阿里云

描述堆栈中每一个资源的属性和依赖关系。一个资源可以被其他资源和 Output 所引用。

语法

资源部分由资源 ID 和资源描述组成。所有资源描述都被括在括号里。如果您声明多个资源,则可用逗号将它们分隔开。以下代码段描述了 Resources 的语法结构:

  1. "Resources" : {
  2. "资源1 ID" : {
  3. "Type" : "资源类型",
  4. "Properties" : {
  5. 资源属性描述
  6. }
  7. },
  8. "资源2 ID" : {
  9. "Type" : "资源类型",
  10. "Properties" : {
  11. 资源属性描述
  12. }
  13. }
  14. }

资源 ID

资源 ID 在模板中具有唯一性。可使用资源 ID 在模板的其他部分中引用资源。

资源类型

资源类型标识您正在声明的资源的类型。例如,ALIYUN::ECS::Instance 声明阿里云 ECS 实例。有关所有资源的列表,请参阅 资源列表。

资源属性

资源属性是可以为资源指定的附加选项。例如,对于每个阿里云 ECS 实例,必须为该实例指定一个 Image ID。如以下代码段所示:

  1. "Resources" : {
  2. "ECSInstance" : {
  3. "Type" : "ALIYUN::ECS::Instance",
  4. "Properties" : {
  5. "ImageId" : "m-25l0rcfjo"
  6. }
  7. }
  8. }

如果资源不需要声明任何属性,那么您可以忽略该资源的属性部分。

属性值可以是文本字符串、字符串列表、布尔值、参数引用或者函数返回的值。如果属性值为文件字符串,该值会被双引号括起来。如果值为任一类型的列表结果,则它会被中括号 ([ ]) 括起来。如果值为内部函数或引用的结果,则它会被大括号 ({ }) 括起来。当您将文字、列表、参考和函数合并起来获取值时,上述规则适用。以下示例说明如何声明不同的属性值类型:

  1. "Properties" : {
  2. "String" : "string",
  3. "LiteralList" : [ "value1", "value2" ],
  4. "Boolean" : "true"
  5. "ReferenceForOneValue" : { "Ref" : "ResourceID" } ,
  6. "FunctionResultWithFunctionParams" : {
  7. "Fn::Join" : [ "%", [ "Key=", { "Ref" : "SomeParameter" } ] ] }
  8. }

DeletionPolicy

利用 DeletionPolicy 属性,用户可以在某个资源的堆栈被删除时保留该资源。如以下代码段所示:

  1. "Resources" : {
  2. "ECSInstance" : {
  3. "Type" : "ALIYUN::ECS::Instance",
  4. "Properties" : {
  5. "ImageId" : "m-25l0rcfjo"
  6. },
  7. "DeletionPolicy" : "Retain"
  8. }
  9. }

在上例中,如果模板对应的堆栈被删除,则会保留 ECSInstance 资源。

DependsOn

使用 DependsOn 属性可以指定特定资源紧跟着另一个资源创建。在您为资源添加 DependsOn 属性时,该资源仅在创建 DependsOn 属性中指定的资源之后创建。

如以下代码段所示,WebServer 将在 DatabaseServer 创建成功后才开始创建:

  1. {
  2. "ROSTemplateFormatVersion" : "2015-09-01",
  3. "Resources" : {
  4. "WebServer": {
  5. "Type": "ALIYUN::ECS::Instance",
  6. "DependsOn": "DatabseServer"
  7. },
  8. "DatabseServer": {
  9. "Type": "ALIYUN::ECS::Instance",
  10. "Properties": {
  11. "ImageId" : "m-25l0rcfjo",
  12. "InstanceType": "ecs.t1.small"
  13. }
  14. }
  15. }
  16. }

示例

以下示例显示的是典型的资源声明。

  1. "Resources" : {
  2. "WebServer": {
  3. "Type": "ALIYUN::ECS::Instance",
  4. "Properties": {
  5. "ImageId" : "m-25l0rcfjo",
  6. "InstanceType": "ecs.t1.small",
  7. "SecurityGroupId": "sg-25zwc3se0",
  8. "ZoneId": "cn-beijing-b",
  9. "Tags": [{
  10. "Key": "tiantt",
  11. "Value": "ros"
  12. },{
  13. "Key": "tiantt1",
  14. "Value": "ros1"
  15. }
  16. ]
  17. }
  18. },
  19. "ScalingConfiguration": {
  20. "Type": "ALIYUN::ESS::ScalingConfiguration",
  21. "Properties": {
  22. "ImageId": "ubuntu1404_64_20G_aliaegis_20150325.vhd",
  23. "InstanceType": "ecs.t1.small",
  24. "InstanceId": "i-25xhhcqbu",
  25. "InternetChargeType": "PayByTraffic",
  26. "InternetMaxBandwidthIn": 1,
  27. "InternetMaxBandwidthOut": 20,
  28. "SystemDisk_Category": "cloud",
  29. "ScalingGroupId": "bwhtvpcBcKYac9fe3vd0kv7E",
  30. "SecurityGroupId": "sg-25zwc3se0",
  31. "DiskMappings": [
  32. {
  33. "Size": 10
  34. },
  35. {
  36. "Category": "cloud",
  37. "Size": 10
  38. }
  39. ]
  40. }
  41. }
  42. }

最后更新:2016-11-23 16:04:02

  上一篇:go 参数(Parameters)__模板语法_资源编排-阿里云
  下一篇:go 输出(Outputs)__模板语法_资源编排-阿里云