AWS API Gateway:如何将IAM身份传递给Lambda函数?

Ale*_*VMP 15 amazon-iam aws-lambda aws-api-gateway

我已经使用AWS API Gateway前端成功配置了对我的Lambda函数的IAM认证访问,但无法找到如何将IAM用户身份传递给我的Lambda函数.

我需要完全IAM用户身份,并且无法在调用IAM用户凭据下运行Lambda函数.我只需要在我的Lambda函数中调用IAM用户身份.

那有选择吗?

Ste*_*pel 8

当您发布问题时,支持从Amazon API Gateway请求上下文访问身份和其他信息,但最近添加了,请参阅公告:上下文变量:

您现在可以从映射模板中访问上下文变量,以检索有关API调用的上下文信息.您可以访问阶段,资源路径和HTTP方法等数据,以及有关调用者身份的信息.然后,可以使用$ context变量将此信息传递到后端集成.[强调我的]

有关访问$ context变量的参考文档具有a,$context Variable Reference并且有各种$context.identity.*参数可以解决您的用例.

认知身份

正如Soenke 在亚马逊API网关论坛中对OP类似问题的回答所述,还有一个尚未记录的集成参数导致Cognito标识符包含在此$context.identity.*上下文变量中:

为了在Lambda中使用Cognito(非IAM!)IdentityId和IdentityPoolId,您必须在API GW资源的API网关"集成请求"页面上启用"使用调用者凭证调用".这导致新的上下文结构"identity"(包含"cognitoIdentityId"和"cognitoIdentityPoolId"被传递给Lambda函数).

  • 当我取消选中"调用调用者凭据"时,我能够在lambda函数中看到CognitoIdentityId.为了能够做到这一点,我在**Integration Request**部分创建了一个_application/json_映射模板:_ {"context.identity.cognitoIdentityId":"$ context.identity.cognitoIdentityId"} _.在执行"部署API"后,我需要等待一些额外的秒才能尝试访问我的网站.在"部署API"生效之前有几秒钟的延迟. (2认同)