AWS Lambda で S3 にアップロードされた特定のファイルを削除するサンプルコードをご紹介します。
S3 へ何らかの方法で予期せぬファイルがアップロードされた場合の対策として、アップロードされると困るファイルを検知して、削除したいというのが本記事のお題です。
チュートリアル: 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 関数で削除したい、現場からお送りしました。