如何在不通过 RDP 登录的情况下查看 ec2 实例的 Windows 计算机名称?

ss2*_*s2k 5 windows amazon-ec2

看起来这应该很简单,但我没有在控制台中看到它,也没有注意到“描述实例”中的任何内容。鉴于一些警报电子邮件与计算机名称相关,快速找出它是哪个实例将是最有帮助的。某种将我的帐户的所有实例名称列表转储到计算机名称映射的方法将是理想的。

更新:我尝试从另一台 EC2 主机 135-139 打开端口,看看是否可以使用 NetBios 来获取名称。我跑:

ping -a <ip>
nbtstat -a <ip>
Run Code Online (Sandbox Code Playgroud)

两者都没有返回远程 IP 的机器名称。对于本地IP 两者都可以。

小智 5

我们有同样的问题。我们每天都会从 CloudFormation 自动构建大量 EC2 实例,并且需要一种方法来根据主机名在控制台中轻松地单独识别它们。

\n\n

目前所有自动构建的服务器都具有相同的名称,该名称是云形成模板中的固定字符串。

\n\n

我们已经有了一个基于“用户数据”的引导机制,自动创建的实例将在首次引导时运行一些 PowerShell 代码。

\n\n

因此,为了让主机名显示在 AWS 控制台中,我认为最简单的方法是更改​​“名称”标签,将主机名附加到现有标签中。

\n\n

我将以下代码添加到引导程序中:

\n\n
function Get-NameTagValue()\n{\n\n    param(\n        [parameter(Mandatory)] [string] $InstanceId\n    )\n\n\n$filter1 = New-Object -TypeName Amazon.EC2.Model.Filter -Property @{\n    Name   = \'resource-id\'\n    Values = $InstanceId\n}\n\n$filter2 = New-Object -TypeName Amazon.EC2.Model.Filter -Property @{\n    Name   = \'key\'\n    Values = \'Name\'\n}\n\n\n$filters = $filter1, $filter2\n$tag = Get-EC2Tag `\n        -Region $Region `\n        -ProfileName $ProfileName `\n        -Filter $filters\n#Output the tag value\n$tag.Value\n\n}\n\nfunction Set-InstanceNameTag()\n{\n    $instanceId = (Invoke-RestMethod -Method Get -Uri http://169.254.169.254/latest/meta-data/instance-id)\n\n    #Get the current value of the name tag\n    $currentNameTagValue = Get-NameTagValue -InstanceId $instanceId\n    $newNameTagValue = "$currentNameTagValue - $env:COMPUTERNAME"\n\n    Remove-EC2Tag `\n        -Resource $instanceId `\n        -Tag @{ Key="Name" } `\n        -Region $Region `\n        -ProfileName $ProfileName `\n        -Force\n\n    New-EC2Tag `\n        -Resource $instanceId `\n        -Tag @{ Key="Name"; Value=$newNameTagValue } `\n        -Region $Region `\n        -ProfileName $ProfileName `\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

该代码首先从元数据中获取 isnance id,然后使用此 id 查找现有的名称标签,将其删除并添加一个新的名称标签,其中包含现有值,后跟主机名。

\n\n

这两个函数包含在我们的 Bootstrap 脚本中,该脚本具有函数中使用的$Region参数。$ProfileName

\n\n

然后,我们只需从主脚本调用该函数Set-InstanceNameTag,voil\xc3\xa0,您就拥有了现有的名称标签,后跟连字符和主机名。

\n\n

为了实现此目的,EC2 实例需要拥有一个具有以下权限的角色:CreateTags、DeleteTags 和DescribeTags。

\n\n

您可以使用以下策略来实现此目的:

\n\n
{\n    "Version": "2012-10-17",\n    "Statement": [\n        {\n            "Effect": "Allow",\n            "Action": [\n                "ec2:CreateTags",\n                "ec2:DeleteTags",\n                "ec2:DescribeTags"\n            ],\n            "Resource": [\n                "*"\n            ]\n        }\n    ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

希望对某人有帮助。

\n\n

卡尔

\n