我正在尝试将 $var 传输到 UserData 以调用 EC2 实例内的脚本。
我的示例代码:
AWSTemplateFormatVersion: 2010-09-09
Resources:
ASLaunchConfig:
Type: 'AWS::AutoScaling::LaunchConfiguration'
Properties:
AssociatePublicIpAddress: false
ImageId: ami-0bxxxxxxxxccb
InstanceType: 't2.medium'
KeyName: 'keyname'
LaunchConfigurationName: 'LaunchConfig'
UserData: !Base64 |
#!/bin/bash
blabla-${ClusterName}
somecode
somecode
Parameters:
ClusterName:
Description: Cluster Name
Type: String
Default: cluster-dev
AllowedValues:
- cluster-dev
- cluster-qa
但是在通过 CloudFormation 构建“启动配置”之后,我在 EC2 UserData 字符串中收到了如下内容:
#!/bin/bash
blabla-${ClusterName}
somecode
somecode
我期待类似的事情:
#!/bin/bash
blabla-cluster-dev
somecode
somecode
我检查了很多主题,但仍然找不到决定。
答案1
您错过了!Sub
替换变量的选项。试试这个:
UserData:
Fn::Base64:
!Sub |
# rest of it
这关键这是:
如果您使用简短形式并立即包含另一个函数...,请对其中一个函数使用完整的函数名称。
例子:
!Base64
"Fn::Sub": string
Fn::Base64:
!Sub string