【问题标题】:EC2 User Data script cannot access the InternetEC2 用户数据脚本无法访问 Internet
【发布时间】:2019-08-12 07:54:44
【问题描述】:

我有一个用户数据 Powershell 脚本,我希望我的 EC2 实例在启动时执行。

这是一个简单的脚本,用于检索当前 EC2 实例的标签。

$InstanceId = (Invoke-WebRequest -Uri http://169.254.169.254/latest/meta-data/instance-id -UseBasicParsing).Content
$Env = (Get-EC2Tag -Filter @{Name="resource-type";Value="instance"},@{Name="key";Value="Environment"} | Where-Object ResourceId -eq "$InstanceId").Value
$Role = (Get-EC2Tag -Filter @{Name="resource-type";Value="instance"},@{Name="key";Value="Role"} | Where-Object ResourceId -eq "$InstanceId").Value

当我在 EC2 中运行此代码时,它可以完美运行,但是当我将它作为用户数据/启动脚本运行时,它可能由于 Internet 连接而无法运行:

Get-EC2Tag : 尝试访问服务的名称解析失败 区域 ap-southeast-2(提供给 -Region 参数或来自 配置的外壳默认值)。无法连接到远程服务器。 可能的原因: - 区域可能指定不正确(您是否指定了可用区?)。 - 该服务可能在该地区不可用。 - 没有网络连接。

我怀疑 Internet 连接一定是根本原因,因为最初,我尝试克隆包含我的脚本的 git 存储库,但它也因超时错误而失败!

如何在实例启动时检索当前实例的标签?

如果我在远程连接到我的 Windows EC2 实例后运行它,它会完美运行。

【问题讨论】:

    标签: amazon-web-services amazon-ec2


    【解决方案1】:

    错误表示无法到达远程站点。

    您可以在以下位置查看日志文件:

    C:\ProgramData\Amazon\EC2-Windows\Launch\Log\UserdataExecution.log
    

    如果您使用的是旧版本的 Windows,它将位于:

    C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2Config.log
    

    要具有 Internet 连接,实例必须是:

    • 在公共子网中,
    • 在私有子网中,在公共子网中配置了 NAT 网关

    另外,检查与实例关联的安全组。它应该对出站规则使用默认的“全部允许”。

    另一种可能性,如错误消息所示,是它不知道要使用哪个区域。您可以附加-Region ap-southeast-2(或其他区域)来指定特定区域。

    【讨论】:

      猜你喜欢
      • 2017-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-16
      • 2016-06-27
      • 2017-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多