繁体   English   中英

在 AWS Cloudformation 的 EC2 UserData 中使用 Parameter Store 参数

[英]Use Parameter Store parameters in EC2 UserData in AWS Cloudformation

我正在尝试使用 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 "serviceuseremail@domain.com"

你能建议吗?

我认为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 

好的,解决了。 定义参数时,类型必须是 AWS::SSM::Parameter::Value< String>

而不仅仅是字符串

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM