从 lambda 函数触发 Appsync 突变

Posted

技术标签:

【中文标题】从 lambda 函数触发 Appsync 突变【英文标题】:Trigger Appsync mutation from lambda function 【发布时间】:2020-08-24 00:43:52 【问题描述】:

当我从 DynamoDB添加/修改/删除项时尝试通过 lambda 触发突变时,我不断收到此错误消息:

"message" : "无效请求,query 不能为空。",

所以我想做的是,每当直接在 dynamodb 上进行修改时,订阅用户都会收到更改通知。

我已经使用无类型数据源创建了新的突变。我直接在查询控制台上测试了一下,效果很好。

我还创建了基于 Python 的 lambda 函数,它能够检索 dynamodb 流,并已使用 cloudwatch 对其进行了测试。

现在的问题是,当我尝试从 lambda 发出 HTTP 发布请求时,我得到:

错误:MalformedHttpRequestException

消息:无效请求,query 不能为空。


突变名称:addTodo

我通过帖子发送的数据:

'operationName': 'addTodo',
   'variables':'id': '400',
                'name': 'some name', 
                'description': 'some description',
                'query': 'mutation addTodo($id: ID,
                                           $name: String,
                                           $description: String)
                 addTodo(id: $id,
                          name: $name,
                          description: $description)
                  id name description'
                

【问题讨论】:

【参考方案1】:

您的有效载荷中有query 内部variables,但预计会像这样传递到外部:


    'operationName': 'addTodo',
    'variables': 
        'id': '400',
        'name': 'some name',
        'description': 'some description'
    ,
    'query': 'mutation addTodo(...'

【讨论】:

以上是关于从 lambda 函数触发 Appsync 突变的主要内容,如果未能解决你的问题,请参考以下文章

我可以触发 Lambda 函数或 SNS 事件来响应 AppSync GraphQL 突变吗?

AWS Appsync 从 Lambda 调用变异?

当 AWS AppSync 使用 Cognito 时如何验证 Lambda 生成的突变

通过 AppSync 上的自定义 Lambda 授权方对突变进行身份验证

从 Lambda 调用 AWS AppSync graphql API

Amplify 和 AppSync 不更新来自多个来源的突变数据