为什么我无法将我的 EC2 实例连接到 ElastiCache?

Why can't I connect my EC2 instance to ElastiCache?

提问人:gasbag_1 提问时间:11/18/2023 最后编辑:John Rotensteingasbag_1 更新时间:11/18/2023 访问量:64

问:

我正在尝试在 EC2 实例中执行此 Python 脚本:

import elasticache_auto_discovery

elasticache_config_endpoint = "<my-elasticache-cluster-endpoint>:6379"
nodes = elasticache_auto_discovery.discover(elasticache_config_endpoint)
print("nodes discovered")

但是,print 语句从不执行。有时我得到,通常我什么也得不到。TimeoutError: [Errno 110] Connection timed out

EC2 实例和 ElastiCache Redis 集群具有相同的 VPC ID 和安全组 ID。ElastiCache Redis 集群的子网组名称附加到同一 VPC ID。

EC2 实例使用附加了 AmazonElastiCacheFullAccess 策略的 IAM 角色。为角色分配了一个权限边界,该边界拒绝“受限:写入”,并允许“完整:读取、列出、标记受限:写入”。

如果我使用无意义的字符串运行脚本,我会得到.elasticache_config_endpointsocket.gaierror: [Errno -2] Name or service not known

python 网络服务 EC2 亚马逊 ElastiCache

评论

0赞 Tomasz Breś 11/18/2023
你能添加SG配置吗?
0赞 gasbag_1 11/18/2023
安全组配置?我不知道如何在不透露机密信息的情况下添加它。正如我在问题中提到的,EC2 实例和 ElastiCache 集群使用相同的安全组。安全组中是否有应检查的内容?
1赞 John Rotenstein 11/18/2023
仅具有相同的安全组并不意味着资源可以相互通信。安全组分别应用于每个资源。如果您希望它们进行通信,则需要允许安全组从自身接收入站连接,也可以使用具有允许通信的规则的单独安全组。
0赞 gasbag_1 11/18/2023
@JohnRotenstein我已经向安全组添加了入站规则,以便在端口 6379(ElastiCache 集群使用的端口)上接收来自自身的通信。是否需要向安全组添加任何其他规则?

答:

0赞 gasbag_1 11/28/2023 #1

我终于想通了,至少在有限的意义上是这样。我创建了一个新的 Elasticache 集群,同时禁用了传输中加密和静态加密,然后我能够使用新集群的终端节点执行问题中给出的 Python 代码段。