如何本地连接AWS Redis集群?

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

我在 AWS 上有一个 Redis 实例,我想从本地计算机使用 Redis 桌面管理器进行连接

我能够通过 ssh 进入我的 ec2 实例,然后运行

redis-cli -h host
并连接到它。

但是在我的本地机器上不可能做到同样的事情。

我确信一定有一种方法可以使用 GUI 来监控我的 Redis,并且我想如果我可以使用 pem 文件连接到 ec2 并且我可以从那里的 insde 连接到 Redis,那么一定有一种方法可以将两者结合起来吗?并通过我的 ec2 实例本地连接到 redis 实例?有什么想法吗?

amazon-web-services ssh redis
3个回答
4
投票

根据设计,AWS EC 域部署为仅在 AWS 内使用。来自文档

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

因此,无法从您的 VPC 外部直接访问它。为此,您需要在本地家庭/工作网络和 VPC 之间设置一个 VPN,或者建立一个

ssh 隧道,通常更容易进行测试和开发。

对于 ssh 隧道,您将需要一个公共

代理/堡垒 EC2 实例,通过它建立隧道。有许多关于如何针对不同 AWS 服务执行此操作的教程。无论是 ES、EC、Aurora Serverless 还是 RDS Proxy,一般流程都是相同的。一些例子:

  • SSH 隧道(如何在本地访问 AWS RDS 而不将其暴露到 Internet)
  • 如何使用 SSH 隧道通过 Amazon Cognito 身份验证从 VPC 外部访问 Kibana?

1
投票
正如 @Marcin 提到的,出于延迟原因,AWS 建议仅在您的 VPC 中使用 Elasticache,但您必须以某种方式对其进行开发...(请务必阅读 @Marcin 的回答)

AWS 是一个巨大的谜团,很难找到初级到中级的资源,因此我将针对那些可能偶然发现这一点的人稍微扩展 @Marcin 的答案。

设置通常所说的“跳箱”来连接到各种 AWS 资源非常简单 - 这只是与您尝试连接的资源位于同一 VPC(网络)内的任何 EC2 实例- 在本例中为 Elasticache redis 集群。 (如果您遇到麻烦,只需启动一个新实例 - t4g.nano 或一些超小的东西就可以了。)

您需要确保您位于包含密钥的目录中,但随后应该能够运行以下命令将您想要使用的任何端口链接到远程 Redis 集群:

ssh -i ${your_ssh_key_name.pem} ${accessible_ec2_host} -L ${port_to_use_locally}:${inaccessable_redis_or_other_host}:${inaccessable_redis_port}
然后就可以使用

localhost

${port_to_use_locally}
连接redis


0
投票
按照

AWS 文档 在同一 VPC 中创建一个充当堡垒主机的 EC2 实例。

需要注意的是,如果您使用无服务器缓存,则还必须打开端口 6380。

enter image description here

要记住的另一件重要事情是在连接到无服务器缓存时使用 TLS

enter image description here

连接步骤:

    使用 SSH 端口隧道

ssh -i ${your_ssh_key_name.pem} ${ec2_host} -L ${port_to_use_locally}:${redis_or_other_host}:${redis_port}


    使用
  1. --tls
     选项连接到本地主机上的代理端口

redis-cli -h localhost --tls -p 6379


    

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