閱讀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)__模板語法_資源編排-阿裏雲