将 AWS Amplify 前端与 EC2 实例连接起来?

Posted

技术标签:

【中文标题】将 AWS Amplify 前端与 EC2 实例连接起来?【英文标题】:Connecting an AWS Amplify frontend with a EC2 instance? 【发布时间】:2021-12-23 13:41:13 【问题描述】:

所以,我现在正在做一个黑客马拉松项目,为了演示,我通过 Elastic Beanstalk 在 EC2 上启动了一个 NodeJS Express 服务器。在本地使用我们的前端测试服务器的 API 时,它工作得非常好。

现在我们已经将前端部署到 AWS Amplify,在 Route53 中设置了一个域名,并将所有内容连接起来。当我们进入域时,我们的前端看起来很棒,但是当我们尝试使用可以连接到我们服务器 API 的功能时,我们得到一个net::ERR_SSL_PROTOCOL_ERROR

做一些研究,看起来(?)我们必须在 EC2 前面的 Classic Load Balancer 上设置一个证书。所以我申请了一个证书,并在负载均衡器上创建了一个监听器,如下所示:

Load Balancer Protocol Load Balancer Port Instance Protocol Instance Port
HTTPS 443 HTTPS 3000

但现在我意识到,如果以这种方式设置,我仍然不知道如何将 React 前端的 API 调用指向负载均衡器而不是 EC2,或者是否正确设置了侦听器。有人知道我们应该在这里采取什么步骤吗?

关于应用程序的详细信息,后端是一个非常简单的启用了 CORS 的 Express 应用程序,前端是一个相当标准的 React 项目,两者都没有什么特别之处。

【问题讨论】:

【参考方案1】:

Instance Protocol 应该是 HTTP。因此,您的设置仅在客户端和 CLB 之间使用 HTTPS:

Client--- (HTTPS) ---> CLB --- (HTTP) ---> EC2

另外,为了正确设置 HTTPS,您需要使用自己的域。您不能使用 EB 为您的应用程序提供的默认域。

【讨论】:

谢谢,更改 Instance 协议,然后获取域名以直接到 ELB 工作! @chinahalffull 很高兴听到这个消息。如果是这样,我们将不胜感激。

以上是关于将 AWS Amplify 前端与 EC2 实例连接起来?的主要内容,如果未能解决你的问题,请参考以下文章

与AWS私有实例/ EC2实例的Chef-Server连接

如何将aws上的ec2实例连接到我公司的***

将 EC2 实例连接到另一个 AWS 账户上的 RDS 卷

AWS:如何将 *** 客户端连接到 RDS(*** 服务器 EC2 和 RDS 在同一个 VPC 中)

aws amplify 不为 wasm 提供内容类型

AWS Application Load Balancer HTTP到HTTPS与EC2实例