使用带有Terraform挑战的Powershell为AWS EC2创建EC2用户数据



老实说,我花了很长时间试图安装SSM代理,并使其在通过Terraform启动的Windows EC2(基本AMI(上工作。我所需要做的就是启动一个安装了SSM代理的EC2实例(Windows((我相信这是默认情况下的,但除非我对神奇蘑菇产生幻觉,否则当它在控制台中设置时,我无法连接到它-说错误SSM代理未安装(-它还具有ADMIN权限,并具有god模式的实例配置文件。我还需要TF Userdata来在启动时创建一个文件夹,但这完全没有发生。有什么想法吗?谢谢这是powershell用户数据。(p.s(-实例启动正常,只是在启动时不接受用户数据。

<powershell>
Invoke-WebRequest `
https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/windows_amd64/AmazonSSMAgentSetup.exe 
-OutFile $env:USERPROFILEDesktopSSMAgent_latest.exe
Start-Process `
-FilePath $env:USERPROFILEDesktopSSMAgent_latest.exe `
-ArgumentList "/S"
New-Item -ItemType directory -Path C:Cats
<powershell>

如何在没有分配的情况下运行它?任何东西都不应该公开,尤其是计算机。

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

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

  • 一个私有子网,没有到互联网网关的路由
  • 公用子网中的NAT网关
  • 私有子网的路由表必须配置为将互联网流量路由到NAT网关

使用此设置,在专用子网中启动实例可确保其能够访问internet(例如下载软件或更新(,但它将从internet bo不可访问

确认以下

已创建IAM角色
  • 附加了适当策略的实例角色
  • 具有internet访问权限的正确子网中的ec2实例
  • 最新更新