通过AWS Lambda与ElastiCache建立连接
想做的事情
-
- AWS Lambda から ElastiCache に接続する
- boto3 は get/set はできないらしいので他の方法を使う
需要的设置 de
- AWS Lambda, ElastiCache を同じVPCにあわせる
如果Redis(未启用集群模式)的话。
在 EC2 上下载 redis-py
$ pip3 install redis -t ./
- 生成されるディレクトリを開発環境の index.py と同じディレクトリにコピーする
创建index.py。
import redis
def handler(event, context):
r = redis.StrictRedis(host='****.****.0001.apne1.cache.amazonaws.com', port="6379", db=0)
r.set("key1", "value1")
print(r.get("key1"))
return "OK"
或者
import redis
def handler(event, context):
pool = redis.ConnectionPool(host='****.****.0001.apne1.cache.amazonaws.com', port=6379, db=0)
r = redis.StrictRedis(connection_pool=pool)
r.set("key1", "value1")
print(r.get("key1"))
return "OK"
以上。
如果启用了Redis集群模式
在 EC2 上下载 redis-py-cluster。
$ pip3 install redis-py-cluster -t ./
-
- redis-py も依存してるので一緒にダウンロードされる
- 生成されるディレクトリを開発環境の index.py と同じディレクトリにコピーする
创建 index.py
from rediscluster import StrictRedisCluster
def handler(event, context):
startup_nodes = [{"host": "****.****.clustercfg.apne1.cache.amazonaws.com", "port": "6379"}]
rc = StrictRedisCluster(startup_nodes=startup_nodes, decode_responses=True, skip_full_coverage_check=True)
rc.set("key1", "value")
print(rc.get("key1"))
return "OK"
- クラスターモードが無効の redis には繋がらないのでテスト環境などでは上記実装を切り替える
以上的内容。