Open apple-corps opened 6 years ago
However it does look like the object is put to the storage directory...
import software.amazon.awssdk.core.sync.{RequestBody, ResponseInputStream, StreamingResponseHandler}
import software.amazon.awssdk.services.s3.{S3Client, model}
import software.amazon.awssdk.services.s3.model._
def putObject(client: S3Client,bucketName: String, key: String, requestBody: RequestBody, contentLength: Long): PutObjectResponse = {
client.putObject(getPutObjectRequest(bucketName,key, contentLength),
requestBody)
}
def getPutObjectRequest(bucketName: String, key: String, contentLength: Long, contentType: String = "binary/octet-stream", contentEncoding : String = "gzip") = {
PutObjectRequest.builder().bucket(bucketName).key(key).contentLength(contentLength).contentType(contentType).contentEncoding(contentEncoding).metadata(Map[String,String](("key","value")).asJava).build()
}
I am also using V2 software.amazon.awssdk.services.s3.S3Client and facing a similar issue. However it works with V1 version of amazon Client.
[ERROR] [04/11/2019 22:38:31.607] [s3mock-akka.actor.default-dispatcher-6] [akka.actor.ActorSystemImpl(s3mock)] Error during processing of request: 'Entity stream truncation'. Completing with 500 Internal Server Error response. To change default exception handling behavior, provide a custom ExceptionHandler. akka.http.scaladsl.model.EntityStreamException: Entity stream truncation at akka.http.impl.engine.parsing.HttpMessageParser$$anonfun$1.applyOrElse(HttpMessageParser.scala:321) at akka.http.impl.engine.parsing.HttpMessageParser$$anonfun$1.applyOrElse(HttpMessageParser.scala:319) at akka.stream.impl.fusing.Collect$$anon$2.$anonfun$wrappedPf$1(Ops.scala:218) at akka.stream.impl.fusing.SupervisedGraphStageLogic.withSupervision(Ops.scala:179) at akka.stream.impl.fusing.Collect$$anon$2.onPush(Ops.scala:220) at akka.stream.impl.fusing.GraphInterpreter.processPush(GraphInterpreter.scala:519) at akka.stream.impl.fusing.GraphInterpreter.execute(GraphInterpreter.scala:411) at akka.stream.impl.fusing.GraphInterpreterShell.runBatch(ActorGraphInterpreter.scala:585) at akka.stream.impl.fusing.GraphInterpreterShell$AsyncInput.execute(ActorGraphInterpreter.scala:469) at akka.stream.impl.fusing.GraphInterpreterShell.processEvent(ActorGraphInterpreter.scala:560) at akka.stream.impl.fusing.ActorGraphInterpreter.akka$stream$impl$fusing$ActorGraphInterpreter$$processEvent(ActorGraphInterpreter.scala:742) at akka.stream.impl.fusing.ActorGraphInterpreter$$anonfun$receive$1.applyOrElse(ActorGraphInterpreter.scala:757) at akka.actor.Actor.aroundReceive(Actor.scala:517) at akka.actor.Actor.aroundReceive$(Actor.scala:515) at akka.stream.impl.fusing.ActorGraphInterpreter.aroundReceive(ActorGraphInterpreter.scala:667) at akka.actor.ActorCell.receiveMessage(ActorCell.scala:590) at akka.actor.ActorCell.invoke(ActorCell.scala:559) at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257) at akka.dispatch.Mailbox.run(Mailbox.scala:224) at akka.dispatch.Mailbox.exec(Mailbox.scala:234) at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
I also receive this 500 error, but when just trying to get an non existant object (Expect NoSuchKeyException). Interesting though: If I debug in the code step by step through it, everything works fine and as expected. I tried this out with Java 11 and also with Java 8.
I faced the same issue when I use S3Mock in 2 different test suites. The solution I found is to use two different buckets.
I am not facing this issue when I am using S3AsyncClient (software.amazon.awssdk.services.s3.S3AsyncClient)
using
V2
software.amazon.awssdk.services.s3.S3Client