gpt4 book ai didi

javascript - 无法从 Java Lambda 函数获取 CognitoIdentityId

转载 作者:行者123 更新时间:2023-11-29 21:24:58 25 4
gpt4 key购买 nike

我目前有一个 API 网关设置来绑定(bind)使用 Java 编写的 Lambda 函数。我正在使用 javascript SDK 调用 API 网关端点,它们正确地中继到 Lambda 函数。但是,当我尝试通过以下方式访问 Cognito 身份 ID 时:

context.getIdentity()

我得到以下响应:

lambdainternal.api.LambdaCognitoIdentity@xxxxxx

如果我跑

context.getIdentity().getIdentityId()

它只是在记录器中返回一个空字符串。不确定我需要做什么来获取发出请求以传递到上下文的用户的身份 ID。

我正在通过以下方式生成 Javascript AWS Api 客户端:

var apiClient = apigClientFactory.newClient({
accessKey: credentials.accessKeyId,
secretKey: credentials.secretAccessKey,
sessionToken: credentials.sessionToken,
region: 'us-east-1'
});

lambda 函数使用 IAM 策略进行保护,并且用户能够访问 lambda 函数,因此身份验证工作正常。它只是出于某种原因没有提供 IdentityId。

最佳答案

为了让 Lambda 在其自己的上下文变量中访问 Cognito 身份,您需要在“集成响应”选项卡上启用“使用调用者凭据调用”复选框。

或者,您也可以使用 API 网关的映射模板并将 $context.identity.cognitoIdentityId 的值传递给您的 Lambda 函数。映射模板看起来像这样:

{
"cognito-identity" : "$context.identity.cognitoIdentityId"
}

另请查看 API Gateway 的论坛讨论之一,了解更多详细信息/背景信息 (How to pass cognito identity id to backend through API Gateway)。

关于javascript - 无法从 Java Lambda 函数获取 CognitoIdentityId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37716949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com