2014-09-09 6 views
1

AWS의 인스턴스 내에서 AWS Java SDK를 사용하려면 인터넷 연결이 필요합니까?공용 IP가없는 AWS Java SDK 코드 실행

나는 인스턴스가있는 내가 어떤 공용 IP 주소가 할당되지 않은하는 VPC 내에서 실행해야합니다. 내 초기 조사가 발견 한 것과

, 나는 그 아마존이 인스턴스에서 AWS 자바 SDK를 기반으로 자바 프로그램을 실행하는 데 참조 인스턴스는 인터넷 연결을 가질 필요가있다.

AWS 자바 SDK와 함께 제공되는 샘플 프로그램 AwsConsoleApp 실행, 나는 다음과 같은 오류를 보았다 :

[javac의] /home/ubuntu/aws-java-sdk-1.8.9.1/samples/AwsConsoleApp/build.xml : 12 : 경고 : 'includeantruntime'이 설정되지 않았습니다. 기본값은 build.sysclasspath = last입니다. 반복 가능한 빌드의 경우 false로 설정합니다. [java] ====================== === [java] AWS Java SDK에 오신 것을 환영합니다! [자바] ===========================================

[java] Sep 09, 2014 9:26:49 PM com.amazonaws.http.AmazonHttpClient executeHelper 
[java] INFO: Unable to execute HTTP request: Connect to ec2.us-east-1.amazonaws.com:443 timed out 
[java] org.apache.http.conn.ConnectTimeoutException: Connect to ec2.us-east-1.amazonaws.com:443 timed out 
[java]  at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:551) 
[java]  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180) 
[java]  at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294) 
[java]  at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:645) 
[java]  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:480) 
[java]  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906) 
[java]  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805) 
[java]  at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:464) 
[java]  at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:273) 
[java]  at com.amazonaws.services.ec2.AmazonEC2Client.invoke(AmazonEC2Client.java:9320) 
[java]  at com.amazonaws.services.ec2.AmazonEC2Client.describeAvailabilityZones(AmazonEC2Client.java:359) 
[java]  at com.amazonaws.services.ec2.AmazonEC2Client.describeAvailabilityZones(AmazonEC2Client.java:8045) 
[java]  at AwsConsoleApp.main(Unknown Source) 
[java] 

Amazon이 EC2Metadata 서비스에 액세스하는 방법과는 반대로이 사실을 알았습니다.

AWS 인스턴스 공용 IP를 제공하지 않고 이러한 Java 프로그램을 실행할 수있는 방법이 있습니까?

답변

2

당신은 인터넷 연결이 필요하지만, 그것은 당신의 코드가 실행중인 인스턴스에 할당 된 공인 IP를 통해 할 필요는 없습니다.

공용 IP는 인터넷에 액세스하는 VPC에서 다른 컴퓨터를 수 있지만 인터넷 시스템은 개인 인스턴스에 액세스하는 것을 허용하지 않는 NAT 인스턴스에있을 수 있습니다.

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html

Instances that you launch into a private subnet in a virtual private cloud (VPC) can't communicate with the Internet. You can optionally use a network address translation (NAT) instance in a public subnet in your VPC to enable instances in the private subnet to initiate outbound traffic to the Internet, but prevent the instances from receiving inbound traffic initiated by someone on the Internet.

는 "공공"서브넷, NAT 인스턴스 및 라우팅 대 "개인"에 대한 자세한 설명은 또한 https://stackoverflow.com/a/22212017/1695906 참조하십시오.

+0

답장을 보내 주셔서 감사합니다. 그것은 작동합니다. – rdshukla