我正在为我的lambda函数设置API网关,并使用Proxy集成。我还为此API创建使用计划和API密钥,并与两个客户c1和c2共享API密钥k1和k2。
当客户使用密钥k2进行呼叫时,是否可以从我的lambda函数中找到由c2发出的请求?
我有一个实现RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent>
的Java处理程序
但不幸的是,我没有在APIGatewayProxyRequestEvent
中找到客户环境
最佳答案
API keys
事件不会获得客户上下文。可以在多个usage plans
中为不同的API共享API密钥。因此,它们不能与任何一种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用户池。