0

我正在尝试编写一个云形成模板,它将创建启动配置,ASG,ECS群集,并将ASG中的ec2实例注册到所述群集。Cloudformation ECS群集

我有一个很长的userdata.sh文件,用于设置启动配置。

通过把这个用户数据在YAML文件 即

... 
    UserData: 
     Fn::Base64: !Sub | 
     #!/bin/bash 
     ... 

它看起来很可怕。另外,当我尝试使用Sub将集群名称插入ecs代理$ {ECSCluster}中时,我得到“Fn :: Sub语法中的变量名称只能包含字母数字字符,下划线,句点和冒号”。我的用户数据中的环境变量具有相同的格式$ {ENV_VARIABLE}。

我试过Passing userdata file to AWS Cloudformation stack但收到“模板格式错误:没有很好地形成YAML”

什么是传递一个复杂的userdata.sh文件到一个CFT以这样的方式推荐的方式,你可以将群集名称添加到ecs-agent配置中?

回答

1

错误只是说它不喜欢你在Fn::Sub中引用变量的方式。而不是$(ECSCluster)它需要是${ECSCluster}。请参阅文档中的examples

+0

我实际上使用$ {ECSCluster},这是一个错字 – user2254140

+0

在你的用户数据(或使用'Fn :: Sub'的CF模板的其他部分)中几乎肯定存在一个问题, 。也许,CF模板编译器认为某些东西是一个变量引用,这并不意味着如此。没有看到它的样子很难说。 –

+0

如果我以$ {ENV_VAR}格式引用环境变量,CFT如何区分环境变量和资源? – user2254140