diff --git a/packages/amplify-provider-awscloudformation/src/__tests__/amplify-service-manager.test.ts b/packages/amplify-provider-awscloudformation/src/__tests__/amplify-service-manager.test.ts index 9921a8053ae..eb0667098fb 100644 --- a/packages/amplify-provider-awscloudformation/src/__tests__/amplify-service-manager.test.ts +++ b/packages/amplify-provider-awscloudformation/src/__tests__/amplify-service-manager.test.ts @@ -65,4 +65,27 @@ describe('init', () => { }; await expect(init(amplifyServiceParamsStub)).rejects.toMatchInlineSnapshot(`[ConfigurationError: Missing Region in Config]`); }); + + it('throws ProjectInitError if secret access key is invalid', async () => { + const amplifyClientStub = { + createApp: jest.fn().mockReturnValue({ + promise: jest.fn().mockRejectedValue({ + code: 'InvalidSignatureException', + }), + }), + } as unknown as Amplify; + getConfiguredAmplifyClientMock.mockClear(); + getConfiguredAmplifyClientMock.mockResolvedValue(amplifyClientStub); + + const amplifyServiceParamsStub = { + context: {}, + awsConfigInfo: {}, + projectName: 'test-project', + envName: 'test', + stackName: 'test-stack-name', + }; + await expect(init(amplifyServiceParamsStub)).rejects.toMatchInlineSnapshot( + `[ProjectInitError: The request signature we calculated does not match the signature you provided]`, + ); + }); }); diff --git a/packages/amplify-provider-awscloudformation/src/amplify-service-manager.ts b/packages/amplify-provider-awscloudformation/src/amplify-service-manager.ts index 417af98d110..288368ee9d5 100644 --- a/packages/amplify-provider-awscloudformation/src/amplify-service-manager.ts +++ b/packages/amplify-provider-awscloudformation/src/amplify-service-manager.ts @@ -148,6 +148,16 @@ export async function init(amplifyServiceParams) { resolution: 'https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html', }); } + if (e.code === 'InvalidSignatureException') { + throw new AmplifyError( + 'ProjectInitError', + { + message: 'The request signature we calculated does not match the signature you provided', + resolution: 'Check your AWS Secret Access Key', + }, + e, + ); + } // default fault throw new AmplifyFault( 'ProjectInitFault',