我在 aws lambda 服务器上有 2 个用不同语言编写的 lambda
假设它调用C
并且J
并且有一个逻辑,当用户调用C
参数匹配某些条件时。它会做一些事情,然后J
像用户自己调用一样调用J
(相同的 cognitoId)
所以我需要获取调用我的C
lambda 函数并使用它来调用的用户的凭据J
但我找不到从 lambda 环境中获取当前用户凭证的线索
我只能得到context.Identity
但不足以创建凭据以调用 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
接受一个可以交换为GetCredentialsForIdentityResult
. 您可以使用getCredentials()
结果来获取一个Credentials
实例,然后您可以使用该实例来调用 Lambda J。
我现在可以使用的唯一解决方法是,使用 DeveloperCredential 始终获取每个用户的访问令牌并使用该凭证调用 subsequence lambda。缺点是所有用户都不能是匿名用户