3

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
}
4

1 回答 1

1

我还没有尝试过,但是您应该能够做您想要完成的事情并使用 Lambda 数据源来读取/写入其他东西,例如 Mongo 甚至 RDS。AppSync 需要 GraphQL 类型S3Object以及上面列出S3ObjectInput的字段等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

于 2018-04-09T19:47:56.220 回答