diff --git a/packages/credential-provider-ini/src/resolveAssumeRoleCredentials.spec.ts b/packages/credential-provider-ini/src/resolveAssumeRoleCredentials.spec.ts index 82fe32729a14b..405d670a7ef13 100644 --- a/packages/credential-provider-ini/src/resolveAssumeRoleCredentials.spec.ts +++ b/packages/credential-provider-ini/src/resolveAssumeRoleCredentials.spec.ts @@ -102,6 +102,7 @@ describe(resolveAssumeRoleCredentials.name, () => { role_arn: "mock_role_arn", role_session_name: "mock_role_session_name", external_id: "mock_external_id", + duration_seconds: "2000", }); const getMockProfilesWithCredSource = (additionalData) => ({ @@ -176,6 +177,7 @@ describe(resolveAssumeRoleCredentials.name, () => { RoleArn: mockRoleAssumeParams.role_arn, RoleSessionName: mockRoleAssumeParams.role_session_name, ExternalId: mockRoleAssumeParams.external_id, + DurationSeconds: parseInt(mockRoleAssumeParams.duration_seconds), }); }); @@ -191,6 +193,7 @@ describe(resolveAssumeRoleCredentials.name, () => { RoleArn: mockRoleAssumeParams.role_arn, RoleSessionName: mockRoleAssumeParams.role_session_name, ExternalId: mockRoleAssumeParams.external_id, + DurationSeconds: parseInt(mockRoleAssumeParams.duration_seconds), }); }); @@ -207,6 +210,7 @@ describe(resolveAssumeRoleCredentials.name, () => { RoleArn: mockRoleAssumeParams.role_arn, RoleSessionName: `aws-sdk-js-${mockDateNow}`, ExternalId: mockRoleAssumeParams.external_id, + DurationSeconds: parseInt(mockRoleAssumeParams.duration_seconds), }); }); @@ -253,6 +257,7 @@ describe(resolveAssumeRoleCredentials.name, () => { ExternalId: mockRoleAssumeParams.external_id, SerialNumber: mockMfaSerial, TokenCode: mockTokenCode, + DurationSeconds: parseInt(mockRoleAssumeParams.duration_seconds), }); }); }); diff --git a/packages/credential-provider-ini/src/resolveAssumeRoleCredentials.ts b/packages/credential-provider-ini/src/resolveAssumeRoleCredentials.ts index b2d8d8567ee2b..f175ab54cd12a 100644 --- a/packages/credential-provider-ini/src/resolveAssumeRoleCredentials.ts +++ b/packages/credential-provider-ini/src/resolveAssumeRoleCredentials.ts @@ -39,6 +39,11 @@ export interface AssumeRoleParams { * The value provided by the MFA device. */ TokenCode?: string; + + /** + * The duration, in seconds, of the role session. + */ + DurationSeconds?: number; } interface AssumeRoleWithSourceProfile extends Profile { @@ -108,6 +113,7 @@ export const resolveAssumeRoleCredentials = async ( RoleArn: data.role_arn!, RoleSessionName: data.role_session_name || `aws-sdk-js-${Date.now()}`, ExternalId: data.external_id, + DurationSeconds: parseInt(data.duration_seconds || "3600", 10), }; const { mfa_serial } = data;