最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如果从S3存储桶根删除映像,如何从子目录中删除相应的缩略图?

IT培训 admin 3浏览 0评论

如果从S3存储桶根删除映像,如何从子目录中删除相应的缩略图?

我正在将AWS S3服务用于媒体目的,并将AWS Lambda服务用于与拇指相关的图像。

面对以下问题:如果我删除主目录中的媒体而不是缩略图(由Lambda生成)仍将存在于子目录中。

例如:如果我从Node.js代码中删除“1513928090496_juCQtDAt6ylr.jpg”文件,我还需要从“100x100”,“1920x720”和“300x300”目录中删除相同的文件。 (它们也包含相同的文件“1513928090496_juCQtDAt6ylr.jpg”)

有关详细信息,请参阅uploaded图像。

回答如下:

最简单的方法是使用另一个Lambda函数。从桶中删除对象时,可以触发它的执行。

然后,该函数将分析删除的对象是否位于根目录中,如果是,则从子文件夹中删除缩略图。

这是您可以使用的功能:

const AWS = require("aws-sdk");
const s3 = new AWS.S3();

const thumbnailFolders = ["100x100", "1920x720", "300x300"];

exports.handler = function(event, context, callback) {
  const bucketName = event.Records[0].s3.bucket.name;
  const deletedFileKey = event.Records[0].s3.object.key;

  // If there are no forward slashes the file was in the root folder.
  const wasInRootDirectory = !deletedFileKey.includes("/");
  if (!wasInRootDirectory) {
    // If if was not in the root foler, ignore it.
    return;
  }

  const thumbnailsToDelete = thumbnailFolders.map(f => {
    return { Key: `${f}/${deletedFileKey}` };
  });

  const params = {
    Bucket: bucketName,
    Delete: {
      Objects: thumbnailsToDelete
    }
  };

  s3.deleteObjects(params, (err, data) => {
    if (err) {
      console.log(err, err.stack);
      callback(err);
      return;
    }

    //Deleted successfully
    callback();
  });
};

如果从S3存储桶根删除映像,如何从子目录中删除相应的缩略图?

我正在将AWS S3服务用于媒体目的,并将AWS Lambda服务用于与拇指相关的图像。

面对以下问题:如果我删除主目录中的媒体而不是缩略图(由Lambda生成)仍将存在于子目录中。

例如:如果我从Node.js代码中删除“1513928090496_juCQtDAt6ylr.jpg”文件,我还需要从“100x100”,“1920x720”和“300x300”目录中删除相同的文件。 (它们也包含相同的文件“1513928090496_juCQtDAt6ylr.jpg”)

有关详细信息,请参阅uploaded图像。

回答如下:

最简单的方法是使用另一个Lambda函数。从桶中删除对象时,可以触发它的执行。

然后,该函数将分析删除的对象是否位于根目录中,如果是,则从子文件夹中删除缩略图。

这是您可以使用的功能:

const AWS = require("aws-sdk");
const s3 = new AWS.S3();

const thumbnailFolders = ["100x100", "1920x720", "300x300"];

exports.handler = function(event, context, callback) {
  const bucketName = event.Records[0].s3.bucket.name;
  const deletedFileKey = event.Records[0].s3.object.key;

  // If there are no forward slashes the file was in the root folder.
  const wasInRootDirectory = !deletedFileKey.includes("/");
  if (!wasInRootDirectory) {
    // If if was not in the root foler, ignore it.
    return;
  }

  const thumbnailsToDelete = thumbnailFolders.map(f => {
    return { Key: `${f}/${deletedFileKey}` };
  });

  const params = {
    Bucket: bucketName,
    Delete: {
      Objects: thumbnailsToDelete
    }
  };

  s3.deleteObjects(params, (err, data) => {
    if (err) {
      console.log(err, err.stack);
      callback(err);
      return;
    }

    //Deleted successfully
    callback();
  });
};
发布评论

评论列表 (0)

  1. 暂无评论