2017-01-17 4 views
1

я получил навык Alexa размещенного в AWS Lambda, которая использует AsyncHttpClient для вызова службы IPv6 REST по следующему URL-адресу: ПримерКак вызвать службу IPv6 REST через AWS Lambda

http://[2a12:5375:4151:2300:1353:a632:5f4e:c232]:4711/rest/test 

Теперь моя проблема , что я всегда получаю следующее исключение:

ava.util.concurrent.ExecutionException: java.net.ConnectException: Protocol family unavailable 

Если я проверить IP-адрес, назначенный для базового сервера или приложения ?, я получаю следующий адрес (также пример):

ip-10-23-56-1.eu-west-1.compute.internal: 10.23.56.1 

Так я думаю, потому что я использую IPv6, в то время как система использует IPv4, я не могу заставить ее работать? Я могу позвонить на службу REST с другого сервера успешно.

Я также использую следующие системные свойства:

System.setProperty("java.net.preferIPv6Addresses", "true"); 
System.setProperty("java.net.preferIPv4Stack", "false"); 

Есть ли какое-либо решение, чтобы обеспечить «туннель» по основной системе IPv4 к туннелю IPv6-адрес для вызова службы REST? Или есть более простое решение?

+1

Вы не можете получить доступ к IPv6-адресам только с места IPv4 (если вы не используете определенное программное обеспечение для туннелирования, такое как Teredo) – Ferrybig

ответ

3

Ошибка Protocol family unavailable означает, что протокол (в данном случае IPv6) недоступен или не настроен в системе, на которой работает ваш код.

В случае AWS единственное, что вы можете сделать по этому поводу - это жаловаться и надеяться, что в конечном итоге они откажутся от поддержки IPv6 для служб, которые еще не имеют этого.

+0

Просто для информации: я получил VirtualServer, который может обрабатывать оба варианта, я использую этот сервер как прокси-сервер REST, чтобы позволить этому совместимому с IPv6 сервер обрабатывает запросы и прокси их через;) –