Как использовать Elasticache с Django MemcachedCache Backend

Как правильно использовать сервис Amazon Elasticache (с механизмом Memcached) с бэкэндом MemcachedCache Django?

У меня есть локальная служба 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?

1 ответ

Вы не можете подключиться к экземплярам ElastiCache за пределами сети AWS. Даже если у ваших групп безопасности могут быть исключения, разрешающие трафик с вашего IP-адреса (или всего интернета), сеть AWS не будет принимать к нему трафик, исходящий не из их сети.

Эта конфигурация в порядке, однако будет работать только с экземпляром EC2.

В качестве альтернативы вы можете следовать этому руководству (которое также подтверждает мой ответ выше), которое в основном включает в себя раскрутку экземпляра EC2, чей IP-адрес вы будете использовать в своей конфигурации CACHES. Этот экземпляр настроен на выполнение NAT между входящим трафиком через порт 11211 и перенаправлением его на ваш узел ElastiCache. Эта конфигурация далека от идеальной и не должна использоваться в производстве.

Другие вопросы по тегам