You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS API Gateway搭配Cognito用户池授权器:启用Lambda调用者凭证选项

解决API Gateway用Cognito授权器时「调用者凭证执行」选项禁用的问题

为啥控制台的选项点不了

当API Gateway用Cognito用户池做授权器时,控制台里的「Invoke with caller credentials」(调用者凭证执行)复选框会被禁用——这是因为这种场景下需要通过IAM角色来传递调用者的身份凭证,控制台没做直接配置的入口,得用CLI或者CloudFormation这类工具来搞定。

具体操作步骤

1. 先建个符合要求的IAM角色

得先搞个IAM角色,满足两个核心要求:

  • 信任API Gateway服务(允许API Gateway扮演该角色)
  • 拥有调用目标Lambda函数的权限

信任策略示例(JSON格式):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "apigateway.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

权限策略示例(授予调用Lambda的权限):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:你的区域:你的账号ID:function:你的Lambda函数名"
    }
  ]
}

2. 用CLI更新API Gateway的集成配置

运行下面的AWS CLI命令,把集成的credentials参数设成刚才创建的IAM角色ARN:

aws apigateway update-integration \
  --rest-api-id 你的API ID \
  --resource-id 目标资源ID \
  --http-method 你的HTTP方法(比如GET/POST) \
  --patch-operations op=replace,path=/credentials,value=你的IAM角色ARN

参数说明:

  • 你的API ID:在API Gateway控制台首页就能找到
  • 目标资源ID:控制台资源列表中对应资源的ID
  • 你的IAM角色ARN:刚才创建的角色的ARN,可在IAM控制台角色详情页获取

3. 重新部署API

修改集成配置后,必须重新部署API才能让设置生效:

aws apigateway create-deployment \
  --rest-api-id 你的API ID \
  --stage-name 你的部署阶段名(比如prod/dev)

验证是否生效

部署完成后,调用API时,Lambda会通过你创建的IAM角色,使用Cognito授权后的用户凭证执行。你可以查看Lambda的执行日志,找到aws:userid等Cognito相关的上下文参数,确认身份凭证是否正确传递。

内容的提问来源于stack exchange,提问作者Basa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 03:37:50