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

相關問題