amazon-web-services - 使用带有 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>
解决方案
如果没有分配这个,你如何让它运行?没有什么应该是公开的,尤其是计算。
由于主要问题已解决(见评论),我可以对上述问题发表评论。
根据定义,如果实例位于公有子网中,则它将通过分配的公有 IP 公开可用。为确保您的实例是私有的但仍可以连接互联网,需要做三件事:
- 没有到 Internet 网关的路由的私有子网,
- 公共子网中的NAT 网关
- 必须将私有子网的路由表配置为将 Internet 流量路由到 NAT 网关。
使用此设置,在私有子网中启动实例可确保它能够访问 Internet(例如下载软件或更新),但无法从 Internet访问。
推荐阅读
- typescript-compiler-api - Typescript编译器,如何获取符号的类型?
- c# - "is" 运算符后花括号的含义
- node.js - 使用 Ingress 服务类型将“express-gateway”部署到 Google Kubernetes Engine 时出现问题
- mysql - 无法使用 mysql 客户端从 docker 主机连接到作为 docker 容器运行的 Mysql 5.7
- python-2.7 - Bittrex REST API v3,Python POST 订单,INVALID_CONTENT_HASH
- strapi - 如何在 Strapi 3.0.1v 中设置电子邮件提供商?
- html - CF 循环遍历本地目录中的图像并以 HTML 显示
- java - Java leetcode 问题 Array Vs ArrayList 120.triangle
- typescript - 编译器将意外工件添加到构建文件夹
- c# - c# 中有没有办法隐式地扩展对接口的多个实现的调用?