通过用户数据将 EIP 添加到实例的 PowerShell 脚本

PowerShell Script to add EIP to instance via User Data

我是 PowerShell 的新手!

我想做什么: 我们有一个连接到第 3 方的自动缩放组,他们只能进行 IP 白名单(我已经向他们建议域白名单),因此这是自动缩放实例的问题。我正在尝试将免费(未分配)EIP 分配给自动缩放实例。

我找到了这个:https://gist.github.com/cleydson/ff70493ef37cff03669e21ed37d90a8b 但是我不确定在开始使用它之前是否需要安装任何依赖项到实例。

根据我目前所读的内容,我需要:

  1. 为 EC2 实例分配一个 IAM 角色,使其能够执行必要的 EIP 任务
  2. 将 powershell 脚本放在实例中的可访问目录中
  3. 调用实例内部 powershell 脚本的用户数据脚本

一切正常后,我可以将其烘焙到 AMI 中以用于自动缩放。

任何人都可以引导我进一步朝着正确的方向前进吗?提前致谢!

编辑更新: 当我在实例本身的 PowerShell window 中 运行 时,我在上面找到的脚本工作正常。所以我现在为实例制作了一个 AMI,并为 ASG 制作了一个新的启动配置。

我现在的问题是,每当创建新实例时,似乎都不会调用用户数据。下面是我的用户数据脚本:

<script>
PowerShell -ExecutionPolicy Bypass -Command c:\scripts\setEIP.ps1 "EIP1,EIP2,EIP3"
</script>
<persist>true</persist>

我为 EIP 放置了放置器。关于为什么不调用用户数据的任何想法?

我终于解决了!

未被调用的原因是:

最初未选中“为下次服务启动启用 UserData 执行”。 这与安装在实例内部的 EC2Config 服务有关。

总结解决方案:

  1. 上面的脚本 (https://gist.github.com/cleydson/ff70493ef37cff03669e21ed37d90a8b) 已被使用并保存到实例中。
  2. 在实例中启用了 UserData 执行 (C:\Program Files\Amazon\Ec2ConfigService\Ec2ConfigServiceSettings.exe)
  3. UserData脚本调用里面的脚本,使用-Co​​mmand代替比较流行的-File

<script>
PowerShell -ExecutionPolicy Bypass -Command c:\scripts\setEIP.ps1 "EIP1,EIP2,EIP3"
</script>
<persist>true</persist>