我的文件当前根据提供的教程将其上传到S3存储桶。
我有一个邮政类型,其中一个文件字段指向s3object。S3Object具有铲斗,钥匙和区域的值。
我想允许我的用户下载其上传的文件,但是我无法通过查询访问帖子>文件。这意味着我无法获取下载URL。
现在,DynamoDB在上传时存储以下文件(我在此处更改了值(: {"s3":{"key":"id.pdf","bucket":"my-bucket","region":"my-region"}}
我用于邮政的解析器>文件看起来像这样: {
"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))
由于帖子已解决时,该帖子将已经被获取。File字段正在解决,因此信息将在源中可用。如果您需要从与帖子对象不同的表中获取S3Link,则需要第二个DynamoDB调用。
希望这会有所帮助,让我知道是否呼叫$ UTIT.TOJSON解决了问题。
谢谢