Zak*_*ngh 3 amazon-s3 amazon-web-services aws-appsync
根据提供的教程,我的文件当前正在上传到s3存储桶。
我有一个Post类型,其文件字段指向S3Object。S3Object具有存储桶,键和区域的值。
我想允许我的用户下载他们上传的文件,但是我无法通过查询访问“帖子>文件”。这意味着我无法获得下载URL。
现在,DynamoDB在上传后将以下文件存储起来(我在这里更改了值):
{"s3":{"key":"id.pdf","bucket":"my-bucket","region":"my-region"}}
我的Post>文件解析器如下所示:
{
"version": "2017-02-28",
"operation": "GetItem",
"key": {
"id": $util.dynamodb.toDynamoDBJson($ctx.source.id),
}
}
响应模板:
$util.dynamodb.fromS3ObjectJson($ctx.result.file)
运行查询时,出现以下错误:
Error: GraphQL error: Unable to convert {bucket=my-bucket, region=my-region, key=id.pdf} to class java.lang.Object.
相信您需要给$util.dynamodb.fromS3ObjectJson($ctx.result.file)打电话$util.toJson()。您能否将响应映射模板更改为$util.toJson($util.dynamodb.fromS3ObjectJson($ctx.result.file))并查看是否可行?
作为附带说明,我认为您可以实现所需的效果,而无需从Post.file解析器中再次调用DynamoDB。创建一个“无”数据源并更改Post.file解析器以使用它。您可以提供准系统请求映射模板,例如
{
"version": "2017-02-28",
"payload": {}
}
然后可以更改您的响应映射模板以使用源而不是结果。
$util.toJson($util.dynamodb.fromS3ObjectJson($ctx.source.file))
由于在解析Post.file字段时将已经提取了该帖子,因此该信息将已在源中可用。如果需要从不同于Post对象的表中获取S3Link,则需要第二次DynamoDB调用。
希望这会有所帮助,并让我知道对$ util.toJson的调用是否可以解决此问题。
谢谢
| 归档时间: |
|
| 查看次数: |
988 次 |
| 最近记录: |