【问题标题】:Access Elasticache - memcached from Lambda访问 Elasticache - 来自 Lambda 的 memcached
【发布时间】:2017-11-15 19:15:34
【问题描述】:

我有一个需要使用 Memcached 引擎访问 Elasticache 的 lambda 应用程序。

我已经正确配置了我的 elasticache,甚至可以从 Elastic beanstalk 访问它。我也通过 telnet 连接到我的节点进行测试。

要从 Lambda 访问 elasticache,我做了以下操作:

  1. 配置我的缓存,并确认从我的节点连接、设置和获取缓存项
  2. 将我的函数设置为在与集群相同的 VPC 上运行
  3. 为我的函数分配了我的缓存(子网组)使用的子网,并且驻留在同一个 VPC 中。
  4. 将我的函数分配给打开端口 11211 的安全组
  5. 我的函数角色附加了以下策略(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


【解决方案1】:

听起来您使用了错误版本的 Enyim.Caching.MemcachedClient。在撰写本文时,Lambda 仅支持 .netstandard 1.6 而不是 1.6.1。

Enyim 有一个非常早期的客户端版本,可以使用。 https://www.nuget.org/packages/EnyimMemcachedCore/1.0.0.6

如果您启用完整日志记录,您会看到“无法初始化池”出现的异常是“此平台不支持操作”。

我也遇到了同样的问题。

【讨论】:

    猜你喜欢
    • 2019-09-12
    • 2017-11-28
    • 2017-12-21
    • 2018-09-11
    • 2023-04-06
    • 2017-04-08
    • 2016-12-07
    • 2020-04-09
    • 2019-08-30
    相关资源
    最近更新 更多