gpt4 book ai didi

amazon-web-services - 在 AWS Cloudformation 的 EC2 UserData 中使用 Parameter Store 参数

转载 作者:行者123 更新时间:2023-12-03 07:40:16 25 4
gpt4 key购买 nike

我正在尝试使用 Cloudformation 启动 EC2 Windows 实例,其中使用 PowerShell 格式的 EC2 UserData,我需要将服务用户帐户添加到本地管理员,然后再安装一些应用程序。我想在 EC2 用户数据中使用 AWS Parameter Store 参数来传递凭证。

我将参数存储值定义为 CFT 参数:

Parameters:
ServiceUserEmail:
Type: String
Default: '{{resolve:ssm-secure:serviceuser-email:1}}'
Description: Service User Email

并尝试按如下方式调用参数:

 UserData:         
Fn::Base64: !Sub |
<powershell>
# Add Sevice account as Administrator
Add-LocalGroupMember -Group "Administrators" -Member "${ServiceUserEmail}"
</powershell>
<persist>true</persist>

由于某种原因,占位符 ${ServiceUserEmail} 被替换为实际字符串“{{resolve:ssm-secure:serviceuser-email:1}}”,而不是参数存储中其后面的值。

我也尝试过不带占位符的命令,但没有成功:

Add-LocalGroupMember -Group "Administrators" -Member "'{{resolve:ssm-secure:serviceuser-email:1}}'"

该命令在传递参数后需要查看以下内容:

Add-LocalGroupMember -Group "Administrators" -Member "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="96e5f3e4e0fff5f3e3e5f3e4f3fbf7fffad6f2f9fbf7fff8b8f5f9fb" rel="noreferrer noopener nofollow">[email protected]</a>"

您能给点建议吗?

最佳答案

我认为 Sub 的完整数组形式应该管用。大致如下:

 UserData:         
Fn::Base64:
Fn::Sub:
- <powershell>
# Add Sevice account as Administrator
Add-LocalGroupMember -Group "Administrators" -Member "${MyServiceUserEmail}"
</powershell>
<persist>true</persist>
- MyServiceUserEmail: !Ref ServiceUserEmail

关于amazon-web-services - 在 AWS Cloudformation 的 EC2 UserData 中使用 Parameter Store 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70768659/

25 4 0