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

如何在AWS AppSync中创建自定义硬编码健康检查GraphQL查询

在AWS AppSync中实现Health-Check查询

核心结论

是的,你必须在GraphQL Schema中定义对应的healthCheck查询——GraphQL是强类型查询语言,AppSync所有可执行的操作都必须在Schema里明确声明,否则无法被客户端调用,也无法绑定解析器。

1. 定义GraphQL Schema中的Health-Check结构

首先要定义查询的返回类型和查询字段,根据你需要的信息调整字段:

# 定义健康检查的返回类型
type HealthCheckResult {
  version: String!       # 从pyproject.toml读取的API版本号
  branch: String!        # 代码分支信息
  status: String!        # 服务健康状态
  timestamp: String!     # 响应时间戳
}

# 在根Query类型中添加healthCheck查询入口
type Query {
  healthCheck: HealthCheckResult!
}

如果需要监控其他服务状态(比如数据库连通性),可以在HealthCheckResult中新增对应字段(如databaseStatus: String)。

2. 用Pulumi Python实现解析器

健康检查不需要调用外部数据源,直接用无数据源解析器即可,通过响应模板返回预注入的信息:

步骤1:读取pyproject.toml的版本信息

先安装依赖库(Python 3.11+可直接用标准库tomllib):

pip install tomli

步骤2:Pulumi代码实现

import pulumi
import pulumi_aws as aws
import tomli
from datetime import datetime

# 读取pyproject.toml中的版本信息(以Poetry管理为例,根据实际配置调整)
with open("pyproject.toml", "rb") as f:
    pyproject_data = tomli.load(f)
api_version = pyproject_data["tool"]["poetry"]["version"]

# 从Pulumi配置或环境变量获取分支信息(建议CI/CD注入)
branch_name = pulumi.Config().get("branch") or "local-dev"

# 创建AppSync API
appsync_api = aws.appsync.GraphqlApi(
    "health-check-api",
    authentication_type="API_KEY",
    schema=pulumi.FileAsset("schema.graphql")  # 加载上面定义的Schema文件
)

# 绑定healthCheck查询的无数据源解析器
health_check_resolver = aws.appsync.Resolver(
    "health-check-resolver",
    api_id=appsync_api.id,
    type_name="Query",
    field_name="healthCheck",
    data_source_name="NONE",  # 无数据源标识
    # 响应模板:直接返回预注入的静态数据
    response_template=f"""
    {{
      "version": "{api_version}",
      "branch": "{branch_name}",
      "status": "healthy",
      "timestamp": "{datetime.utcnow().isoformat()}Z"
    }}
    """
)

# 输出测试用的API端点和密钥
pulumi.export("appsync_api_endpoint", appsync_api.uris["GRAPHQL"])
pulumi.export("appsync_api_key", appsync_api.api_key)

3. 测试Health-Check查询

部署完成后,在AppSync控制台的查询编辑器发送请求:

query GetHealthCheck {
  healthCheck {
    version
    branch
    status
    timestamp
  }
}

会返回类似结果:

{
  "data": {
    "healthCheck": {
      "version": "1.0.0",
      "branch": "main",
      "status": "healthy",
      "timestamp": "2024-05-20T12:34:56.789Z"
    }
  }
}

扩展说明

如果需要动态检查其他服务状态(比如数据库连通性),可以将解析器绑定到Lambda数据源,在Lambda中执行健康检查逻辑后返回结果;分支信息建议通过CI/CD流水线注入到Pulumi配置中,避免硬编码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:45:59