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

Step Functions调用API Gateway时的API Key相关问题咨询

解决方案

需求1:同账号内无需API Key,通过资源策略让Step Function调用接口

可以实现,通过配置API Gateway的资源策略,允许Step Function的执行角色直接访问目标API资源,无需携带API Key。具体操作如下:

  1. 编写API Gateway资源策略:
    在API Gateway的资源策略中添加两条语句:一条允许指定的Step Function执行角色调用getOrders资源;另一条保留原有的API Key验证逻辑,确保其他请求仍需API Key。示例策略如下:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::你的账号ID:role/你的StepFunction执行角色ARN"
          },
          "Action": "execute-api:Invoke",
          "Resource": "arn:aws:execute-api:你的区域:你的账号ID:你的API ID/你的阶段/GET/getOrders/*"
        },
        {
          "Effect": "Allow",
          "Principal": "*",
          "Action": "execute-api:Invoke",
          "Resource": "arn:aws:execute-api:你的区域:你的账号ID:你的API ID/你的阶段/GET/getOrders/*",
          "Condition": {
            "ApiKeyExists": "true"
          }
        }
      ]
    }
    
  2. 调整Step Function任务配置:
    保持原任务的AuthType: "IAM_ROLE"配置,同时移除Headers中的x-api-key字段,因为资源策略已允许执行角色直接访问。

  3. 确保执行角色权限:
    给Step Function的执行角色添加execute-api:Invoke权限,允许其调用目标API资源。


需求2:Step Function任务直接获取API Key的值

AWS不提供原生的Step Function内置任务直接获取API Key的明文值——因为API Key创建后,AWS不会存储其明文,仅能在创建时获取并自行保存。

如果不想用Lambda,可以通过Step Function的AWS SDK集成任务,从Secrets Manager或Systems Manager Parameter Store中读取预先存储的API Key:

  • 使用arn:aws:states:::aws-sdk:secretsmanager:getSecretValue任务读取Secrets Manager中的密钥
  • 使用arn:aws:states:::aws-sdk:ssm:getParameter任务读取Parameter Store中的参数

示例Step Function任务配置(读取Secrets Manager):

{
  "Type": "Task",
  "Resource": "arn:aws:states:::aws-sdk:secretsmanager:getSecretValue",
  "Parameters": {
    "SecretId": "你的API Key存储的Secret名称"
  },
  "ResultPath": "$.ApiKey",
  "Next": "调用API Gateway的任务"
}

需求3:为getOrders资源单独配置专属API Key

可以通过API Gateway的Usage Plan实现资源级别的API Key隔离,步骤如下:

  1. 创建新的API Key:
    在API Gateway控制台中创建第二个API Key,用于单独访问getOrders资源。

  2. 创建专属Usage Plan:
    创建一个新的Usage Plan,仅关联getOrders资源:

    • 在Usage Plan的"API Stages"配置中,选择你的API和阶段,然后添加GET /getOrders/{CustomerID}路径(精确匹配该资源)。
  3. 关联API Key与Usage Plan:
    将新创建的API Key关联到这个专属Usage Plan;原有的API Key继续关联到包含所有5个资源的旧Usage Plan。

  4. 验证资源权限:
    确保getOrders资源已启用"API Key Required"配置,此时:

    • 旧API Key可访问所有5个资源
    • 新API Key仅能访问getOrders资源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 10:53:19