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

如何使用AWS Amplify调用EC2实例上部署的非AppSync GraphQL API

核心实现逻辑

AWS Amplify的GraphQL客户端本身是通用客户端,并非只能绑定AppSync服务,你可以直接自定义EC2上的GraphQL端点完成配置,后续迁移到AppSync时仅需修改配置项,无需调整业务调用代码,完全匹配你的需求。

步骤1:手动配置Amplify客户端

无需执行amplify add api生成默认的AppSync配置,直接在项目初始化时手动传入自定义端点配置即可,以下是前端JS项目的配置示例:

import { Amplify } from 'aws-amplify';
import { generateClient } from 'aws-amplify/api';

Amplify.configure({
  API: {
    GraphQL: {
      endpoint: 'https://你的EC2域名或者公网IP/graphql', // 替换为你部署在EC2上的Spring Boot GraphQL接口地址
      region: 'EC2实例所在的AWS区域', // 例如us-east-1,后续迁移AppSync时只需修改该字段和endpoint即可
      defaultAuthMode: 'apiKey' // 和你Spring Boot项目的鉴权逻辑匹配即可,支持apiKey、iam、jwt、自定义鉴权等多种模式
    }
  }
});

const client = generateClient();

如果你的Spring Boot GraphQL用了JWT等自定义鉴权,只需在配置中添加对应的token获取逻辑即可,无需调整客户端调用规则。

步骤2:编写业务调用代码

以下调用代码后续迁移到AppSync时完全不需要修改,直接复用即可:

// 定义GraphQL查询语句
const getOrderList = `
  query GetOrderList($userId: ID!) {
    getOrderList(userId: $userId) {
      id
      orderNo
      amount
      createTime
    }
  }
`;

// 发起请求
const fetchOrders = async (userId) => {
  try {
    const res = await client.graphql({
      query: getOrderList,
      variables: { userId }
    });
    console.log('订单列表:', res.data.getOrderList);
  } catch (err) {
    console.error('请求失败:', err);
  }
};
步骤3:Spring Boot侧适配调整

需要在你的Spring Boot项目中配置CORS规则,允许前端域名跨域访问GraphQL接口,避免浏览器跨域拦截:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class GraphqlCorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/graphql")
                .allowedOrigins("你的前端部署域名") // 本地开发可填http://localhost:3000
                .allowedMethods("GET", "POST", "OPTIONS")
                .allowedHeaders("*")
                .allowCredentials(true);
    }
}

提示:生产环境建议给EC2的GraphQL端点配置SSL证书,使用HTTPS协议访问,避免明文传输安全风险。

后续迁移AppSync的改动范围

当你把Spring Boot GraphQL迁移到AppSync后,仅需要修改Amplify.configure配置中的endpoint、region和对应的鉴权参数即可,所有调用client.graphql的业务代码不需要做任何调整,完全满足你最小化代码改动的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:09:03