通过API网关访问Lambda函数中的客户端上下文

时间:2017-01-27 15:53:28

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

我已创建Lambda函数,并将其连接到API网关端点。我的用户通过Cognito使用Facebook进行身份验证(因此,显然使用联合身份池)。在我的iOS应用程序中,我能够正确验证,接收Cognito Id,并通过API网关正确执行我的Lambda函数。

我现在被困的地方是试图在我的lambda中访问用户的身份。我从其他线程&我应该使用的AWS文档能够通过JS中的context.identity.cognitoIdentityId访问身份。但是,上下文始终为null。

进一步挖掘表明上下文是在X-Amz-Client-Context头中传递的 - 当我查看API网关调用的数据包时,我看不到该头被传递。我正在使用Gateway自动生成的SDK(ObjC)作为我的终端。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

我为这种困惑道歉。您有两个选项可以将此值放入lambda函数中:

  1. 通过API网关传递。如果您使用的是Lambda代理,则它应该已在event.requestContext.identity.cognitoIdentityId

  2. 中使用
  3. 在集成中启用使用来电者凭据。如果您使用此方法,则还需要为Cognito角色添加lambda:Invoke权限。