小编use*_*385的帖子

Fn::Sub 在文字块中使用 Mapping 来指定用户数据脚本

好的,请阅读有关内部函数 Fn::Sub 的文档。我可以使用文字块来指定用户数据脚本。

UserData:
    "Fn::Base64":
    !Sub |
        #!/bin/bash -xe
        yum update -y aws-cfn-bootstrap
        /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource LaunchConfig --configsets wordpress_install --region ${AWS::Region}
        /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource WebServerGroup --region ${AWS::Region}
Run Code Online (Sandbox Code Playgroud)

我可以使用映射将 ${Domain} 变量替换为 Ref 函数的结果值。

Name: !Sub
    - www.${Domain}
    - { Domain: !Ref RootDomainName }
Run Code Online (Sandbox Code Playgroud)

但是如果我需要在文字块内使用映射替代怎么办?例如:

"Fn::Base64": !Sub |
    <powershell>
        Write-host "My Domain is www.${Domain},{ Domain: !Ref RootDomainName }"
    </powershell>
Run Code Online (Sandbox Code Playgroud)

这个例子不起作用,而且我还没有找到可行的方法。有任何想法吗?第一个示例使用户数据脚本更容易编写并且看起来更干净,但是如果无法使用 !Ref 或 !Findinmap ,它的实用性就会大大降低。

有人有什么想法吗?

amazon-web-services aws-cloudformation

2
推荐指数
1
解决办法
4949
查看次数