AppSync 中的 S3Object GraphQL 类型与 Lambda 数据源?
Posted
技术标签:
【中文标题】AppSync 中的 S3Object GraphQL 类型与 Lambda 数据源?【英文标题】:S3Object GraphQL type in AppSync with Lambda datasource? 【发布时间】:2018-09-18 22:15:40 【问题描述】:AppSync 中可用的 S3Object GraphQL 类型(请参阅https://docs.aws.amazon.com/appsync/latest/devguide/building-a-client-app-ios.html 中的复杂对象部分)是否与 dynamoDB 相关联,还是可以与 Lambda 数据源一起使用(例如连接到 mongoDB)?
来自上面链接的 AWS 文档...
type Post
id: ID!
author: String!
title: String
content: String
url: String
ups: Int
downs: Int
file: S3Object
version: Int!
type S3Object
bucket: String!
key: String!
region: String!
input S3ObjectInput
bucket: String!
key: String!
region: String!
localUri: String
mimeType: String
【问题讨论】:
【参考方案1】:我还没有尝试过,但是您应该能够做您想要完成的事情并使用 Lambda 数据源来读取/写入其他东西,例如 Mongo 甚至 RDS。 AppSync 需要 S3Object
和 S3ObjectInput
的 GraphQL 类型以及上面列出的 bucket
等字段,以便客户端 SDK 和代码生成正确构建对象,但是 S3Link 功能是在解析器本身中完成的读写。您可以将其移至 Lambda 中的逻辑层。
如果您查看https://docs.aws.amazon.com/appsync/latest/devguide/resolver-context-reference.html#dynamodb-helpers-in-util-dynamodb,您将看到映射函数签名和输出:
$util.dynamodb.toS3Object(String key, String bucket, String region) : Map
$util.dynamodb.toS3ObjectJson(String key, String bucket, String region) : String
$util.dynamodb.toS3Object(String key, String bucket, String region, String version) : Map
$util.dynamodb.toS3ObjectJson(String key, String bucket, String region, String version) : String
$util.dynamodb.fromS3ObjectJson(String) : Map
因此,如果您想将此逻辑写入/读取到完全可能的 Lambda 中。如果您支持此示例,您将能够对其进行逆向工程:https://github.com/aws-samples/aws-amplify-graphql
【讨论】:
以上是关于AppSync 中的 S3Object GraphQL 类型与 Lambda 数据源?的主要内容,如果未能解决你的问题,请参考以下文章
模式中不存在的 Gatsby `S3Object`。在添加解析器之前使用`createTypes`添加类型