我有一个lambda应用程序,需要使用Memcached引擎访问Elasticache。
我已经正确配置了我的弹性缓存,甚至可以从 Elastic beanstalk 访问它。我也通过 telnet 连接到我的节点进行测试。
要从 Lambda 访问弹性缓存,我做了以下操作:
- 配置了我的缓存,并确认了从我的节点连接、设置和获取缓存的项目
- 将我的函数设置为在与集群相同的 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.
谢谢
听起来你使用的是错误的Enyim.Caching.MemcachedClient版本。 在撰写本文时,Lambda仅支持.netstandard 1.6而不是1.6.1。
Enyim有一个非常早期的客户端版本,可以工作。 https://www.nuget.org/packages/EnyimMemcachedCore/1.0.0.6
如果启用完整日志记录,您将看到"无法初始化池"附带的异常是"此平台不支持操作"。
我有这个完全相同的问题。