如何将本地运行的 Spring Boot 应用程序连接到 AWS Elasticache Redis

问题描述 投票:0回答:1

我有一个使用 spring-boot-starter-data-redis 的 Spring Boot Java 应用程序,并且我有一个在开发环境中以无服务器模式运行的 AWS Elasticache Redis 缓存设置。在我的 application.properties 中,我设置了 spring.redis.host 和 spring.redis.port 的值。我看到启动时主机和端口值设置正确,并且应用程序可以正常启动。但是,当我调用使用缓存的端点时,它会抛出“由以下原因引起:redis.clients.jedis.exceptions.JedisConnectionException:无法连接到解析为 DNS 名称的任何主机。”我认为这是因为AWS Elasticache Redis缓存只能由同一VPC中的应用程序访问。如何将本地运行的应用程序连接到不在本地运行的 AWS Elasticache Redis 缓存?

amazon-web-services redis spring-data-redis amazon-elasticache
1个回答
0
投票

如何将本地运行的应用程序连接到不在本地运行的 AWS Elasticache Redis 缓存?

您需要在与 Redis 实例相同的 VPC 中创建 NLB,并以某种方式保护对此 NLB 的外部访问。

最简单(但不太安全)的方法是将安全组附加到 NLB,并仅允许从您的 IP 进行访问。 仅当您拥有未与您不信任的其他计算机共享的静态外部 IP 地址时才执行此操作。 这排除了移动提供商和大多数家庭互联网提供商。

另一种选择是设置 VPN

AWS 还支持 Redis 身份验证,但是,大多数客户端库不支持开箱即用,因此如果您想使用它,您需要对应用程序代码进行一些“重要的更改”。 请记住,典型的 Redis 使用模式对网络延迟非常敏感。如果您仅使用 Redis 进行临时缓存并且不需要与其他计算机共享缓存,那么您最好在 Docker 容器中设置本地实例。

© www.soinside.com 2019 - 2024. All rights reserved.