Skip to content

Commit aca20fd

Browse files
[PRM-495] Reverted removal of checkS3Status from services
1 parent 8cb23d7 commit aca20fd

File tree

1 file changed

+33
-0
lines changed
  • services/ehr-repo/src/services/storage

1 file changed

+33
-0
lines changed

services/ehr-repo/src/services/storage/s3.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { initializeConfig } from '../../config';
22
import { Endpoint, S3 } from 'aws-sdk';
3+
import dayjs from 'dayjs';
34

45
const URL_EXPIRY_TIME = 60;
56
const CONTENT_TYPE = 'text/xml';
@@ -11,6 +12,24 @@ export default class S3Service {
1112
this.Bucket = config.awsS3BucketName;
1213
}
1314

15+
checkS3Health() {
16+
const result = {
17+
type: 's3',
18+
bucketName: config.awsS3BucketName,
19+
available: true,
20+
writable: false
21+
};
22+
23+
const date = dayjs().format('YYYY-MM-DD HH:mm:ss');
24+
return this._isConnected()
25+
.then(() =>
26+
this.saveObjectWithName('health-check.txt', date)
27+
.then(() => ({ ...result, writable: true }))
28+
.catch((err) => ({ ...result, error: err }))
29+
)
30+
.catch((err) => ({ ...result, error: err, available: false }));
31+
}
32+
1433
saveObjectWithName(filename, data) {
1534
const params = {
1635
Bucket: config.awsS3BucketName,
@@ -34,6 +53,20 @@ export default class S3Service {
3453
return this.s3.getSignedUrlPromise(operation, params);
3554
}
3655

56+
_isConnected() {
57+
return new Promise((resolve, reject) => {
58+
this.s3.headBucket(
59+
{
60+
Bucket: config.awsS3BucketName
61+
},
62+
(err) => {
63+
if (err) reject(err);
64+
resolve(true);
65+
}
66+
);
67+
});
68+
}
69+
3770
_get_config() {
3871
if (config.nhsEnvironment === 'local') {
3972
return {

0 commit comments

Comments
 (0)