全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
资源编排

资源(Resources)

更新时间:2018-02-07 10:34:56

资源(Resources) 用于描述资源栈中每个资源的属性和资源之间依赖关系。一个 Resources 可以被其他资源和 Outputs 所引用。

语法

Resources 由资源 ID 和资源描述组成。资源描述用大括号括起。如果声明多个资源,用逗号分隔开。请参见以下 Resources 的语法结构示例代码段:

  1. "Resources" : {
  2. "资源1 ID" : {
  3. "Type" : "资源类型",
  4. "Condition": "是否创建此资源的条件"
  5. "Properties" : {
  6. 资源属性描述
  7. }
  8. },
  9. "资源 2 ID" : {
  10. "Type" : "资源类型",
  11. "Condition": "是否创建此资源的条件"
  12. "Properties" : {
  13. 资源属性描述
  14. }
  15. }
  16. }

资源 ID

资源 ID 在模板中具有唯一性。在创建模板其他部分时,可以通过资源 ID 引用该资源。

资源类型(Type)

资源类型表示正在声明的资源的类型。例如,ALIYUN::ECS::Instance 表示阿里云 ECS 实例。有关 ROS 支持的所有资源类型列表和详细信息,请参见 资源类型列表

资源属性(Properties)

资源属性是为资源指定的附加选项。例如,必须为每个阿里云 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 属性,可以声明在资源栈被删除时保留某个资源。例如,设置在资源栈删除时,保留 ECS 实例。可按照如下代码段进行声明:

  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. }

Condition

在模板中,使用 Condition 属性可以指定是否需要创建此资源。只有 Condition 所指定的条件值为 true 时,才会创建此资源。

如以下代码段所示,根据 MaxAmount 的值判断否创建 WebServer:

  1. {
  2. "ROSTemplateFormatVersion" : "2015-09-01",
  3. "Parameters": {
  4. "MaxAmount": {
  5. "Type": "Number",
  6. "Default": 1
  7. }
  8. },
  9. "Conditions": {
  10. "CreateWebServer": {"Fn::Not": {"Fn::Equals": [0, {"Ref": "MaxAmount"}]}}
  11. }
  12. "Resources" : {
  13. "WebServer": {
  14. "Type": "ALIYUN::ECS::InstanceGroup",
  15. "Condition": "CreateWebServer",
  16. "Properties": {
  17. "ImageId" : "m-25l0rcfjo",
  18. "InstanceType": "ecs.t1.small"
  19. "MaxAmount": {"Ref": "MaxAmount"}
  20. }
  21. },
  22. "DatabseServer": {
  23. "Type": "ALIYUN::ECS::Instance",
  24. "Properties": {
  25. "ImageId" : "m-25l0rcfjo",
  26. "InstanceType": "ecs.t1.small"
  27. }
  28. }
  29. }
  30. }

示例

以下示例为典型的资源声明:

  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": "Department1",
  11. "Value": "HumanResource"
  12. },{
  13. "Key": "Department2",
  14. "Value": "Finance"
  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. }
本文导读目录