首页 > 解决方案 > 使用带有 Terraform 挑战的 Powershell 为 AWS EC2 创建 EC2 用户数据

问题描述

老实说,我花了绝对的时间来尝试安装 SSM 代理并让它在通过 Terraform 启动的 Windows EC2(基础 AMI)上工作。我需要做的就是启动一个安装了 SSM 代理的 EC2 实例(Windows)(我相信这是默认情况下出现的,但除非我对魔法蘑菇产生幻觉,否则当它在控制台中配置时我无法连接到它 - 说未安装错误 SSM 代理)- 它还具有 ADMIN 权限,并且具有上帝模式的实例配置文件。我还需要 TF Userdata在启动时创建一个文件夹,但这完全没有发生。有任何想法吗?谢谢。这是powershell用户数据。(ps) - 实例启动正常,只是在启动时不接受用户数据。

            <powershell>
            Invoke-WebRequest `
                https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/windows_amd64/AmazonSSMAgentSetup.exe 
                -OutFile $env:USERPROFILE\Desktop\SSMAgent_latest.exe

            Start-Process `
                -FilePath $env:USERPROFILE\Desktop\SSMAgent_latest.exe `
                -ArgumentList "/S"

            New-Item -ItemType directory -Path C:\Cats
            <powershell>

标签: amazon-web-servicespowershellamazon-ec2terraform

解决方案


如果没有分配这个,你如何让它运行?没有什么应该是公开的,尤其是计算。

由于主要问题已解决(见评论),我可以对上述问题发表评论。

根据定义,如果实例位于公有子网中,则它将通过分配的公有 IP 公开可用。为确保您的实例是私有的但仍可以连接互联网,需要做三件事:

  • 没有到 Internet 网关的路由的私有子网,
  • 公共子网中的NAT 网关
  • 必须将私有子网的路由表配置为将 Internet 流量路由到 NAT 网关。

使用此设置,在私有子网中启动实例可确保它能够访问 Internet(例如下载软件或更新),但无法从 Internet访问。


推荐阅读