Skip to content
This repository was archived by the owner on Jul 26, 2022. It is now read-only.

Commit 99ce81e

Browse files
author
Fabian Heymann
authored
fix: provide a meaningful error message when an SSM parameter is missing (#483)
1 parent d11378a commit 99ce81e

File tree

2 files changed

+32
-7
lines changed

2 files changed

+32
-7
lines changed

lib/backends/system-manager-backend.js

+15-7
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,21 @@ class SystemManagerBackend extends KVBackend {
3939
sessionToken: res.Credentials.SessionToken
4040
})
4141
}
42-
const data = await client
43-
.getParameter({
44-
Name: key,
45-
WithDecryption: true
46-
})
47-
.promise()
48-
return data.Parameter.Value
42+
try {
43+
const data = await client
44+
.getParameter({
45+
Name: key,
46+
WithDecryption: true
47+
})
48+
.promise()
49+
return data.Parameter.Value
50+
} catch (err) {
51+
if (err.code === 'ParameterNotFound' && (!err.message || err.message === 'null')) {
52+
err.message = `ParameterNotFound: ${key} could not be found.`
53+
}
54+
55+
throw err
56+
}
4957
}
5058
}
5159

lib/backends/system-manager-backend.test.js

+17
Original file line numberDiff line numberDiff line change
@@ -95,5 +95,22 @@ describe('SystemManagerBackend', () => {
9595
}])
9696
expect(secretPropertyValue).equals('fakeAssumeRoleSecretValue')
9797
})
98+
99+
it('throws a meaningful message when the parameter does not exist', async () => {
100+
const error = new Error(null)
101+
error.code = 'ParameterNotFound'
102+
error.name = 'ParameterNotFound'
103+
104+
getParameterPromise.promise.rejects(error)
105+
106+
try {
107+
await systemManagerBackend._get({
108+
key: 'fakeSecretKey',
109+
specOptions
110+
})
111+
} catch (err) {
112+
expect(err.message).equals('ParameterNotFound: fakeSecretKey could not be found.')
113+
}
114+
})
98115
})
99116
})

0 commit comments

Comments
 (0)