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

如何获取AWS Amplify React应用IP以配置API Gateway访问白名单

解决AWS Amplify前端访问API Gateway的白名单配置问题

方案1:使用Amplify签名请求(推荐)

Amplify前端可以通过内置的API模块发送带IAM签名的请求,结合API Gateway的IAM授权实现精准访问控制,无需依赖IP白名单:

  • 步骤1:在Amplify控制台进入你的应用,打开Backend environments -> API,将API Gateway的授权类型设置为IAM。
  • 步骤2:为Amplify的前端IAM角色(通常命名为amplify-<应用名>-<环境>-authRole或unauthRole)添加API Gateway调用权限,示例策略:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "execute-api:Invoke",
          "Resource": "arn:aws:execute-api:<区域>:<账号ID>:<API ID>/*/*/*"
        }
      ]
    }
    
  • 步骤3:前端代码使用Amplify API模块发起请求,自动携带签名:
    import { API } from 'aws-amplify';
    const fetchData = async () => {
      const response = await API.get('你的API名称', '/接口路径');
      console.log(response);
    };
    
  • 步骤4:在API Gateway的资源策略中配置规则,拒绝未授权请求:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Deny",
          "Principal": "*",
          "Action": "execute-api:Invoke",
          "Resource": "arn:aws:execute-api:<区域>:<账号ID>:<API ID>/*/*/*",
          "Condition": {
            "StringNotEquals": {
              "aws:PrincipalArn": "arn:aws:iam::<账号ID>:role/amplify-<应用名>-<环境>-authRole"
            }
          }
        }
      ]
    }
    

方案2:自定义请求头验证

通过给Amplify前端请求添加专属自定义头,在API Gateway或Lambda层验证头信息实现访问控制:

  • 步骤1:前端配置Amplify API拦截器,添加自定义密钥头:
    import { Amplify, API } from 'aws-amplify';
    Amplify.configure({
      API: {
        endpoints: [
          {
            name: '你的API名称',
            endpoint: 'https://<API ID>.execute-api.<区域>.amazonaws.com/<环境>',
            custom_header: async () => {
              return { 'X-Amplify-Secret': '你的专属密钥' };
            }
          }
        ]
      }
    });
    
  • 步骤2:二选一配置验证逻辑:
    • 方式A:在API Gateway创建请求验证器,检查X-Amplify-Secret头是否匹配预设密钥;
    • 方式B:在Lambda函数开头添加验证逻辑:
      exports.handler = async (event) => {
        const secretHeader = event.headers['X-Amplify-Secret'];
        if (secretHeader !== '你的专属密钥') {
          return {
            statusCode: 403,
            body: JSON.stringify('Forbidden')
          };
        }
        // 后续业务逻辑
      };
      

方案3:基于Amplify出站IP范围配置(不推荐,需维护)

AWS会公开Amplify的出站IP范围,可定期获取并更新API Gateway白名单,但IP会动态调整,需持续维护:

  • 步骤1:下载AWS官方发布的IP地址范围文件,筛选出service: "AMPLIFY"对应的IP段;
  • 步骤2:在API Gateway资源策略中添加IP允许规则:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": "*",
          "Action": "execute-api:Invoke",
          "Resource": "arn:aws:execute-api:<区域>:<账号ID>:<API ID>/*/*/*",
          "Condition": {
            "IpAddress": {
              "aws:SourceIp": [
                "1.2.3.4/24",
                "5.6.7.8/24"
                // 填入筛选出的Amplify IP段
              ]
            }
          }
        },
        {
          "Effect": "Deny",
          "Principal": "*",
          "Action": "execute-api:Invoke",
          "Resource": "arn:aws:execute-api:<区域>:<账号ID>:<API ID>/*/*/*"
        }
      ]
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:20:42