2

我正在尝试将 akka-http 文件上传到 Digital Ocean Spaces。我遇到了分段上传的问题。我使用 alpaakka 将文件直接流式传输到 s3。但是我在上传时收到 403 错误 SignatureDoesNotMatch。但是,如果我尝试使用简单的一部分上传相同的文件,则一切正常。

s3Client.putObject(collection, key, file, 1, s3Headers = S3Headers(Seq())) //works fine 

file.runWith(s3Client.multipartUpload(collection, key)) // gets 403 and throws No Etag exists in response 

分段上传成功发起请求并且签名有效,但是当它尝试实际上传部分时,我得到 403。

有人用 DO 试过吗?我更改了不同的设置,我如何设置客户端(使用代理,使用端点),但结果仍然相同。

//with Proxy
val proxy = Option(Proxy(url, port, "https"))
val settings = new S3Settings(MemoryBufferType, proxy, awsCredentialsProvider, regionProvider, true, None)//Some(s"https://$url")
val s3Client = new S3Client(settings)(system, materializer)

//without
val proxy = Option(Proxy(url, port, "https"))
val settings = new S3Settings(MemoryBufferType, None, awsCredentialsProvider, regionProvider, true, Some($url))
val s3Client = new S3Client(settings)(system, materializer)

谢谢您的帮助。

4

0 回答 0