AWS Lambda で S3 にアップロードされた特定のファイルを削除するサンプルコード

AWS Lambda で S3 にアップロードされた特定のファイルを削除するサンプルコードをご紹介します。

AWS

背景 S3 にアップロードさせたくないファイルを検知して削除したい

S3 へ何らかの方法で予期せぬファイルがアップロードされた場合の対策として、アップロードされると困るファイルを検知して、削除したいというのが本記事のお題です。

S3 にアップロードされた ContentType: text/html のファイルを削除する Lambda 関数のサンプルコード

チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す – AWS Lambda の記事を参考にして、ベースを作成しました。

以下の Lambda 関数がサンプルコードなのでご活用ください。

const aws = require('aws-sdk');
const s3 = new aws.S3({ apiVersion: '2006-03-01' });

exports.handler = async (event, context) => {
  const bucket = event.Records[0].s3.bucket.name;
  const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
  const params = {
    Bucket: bucket,
    Key: key,
  };
  try {
    const { ContentType } = await s3.getObject(params).promise();
    console.log('CONTENT TYPE:', ContentType);
    if (ContentType === 'text/html') {
      await s3.deleteObject(params).promise();
      console.log('s3.deleteObject:', params);
      return;
    }
    return;
  } catch (err) {
    throw new Error(err);
  }
};

以上、S3 にアップロードされた特定のファイルを Lambda 関数で削除したい、現場からお送りしました。