Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 通过API网关访问Lambda函数中的客户端上下文_Amazon Web Services_Aws Lambda_Aws Api Gateway_Amazon Cognito - Fatal编程技术网

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

Amazon web services 通过API网关访问Lambda函数中的客户端上下文,amazon-web-services,aws-lambda,aws-api-gateway,amazon-cognito,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访问标识。但是,上下文总是空的 进一步挖掘

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

我现在陷入困境的地方是试图在我的lambda中访问用户的身份。我从其他线程和AWS文档中了解到,我应该使用它通过JS中的
context.identity.cognitoIdentityId
访问标识。但是,上下文总是空的

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


我在这里遗漏了什么?

很抱歉给您带来了困惑。将此值输入lambda函数有两个选项:

  • 通过API网关传递。如果您正在使用Lambda代理,那么它应该已经在
    event.requestContext.identity.cognitoIdentityId
    中可用

  • 通过在集成中启用使用调用方凭据。如果使用此方法,还需要向Cognito角色添加
    lambda:Invoke
    权限


  • 我为这一混乱道歉。将此值输入lambda函数有两个选项:

  • 通过API网关传递。如果您正在使用Lambda代理,那么它应该已经在
    event.requestContext.identity.cognitoIdentityId
    中可用

  • 通过在集成中启用使用调用方凭据。如果使用此方法,还需要向Cognito角色添加
    lambda:Invoke
    权限


  • 您在方法请求中使用的模板不是passthrough模板吗?我不知道。无论如何,头不是由客户机SDK生成的,所以我认为这是一个更大的问题。或者X-Amz-Client-Context是由API网关自动添加的吗?
    X-Amz-Client-Context
    头应该由移动SDK自动添加,然后由API网关处理。您在方法请求中使用的是传递模板以外的模板吗?我不知道。无论如何,头不是由客户机SDK生成的,所以我认为这是一个更大的问题。或者X-Amz-Client-Context是由API网关自动添加的?
    X-Amz-Client-Context
    头应该由移动SDK自动添加,然后由API网关处理。谢谢。我终于做到了。我最终使用了选项1。Bob,有没有关于使用API网关+Lambda+Cognito设置的最佳实践文档?拼凑如何使其工作是一件很累人的事情。@Vickram我们正在寻找添加对Cognito的支持,作为其中的一部分,这将有助于将所有服务粘合在一起。您必须确保启用
    UseAmAuth
    ,选项1才能工作。谢谢。我终于做到了。我最终使用了选项1。Bob,有没有关于使用API网关+Lambda+Cognito设置的最佳实践文档?拼凑如何使其工作是一件很累人的事情。@Vickram我们正在寻找添加对Cognito的支持,作为其中的一部分,这将有助于将所有服务粘合在一起。您必须确保启用
    UseAmAuth
    ,选项1才能工作。