首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS API网关:如何将IAM身份传递给Lambda函数?

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

Stack Overflow用户
提问于 2015-07-28 00:48:44
回答 2查看 13K关注 0票数 18

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

我需要IAM用户身份,并且不能在调用IAM-user凭证的情况下运行Lambda函数。我所需要的就是在Lambda函数中获得调用IAM-user的标识。

有这样的选择吗?

EN

回答 2

Stack Overflow用户

发布于 2015-08-21 22:50:05

当您发布问题时,尚未提供从Amazon API Gateway请求上下文访问身份和其他信息的支持,但最近添加了该支持,请参阅Announcement: Context Variables

现在,您可以从映射模板中访问context variables,以检索有关

调用的上下文信息。您可以访问阶段、资源路径和HTTP方法等数据,以及有关调用方的标识的信息。然后可以使用$context变量将此信息传递给您的后端集成。强调我的

有关Accessing the $context Variable的参考文档提供了一个$context Variable Reference,并且有各种$context.identity.*参数可用于解决您的用例。

认知同一性

正如Soenke对OPs类似question in the Amazon API Gateway forum的回答中所概述的,到目前为止,有一个尚未记录的integration参数,该参数导致该$context.identity.*上下文变量中包含了Cognito标识符:

为了拥有

(而不是IAM!)IdentityId和IdentityPoolId在Lambda中可用,您必须在API资源的API网关集成请求页面启用带调用者凭证的Invoke。这会产生一个新的上下文结构"identity“(包含传递给Lambda函数的"cognitoIdentityId”和"cognitoIdentityPoolId“)。

票数 9
EN

Stack Overflow用户

发布于 2015-09-30 20:06:30

您可以使用带有“公共”池id的Cognito,然后将角色附加到Cognito池id,该角色访问您的Lambda,我认为它被称为InvokeLambdaRole或其他什么

代码语言:javascript
复制
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: 'REGION:YOUR_POOL_ID',
});

使用AWS STS获取具有有限权限的临时凭据。之后,您可以使用带有AWS_IAM身份验证的API Gateway,然后end point将为您调用Lambda方法。或者,您可以使用您获得的凭据直接调用lambda,但同样,您必须为您创建的身份池附加正确的角色。

注意:在你的杆子上设置严格的最低角色,这是一个公开的id,每个人都可以使用它来获得一个临时的或固定的(跟踪用户访问设备的) user_/app_ id。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31658816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档