在CloudFormation中用Join和Ref格式化带用户名密码的curl命令出错求助
问题分析与修复方案
嘿,我一眼就瞅出你配置里的问题啦——CloudFormation的语法写错了,导致User和Pass参数没正确注入到curl命令里,所以curl才会提示你手动输入密码。
错误点拆解
- !Join语法错误:你写的
!Join [":",[ !Ref User, !Ref, Pass] ]里,!Ref, Pass多了个逗号,正确的参数引用应该是!Ref Pass,不需要额外逗号。 - 没必要嵌套Join(可选优化):既然已经用了
!Sub,其实可以直接在字符串里用变量替换,不用再套一层!Join,这样代码更简洁易懂,也能避免语法错误。
修复后的两种写法
写法1:修正!Join的语法错误
UserData: 'Fn::Base64': !Sub | #!/bin/bash -xe curl -k -f -u ${!Join [":", [!Ref User, !Ref Pass]]} -O https://myartifacctory/.../myfile
写法2:直接用!Sub的变量替换(更推荐)
UserData: 'Fn::Base64': !Sub | #!/bin/bash -xe curl -k -f -u ${User}:${Pass} -O https://myartifacctory/.../myfile
这样修改后,CloudFormation会正确把User和Pass参数的值拼接成user:pass的格式传入curl命令,就不会再提示输入密码啦。
内容的提问来源于stack exchange,提问作者DumbNewbie
相关产品推荐
相关产品推荐

