@@ -3,6 +3,12 @@ import aws from 'aws-sdk/lib/core.js';
3
3
import S3 from 'aws-sdk/clients/s3.js' ;
4
4
import { FsAwsS3 } from '@chunkd/source-aws' ;
5
5
6
+ interface RoleObject {
7
+ roleArn : string ;
8
+ externalId ?: string ;
9
+ durationSeconds ?: number ;
10
+ }
11
+
6
12
export class AwsCredentials {
7
13
static DefaultRoleDurationSeconds = 3600 ;
8
14
static cache : Map < string , Credentials > = new Map ( ) ;
@@ -11,10 +17,18 @@ export class AwsCredentials {
11
17
* Create a FsS3 instance from a role arn
12
18
*
13
19
* @example
14
- * Fs3.fromRoleArn('arn:foo', externalId, 900);
15
- * FsS3.fromRoleArn('arn:bar');
20
+ *```typescript
21
+ * AwsCredentials.fromRoleArn('arn:foo', externalId, 900);
22
+ * AwsCredentials.fromRoleArn('arn:bar');
23
+ * AwsCredentials.fromRoleArn({ roleArn: 'arn:foo', externalId: 'bar', 'durationSeconds': 10})
24
+ * ```
16
25
*/
17
- static fsFromRole ( roleArn : string , externalId ?: string , durationSeconds ?: number ) : FsAwsS3 {
26
+ static fsFromRole ( roleArn : RoleObject ) : FsAwsS3 ;
27
+ static fsFromRole ( roleArn : string , externalId ?: string , durationSeconds ?: number ) : FsAwsS3 ;
28
+ static fsFromRole ( roleArn : string | RoleObject , externalId ?: string , durationSeconds ?: number ) : FsAwsS3 {
29
+ if ( typeof roleArn === 'object' ) {
30
+ return AwsCredentials . fsFromRole ( roleArn . roleArn , roleArn . externalId , roleArn . durationSeconds ) ;
31
+ }
18
32
const credentials = AwsCredentials . role ( roleArn , externalId , durationSeconds ) ;
19
33
return new FsAwsS3 ( new S3 ( { credentials } ) ) ;
20
34
}
0 commit comments