首页 > 解决方案 > 使用具有 Web 身份的假定角色执行 AWS Lambda

问题描述

Lambda 是否可以通过 API Gateway 执行,并代表 Cognito 身份验证用户扮演角色?

现在,我正在 Lambda 代码中手动进行角色假设:

  const assumedRole = await sts.send(new AssumeRoleWithWebIdentityCommand({
    RoleArn: 'some role ARN',
    RoleSessionName: event.requestContext.authorizer.jwt.claims['cognito:username'],
    WebIdentityToken: event.headers.authorization
  }));

但我想避免这种情况,并且已经使用这个假定的角色执行 Lambda。

我遇到的困难是弄清楚实现这一目标需要什么 IAM 角色和策略。

谢谢!

标签: amazon-web-servicesaws-lambdaaws-api-gatewayamazon-cognitoamazon-iam

解决方案


您可以将请求标头中的 cognito 令牌传递给 lambda,然后为身份调用获取获取凭据。这将是动态承担认知用户角色的最佳方法。如果您已将 cognito 配置为基于令牌授予角色,您甚至不需要在调用中明确提供角色 arn。


推荐阅读