@@ -3,6 +3,12 @@ import aws from 'aws-sdk/lib/core.js';
33import S3 from 'aws-sdk/clients/s3.js' ;
44import { FsAwsS3 } from '@chunkd/source-aws' ;
55
6+ interface RoleObject {
7+ roleArn : string ;
8+ externalId ?: string ;
9+ durationSeconds ?: number ;
10+ }
11+
612export class AwsCredentials {
713 static DefaultRoleDurationSeconds = 3600 ;
814 static cache : Map < string , Credentials > = new Map ( ) ;
@@ -11,10 +17,18 @@ export class AwsCredentials {
1117 * Create a FsS3 instance from a role arn
1218 *
1319 * @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+ * ```
1625 */
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+ }
1832 const credentials = AwsCredentials . role ( roleArn , externalId , durationSeconds ) ;
1933 return new FsAwsS3 ( new S3 ( { credentials } ) ) ;
2034 }
0 commit comments