Cloudformation ECS 集群

问题描述 投票:0回答:2

我正在尝试编写一个 Cloud Formation 模板,该模板将创建启动配置、ASG、ECS 集群,并将 ASG 中的 ec2 实例注册到所述集群。

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

将此用户数据放入 yaml 文件中 即

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

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

我已尝试将用户数据文件传递到 AWS Cloudformation 堆栈,但收到“模板格式错误:YAML 格式不正确。”

将复杂的 userdata.sh 文件传递到 CFT 中的推荐方法是什么,以便您可以将集群名称添加到 ecs-agent 配置中?

amazon-web-services amazon-ecs aws-cloudformation user-data launch-configuration
2个回答
1
投票

错误只是表明它不喜欢您在

Fn::Sub
中引用变量的方式。而不是
$(ECSCluster)
,它需要是
${ECSCluster}
。请参阅文档中的示例


0
投票

这可能会帮助其他遇到类似问题的人。例如,即使您放错了变量的任何结束括号,也可能会发生此错误

 - !Sub 'https://sqs.${AWS::Region}.amazonaws.com/${AWS::AccountId/${SQSName}'

在上面的代码中,AccountId 中缺少 }。

© www.soinside.com 2019 - 2024. All rights reserved.