如何从 CloudFormation 为 AWS 上的 Windows 服务器计算机设置管理员密码?

How to set the administrator password for a Windows Server machine on AWS from CloudFormation?

我正在部署一个 CloudFormation 模板,它从 Windows_Server-2019-English-Full-Base-2020.05.13 AMI 启动一个 EC2 实例。

默认情况下,Windows 服务器映像有一个 Administrator 用户。要通过 RDP 连接到实例,我必须导航到控制台,单击 Connect,然后从控制台获取生成的随机密码。

有什么方法可以将 RDP 密码设置为自定义值?我想在 UserData 部分的 CloudFormation 模板中执行此操作。

根据评论。

解决方案是在 UserData 中使用以下 命令:

net user Administrator "new_password"

docs 中解释的命令可用于更改管理员密码。

之所以有效,是因为 UserData 在管理员帐户 (ref) 下执行:

User data scripts are executed from the local administrator account when a random password is generated.

为了完整性和未来参考,CloudFormation 模板现在如下所示:

"UserData": {
    "Fn::Base64": {
        "Fn::Join": [
            "",
            [
            "<powershell>\n",
            "net user Administrator ",
            {
                "Ref": "Password"
            },
            "\n",
            "& \"C:\Program Files\Amazon\cfn-bootstrap\cfn-signal\"",
            " --stack ", { "Ref": "AWS::StackName" },
            " --resource MyInstance" ,
            " --region ", { "Ref" : "AWS::Region" }, 
            "\n",
            "</powershell>\n"
            ]
        ]
    }
},
"CreationPolicy": {
    "ResourceSignal" : {
        "Count": "1",
        "Timeout": "PT15M"
        }
    }
}

所以有两件事正在发生:

  • 我正在按照 Marcin 在 中的建议更改管理员密码。
  • 我正在使用 cfn-signalCreationPolicy 来确保 CloudFormation 部署等待 UserData 完成。更多详情 .