Skip to content
返回云服务

AWS AppSync GraphQL

托管 GraphQL API,实时订阅、多数据源和细粒度认证。

AWS高级

为什么

AppSync 无服务器跑 GraphQL — WebSocket 实时、解析器到 DynamoDB/Lambda/HTTP、Cognito/IAM/API 密钥认证。$4/百万查询 + $0.08/百万实时。

何时使用

需实时的 GraphQL API、移动/Web 离线同步和多数据源时用。避免简单 REST(用 API Gateway)。

如何做

1. 创建 API — schema、数据源、解析器 2. Schema — GraphQL 类型,@model 做 DynamoDB,@auth 做权限 3. 解析器 — VTL 模板或 JS,映射 GraphQL → 数据源 4. 数据源 — DynamoDB、Lambda、HTTP、RDS、OpenSearch 5. 认证 — API 密钥、Cognito、IAM、OIDC、Lambda 授权器 6. 实时 — 订阅自动经 WebSocket 7. 缓存 — 每解析器、TTL、减少数据源调用 8. Amplify — 从 @model 指令生成 schema + 解析器

示例

# 带认证 + model 的 schema type Todo @model @auth(rules: [ { allow: owner, operations: [create, update, delete] } { allow: groups, groups: ["admin"] } ]) { id: ID! title: String! owner: String } # 解析器(VTL)— DynamoDB GetItem { "version": "2017-02-28", "operation": "GetItem", "key": { "id": { "S": "${ctx.args.id}" } } } // 客户端订阅 — 实时更新 const sub = client.graphql.subscribe({ query: /* GraphQL */ `subscription OnCreateTodo { onCreateTodo { id title } }`, }).subscribe({ next: (msg) => console.log("新 todo:", msg.data.onCreateTodo), });

常见问题

  • ⚠VTL 错误难调试 — 用 JS 解析器(1.0)获更好错误信息
  • ⚠N+1 查询 — 用批解析器或 DataLoader 模式
  • ⚠schema 验证严格 — 某些地方无注释,部署前验证

最佳实践

  • ✓用 Amplify @model — 自动生成 CRUD + 订阅、更少手动解析器代码
  • ✓读多启用缓存 — 每解析器 TTL、DynamoDB 读减 90%
  • ✓VTL 优先用 JS 解析器 — 更好 DX、调试、TypeScript 支持

常见问题解答

什么是AWS AppSync GraphQL?它解决什么问题?

托管 GraphQL API,实时订阅、多数据源和细粒度认证。 它可帮助开发者在不自建基础设施的前提下完成部署、存储与扩展,是云服务选型的核心参考。

如何在 5 分钟内上手AWS AppSync GraphQL?

两步即可跑通:① 创建 API — schema、数据源、解析器;② Schema — GraphQL 类型,@model 做 DynamoDB,@auth 做权限。建议先用免费套餐验证流程,再接入生产环境。

AWS AppSync GraphQL 最容易踩的坑是什么?

最高频的问题是:VTL 错误难调试 — 用 JS 解析器(1.0)获更好错误信息。建议在上线前用 checklist 逐项核对,并在 CI 中加入策略与配置扫描。

AWS AppSync GraphQL 的最佳实践有哪些?

AWS AppSync GraphQL 的最佳实践包括:用 Amplify @model — 自动生成 CRUD + 订阅、更少手动解析器代码;读多启用缓存 — 每解析器 TTL、DynamoDB 读减 90%;VTL 优先用 JS 解析器 — 更好 DX、调试、TypeScript 支持。其中首条「用 Amplify @model — 自动生成 CRUD + 订阅、更少手动解析器代码」应作为团队默认规范写入 IaC 模板。

AWS AppSync GraphQL 如何控制成本与避免账单意外?

三招防超支:① 为所有资源打 env/team 标签并启用账单告警;② 用预算阈值触发 Slack/邮件通知;③ 定期用 Cost Explorer 审查闲置资源并清理。AWS AppSync GraphQL 多数提供免费套餐,先在免费额度内验证再放量。