首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在AWS上调用IPv6 REST服务

如何在AWS上调用IPv6 REST服务
EN

Stack Overflow用户
提问于 2017-01-17 10:18:59
回答 2查看 3.4K关注 0票数 2

我有一个在AWS中托管的Alexa技能,它使用AsyncHttpClient在下面的示例URL中调用IPv6 REST服务:

代码语言:javascript
运行
复制
http://[2a12:5375:4151:2300:1353:a632:5f4e:c232]:4711/rest/test

现在我的问题是,我总是得到以下例外:

代码语言:javascript
运行
复制
ava.util.concurrent.ExecutionException: java.net.ConnectException: Protocol family unavailable

如果我检查分配给基础服务器或应用程序的IP地址,就会得到以下地址(也是示例):

代码语言:javascript
运行
复制
ip-10-23-56-1.eu-west-1.compute.internal: 10.23.56.1

所以我想,因为我使用的是IPv6,而系统使用的是IPv4,所以我不能让它工作?我可以成功地从另一台服务器调用REST服务。

我还使用了以下系统属性:

代码语言:javascript
运行
复制
System.setProperty("java.net.preferIPv6Addresses", "true");
System.setProperty("java.net.preferIPv4Stack", "false");

是否有任何解决方案可以在IPv4底层系统上提供“隧道”来隧道IPv6地址以调用REST服务?还是有更简单的解决方案?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-17 21:23:02

错误Protocol family unavailable意味着协议(在本例中为IPv6)在运行代码的系统上不可用或未配置。

在AWS的情况下,您唯一能做的就是抱怨,并希望他们最终将IPv6支持扩展到还没有它的服务中。

票数 5
EN

Stack Overflow用户

发布于 2018-05-01 02:20:20

经过相当广泛的研究和测试,这个词是: IPv6不适用于Lambda。如果您在VPC中运行Lambda函数,这会更进一步。

如果您的函数与包含IPv6 CIDR的子网相关联,那么任何正确的配置都不会使您的Lambda访问外部资源。

您将能够对一些作为VPC端点可用的AWS资源执行API调用。这包括S3和Dynamo这样的服务,它们将在您的VPC中获得内部IP。像SQS这样的服务在VPC端点中不受支持,因此将获得外部分辨率。

在VPC之外的任何服务或外部API调用都将在IPv6 CIDR中失败。解决这个问题的唯一方法是从子网中删除IPv6 CIDR,或者只为Lambda函数创建一个专用子网。

我们已经选择了后一种选择,所有的人都在使用适当的VPC安全和路由策略。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41694477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档