【问题标题】:AWS Instance different IP AddressAWS 实例不同的 IP 地址
【发布时间】:2016-06-19 07:58:01
【问题描述】:

我是 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 之外)。

【问题讨论】:

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


    【解决方案1】:

    有多种方法可以从您的 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

    【讨论】:

      猜你喜欢
      • 2021-04-19
      • 1970-01-01
      • 1970-01-01
      • 2015-12-01
      • 2018-11-15
      • 2014-09-14
      • 1970-01-01
      • 2015-03-24
      • 2012-07-17
      相关资源
      最近更新 更多