Skip to content

Commit 7e12347

Browse files
committed
Fix test and adjust troubleshooting docs
1 parent 5afe1ed commit 7e12347

File tree

2 files changed

+37
-21
lines changed

2 files changed

+37
-21
lines changed

hadoop-tools/hadoop-aws/src/site/markdown/tools/hadoop-aws/assumed_roles.md

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -655,7 +655,7 @@ The security token included in the request is invalid.
655655
... 25 more
656656
```
657657

658-
### <a name="invalid_session"></a> `AWSSecurityTokenServiceExceptiond`: "Member must satisfy regular expression pattern: `[\w+=,.@-]*`"
658+
### <a name="invalid_session"></a> `AWSSecurityTokenServiceException`: "Member must satisfy regular expression pattern: `[\w+=,.@-]*`"
659659

660660

661661
The session name, as set in `fs.s3a.assumed.role.session.name` must match the wildcard `[\w+=,.@-]*`.
@@ -693,6 +693,34 @@ Caused by: com.amazonaws.services.securitytoken.model.AWSSecurityTokenServiceExc
693693
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1303)
694694
```
695695

696+
Similarly, if `fs.s3a.assumed.role.externalid` is specified, it must match the same wildcard `[\w+=,.@-]*`.
697+
698+
```
699+
org.apache.hadoop.fs.s3a.AWSBadRequestException:
700+
Instantiate org.apache.hadoop.fs.s3a.auth.AssumedRoleCredentialProvider:
701+
com.amazonaws.services.securitytoken.model.AWSSecurityTokenServiceException:
702+
1 validation error detected: Value 'invalid external id' at 'externalId' failed to satisfy constraint:
703+
Member must satisfy regular expression pattern: [\w+=,.@:\/-]*
704+
(Service: AWSSecurityTokenService; Status Code: 400; Error Code: ValidationError;
705+
at org.apache.hadoop.fs.s3a.S3AUtils.translateException(S3AUtils.java:241)
706+
at org.apache.hadoop.fs.s3a.S3AUtils.createAWSCredentialProvider(S3AUtils.java:730)
707+
at org.apache.hadoop.fs.s3a.S3AUtils.buildAWSProviderList(S3AUtils.java:644)
708+
at org.apache.hadoop.fs.s3a.S3AUtils.createAWSCredentialProviderSet(S3AUtils.java:577)
709+
at org.apache.hadoop.fs.s3a.S3AFileSystem.bindAWSClient(S3AFileSystem.java:878)
710+
at org.apache.hadoop.fs.s3a.S3AFileSystem.initialize(S3AFileSystem.java:523)
711+
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:3563)
712+
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:553)
713+
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:366)
714+
715+
Caused by: com.amazonaws.services.securitytoken.model.AWSSecurityTokenServiceException:
716+
1 validation error detected: Value 'invalid external id' at 'externalId'
717+
failed to satisfy constraint:
718+
Member must satisfy regular expression pattern: [\w+=,.@:\/-]*
719+
(Service: AWSSecurityTokenService; Status Code: 400; Error Code: ValidationError; Request ID: 2f53f2c9-ef6a-4561-ba43-bdec489136ae; Proxy: null)
720+
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1879)
721+
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleServiceErrorResponse(AmazonHttpClient.java:1418)
722+
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1387)
723+
```
696724

697725
### <a name="access_denied"></a> `java.nio.file.AccessDeniedException` within a FileSystem API call
698726

hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/auth/ITestAssumeRole.java

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -152,20 +152,6 @@ public void testCreateCredentialProvider() throws IOException {
152152
}
153153
}
154154

155-
@Test
156-
public void testCreateCredentialProviderWithExternalId() throws IOException {
157-
describe("Create the credential provider");
158-
159-
Configuration conf = createValidRoleConfWithExternalId();
160-
conf.set(ASSUMED_ROLE_EXTERNAL_ID, "anExternalId");
161-
try (AssumedRoleCredentialProvider provider
162-
= new AssumedRoleCredentialProvider(uri, conf)) {
163-
LOG.info("Provider is {}", provider);
164-
AWSCredentials credentials = provider.getCredentials();
165-
assertNotNull("Null credentials from " + provider, credentials);
166-
}
167-
}
168-
169155
@Test
170156
public void testCreateCredentialProviderNoURI() throws IOException {
171157
describe("Create the credential provider");
@@ -196,12 +182,6 @@ protected Configuration createValidRoleConf() throws JsonProcessingException {
196182
return conf;
197183
}
198184

199-
protected Configuration createValidRoleConfWithExternalId() throws JsonProcessingException {
200-
Configuration conf = createValidRoleConf();
201-
conf.set(ASSUMED_ROLE_EXTERNAL_ID, "someId");
202-
return conf;
203-
}
204-
205185
@Test
206186
public void testAssumedInvalidRole() throws Throwable {
207187
Configuration conf = new Configuration();
@@ -211,6 +191,14 @@ public void testAssumedInvalidRole() throws Throwable {
211191
() -> new AssumedRoleCredentialProvider(uri, conf));
212192
}
213193

194+
@Test
195+
public void testAssumedRoleBadExternalId() throws Throwable {
196+
describe("Attempt to create the FS with an invalid external id");
197+
Configuration conf = createAssumedRoleConfig();
198+
conf.set(ASSUMED_ROLE_EXTERNAL_ID, "invalid_external_id!");
199+
expectFileSystemCreateFailure(conf, AWSBadRequestException.class, "");
200+
}
201+
214202
@Test
215203
public void testAssumeRoleFSBadARN() throws Exception {
216204
describe("Attemnpt to create the FS with an invalid ARN");

0 commit comments

Comments
 (0)