Проверка наличия ключа в объекте S3 - PullRequest
0 голосов
/ 05 июля 2019

Итак, моя структура 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
...