我已创建Lambda函数,并将其连接到API网关端点。我的用户通过Cognito使用Facebook进行身份验证(因此,显然使用联合身份池)。在我的iOS应用程序中,我能够正确验证,接收Cognito Id,并通过API网关正确执行我的Lambda函数。
我现在被困的地方是试图在我的lambda中访问用户的身份。我从其他线程&我应该使用的AWS文档能够通过JS中的context.identity.cognitoIdentityId
访问身份。但是,上下文始终为null。
进一步挖掘表明上下文是在X-Amz-Client-Context头中传递的 - 当我查看API网关调用的数据包时,我看不到该头被传递。我正在使用Gateway自动生成的SDK(ObjC)作为我的终端。
我在这里缺少什么?
答案 0 :(得分:2)
我为这种困惑道歉。您有两个选项可以将此值放入lambda函数中:
通过API网关传递。如果您使用的是Lambda代理,则它应该已在event.requestContext.identity.cognitoIdentityId
。
在集成中启用使用来电者凭据。如果您使用此方法,则还需要为Cognito角色添加lambda:Invoke
权限。