gpt4 book ai didi

amazon-web-services - 从 Lambda 函数访问 Cognito 授权方 AppSync API

转载 作者:行者123 更新时间:2023-12-05 06:28:36 24 4
gpt4 key购买 nike

我想通过 Lambda 函数在我的 AppSync API 上调用突变以响应外部事件。现在,如果我将 AppSync 设置为使用 IAM 授权,然后以我的 Lambda 函数的角色提供访问权限,我就能够做到这一点。问题是我需要使用 Cognito 授权,因为我需要在我的许多解析器模板中访问 Cognito 用户名,而我不知道在使用 IAM 授权时有什么方法可以做到这一点。

因此,我想知道是否有任何方法可以使用 Cognito 用户池授权 Lambda 函数调用我的 AppSync 端点。显然,我可以在我的池中创建一个虚拟用户,然后在 Lambda 中使用它简单地登录,但 Cognito 用户池登录是一个非常缓慢的过程,而且这种方法听起来也不对。我想从 Lambda 调用的突变不需要任何 Cognito 信息。

如果我有办法在使用 IAM 授权时访问解析器模板中的 Cognito 用户名,也可以解决我的问题。

最佳答案

使用用户池作为您的身份验证机制,在某些时候,如果不登录,就无法获取 token 以使用 AWS AppSync 进行授权。话虽如此,您可以稍微减轻一些开销。最终,它归结为您在问题中使用“假用户”提出的建议。这不是一个不常见的解决方案,涉及到拥有一些管理员级别的用户,他们的凭据只能从此 Lambda 访问。

首先,出于延迟原因,我建议您不要使用传统的 SRP 登录。一种替代方法是使用 AdminInitiateAuth/ADMIN_NO_SRP_AUTH,将 SRP 计算的开销从您的 Lambda 卸载到 Cognito 后端,同时在您的池中打开 ADMIN_NO_SRP_AUTH。我从你的另一个问题 (Authenticate AppSync request with adminInitiateAuth) 中看到你正在考虑这样做,但重要的是要指出这只是用于登录用户的不同 API。你可以在这里阅读更多相关信息:https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html#amazon-cognito-user-pools-server-side-authentication-flow

另一种选择是自定义身份验证流程。上面的相同链接包含有关如何执行此操作的更多详细信息,但简而言之,您可以设置一个更快的流程来满足您添加的任何特定需求。

为了进一步降低开销,您可以在某种程度上将这些 token 缓存起来。这可能只是意味着将它保存在 Lambda 的内存中并在使用它们之前检查它们的有效性/过期时间,或者甚至附加一个远程缓存机制。

关于amazon-web-services - 从 Lambda 函数访问 Cognito 授权方 AppSync API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54214436/

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