Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .changes/6632426a-83de-4ceb-8aef-0d27b01b070b.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"id": "6632426a-83de-4ceb-8aef-0d27b01b070b",
"type": "feature",
"description": "Add support for presigning DeleteObject requests",
"issues": [
"https://github.com/awslabs/aws-sdk-kotlin/issues/1609"
],
"module": "s3"
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ internal val DEFAULT_PRESIGNABLE_OPERATIONS: Map<String, Set<String>> = mapOf(
"com.amazonaws.s3#GetObject",
"com.amazonaws.s3#PutObject",
"com.amazonaws.s3#UploadPart",
"com.amazonaws.s3#DeleteObject",
),
"com.amazonaws.sts#AWSSecurityTokenServiceV20110615" to setOf(
"com.amazonaws.sts#GetCallerIdentity",
Expand Down
15 changes: 15 additions & 0 deletions services/s3/e2eTest/src/S3PresignerTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@
package aws.sdk.kotlin.e2etest

import aws.sdk.kotlin.services.s3.S3Client
import aws.sdk.kotlin.services.s3.model.DeleteObjectRequest
import aws.sdk.kotlin.services.s3.model.GetObjectRequest
import aws.sdk.kotlin.services.s3.model.PutObjectRequest
import aws.sdk.kotlin.services.s3.presigners.presignDeleteObject
import aws.sdk.kotlin.services.s3.presigners.presignGetObject
import aws.sdk.kotlin.services.s3.presigners.presignPutObject
import aws.sdk.kotlin.testing.PRINTABLE_CHARS
Expand Down Expand Up @@ -50,6 +52,7 @@ class S3PresignerTest {
withAllEngines { engine ->
val httpClient = SdkHttpClient(engine)

// PUT
val unsignedPutRequest = PutObjectRequest {
bucket = testBucket
key = keyName
Expand All @@ -58,6 +61,7 @@ class S3PresignerTest {

S3TestUtils.responseCodeFromPut(presignedPutRequest, contents)

// GET
val unsignedGetRequest = GetObjectRequest {
bucket = testBucket
key = keyName
Expand All @@ -69,6 +73,17 @@ class S3PresignerTest {
call.complete()
assertEquals(200, call.response.status.value)
assertEquals(contents, body)

// DELETE
val unsignedDeleteRequest = DeleteObjectRequest {
bucket = testBucket
key = keyName
}
val presignedDeleteObject = client.presignDeleteObject(unsignedDeleteRequest, 60.seconds)

val deleteCall = httpClient.call(presignedDeleteObject)
deleteCall.complete()
assertEquals(204, deleteCall.response.status.value)
}
}

Expand Down
Loading