HADOOP-18368. Fixes ITestCustomSigner for access point names with '-' (#4634)

Contributed By: Ahmar Suhail <ahmarsu@amazon.co.uk>
This commit is contained in:
ahmarsuhail 2022-08-01 21:19:42 +01:00 committed by Mukund Thakur
parent 7aebacef77
commit 4e842a7ff3

View File

@ -20,7 +20,6 @@
import java.io.IOException;
import java.security.PrivilegedExceptionAction;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@ -228,10 +227,13 @@ private String parseBucketFromHost(String host) {
if (service.contains("s3-accesspoint") || service.contains("s3-outposts")
|| service.contains("s3-object-lambda")) {
// If AccessPoint then bucketName is of format `accessPoint-accountId`;
String[] accessPointBits = hostBits[0].split("-");
int lastElem = accessPointBits.length - 1;
String accountId = accessPointBits[lastElem];
String accessPointName = String.join("", Arrays.copyOf(accessPointBits, lastElem));
String[] accessPointBits = bucketName.split("-");
String accountId = accessPointBits[accessPointBits.length - 1];
// Extract the access point name from bucket name. eg: if bucket name is
// test-custom-signer-<accountId>, get the access point name test-custom-signer by removing
// -<accountId> from the bucket name.
String accessPointName =
bucketName.substring(0, bucketName.length() - (accountId.length() + 1));
Arn arn = Arn.builder()
.withAccountId(accountId)
.withPartition("aws")