11 April 2022

Guardando archivo en S3 desde Lambda con Node.js

Como guardar archivos en S3 desde Node.js lambda

Miguel Angel Acevedo
Miguel Angel Acevedo @faultydev

Como ejemplo propongo una funciĆ³n lambda recibiendo un POST con un JSON en el body, directamente guardamos en contenido del POST en un archivo JSON

const AWS = require("aws-sdk");

console.log("Loading...");

const uploadData = (filename, fileContent) => {
  return new Promise((resolve, reject) => {
    const s3 = new AWS.S3();
    const params = {
      Bucket: process.env.S3_Bucket,
      Key: `${filename}.json`,
      Body: fileContent,
    };

    s3.upload(params, (err, data) => {
      if (err) {
        reject(err);
      }
      resolve(data.Location);
    });
  });
};

exports.handler = async function (event, context) {
  if (event.path === "/" && event.httpMethod === "POST") {
    await uploadData(context.awsRequestId, event.body);
  }
  return {
    statusCode: 200,
    body: JSON.stringify({ requestId: context.awsRequestId }),
  };
};

Categories

AWS S3 Lambda JSON Node.js Javascript