微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Node.js 从 AWS CloudFront 连接到 AWS ElastiCache 集群?

如何解决如何使用 Node.js 从 AWS CloudFront 连接到 AWS ElastiCache 集群?

我是 AWS CloudFront 和 AWS 的新手。我有一个 Next.js(React SSR 框架)网站,我使用 serverless-nextjs (https://github.com/serverless-nextjs/serverless-next.js) 将其部署到 AWS 上。但是,我的网络应用程序还需要某种缓存。我决定使用 AWS 的 redis ElastiCache。我在 AWS 控制台上创建了一个 redis ElastiCache 集群。

我的尝试:

我像这样设置了连接到 redis ElastiCache 的代码

import redis from 'redis';
...

export async function getServerSideProps() { // Server side function for Next.js
    const cache = redis.createClient(6379,"{PRIMARY-ENDPOINT-URL-AWS}");
}

然后我在我的 PC 上本地运行该网站。但是,我从 redis 收到超时错误Error: connect ETIMEDOUT

我如何能够从 CloudFront 和我的本地 PC 连接到 redis ElastiCache 集群?

redis ElastiCache Cluster 窗口截图:

redis ElastiCache

解决方法

无法直接从 AWS 外部(即您的本地工作站)连接到 ES。 ES 域旨在仅可从与 ES 域位于同一 VPC 中的资源(例如实例)中访问。来自docs

Elasticache 是一项设计用于在您的 VPC 内部使用的服务。由于 Internet 流量的延迟和安全问题,不鼓励外部访问。但是,如果出于测试或开发目的需要对 Elasticache 进行外部访问,则可以通过 VPN 完成

启用从 AWS 外部到您的 ES 的连接的唯一方法是在家庭/工作网络或 Direct Connect 之间建立 VPN 连接,如 AWS docs 中所述:

如果客户的 VPC 与数据中心之间存在通过 VPN 或 Direct Connect 的连接,也支持此方案。

但是,为了快速、临时设置,您可以在本地工作站和 ES 域之间使用 ssh 隧道。这将需要隧道将通过的一些跳转/基础 EC2 实例。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。