AWS实例不同的IP地址

时间:2016-06-19 07:58:02

标签: java amazon-web-services amazon-ec2 web-scraping

我是AWS(甚至是服务器)的新手,所以如果这听起来对您来说非常明显,请忽略。

我创建了一个新的AWS实例,为此我获得了这个IP地址:54.86.121.145但是当我运行ip addr show时,我得到另一个IP地址。

 bitnami@ip-172-31-4-116:~$ wget http://icanhazip.com -qO-
 54.86.121.145 
 bitnami@ip-172-31-4-116:~/anant$ ip addr show
 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group       default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
   valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
   valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
link/ether 0a:be:6a:f0:42:b5 brd ff:ff:ff:ff:ff:ff
inet 172.31.4.116/20 brd 172.31.15.255 scope global eth0
   valid_lft forever preferred_lft forever
inet6 fe80::8be:6aff:fef0:42b5/64 scope link
   valid_lft forever preferred_lft forever

我面临的问题是我正在编写一个报废工具(在Java中),在我的本地笔记本电脑(Windows)和我朋友的笔记本电脑(Linux)中工作正常,但我尝试从AWS运行我得到403错误。

1)当我通过Java程序连接时,传出的IP地址是什么?

2)是否可以获得浮动IP地址(不在列入黑名单的类别中)。

3)是否有任何解决方法可以让我的AWS实例使用该报废工具?如果您建议不要列入黑名单,我准备移动到另一台服务器(AWS外部)。

1 个答案:

答案 0 :(得分:3)

有多种方法可以从ec2实例中获取IP。

  1. 使用cURL获取实例的元数据,从而获取您的IP

    本地

    curl http://169.254.169.254/latest/meta-data/local-ipv4
    

    公开

    curl http://169.254.169.254/latest/meta-data/public-ipv4
    

    参考:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

  2. 使用AWS CLI:

    aws ec2 describe-instances --instance-ids $instanceId --output text --query 'Reservations[*].Instances[*].PublicIpAddress'
    

    PublicIpAddress替换为PrivateIpAddress以获得所需的内容。

    参考:https://alestic.com/2013/11/aws-cli-query/

  3. 由于您正在使用Java,因此如果您在创建实例后获取实例ID,则可以利用AWS Java SDK来获取IP:

    DescribeInstancesRequest describeRequest = new DescribeInstancesRequest().withInstanceIds(instanceId);
    DescribeInstancesResult describeResult = ec2.describeInstances(describeRequest);
    Instance instance = describeResult.getReservations().get(0).getInstances().get(0);
    String publicIp = instance.getPublicIpAddress();
    String privateIp = instance.getPrivateIpAddress();
    

    其中ec2是具有正确凭据区域的AmazonEC2Client