当数据源为Lambda函数时,使用AppSync将图像上传到AWS S3

时间:2018-08-13 15:03:39

标签: amazon-s3 file-upload aws-lambda aws-appsync

当我使用配置为Lambda作为数据源的AppSync将聊天消息发送到Aurora数据库时,我试图将图像上传到S3存储桶中。

我对该突变的解析器是:

{
    "version": "2017-02-28",
    "operation": "Invoke",
    "payload": {
        "field": "createMessage",
        "arguments":  $utils.toJson($context.arguments)
    }
}

消息已正确保存在数据库中,但是S3图像数据文件未保存在我的S3存储桶中。我相信我已经正确配置了所有内容,除了不确定的解析器。

1 个答案:

答案 0 :(得分:1)

当数据源为lambda时,使用AppSync上载文件与其他所有数据源基本相同,并且不依赖于解析器。

只需确保已设置复杂对象的凭据(使用Amplify库进行授权的JS示例):

import { Auth } from 'aws-amplify'
const client = new AWSAppSyncClient({
    url: /*your endpoint*/,
    region: /*your region*/,
    complexObjectsCredentials: () => Auth.currentCredentials(),
})

此外,您还需要提供S3复杂对象作为您的突变的输入类型:

input S3ObjectInput {
    bucket: String!
    key: String!
    region: String!
    localUri: String
    mimeType: String
}

即使使用lambda数据源,其他所有内容也可以正常工作。在这里,您可以找到与您的问题相关的更多信息(在该示例中,使用了dynamoDB,但对于lambda基本上相同:https://stackoverflow.com/a/50218870/9359164