使用 OpsWorks 的 Cloudformation 处理空值

Posted

技术标签:

【中文标题】使用 OpsWorks 的 Cloudformation 处理空值【英文标题】:Cloudformation with OpsWorks handle empty value 【发布时间】:2016-12-24 06:33:40 【问题描述】:

在我的 cloudformation 模板中,我有一个可以为空的参数,但 Fn::Join 假设一个值,这就是示例:

 "Parameters": 
  "ConfigureRecipe": 
   "Description": "Configure recipe.",
   "Type": "String"
  

"Configure": [  "Fn::Join": [ "", [ "myChefRecipe::",  "Ref": "ConfigureRecipe"  ] ]  ]

如果 ConfigureRecipe 为空,Cloudfomation 会将配方“myChefRecipe::”传递给 OpsWorks,并在配置启动时给我一个错误,因为一个好的变量是“myChefRecipe::mysql”。我该如何处理?如果 ConfigureRecipe 为空,则可能使用 AWS::NoValue。

【问题讨论】:

【参考方案1】:

也许你可以试试这个:

    "Parameters": 
    "ConfigureRecipe": 
    "Description": "Configure recipe.",
    "Type": "String"
    

   "Conditions" : 
"CreateLayerWithoutRecipie" : "Fn::Not" : ["Ref" : "ConfigureRecipe"]
    ,

    "Layer":
     "Type":"AWS::OpsWorks::Layer",
     ....
     ....
     ....
     "Configure": [ "Fn::If" : [ "CreateLayerWithoutRecipie", "Ref" : "AWS::NoValue",  "Fn::Join": [ "", [ "myChefRecipe::",  "Ref": "ConfigureRecipe"   ] ]  ]]
     

【讨论】:

以上是关于使用 OpsWorks 的 Cloudformation 处理空值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CloudFormation 创建 OpsWorks 用户?

使用 OpsWorks + Chef

AWS OpsWorks - 无法使用 AWS OpsWorks 部署我的应用程序,尤其是无法成功迁移

在 OpsWorks 中使用 Grunt 或 Gulp

OpsWorks / Chef PHP 部署流程

使用 customResource 将 RDS 层注册到 opsworks 堆栈