Skip to content

Commit 77559c5

Browse files
committed
ssm-provider doesnt throw error if file doesnt exist
1 parent 30c8af7 commit 77559c5

File tree

8 files changed

+59
-37
lines changed

8 files changed

+59
-37
lines changed

packages/serverless-offline-ssm-provider/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,5 @@ plugins:
2323
```yml
2424
custom:
2525
serverless-offline-ssm-provider:
26-
file: .env
26+
file: .ssm
2727
```

packages/serverless-offline-ssm-provider/src/index.js

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,27 @@
11
const fs = require('fs');
2-
3-
const getValues = (path = '.env') =>
4-
fs
5-
.readFileSync(path, {encoding: 'utf-8'})
6-
.trim()
7-
.split('\n')
8-
.map(line => line.split(/=(.*)/))
9-
.reduce((acc, [key, value]) => {
10-
acc[key] = value;
11-
return acc;
12-
}, {});
2+
const {fromPairs, get, map, pipe, split, trim} = require('lodash/fp');
3+
4+
const fromCallback = fun => (...args) =>
5+
new Promise((resolve, reject) =>
6+
fun(...args, (err, data) => (err ? reject(err) : resolve(data)))
7+
);
8+
const readFile = fromCallback(fs.readFile);
9+
10+
const getValues = (path = '.ssm') => {
11+
const values = (async () => {
12+
try {
13+
return pipe(
14+
trim,
15+
split('\n'),
16+
map(split(/=(.*)/)),
17+
fromPairs
18+
)(await readFile(path, {encoding: 'utf-8'}));
19+
} catch (err) {
20+
return null;
21+
}
22+
})();
23+
return key => values.then(get(key));
24+
};
1325

1426
class ServerlessOfflineSSMProvider {
1527
constructor(serverless) {
@@ -24,17 +36,17 @@ class ServerlessOfflineSSMProvider {
2436
if (service !== 'SSM' || method !== 'getParameter')
2537
return request(service, method, params, options);
2638

27-
return request(service, method, params, options).catch(error => {
39+
return request(service, method, params, options).catch(async error => {
2840
const {Name} = params;
29-
const Value = this.values[Name];
41+
const Value = await this.values(Name);
3042

31-
if (!Value) return Promise.reject(error);
43+
if (!Value) throw error;
3244

33-
return Promise.resolve({
45+
return {
3446
Parameter: {
3547
Value
3648
}
37-
});
49+
};
3850
});
3951
};
4052

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
/sqs/port=9324
2+
/dynamodb/port=8000
3+
/kinesis/port=4567
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
serverless-offline-sqs:
2+
endpoint: http://0.0.0.0:${ssm:/sqs/port}
3+
region: ${self:provider.region}
4+
accessKeyId: root
5+
secretAccessKey: root
6+
skipCacheInvalidation: false
7+
serverless-offline-dynamodb-streams:
8+
endpoint: http://0.0.0.0:${ssm:/dynamodb/port}
9+
region: ${self:provider.region}
10+
accessKeyId: root
11+
secretAccessKey: root
12+
skipCacheInvalidation: false
13+
serverless-offline-kinesis:
14+
endpoint: http://0.0.0.0:${ssm:/kinesis/port}
15+
region: ${self:provider.region}
16+
accessKeyId: root
17+
secretAccessKey: root
18+
skipCacheInvalidation: false

tests/serverless-plugins-integration/package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@
1717
"aws-sdk": "^2.538.0",
1818
"figures": "^3.0.0",
1919
"lodash": "^4.17.15",
20-
"serverless": "^1.53.0",
21-
"serverless-offline": "^5.11.0",
2220
"serverless-offline-dynamodb-streams": "^2.0.0",
2321
"serverless-offline-kinesis": "^2.0.0",
2422
"serverless-offline-sqs": "^2.0.3",
23+
"serverless-offline-ssm-provider": "^1.0.5",
24+
"serverless-offline": "^5.11.0",
25+
"serverless": "^1.53.0",
2526
"signal-exit": "^3.0.2"
2627
}
2728
}

tests/serverless-plugins-integration/serverless.dynamodb-stream.yml

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ provider:
88
plugins:
99
localPath: '../../packages'
1010
modules:
11+
- serverless-offline-ssm-provider
1112
- serverless-offline-dynamodb-streams
1213
- serverless-offline
1314

@@ -61,9 +62,4 @@ resources:
6162
custom:
6263
serverless-offline:
6364
port: 3443
64-
serverless-offline-dynamodb-streams:
65-
endpoint: http://0.0.0.0:8000
66-
region: ${self:provider.region}
67-
accessKeyId: root
68-
secretAccessKey: root
69-
skipCacheInvalidation: false
65+
serverless-offline-dynamodb-streams: ${file(./custom.yml):serverless-offline-dynamodb-streams}

tests/serverless-plugins-integration/serverless.kinesis.yml

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ provider:
88
plugins:
99
localPath: '../../packages'
1010
modules:
11+
- serverless-offline-ssm-provider
1112
- serverless-offline-kinesis
1213
- serverless-offline
1314

@@ -51,9 +52,4 @@ resources:
5152
custom:
5253
serverless-offline:
5354
port: 3223
54-
serverless-offline-kinesis:
55-
endpoint: http://0.0.0.0:4567
56-
region: ${self:provider.region}
57-
accessKeyId: root
58-
secretAccessKey: root
59-
skipCacheInvalidation: false
55+
serverless-offline-kinesis: ${file(./custom.yml):serverless-offline-kinesis}

tests/serverless-plugins-integration/serverless.sqs.yml

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ provider:
88
plugins:
99
localPath: '../../packages'
1010
modules:
11+
- serverless-offline-ssm-provider
1112
- serverless-offline-sqs
1213
- serverless-offline
1314

@@ -47,9 +48,4 @@ resources:
4748
custom:
4849
serverless-offline:
4950
port: 3333
50-
serverless-offline-sqs:
51-
endpoint: http://0.0.0.0:9324
52-
region: ${self:provider.region}
53-
accessKeyId: root
54-
secretAccessKey: root
55-
skipCacheInvalidation: false
51+
serverless-offline-sqs: ${file(./custom.yml):serverless-offline-sqs}

0 commit comments

Comments
 (0)