如何使用 aws lambda 调用另一个带有用户凭据的 lambda?

How to use aws lambda to call another lambda with user credentials?

我在 aws lambda 服务器上有 2 个用不同语言编写的 lambda

假设它叫 CJ

并且有一个逻辑,当用户调用 C 时参数匹配某些条件。它会做一些事情然后调用 J 就像用户自己调用 J (相同的 cognitoId)

所以我需要获取调用我的 C lambda 函数的用户的凭据并使用它来调用 J

但我找不到从 lambda 环境中获取当前用户凭证的线索

我只能获得 context.Identity,但这不足以创建用于以模拟用户身份调用 lambda 的凭据

我能做什么?

我将使用 Java SDK 中的示例,但这些方法在所有 SDK 中都可用,因此请根据您选择的语言进行调整。

您可以使用 AmazonCognitoClient 使用以下方法将 identityId 令牌交换为凭据(基本上是临时访问密钥/秘密密钥):

public GetCredentialsForIdentityResult getCredentialsForIdentity(GetCredentialsForIdentityRequest getCredentialsForIdentityRequest)

GetCredentialsForIdentityRequest takes an identityId which can be exchanged for a GetCredentialsForIdentityResult. You can use getCredentials() on the result to get a Credentials 实例,您可以使用它来调用 Lambda J。

我现在唯一可以使用的解决方法是,使用 DeveloperCredential 始终为每个用户获取访问令牌并使用该凭证调用子序列 lambda。缺点是所有用户不能是匿名用户