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

如何构造AppSync调用Lambda的事件并通过命令行模拟调用?

模拟AppSync GraphQL调用Lambda的命令行实现方案

1. 构造AppSync触发的Lambda事件负载

AppSync调用Lambda时会传递固定格式的事件负载,核心包含以下关键字段:

  • arguments: 对应GraphQL请求中的参数(比如查询/变更的输入值)
  • identity: 携带用户认证信息(如果开启了AppSync认证,比如Cognito、API Key等)
  • requestContext: 包含AppSync服务的上下文元数据,比如API ID、请求ID
  • info: 记录GraphQL操作的元信息,比如字段名、操作类型

以下是查询用户信息场景的完整事件负载示例:

{
  "arguments": {
    "userId": "user-12345"
  },
  "identity": {
    "sub": "cognito-sub-67890",
    "username": "alice",
    "sourceIp": ["192.168.1.1"],
    "claims": {
      "email": "alice@example.com"
    }
  },
  "requestContext": {
    "apiId": "your-appsync-api-id",
    "requestId": "appsync-request-abc123",
    "operationName": "GetUser"
  },
  "info": {
    "fieldName": "getUser",
    "operationType": "query"
  }
}

如果是创建用户的mutation场景,只需调整arguments和info字段:

{
  "arguments": {
    "input": {
      "username": "bob",
      "email": "bob@example.com"
    }
  },
  "info": {
    "fieldName": "createUser",
    "operationType": "mutation"
  },
  "identity": {
    "sub": "cognito-sub-67890",
    "username": "alice"
  },
  "requestContext": {
    "apiId": "your-appsync-api-id",
    "requestId": "appsync-request-abc123"
  }
}

2. 用AWS CLI发送事件到Lambda

方式一:直接在命令行传递负载

使用aws lambda invoke命令,转义JSON后作为--payload参数传入:

aws lambda invoke \
  --function-name your-lambda-function-name \
  --payload '{\"arguments\":{\"userId\":\"user-12345\"},\"identity\":{\"sub\":\"cognito-sub-67890\",\"username\":\"alice\"},\"requestContext\":{\"apiId\":\"your-appsync-api-id\",\"requestId\":\"appsync-request-abc123\"},\"info\":{\"fieldName\":\"getUser\",\"operationType\":\"query\"}}' \
  response.json

注意:Linux/macOS下用\转义双引号;Windows PowerShell下用"代替\进行转义。

方式二:通过本地JSON文件传递负载

  1. 将构造好的事件负载保存为本地文件(比如appsync-event.json)
  2. 执行以下命令发送请求:
aws lambda invoke \
  --function-name your-lambda-function-name \
  --payload file://appsync-event.json \
  response.json

直接在控制台查看结果

如果不想保存到文件,添加--cli-binary-format raw-in-base64-out参数将结果直接输出:

aws lambda invoke \
  --function-name your-lambda-function-name \
  --payload file://appsync-event.json \
  --cli-binary-format raw-in-base64-out \
  -

3. 注意事项

  • 确保AWS CLI已配置足够权限调用目标Lambda函数
  • 替换示例中的your-lambda-function-name、your-appsync-api-id等占位符为实际值
  • 如果Lambda依赖特定认证信息,需在identity字段填入对应的值(比如Cognito的sub、claims)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:55:30