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

Posted

技术标签:

【中文标题】从 lambda 调用 AWS AppSync GraphQL API 变异查询【英文标题】:Calling AWS AppSync GraphQL API mutation query from lambda 【发布时间】:2021-09-13 09:50:46 【问题描述】:

我正在使用 AWS Web 控制台。我正在尝试创建 lambda 函数来运行我的 AppSync GraphQL API 变异查询。我在网上看到了很多答案,但他们都试图先在本地机器上创建 lambda,然后将其推送到 AWS 云。我无法遵循这种方法。我直接在 AWS Web 控制台上工作。

基本上,我在 appsync graphql API 后面有一个 dynamodb 数据库表。我想使用 lambda 函数更新 dynamoDB 中的条目。要更新此条目(在 DynamoDB 中),我需要在 appsync graphql API 上运行突变查询。我想使用 lambda 函数来实现这一点。我想从 lambda 调用(appsync 的)变异查询。

请参阅下面的 lambda 的 node.js 代码:

const appsync = require('aws-appsync');
const gql = require('graphql-tag');
require('cross-fetch/polyfill');

const graphqlClient = new appsync.AWSAppSyncClient(
  url: 'APPSYNC_ENDPOINT_URL',
  region: process.env.AWS_REGION,
  auth: 
    type: 'AWS_IAM',
    credentials: 
      accessKeyId: process.env.AWS_ACCESS_KEY_ID,
      secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
      sessionToken: process.env.AWS_SESSION_TOKEN
    
  ,
  disableOffline: true
);

const mutation = gql`mutation Test($value: String!) 
  test(value: $value)
`;
await graphqlClient.mutate(
  mutation,
  variables: 
    value: 'test'
  
);

我收到错误:

"errorMessage": "Cannot find module 'aws-appsync'"

lambda 函数正在尝试使用aws-appsync,但找不到它。如何在 AWS lambda Web 控制台上“安装”这个包? 我没有使用本地开发机器。我正在 Web 控制台上直接编写 lambda 函数。

如何仅使用 Web 控制台在 lambda 中启用 aws-appsync 包?

【问题讨论】:

【参考方案1】:

我不认为你可以。您可以在本地环境中开发 lambda,添加 package.json 和依赖项 zip 函数和 node_modules,然后上传。

Deploy Node.js Lambda functions with .zip file archives

【讨论】:

以上是关于从 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 - 权限被拒绝