繁体   English   中英

无法使用Scala Akka-http将文件保存到s3

[英]Unable to save file to s3 using scala akka-http

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

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))
}

堆栈跟踪错误消息: com.amazonaws.services.s3.model.AmazonS3Exception with message The Content-MD5 you specified was invalid.

一种非阻塞,更具反应性的替代方案是使用Alpakka S3水槽。

它可以为您解决所有编码和S3协议问题,并且将完全启用反压功能以增强可扩展性。

此外,它采用Sink[ByteString,_]的形式,因此在您的情况下不需要进一步的数据适配/转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM