通过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 には繋がらないのでテスト環境などでは上記実装を切り替える

以上的内容。

广告
将在 10 秒后关闭
bannerAds