如何使用powershell获取EC2实例的公共IP和私有IP地址?并列出这些实例的IP

时间:2018-03-01 03:07:51

标签: powershell amazon-ec2

如果我知道EC2实例ID和EC2实例名称,

如何使用powershell脚本通过此信息获取EC2实例的公共IP和私有IP地址?并列出这些实例的IP

2 个答案:

答案 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