使用代理集成从AWS lambda函数访问授权程序 - Python

时间:2018-06-13 14:40:45

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

[源自AWS ApiGateway Lambda Proxy access Authorizer]

我在ApiGateway中使用了Lambda代理和Cognito用户池授权程序。使用node.js Lambda函数,可以访问event.requestContext.authorizer.claims中的授权者(基本上,获取用户ID,电子邮件和内容)。

但是在Python中,没有这样的对象。探索event对象和context对象显示没有像requestContextauthorizer这样的内容,只包含一个包含Cognito Federated Identities信息的identity对象:对我来说,它只是null

我在Python AWS-Lambda函数中没有看到event.requestContext.authorizr.claims的任何提及,这将是一个痛苦

  1. 使用联合身份
  2. 在API网关中
  3. ,将授权设置为AWS_IAM并启用Invoke with caller credential
  4. 删除代理集成以进行自定义集成或
  5. 使用node.js而不是python
  6. 编写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中使用正确的语法?

0 个答案:

没有答案