Skip to content

Commit 16b3c61

Browse files
authored
map errors from CDK destroy (#2784)
1 parent f7c7ff0 commit 16b3c61

File tree

3 files changed

+39
-11
lines changed

3 files changed

+39
-11
lines changed

.changeset/blue-dots-count.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@aws-amplify/backend-deployer': patch
3+
---
4+
5+
Map errors from CDK destroy

packages/backend-deployer/src/cdk_deployer.test.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ void describe('invokeCDKCommand', () => {
273273
assert.deepStrictEqual(tsCompilerMock.mock.calls[0].arguments, ['amplify']);
274274
});
275275

276-
void it('returns human readable errors', async () => {
276+
void it('returns human readable errors on deploy', async () => {
277277
synthMock.mock.mockImplementationOnce(() => {
278278
throw new Error('Access Denied');
279279
});
@@ -292,6 +292,25 @@ void describe('invokeCDKCommand', () => {
292292
);
293293
});
294294

295+
void it('returns human readable errors on destroy', async () => {
296+
destroyMock.mock.mockImplementationOnce(() => {
297+
throw new Error('Access Denied');
298+
});
299+
300+
await assert.rejects(
301+
() => invoker.destroy(branchBackendId),
302+
(err: AmplifyError<CDKDeploymentError>) => {
303+
assert.equal(
304+
err.message,
305+
'The deployment role does not have sufficient permissions to perform this deployment.',
306+
);
307+
assert.equal(err.name, 'AccessDeniedError');
308+
assert.equal(err.cause?.message, 'Access Denied');
309+
return true;
310+
},
311+
);
312+
});
313+
295314
void it('displays actionable error when older version of node is used during branch deployments', async () => {
296315
const olderNodeVersionError = new Error(
297316
'This version of Node.js (v18.18.2) does not support module.register(). Please upgrade to Node v18.19 or v20.6 and above.',

packages/backend-deployer/src/cdk_deployer.ts

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -182,16 +182,20 @@ export class CDKDeployer implements BackendDeployer {
182182
*/
183183
destroy = async (backendId: BackendIdentifier) => {
184184
const deploymentStartTime = Date.now();
185-
await this.cdkToolkit.destroy(await this.getCdkCloudAssembly(backendId), {
186-
stacks: {
187-
strategy: StackSelectionStrategy.ALL_STACKS,
188-
},
189-
});
190-
return {
191-
deploymentTimes: {
192-
totalTime: Math.floor((Date.now() - deploymentStartTime) / 10) / 100,
193-
},
194-
};
185+
try {
186+
await this.cdkToolkit.destroy(await this.getCdkCloudAssembly(backendId), {
187+
stacks: {
188+
strategy: StackSelectionStrategy.ALL_STACKS,
189+
},
190+
});
191+
return {
192+
deploymentTimes: {
193+
totalTime: Math.floor((Date.now() - deploymentStartTime) / 10) / 100,
194+
},
195+
};
196+
} catch (error) {
197+
throw this.cdkErrorMapper.getAmplifyError(error as Error, backendId.type);
198+
}
195199
};
196200

197201
compileProject = (projectDirectory: string): Promise<void> => {

0 commit comments

Comments
 (0)