diff --git a/pom.xml b/pom.xml index de793bbb9..bb2451d6c 100644 --- a/pom.xml +++ b/pom.xml @@ -56,7 +56,7 @@ software.amazon.awssdk bom - 2.31.14 + 2.43.0 true pom import @@ -68,13 +68,13 @@ software.amazon.awssdk s3 - 2.31.14 + 2.43.0 software.amazon.awssdk kms - 2.31.14 + 2.43.0 @@ -169,7 +169,7 @@ software.amazon.awssdk sts - 2.31.14 + 2.43.0 true test diff --git a/src/test/java/software/amazon/encryption/s3/S3EncryptionClientTest.java b/src/test/java/software/amazon/encryption/s3/S3EncryptionClientTest.java index ea46b7e1d..ac5e6e0d9 100644 --- a/src/test/java/software/amazon/encryption/s3/S3EncryptionClientTest.java +++ b/src/test/java/software/amazon/encryption/s3/S3EncryptionClientTest.java @@ -42,6 +42,7 @@ import software.amazon.encryption.s3.algorithms.AlgorithmSuite; import software.amazon.encryption.s3.internal.InstructionFileConfig; import software.amazon.encryption.s3.internal.MetadataKeyConstants; +import software.amazon.encryption.s3.materials.AesKeyring; import software.amazon.encryption.s3.materials.CryptographicMaterialsManager; import software.amazon.encryption.s3.materials.DefaultCryptoMaterialsManager; import software.amazon.encryption.s3.materials.KmsKeyring; @@ -52,6 +53,7 @@ import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; +import javax.crypto.spec.SecretKeySpec; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; @@ -964,6 +966,32 @@ public void s3EncryptionClientTopLevelCredentialsWrongRegion() { } } + @RetryingTest(3) + public void crossRegionRoundTrip() { + final String objectKey = appendTestSuffix("cross-region-test"); + SecretKeySpec aesKey = new SecretKeySpec(new byte[32], "AES"); + AesKeyring keyRing = AesKeyring.builder().wrappingKey(aesKey).build(); + + S3Client s3 = S3EncryptionClient.builderV4() + .region(Region.EU_CENTRAL_1) + .crossRegionAccessEnabled(true) + .keyring(keyRing) + .build(); + + try { + PutObjectRequest request = PutObjectRequest.builder().bucket(BUCKET).key(objectKey).build(); + s3.putObject(request, RequestBody.fromBytes("test".getBytes())); + ResponseBytes response = s3.getObjectAsBytes(builder -> builder + .bucket(BUCKET) + .key(objectKey) + .build()); + assertEquals("test", response.asUtf8String()); + } finally { + deleteObject(BUCKET, objectKey, s3); + s3.close(); + } + } + @RetryingTest(3) public void s3EncryptionClientTopLevelCredentialsNullCreds() { final String objectKey = appendTestSuffix("wrapped-s3-client-with-null-credentials");