Buckets en AWS con SDK

En esta publicación describo lo necesario para programar con el SDK de AWS el manejo de "buckets" y carga de archivos, comenzando por los "require"s necesarios y los clientes que ejecutarán los comandos.

const {
  CreateBucketCommand,
  PutObjectCommand,
  S3Client
} = require ('@aws-sdk/client-s3');

const {
  RunInstancesCommand,
  StopInstancesCommand,
  AttachColumeCommand,
  DetachVolumeCommand,
  EC2Client
} = require('@aws-sdk/client-ec2');

const paramsClient = {...};
const clientS3 = new S3Client(paramsClient);
const client = new EC2Client(paramsClient);

Ahora procedo con la secuencia para crear un "bucket", detener instancia, desatar un volumen y atarlo a otra instancia.

const paramsBucket = {...}
const cmdBucket = new CreateBucketCommand(paramsBucket);
const dataBucket = clientS3.send(cmdBucket);

const paramsStopInstance = {...};
const cmdStopInstance = new StopInstancesCommand(paramsStopInstance);
const dataStopInstance = client.send(cmdStopInstance);

const paramsDetach = {...};
const cmdDetach = new DetachVolumeCommand(paramsDetach);
const dataDetach = client.send(cmdDetach);

const paramsAttach = {...};
const cmdAttach = new AttachVolumeCommand(paramsAttach);
const dataAttach = client.send(cmdAttach);

Lo siguiente es para subir archivos al "bucket".

const paramsUpload = {...};
const cmdUpload = new PutObjectCommand(paramsUpload);
const clientS3.send(cmdUpload);

Finalmente describo la estructura básica para los parámetros requeridos por cada comando.

const paramsClient = {
  region: process.ev.AWS_REGION // string con el nombre de la región
};

const paramsBucket = {
  Bucket: bucketName, // string con el nombre del "bucket"
  ACL: acl // string con el tipo de nivel de acceso
}

const paramsStopInstance = {
  InstanceIds: [ instanceId ] // lista de string con los id de las instancias
};

const paramsDetach = {
  VolumeId: volumeId // string con el id del volumen
};

const paramsAttach = {
  InstanceId: instanceId, // string con el id de la instancia
  VolumeId: volumeId, // string con el id del volumen
  Device: device // string con el nombre del dispositivo
};

const paramsUpload = {
  Bucket: bucketName, // string con el nombre del "bucket"
  ACL: acl, // string con el tipo de nivel de acceso
  Body: bodyFile, // string base 64 con el contenido (bytes) del archivo
  Key: fileName, // string con el nombre del archivo
  ContentType: type // string con el tipo de archivo
};

Comentarios

Entradas populares