检查S3对象中是否存在密钥

时间:2019-07-05 14:54:32

标签: javascript typescript amazon-web-services amazon-s3 bucket

所以我的S3结构如下:

Bucket 
|
|--------/print-objects
                  |
                  |
              /20190417
                  |
                  |
               image-file.png

我需要检查/ 20190417“ date”密钥是否存在,如果不存在,请创建该密钥。

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对象本身的),而不是嵌套在打印对象中的日期键。 / p>

[
  'AcceptRanges',
  'LastModified',
  'ContentLength',
  'ETag',
  'ContentType',
  'Metadata',
  'Body'
] +1ms

0 个答案:

没有答案