【问题标题】:Use Parameter Store parameters in EC2 UserData in AWS Cloudformation在 AWS Cloudformation 的 EC2 UserData 中使用 Parameter Store 参数
【发布时间】:2022-01-25 23:27:31
【问题描述】:

我正在尝试使用 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"

请给个建议好吗?

【问题讨论】:

  • 进展如何?仍然不清楚为什么你不能这样做?
  • 嘿,谢谢你的回答。不幸的是,它仍然不适合我。占位符被参数替换,但参数仍未解析为其值:2022/01/24 13:27:57Z:消息:来自用户脚本的错误:Add-LocalGroupMember:Principal {{resolve:ssm:serviceuser -email:1}} 未找到。在 C:\Windows\TEMP\UserScript.ps1:8 char:1 + Add-LocalGroupMember -Group "Administrators" -Member "{{resolve:ssm:s ... + ~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ ssm 和 ssm-secure 参数我都试过了
  • 好的,解决了。定义参数时,类型必须是 AWS::SSM::Parameter::Value 而不仅仅是“字符串”。谢谢

标签: amazon-web-services parameter-passing amazon-cloudformation


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    而不仅仅是字符串

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-30
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      • 2021-12-26
      • 2022-01-17
      • 1970-01-01
      相关资源
      最近更新 更多