如何使用 aws lambda 调用另一个带有用户凭据的 lambda?
How to use aws lambda to call another lambda with user credentials?
我在 aws lambda 服务器上有 2 个用不同语言编写的 lambda
假设它叫 C
和 J
并且有一个逻辑,当用户调用 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。缺点是所有用户不能是匿名用户
我在 aws lambda 服务器上有 2 个用不同语言编写的 lambda
假设它叫 C
和 J
并且有一个逻辑,当用户调用 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。缺点是所有用户不能是匿名用户