我在 aws lambda 服务器上有 2 个用不同语言编写的 lambda
假设它调用C并且J
并且有一个逻辑,当用户调用C参数匹配某些条件时。它会做一些事情,然后J像用户自己调用一样调用J(相同的 cognitoId)
所以我需要获取调用我的Clambda 函数并使用它来调用的用户的凭据J
但我找不到从 lambda 环境中获取当前用户凭证的线索
我只能得到context.Identity但不足以创建凭据以调用 lambda 作为模拟用户
我能做什么?
我在 aws lambda 服务器上有 2 个用不同语言编写的 lambda
假设它调用C并且J
并且有一个逻辑,当用户调用C参数匹配某些条件时。它会做一些事情,然后J像用户自己调用一样调用J(相同的 cognitoId)
所以我需要获取调用我的Clambda 函数并使用它来调用的用户的凭据J
但我找不到从 lambda 环境中获取当前用户凭证的线索
我只能得到context.Identity但不足以创建凭据以调用 lambda 作为模拟用户
我能做什么?
我将使用 Java SDK 中的示例,但这些方法在所有 SDK 中都可用,因此请适应您选择的语言。
您可以使用以下AmazonCognitoClient方法将 identityId 令牌交换为凭证(基本上是临时访问密钥/秘密密钥):
public GetCredentialsForIdentityResult getCredentialsForIdentity(GetCredentialsForIdentityRequest getCredentialsForIdentityRequest)
GetCredentialsForIdentityRequest接受一个可以交换为GetCredentialsForIdentityResult. 您可以使用getCredentials()结果来获取一个Credentials实例,然后您可以使用该实例来调用 Lambda J。
我现在可以使用的唯一解决方法是,使用 DeveloperCredential 始终获取每个用户的访问令牌并使用该凭证调用 subsequence lambda。缺点是所有用户都不能是匿名用户