【问题标题】:How to get the identity ID of the Cognito users in AWS Lambda如何在 AWS Lambda 中获取 Cognito 用户的身份 ID
【发布时间】:2020-02-16 18:36:37
【问题描述】:

在我的 AWS 项目中,我使用 API Gateway 创建调用 lambda 函数的 API。 API 由 Android 应用程序调用。我使用 Cognito 用户池和 Cognito 身份池来管理我的用户(经过身份验证和未经身份验证)。

在我的 lambda 函数中,我需要获取用户的身份 ID。经过一番研究,我发现要实现这一点,我需要在我的 API 的集成请求中检查Invoke with caller credentials

不幸的是,当我调用我的 API 时,我收到了错误 500,日志如下:Execution failed due to configuration error: Invalid permissions on Lambda function。显然,这是因为 Cognito 身份池角色没有后端 lambda 的 lambda 调用权限。

那么,为了能够在我的 lambda 函数中获取身份 ID,我该如何添加这些权限,如果可能,添加这些权限的 CloudFormation 语法是什么?

感谢您的帮助。

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-api-gateway amazon-cognito


    【解决方案1】:

    选择您尝试修复的 AWS Lambda(在 AWS UI 中)并向下滚动到执行角色部分。您需要创建一个有权访问 Cognito 身份池的新角色,并将该角色设置为 Lambda 并保存。

    在 AWS API 中,您是否添加了设置权限(允许/拒绝)访问 API 的授权方。

    如果您的用户在 Cognito 用户池中,则不需要 API 网关、Lambda 等。只需使用 AWS Amplify,一切都已融入框架。

    https://aws-amplify.github.io/docs/js/authentication

    罗宾

    【讨论】:

      【解决方案2】:

      这是我的 CloudFormation 模板中缺少的内容,只需将其添加到 Cognito 身份池策略(或如果您正在处理未经身份验证的用户的策略)中:

                - Effect: 'Allow'
                  Action:
                    - 'lambda:InvokeFunction'
                  Resource:
                    Fn::Join:
                      - ''
                      -
                        - 'arn:aws:lambda:'
                        - Ref: AWS::Region
                        - ':'
                        - Ref: AWS::AccountId
                        - ':function:*'
      

      【讨论】:

        猜你喜欢
        • 2015-07-07
        • 2022-07-18
        • 2020-11-04
        • 2020-07-01
        • 2018-12-11
        • 2017-07-26
        • 2022-06-20
        • 2017-02-02
        • 2016-09-27
        相关资源
        最近更新 更多