使用Lambda数据源的AppSync中的S3Object GraphQL类型?

时间:2018-04-09 13:30:33

标签: mongodb amazon-s3 aws-lambda graphql aws-appsync

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 个答案:

答案 0 :(得分:1)

我还没有尝试过这个,但你应该能够做你想要完成的事情并使用Lambda数据源来读取/写入像Mongo甚至RDS这样的东西。 AppSync需要S3ObjectS3ObjectInput的GraphQL类型以及上面列出的bucket等字段,以便客户端SDK和codegen正确构建对象,但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