在Django的MemcachedCache后端使用Amazon的Elasticache服务(使用Memcached引擎)的正确方法是什么?
我有一个本地运行的本地Memcached服务,它可以在Django设置下正常工作:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
}
我认为使用Elasticache就像创建Memcached集群实例一样简单,然后将我的设置更改为:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'instance-name.abcdef.cfg.use1.cache.amazonaws.com:11211',
}
}
但是,当我在本地测试时,缓存会无声地失败,并且无法成功存储任何内容。
我做错了什么?如何让MemcachedCache后端显示真实的错误消息?我是否需要使用特定于Elasticache的Django后端,如this?
答案 0 :(得分:3)
您无法从AWS网络外部连接到ElastiCache实例。即使您的安全组可能有例外情况允许来自您的IP地址(或整个互联网)的流量,AWS的网络也不会接受任何不是来自其网络内的流量。
此配置没问题,但只能在EC2实例中使用。
或者你可以按照this guide(这也证实了我上面的答案),这基本上涉及你启动一个EC2实例,你将在你的CACHES配置中使用你的IP地址。此实例配置为在端口11211上的传入流量之间执行NAT并将其转发到ElastiCache节点。这种配置远非理想,但不应该在生产中使用。