0

我很难将我的 Lambda 与 AWS Memcache 连接起来。我正在使用下面的代码片段,我没有看到任何错误日志并且函数超时。你能建议我出了什么问题吗?

const MemcachePlus = require("memcache-plus");

const client = new MemcachePlus("test_memcached.cfg.use1.cache.amazonaws.com:11211");
exports.index = async (event) => {
    try {
      await client.set("firstName", "Victor", 10000);
      console.log("Successfully set the key firstName");

      const firstName = await client.get("firstName");
      console.log(`Successfully got the key firstName: ${firstName}`);
    } catch (e) {
      console.log("error", e);
    }
}
4

1 回答 1

1
  1. 通过查看此文档以指导您https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html和 CloudFormation 堆栈中的 Memcached URL,确保您打开 VPC 的 DNS 主机名输出,因此您可以将其作为环境变量添加到您的 lambda
  2. 将您的 lambda 连接到您的 VPC 子网和安全组。这就是我使用无服务器框架的方式,在使用 CloudFormation 时应该看起来非常相似(https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html
myLambdaFunc:
  handler: src/myLambdaFunc.handler
  vpc:
    securityGroupIds:
      - Fn::ImportValue: myapp-${{self:provider.stage}}-PrivateVPCLambdaSGID
    subnetIds:
      - Fn::ImportValue: myapp-${{self:provider.stage}}-PrivateVPCSubnet1Ref
      - Fn::ImportValue: myapp-${{self:provider.stage}}-PrivateVPCSubnet2Ref
  environment:
    ELASTIC_CACHE_CONNECTION_URL:
      Fn::ImportValue: myapp-${{self:provider.stage}}-ECURL
  1. 为您正在使用的语言/框架安装 Memaced 库,并使用已传递的 env 变量进行连接
于 2021-10-04T08:27:35.110 回答