AWS Lightsail 容器服务私有域 - “net::ERR_NAME_NOT_RESOLVED”

时间:2021-06-02 13:37:25

标签: amazon-web-services amazon-lightsail

如何使用 AWS Lightsail 的私有域将 https 请求从一个部署发送到另一个部署?

我使用两个 docker 映像创建了两个 AWS Lightsail 容器部署。我想将 https 请求从一个映像部署(“发送方”)发送到另一个映像部署(“接收方”)。当接收器的公共端点启用时,这可以正常工作。但是,我不想向公众公开此服务,而是使用 AWS Lightsail 的私有域路由流量。

我的问题是,当我尝试将 https 请求从“发送者”发送到“接收者”的私有域 (.service.local:) 时,我在“发送者”的 html 页面上收到 https://<service_name>.service.local:52020/tester/status net::ERR_NAME_NOT_RESOLVED。根据 Lightsail docs(“私有域”部分),我的“Lightsail 资源与您的服务位于同一 AWS 区域”应该可以访问它。

我在 stackoverflow 中发现了一个 similar Question & Answer。我使用我的区域尝试了这个答案,但失败了,因为 Lightsail 容器需要 https 而 .service.local 需要 http。创建 Amazon Linux 实例后,我成功发出 http 请求但未能发出 https 请求。 (截图如下)。同时,Lightsail 严格要求您使用 https。

enter image description here

如果我强制从 https 网页发送 http 请求,chrome 会生成 Mixed content: The page at ... was loaded over HTTPS but requested an insecure ... 错误。我可以通过使用 next.js api 路由来解决 https 问题,但这并不安全,因为 next.js api 路由是可公开访问的。

enter image description here

这里有什么我可能遗漏的地方吗?

我验证过的事情:

  • 当使用公共域连接到图像时,图像已启动并运行并且工作正常
  • 我在同一地区同时运行实例和容器服务

提前致谢。

部分截图

  • 在 docker 的入口点脚本中运行 dig enter image description here

  • 发送方向接收方发送http请求时的错误信息 enter image description here

2 个答案:

答案 0 :(得分:0)

我制作了我的两个 AWS Lightsail 容器,使用 next.js 的前端容器和使用 Flask 的后端容器,使用以下步骤相互通信:

  1. 在我要部署容器的区域中使用“Amazon Linux”启动 Lightsail“实例”。从此“Amazon Linux”实例复制 /etc/resolv.conf。更新 Dockerfile 以覆盖我的 docker 中的 /etc/resolv.conf 文件。
  2. 为了使用 http 而不是 https 发出 API 请求并解决 Mixed content: The page at ... was loaded over HTTPS but requested an insecure ... 错误,我使用 next.js 的 API route 来中继 API 请求。因此,例如,前端容器上的页面将向同一容器上的 /api 发出 API 请求,而 /api 路由将向后端容器发出 http 请求。
  3. API 路由已通过安全措施正确编码,因此用户无法使用 API 路由访问后端容器中的随机端点。

答案 1 :(得分:0)

https“页面”通常是混合内容,其中图片等资源是从http文件夹而不是“https”站点文件夹中提取的,因此获取此类资源的请求是http,因为它是按位置配置的,因此它会由 http 调用以获取,然后不被加密(请参阅需要通过该协议访问它的 https 文件夹位置的服务器配置)。

在协议方面,来自另一篇文章的消息暗示并且可能是“私下”通信不是公共网络服务,因此此类通信需要使用 ssl:// 安全协议(类似使用 ssh://)而不是 https: // 两者都需要证书的安全公共 Web 服务器协议。 (冒险猜测) ssl 可能是本地私下使用的。

以下 AWS 链接建议使用不同的网络帐户进行开发和服务。

https://aws.amazon.com/blogs/compute/a-guide-to-locally-testing-containers-with-amazon-ecs-local-endpoints-and-docker-compose/ https://aws.amazon.com/cli/