无法使用scala akka-http将文件保存到s3

时间:2017-05-19 19:40:44

标签: scala amazon-web-services amazon-s3 akka akka-http

尝试将文件保存到s3。文件以Source[ByteString, Any]形式进入,因此必须将其转换为InputStream的{​​{1}}。然后计算PutObjectRequest内容长度和md5。这是我的代码,后面是错误消息。任何输入将不胜感激。感谢。

ObjectMetadata

堆栈跟踪错误消息:def uploadFile(source: Source[ByteString, _]) = { val stream: InputStream = source.runWith(StreamConverters.asInputStream(FiniteDuration(3, TimeUnit.SECONDS))) val metadata = new ObjectMetadata() metadata.setContentLength(IOUtils.toByteArray(stream).length) metadata.setContentMD5(Base64.encodeBase64(DigestUtils.md5(stream)).toString) s3.putObject(new PutObjectRequest("bucketName", "key", stream, metadata)) }

1 个答案:

答案 0 :(得分:4)

非阻止,更多reactive替代方案是使用Alpakka S3接收器。

它可以为您解决所有编码和S3协议问题,而且它将完全支持背压,以提高可扩展性。

此外,它以Sink[ByteString,_]的形式出现,因此在您的情况下不需要进一步的数据调整/转换。