From 4372b08b480ff969693ac5ad3818c851af2a07e8 Mon Sep 17 00:00:00 2001 From: hi1280 <6506310+hi1280@users.noreply.github.com> Date: Thu, 2 May 2024 15:08:15 +0900 Subject: [PATCH 1/2] fix: error message when secret access key is invalid --- .../src/amplify-service-manager.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) 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', From 5b30f832e3783dca106c758150771e4730fdbe89 Mon Sep 17 00:00:00 2001 From: hi1280 <6506310+hi1280@users.noreply.github.com> Date: Thu, 2 May 2024 15:40:15 +0900 Subject: [PATCH 2/2] test: add unit test --- .../__tests__/amplify-service-manager.test.ts | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) 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]`, + ); + }); });