首页 > 解决方案 > 从具有代理集成的 AWS lambda 函数访问授权者 - Python

问题描述

[源自AWS ApiGateway Lambda 代理访问授权者]

我在我的 ApiGateway 中使用 Lambda 代理和 Cognito 用户池授权器。使用 node.js Lambda 函数,可以访问event.requestContext.authorizer.claims.

但是在 Python 中,没有这样的 object。探索event对象和context对象显示没有类似requestContextor的东西authorizer,只是一个identity包含 Cognito Federated Identities 信息的对象:对我来说,它只是null.

我还没有看到任何提到event.requestContext.authorizr.claimsPython AWS-Lambda 函数的内容,这会很痛苦

  1. 改用联合身份
  2. 在 API Gateway 中,将 Authorization 设置为AWS_IAM并打开Invoke with caller credential
  3. 删除自定义集成的代理集成或
  4. 用 node.js 而不是 python 编写 lambdas

您是否知道我是否遗漏了某些东西,是否没有由 AWS 实施,是否有简单的解决方法或其他任何东西?

非常感谢你的帮助 !

这是 python aws-lambda 函数中的上下文对象,以类似字典的形式:

"aws_request_id":"99XXXXf5-6XXe-1XX8-bXXf-5dXXXXXXXX50",
  "function_name":"test_DynamoDB",
  "function_version":"$LATEST",
  "invoked_function_arn":"arn:aws:lambda:eu-west-3:4XXXXXXXXXX0:function:test_DynamoDB",
  "log":"<bound method LambdaContext.log of <__main__.LambdaContext object at 0x7f07bcb21da0>>",
  "log_group_name":"/aws/lambda/test_DynamoDB",
  "log_stream_name":"2018/06/13/[$LATEST]76XXXXXXXXXXXXXXXXXXXXXXXXXXXXf0",
  "memory_limit_in_mb":"128",
  "identity":{  
     "cognito_identity_id":null,
     "cognito_identity_pool_id":null
  },
  "client_context": None

更新

https://stackoverflow.com/a/44039371/9936457看来,C# lambda 函数中似乎存在同样的问题,并且有一个解决方法,使用 System.IO.Streams。这个解决方案可以在 Python 中使用正确的语法吗?

标签: pythonamazon-web-servicesaws-lambdaaws-api-gatewayamazon-cognito

解决方案


推荐阅读