如何在 AWS AppSync 使用 Cognito 时验证 Lambda 生成的突变

How to authenticate Lambda generated mutations when AWS AppSync using Cognito

目前 AWS AppSync 只能订阅 mutations,这是获得实时更新的唯一途径。但是,如果对 AppSync 之外的支持数据进行了更改(例如来自 Lambda 函数的 DynamoDB 更新),那么我们如何通知客户端?

我能看到的唯一解决方案是使用 "Local" 解析器创建一个突变,并让更新 DynamoDB 的 Lambda 调用这个突变。但我的问题是 AppSync 身份验证,在我的情况下它设置为 Cognito。

我尝试在我的 Lambda 角色中授予 IAM 对 appsync:GraphQL 的访问权限,但直到我将 AppSync 中的身份验证类型从 Cognito 更改为 IAM 后,这才起作用。但是当然,Cognito 身份验证不适用于 Web 客户端。

我的 Lambda 函数是否必须通过 Cognito 使用用户名和密码进行身份验证才能触发变更?或者有其他方法可以从 Lambda 通知客户吗?

您需要将 AppSync 身份验证类型设置为 IAM,并通过与您的 Cognito 用户池关联的 Cognito 联合身份服务获取 AWS 凭证,并使用适当配置的身份验证身份策略。然后,您应该能够使用这些凭据进行 IAM 对 AppSync 的访问。