Итак, моя структура S3 выглядит следующим образом:
Bucket
|
|--------/print-objects
|
|
/20190417
|
|
image-file.png
Мне нужно проверить, существует ли ключ / 20190417 «дата», и если нет, создать этот ключ.
export function checkDateKeyExists(bucketName: string, key: string, dateKey: string) {
const s3 = new aws.S3({ params: { Bucket: bucketName, Delimiter: '/', Prefix: 'print-objects/' } });
const params: aws.S3.Types.GetObjectRequest = { Bucket: bucketName, Key: key }
s3.getObject(params, function(err, data) {
if (err) {
log.debug("Error:", err)
} else {
log.debug("Data:", data)
const s3DateKey = Object.keys(data).filter((dateKey) => dateKey.slice(0, 13) == 'print-objects')
log.error(s3DateKey)
}
})
Кажется, у меня возникли проблемы с детализацией до вложенного ключа даты, и я не могу проверить, существует ли он.
Я получаю следующее data
назад:
Data:
{
AcceptRanges: 'bytes',
LastModified: 2019-07-04T18:30:12.000Z,
ContentLength: 0,
ETag: '"d41d8cd98f00b204e9800998ecf8427e"',
ContentType: 'application/x-directory',
Metadata: {},
Body: <Buffer >
} +0ms
Когда я возвращаю содержимое Object.keys(data)
, я получаю массив ключей метаданных (я думаю, что это для самого объекта print-objects
), а не ключ даты, вложенный в объект печати.
[
'AcceptRanges',
'LastModified',
'ContentLength',
'ETag',
'ContentType',
'Metadata',
'Body'
] +1ms