【发布时间】:2017-11-15 19:15:34
【问题描述】:
我有一个需要使用 Memcached 引擎访问 Elasticache 的 lambda 应用程序。
我已经正确配置了我的 elasticache,甚至可以从 Elastic beanstalk 访问它。我也通过 telnet 连接到我的节点进行测试。
要从 Lambda 访问 elasticache,我做了以下操作:
- 配置我的缓存,并确认从我的节点连接、设置和获取缓存项
- 将我的函数设置为在与集群相同的 VPC 上运行
- 为我的函数分配了我的缓存(子网组)使用的子网,并且驻留在同一个 VPC 中。
- 将我的函数分配给打开端口 11211 的安全组
- 我的函数角色附加了以下策略(AWSLambdaFUllAccess、AWSLambdaBasicExecutionRole 和 AWSLambdaVPCAccessExecutionRole)。
还有什么我需要做的吗?
我在日志中得到以下信息
Error Enyim.Caching.MemcachedClient: Create PooledSocket
Error Enyim.Caching.MemcachedClient: Could not init pool.
Debug Enyim.Caching.MemcachedClient: Mark as dead was requested for
Unspecified/mynodeurl.cache.amazonaws.com:11211
Debug Enyim.Caching.MemcachedClient: FailurePolicy.ShouldFail(): True
Warning Enyim.Caching.MemcachedClient: Marking node
Unspecified/mynodeurl.cache.amazonaws.com:11211 as dead
Debug Enyim.Caching.MemcachedClient: Node
Unspecified/mynodeurl.cache.amazonaws.com:11211 is dead.
Debug Enyim.Caching.MemcachedClient: Starting the recovery timer.
Debug Enyim.Caching.MemcachedClient: Timer started.
Information Enyim.Caching.MemcachedClient: MemcachedInitPool-cost: 43.048ms
Debug Enyim.Caching.MemcachedClient: Acquiring stream from pool.
Unspecified/mynodeurl.cache.amazonaws.com:11211
Debug Enyim.Caching.MemcachedClient: Pool is dead or disposed, returning null
Unspecified/mynodeurl.cache.amazonaws.com:11211
EnyimMemcached Started.
谢谢
【问题讨论】:
-
您对安全组的评论不清楚。听起来您在 Lambda 函数的安全组上打开了端口 11211,这是错误的。您是否在分配给 ElastiCache 集群的安全组中创建了规则以使 Lambda 函数具有访问权限?
-
感谢@MarkB 的回复。你是对的。我为我的 lambda 函数使用与我的 Elasticache 节点相同的安全组。我的 Lambda 安全组应该有哪些设置?它目前只有端口 11211 和出站的入站规则 - 全部
-
您可能应该添加一些您使用的示例代码,也许客户端配置中缺少某些内容。
-
嗨,亚当。代码很好。我很确定这是一个配置问题。我认为我需要回答的问题来自@MarkB,您是否在分配给 ElastiCache 集群的安全组中创建了一个规则,以便 Lambda 函数可以访问?。我不确定那会是什么规则。任何输入都将有助于如何配置 elasticache 安全组以允许 lambda 将有所帮助
-
请发布您的确切安全组设置。端口
11211规则的源值是多少?
标签: amazon-web-services aws-lambda amazon-elasticache