fix(server): better error handling and logging for storage (#5553)

This commit is contained in:
liuyi 2024-01-09 10:37:24 +00:00
parent af245315c2
commit ddbb5e1121
No known key found for this signature in database
GPG Key ID: 56709255DC7EC728
2 changed files with 14 additions and 4 deletions

View File

@ -1,3 +1,5 @@
import { Logger } from '@nestjs/common';
import { R2StorageConfig } from '../../../config/storage';
import { S3StorageProvider } from './s3';
@ -12,5 +14,6 @@ export class R2StorageProvider extends S3StorageProvider {
},
bucket
);
this.logger = new Logger(`${R2StorageProvider.name}:${bucket}`);
}
}

View File

@ -5,6 +5,7 @@ import {
DeleteObjectCommand,
GetObjectCommand,
ListObjectsV2Command,
NoSuchKey,
PutObjectCommand,
S3Client,
} from '@aws-sdk/client-s3';
@ -21,7 +22,7 @@ import {
import { autoMetadata, toBuffer } from './utils';
export class S3StorageProvider implements StorageProvider {
private readonly logger: Logger;
protected logger: Logger;
protected client: S3Client;
readonly type = 's3';
@ -96,9 +97,15 @@ export class S3StorageProvider implements StorageProvider {
},
};
} catch (e) {
throw new Error(`Failed to read object \`${key}\``, {
cause: e,
});
// 404
if (e instanceof NoSuchKey) {
this.logger.verbose(`Object \`${key}\` not found`);
return {};
} else {
throw new Error(`Failed to read object \`${key}\``, {
cause: e,
});
}
}
}