2017-01-17 1 views
1

J'ai une compétence Alexa hébergée dans AWS Lambda qui utilise AsyncHttpClient pour appeler un service IPv6 de repos sous l'exemple d'URL suivant:Comment appeler un service REST IPv6 sur AWS Lambda

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

Maintenant, mon problème est , que je reçois toujours l'exception suivante:

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

Si je vérifie l'adresse IP qui est affectée au serveur sous-jacent ou l'application ?, je reçois l'adresse suivante (également par exemple):

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

Donc, je pense, parce que j'utilise un IPv6 alors que le système utilise IPv4, je ne peux pas le faire fonctionner? Je peux appeler mon service REST à partir d'un autre serveur avec succès.

Je suis également en utilisant les propriétés système suivantes:

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

Y at-il une solution pour fournir un « tunnel » sur l'IPv4 système sous-jacent à l'adresse IPv6 tunnel pour appeler le service REST? Ou y a-t-il une solution plus simple?

+1

Vous ne pouvez pas accéder aux adresses IPv6 à partir d'un seul endroit IPv4 (sauf si vous utilisez certains logiciels de tunneling comme Teredo) – Ferrybig

Répondre

3

L'erreur Protocol family unavailable signifie que le protocole (dans ce cas, IPv6) n'est pas disponible ou n'est pas configuré sur le système sur lequel votre code est en cours d'exécution. Dans le cas d'AWS, la seule chose que vous pouvez faire à ce sujet est de vous plaindre et d'espérer qu'ils finissent par déployer le support IPv6 sur les services qui ne l'ont pas encore.

+0

Juste pour information: J'ai un VirtualServer qui peut gérer les deux, j'utilise ce serveur comme proxy REST pour permettre cette compatibilité IPv6 le serveur gère les demandes et les transmet par procuration;) –