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

AWS Step Functions调用私有API Gateway遇域名解析错误的配置咨询

问题分析与解决方案

错误原因

ApiGateway.UnknownHostException 本质是DNS解析失败:私有API Gateway的execute-api域名仅能在其所在VPC的内部DNS服务器上被解析,而Step Functions默认运行在AWS公网环境中,无法访问VPC内部DNS,因此无法解析私有API的域名。

核心解决方案:让Step Functions接入目标VPC

不需要额外创建VPC Private Link,只需通过以下配置让Step Functions在目标VPC内运行,即可解析私有API域名并完成调用:

1. 为Step Functions状态机配置VPC访问

编辑你的Step Functions状态机,在VPC设置中指定:

  • 私有API所在的VPC ID
  • 与私有API所在子网连通的子网(建议选择私有子网)
  • 一个专用的安全组(或复用现有安全组)

2. 补充Step Functions执行角色的权限

执行角色需要具备创建/管理ENI(弹性网络接口)的权限,添加以下内联策略到角色中:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CreateNetworkInterface",
        "ec2:DescribeNetworkInterfaces",
        "ec2:DeleteNetworkInterface"
      ],
      "Resource": "*"
    }
  ]
}

3. 调整安全组规则

  • Step Functions安全组:添加出站规则,允许TCP 443访问私有API所在的VPC CIDR范围,或私有API关联的安全组。
  • 私有API后端Lambda的安全组:添加入站规则,允许来自Step Functions安全组的TCP 443访问(如果Lambda部署在VPC内)。

4. (可选)增强API Gateway资源策略

为私有API添加资源策略,仅允许来自目标VPC的Step Functions调用,提升安全性:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "states.amazonaws.com"
      },
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:us-west-2:你的AWS账户ID:你的API ID/*/*/*",
      "Condition": {
        "StringEquals": {
          "aws:SourceVpc": "你的VPC ID"
        }
      }
    }
  ]
}

验证

配置完成后重新执行Step Functions状态机,此时状态机通过VPC内的ENI访问私有API,可正常解析域名并完成调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 03:53:16