如何从同一个 AWS lambda 函数访问 Cognito 函数和 Elasticache?

How to access Cognito functions and Elasticache from the same AWS lambda function?

我正在尝试编写 AWS lambda 函数,它使用 AWS.CognitoIdentityServiceProvider.adminGetUser 从 AWS Cognito 获取用户,然后将一些数据存储到 AWS Elasticache (Redis) 中。这些部分单独工作正常,但不能一起工作,因为当我为 Lambda 启用 VPC(以便能够访问 Elasticache)时,我似乎失去了对 Cognito 的访问权限(Lambda 超时)。

有没有办法从单个 lambda 函数访问这两个服务,或者我的方法完全错误?

是的,你当然可以。您需要在 VPC 的 public 子网中创建一个 NAT 网关或 NAT 实例,然后向路由 table 添加一条规则以启用来自 lambda 安全组的 NAT。我认为没有 public Cognito IP 地址,因此您的安全出站组规则 CIDR 将为 0.0.0.0/0。

官方文档上有更多详细信息here,网上也有大量教程,因为这是一个常见问题。祝你好运!

P.S。不要忘记将 adminGetUser 操作的权限添加到 lambda 的 IAM 角色。