AppSync S3Object retrieval



我的文件当前根据提供的教程将其上传到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解决了问题。

谢谢

最新更新