我正在为我的lambda函数设置API网关,并使用代理集成。我还为该API创建了使用计划和API密钥,并与两个客户( k1 & c2 )共享API密钥c1和c2。
当客户使用键k2进行调用时,有什么方法可以从我的lambda函数中找到请求是由c2发出的吗?
我有一个实现RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent>
的java处理程序。
但不幸的是,我没有在APIGatewayProxyRequestEvent
中找到客户上下文
发布于 2019-02-14 11:47:26
您将不会在使用API keys
的事件中获得客户上下文。API键可以在多个usage plans
之间为不同的API共享。因此,它们不能绑定到任何一个API部署中。如果您想要这样做,您将自己管理它(例如,将1个API限制为1个customer,将API键映射到customer)。
我认为AWS没有提供这一点的原因之一是因为API keys
纯粹是针对usage plans
的。任何类型的身份验证/授权(其中用户标识很重要)都需要使用其他技术,如IAM
、Cognito user pools
或custom authorizer
。请看这。
若要在使用计划中包括API方法,必须配置单个API方法以要求API密钥。对于用户身份验证和授权,不要使用API密钥。使用IAM角色、Lambda授权程序或亚马逊认知用户池。
发布于 2019-02-13 16:04:33
我将在方法请求和集成请求时将API键添加到HTTP报头中,以便Lambda接收所提供的API密钥,然后在Lambda中的一个函数根据所读取的API键选择要运行的代码或打印用户编号。
https://stackoverflow.com/questions/54681163
复制相似问题