如果我知道EC2实例ID和EC2实例名称,
如何使用powershell脚本通过此信息获取EC2实例的公共IP和私有IP地址?并列出这些实例的IP
答案 0 :(得分:1)
如果你还没有这样做的话。
如何下载和安装AWs PowerShell工具并使用其原生cmdlet提取此信息。
适用于Windows PowerShell的AWS工具
适用于Windows PowerShell的AWS工具允许开发人员和 管理员从Windows PowerShell管理其AWS服务 脚本环境。现在,您可以使用以下命令管理AWS资源 用于管理Windows的相同Windows PowerShell工具 环境
https://aws.amazon.com/powershell
适用于Windows PowerShell的AWS工具用户指南
适用于Windows PowerShell的AWS工具是一组PowerShell cmdlet 它们构建于AWS SDK for公开的功能之上 。净。借助适用于Windows PowerShell的AWS工具,您可以编写脚本 从PowerShell命令行对AWS资源的操作。 虽然cmdlet是使用服务客户端实现的 来自SDK的方法,cmdlet提供了一个惯用的PowerShell 指定参数和处理结果的经验。对于 例如,PowerShell Tools的cmdlet支持PowerShell 流水线操作 - 也就是说,您可以将PowerShell对象都加载到和中 在cmdlet之外。
适用于Windows PowerShell的AWS工具在启用方式方面非常灵活 您处理凭证,包括对AWS身份和支持的身份 访问管理(IAM)基础设施;你可以使用IAM的工具 用户凭据,临时安全令牌和IAM角色。 AWS 适用于Windows PowerShell的工具支持同一组服务和 SDK支持的区域。
http://awsdocs.s3.amazonaws.com/powershell/latest/aws-pst-ug.pdf
(Get-EC2Instance -Filter $ filter_reservation).Instances
InstanceId : i-5203422c
ImageId : ami-7527031c
State : Amazon.EC2.Model.InstanceState
PrivateDnsName : ip-10-251-50-12.ec2.internal
PublicDnsName : ec2-198-51-100-245.compute-1.amazonaws.com
StateTransitionReason :
KeyName : myPSKeyPair
AmiLaunchIndex : 0
ProductCodes : {}
InstanceType : t1.micro
LaunchTime : 12/11/2013 6:47:22 AM
Placement : Amazon.EC2.Model.Placement
KernelId :
RamdiskId :
Platform : Windows
Monitoring : Amazon.EC2.Model.Monitoring
SubnetId :
VpcId :
PrivateIpAddress : 10.251.50.12
PublicIpAddress : 198.51.100.245
StateReason :
Architecture : x86_64
RootDeviceType : ebs
RootDeviceName : /dev/sda1
BlockDeviceMappings : {/dev/sda1}
VirtualizationType : hvm
InstanceLifecycle :
SpotInstanceRequestId :
License :
ClientToken :
Tags : {}
SecurityGroups : {myPSSecurityGroup}
SourceDestCheck : False
Hypervisor : xen
NetworkInterfaces : {}
IamInstanceProfile :
EbsOptimized : False
另见:
AWS EC2 Windows实例 - 获取实例详细信息 https://aaronsaikovski.wordpress.com/2015/01/05/aws-ec2-windows-instance-get-instance-details/
如何从ec2实例中获取实例ID?我怎么能找到 从ec2实例中输出ec2实例的实例id? How to get the instance id from within an ec2 instance?
答案 1 :(得分:0)
要查看单个EC2实例的私有IP,请运行它,并替换您的特定InstanceId和区域:
(Get-Ec2Instance -InstanceId i-9999999999999999 -Region us-east-1).Instances.PrivateIpAddress
对于公众(如果有的话)使用:
(Get-Ec2Instance -InstanceId i-9999999999999999 -Region us-east-1).Instances.PublicIpAddress
如果EC2实例具有公共IP,并且您想知道它是弹性IP(静态)还是从AWS公共IP池分配的,则可以检查NetworkInterface关联的OwnerId。对于弹性IP,OwnerId将是您的帐户ID;对于从AWS IP池分配的公共IP,它将带有“ amazon”,例如“ amazon-ebs”或仅仅是“ amazon”:
$AccountId = Get-AWSAccount
$ec2 = (Get-Ec2Instance -InstanceId i-99999999999999999 -Region us-east-1).Instances
if ($ec2.PublicIpAddress) {
if ($ec2.NetworkInterfaces.Association.IpOwnerId -like $AccountId) {
Write-Output ("Elastic IP: {0}" -f $ec2.PublicIpAddress)
}
else {
Write-Output ("AWS Public IP Pool {0}" -f $ec2.PublicIpAddress)
}
}
请注意,如果您的EC2使用的是AWS公共IP池,则在实例关闭电源时将不会分配任何资源。关闭电源后将释放它,并在重新打开实例电源后得到一个新的。有关更多详细信息,请参见Amazon EC2 Instance IP Addressing。