Запуск кода AWS Java SDK без публичного ip

1

Нужно ли нам подключение к Интернету для использования AWS Java SDK из экземпляра в AWS?

У меня есть экземпляр, запущенный внутри VPC, которому я не назначил публичный IP-адрес.

Из того, что обнаружило мое первоначальное исследование, я вижу, что для запуска Java-программ AWS Java SDK из этого экземпляра в Amazon, экземпляр должен иметь подключение к Интернету.

Запустив образец программы AwsConsoleApp, который поставляется с AWS Java SDK, я увидел следующую ошибку:

[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] ========================================================================================

 [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.

Есть ли способ запуска этих программ Java без предоставления публичного IP-адреса экземпляра AWS?

Теги:
amazon-web-services
amazon-vpc
amazon-ec2

1 ответ

2

Вам необходимо подключение к Интернету, но не обязательно через публичный IP-адрес, назначенный экземпляру, где работает ваш код.

Публичный IP-адрес может быть в экземпляре NAT, который позволяет другим компьютерам вашего VPC получать доступ к Интернету, но не позволяет системам в Интернете получать доступ к вашим частным экземплярам.

Экземпляры, которые вы запускаете в приватную подсеть в виртуальном частном облаке (VPC), не могут взаимодействовать с Интернетом. Вы можете дополнительно использовать экземпляр трансляции сетевых адресов (NAT) в общедоступной подсети вашего VPC, чтобы позволить экземплярам в частной подсети инициировать исходящий трафик в Интернете, но не позволять экземплярам получать входящий трафик, инициированный кем-то из Интернета.

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

См. Также qaru.site/questions/67779/... для дополнительного обсуждения "частных" и "общедоступных" подсетей, экземпляров NAT и маршрутизации.

  • 0
    Спасибо за этот ответ. Оно работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню