我是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外部)。
答案 0 :(得分:3)
有多种方法可以从ec2实例中获取IP。
使用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
使用AWS CLI:
aws ec2 describe-instances --instance-ids $instanceId --output text --query 'Reservations[*].Instances[*].PublicIpAddress'
将PublicIpAddress
替换为PrivateIpAddress
以获得所需的内容。
由于您正在使用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
。