0

我对 PowerShell 相当陌生!

我正在尝试做的事情:我们有一个连接到第 3 方的自动扩展组,他们只能将 IP 白名单列入(我建议将域列入白名单),因此这是自动扩展实例的问题。我正在尝试将免费(未分配的)EIP 分配给自动扩展的实例。

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

从我到目前为止所阅读的内容来看,我需要:

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

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

任何人都可以带领我进一步走向正确的方向吗?提前致谢!

编辑更新: 当我在实例本身的 PowerShell 窗口内运行时,我发现上面的脚本工作正常。所以我现在制作了实例的 AMI,并为 ASG 制作了新的启动配置。

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

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

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

4

1 回答 1

0

我终于解决了!

它没有被调用的原因是:

在此处输入图像描述

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

总结一下解决方案:

  1. 上面的脚本 ( https://gist.github.com/cleydson/ff70493ef37cff03669e21ed37d90a8b ) 被使用并保存到实例中。
  2. 在实例内启用了 UserData 执行 (C:\Program Files\Amazon\Ec2ConfigService\Ec2ConfigServiceSettings.exe)
  3. UserData 脚本里面调用脚本,使用 -Command 而不是更流行的 -File

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

于 2021-03-10T07:22:11.450 回答