从 Lambda 调用 AWS AppSync graphql API

Posted

技术标签:

【中文标题】从 Lambda 调用 AWS AppSync graphql API【英文标题】:Calling AWS AppSync graphql API from Lambda 【发布时间】:2020-09-10 23:56:36 【问题描述】:

我正在尝试使用 AWS-app sync graphql API 更新表的值, 我能够使用 lambda 中的 graphql 突变创建数据并将其添加到表中 但是当我尝试更新数据时它不起作用。 我从 API 网关调用这个 lambda 服务。

我指的是这篇文章的代码 https://cloudonaut.io/calling-appsync-graphql-from-lambda/

我想在云监视日志中提到 git no error

这是我的 graphql 的架构

type Mutation 
createLib_content(input: CreateLib_contentInput!): lib_content
    @aws_iam
updateLib_content(input: UpdateLib_contentInput!): lib_content
    @aws_iam
deleteLib_content(input: DeleteLib_contentInput!): lib_content


input CreateLib_contentInput 
content: String
userId: String


input UpdateLib_contentInput 
content: String
id: ID!

创建突变

      graphqlData = await clientDetails.mutate(
    mutation: gql(`
   mutation CreateLibContent($input: CreateLib_contentInput!) 
              createLib_content(input: $input) 
                                      id
                                      content
                                               
    `),
    variables: 
      input: 
          content : ,
          userId : identitiesDetails.userId
      
    ,
  );

更新突变

const mutation = gql(`
   mutation UpdateLibContent($input: UpdateLib_contentInput!) 
updateLib_content(input: $input) 
  userId
  content

 `);
  await clientDetails.mutate(
       mutation,
       variables: 
             input: 
                     id : "2947c37e-6f76-40d8-8c10-4cd6190d3597",
                     content : JSON.stringify(event)
                    
                  
  ).promise;

【问题讨论】:

你能澄清你的意思是“它不工作”吗?您是否收到任何错误、超时、拒绝访问……? 我没有收到任何错误或任何消息,我可以从中找出为什么它没有更新表内的值, 你检查过 cloudwatch 日志,看看你的 lambda 是否抛出任何错误? @Marcin 这只是我的猜测可能是因为 graphql 中的 id 是 ID 类型,我正在传递字符串以进行值更新,我是 graphql 和 aws 的新手,所以不知道 我猜你的客户端代码没有执行。由于您在 lambda 代码中使用 await,请参阅异步处理程序部分 - docs.aws.amazon.com/lambda/latest/dg/nodejs-handler.html 【参考方案1】:

感谢@cppgnlearner,您的猜测是正确的。

我刚刚从更新代码中删除了 .promise 它开始工作了。

不敢相信这么小的事情就花了我一整天的时间。

【讨论】:

以上是关于从 Lambda 调用 AWS AppSync graphql API的主要内容,如果未能解决你的问题,请参考以下文章

从 lambda 调用 AWS AppSync GraphQL API 变异查询

让 DynamoDB Stream Lambda 函数调用 AWS AppSync 突变

如何使用 IAM 在 AWS Lambda 中调用 AppSync?

如何将签名的 HTTP 请求从 AWS Lambda 发送到 AppSync GraphQL?

使用 AWS Lambda (NodeJS) 创建 AWS AppSync

AWS Lambda 函数无法访问 AppSync GraphQL API - 权限被拒绝