我正在为我的lambda函数设置API网关并使用代理集成。我还为此API创建使用计划和API密钥,并与两个客户c1和c2共享API密钥k1和k2。
当客户使用密钥k2进行呼叫时,有没有办法从我的lambda函数中找到请求是由c2做出的?
我有一个实现RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent>
的java处理程序
但不幸的是,我没有在APIGatewayProxyRequestEvent
找到客户背景
在API keys
事件中,您将无法获得客户背景信息。对于不同的API,API密钥可以在多个usage plans
之间共享。因此,它们不能与任何一个API部署相关联。如果您想这样做,您将自行管理它(例如,限制1个API到1个客户,API键映射到客户)。
我认为AWS没有提供这个的一个原因是因为API keys
纯粹是为了usage plans
。任何形式的身份验证/授权(用户识别都很重要)都需要使用IAM
,Cognito user pools
或custom authorizer
等其他技术来完成。请参阅this。
要在使用计划中包含API方法,您必须配置各个API方法以要求API密钥。对于用户身份验证和授权,请勿使用API密钥。使用IAM角色,Lambda授权程序或Amazon Cognito用户池。