Skip to content

Commit

Permalink
Only pass SSE headers for multipart upload requests
Browse files Browse the repository at this point in the history
  • Loading branch information
mdedetrich authored and He-Pin committed Apr 19, 2023
1 parent 69578d0 commit b9264dc
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1014,7 +1014,7 @@ import scala.util.{ Failure, Success, Try }
import mat.executionContext
implicit val conf: S3Settings = resolveSettings(attr, mat.system)

val headers = s3Headers.headersFor(UploadPart)
val headers = s3Headers.serverSideEncryption.map(_.headersFor(UploadPart)).getOrElse(Nil)

Source
.future(
Expand Down Expand Up @@ -1098,7 +1098,7 @@ import scala.util.{ Failure, Success, Try }

val chunkBufferSize = chunkSize * 2

val headers = s3Headers.headersFor(UploadPart)
val headers = s3Headers.serverSideEncryption.map(_.headersFor(UploadPart)).getOrElse(Nil)

Flow
.fromMaterializer { (mat, attr) =>
Expand Down Expand Up @@ -1189,7 +1189,7 @@ import scala.util.{ Failure, Success, Try }

val chunkBufferSize = chunkSize * 2

val headers = s3Headers.headersFor(UploadPart)
val headers = s3Headers.serverSideEncryption.map(_.headersFor(UploadPart)).getOrElse(Nil)

Flow
.fromMaterializer { (mat, attr) =>
Expand Down
9 changes: 7 additions & 2 deletions s3/src/test/scala/docs/scaladsl/S3SinkSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,8 @@ class S3SinkSpec extends S3WireMockBase with S3ClientIntegrationSpec with Option
val sseCSourceAlgorithmHeader = "x-amz-copy-source-server-side-encryption-customer-algorithm"
val sseCSourceAlgorithmHeaderValue = "AES256"
val sseCSourceKeyHeader = "x-amz-copy-source-server-side-encryption-customer-key"
val sseCKeyHeaderMd5 = "x-amz-server-side-encryption-customer-key-MD5"
val sseCKeyHeaderMd5Value = "md5"
val sseCSourceKeyHeaderValue = sseCustomerKey

val result =
Expand Down Expand Up @@ -286,10 +288,13 @@ class S3SinkSpec extends S3WireMockBase with S3ClientIntegrationSpec with Option
.withHeader(sseCSourceKeyHeader, new EqualToPattern(sseCSourceKeyHeaderValue))
.withHeader(requestPayerHeader, new EqualToPattern(requestPayerHeaderValue)))

// No SSE-C headers required for CompleteMultipartUpload
// SSE headers only
mock.verifyThat(
postRequestedFor(urlEqualTo(s"/$targetBucketKey?uploadId=$uploadId"))
.withHeader(requestPayerHeader, new EqualToPattern(requestPayerHeaderValue)))
.withHeader(sseCAlgorithmHeader, new EqualToPattern(sseCAlgorithmHeaderValue))
.withHeader(sseCKeyHeader, new EqualToPattern(sseCKeyHeaderValue))
.withHeader(sseCKeyHeaderMd5, new EqualToPattern(sseCKeyHeaderMd5Value))
.withoutHeader(requestPayerHeader))

}

Expand Down

0 comments on commit b9264dc

Please sign in to comment.