如何在 AWS Cloudformation 资源部分的 Fn:Join 中使用用户输入的参数作为参考

Posted

技术标签:

【中文标题】如何在 AWS Cloudformation 资源部分的 Fn:Join 中使用用户输入的参数作为参考【英文标题】:How do I use user inputted parameter as reference in Fn:Join in the resource section of AWS Cloudformation 【发布时间】:2021-10-14 14:54:46 【问题描述】:


    "AWSTemplateFormatVersion": "2010-09-09",
  
    "Parameters": 
        "EnterIpAddress":
            "Type": "String"
        
    ,
    "Resource":
        "XyZ":
            "Type": "AWS::ECS::TaskDefinition",
            "ContainerDefinitions": [
                
                    "Command": [

                        
                        
                          "Fn::Join": [
                            "=", [
                              "--beacon_ip",
                              
                                "Ref": "EnterIpAddress"
                              
                            ]
                          ]
                        
                      ]
                
            ]
        
    
    

我想将该参数用作 Fn::Join 中的引用,以便我的最终输出为

"--beacon_ip=xx.xxx.xxx.xx"

我希望用户在哪里输入 IP 地址(xx.xxx.xxx.xx)

但我在将模板上传到堆栈时收到此错误:

Template format error: Unresolved resource dependencies [EnterIpAddress] in the Resources block of the template

请告诉我如何实现所需的输出。谢谢

【问题讨论】:

【参考方案1】:

由于您似乎还没有发布您的整个堆栈,这可能只是某个地方的拼写错误吗?据我所知,语法看起来是正确的,但由于它是 CloudFormation 文件的缩写版本,因此其中可能存在一些不可见的错误。

话虽如此,我更喜欢使用Fn::Sub 而不是使用Fn::Join,只是因为它更容易理解为 CloudFormation 文件的阅读器:


  "Fn::Sub": "--beacon_ip=$EnterIpAddress"


【讨论】:

以上是关于如何在 AWS Cloudformation 资源部分的 Fn:Join 中使用用户输入的参数作为参考的主要内容,如果未能解决你的问题,请参考以下文章

使用 AWS CLI 将现有资源导入 CloudFormation

使用AWS CLI将现有资源导入CloudFormation

如何在 AWS Cloudformation 资源部分的 Fn:Join 中使用用户输入的参数作为参考

如何使用 cloudformation 创建私有 AWS Api 网关?

将现有 AWS 资源整合到 CloudFormation 堆栈中

AWS Cloudformation - Helper Scripts