Docs Menu
Docs Home
/ /
Archivos de host

Migrar a su propio bucket S3

Importante

Consulte siempre la documentación oficial de MongoDB Atlas y AWS para obtener la información más actualizada y precisa. Los pasos específicos pueden variar según los detalles de su proyecto y las tecnologías utilizadas.

Si solo utiliza el servicio de alojamiento estático MongoDB Atlas como almacén de blobs para contenido estático y no aloja una aplicación cliente, siga los pasos a continuación para migrar del uso de Atlas Hosting al uso de su propio bucket S3.

1

Configura tu propio bucket S3 en tu cuenta de AWS si aún no lo has hecho. Configura los ajustes del bucket según tus requisitos, incluyendo los permisos de acceso y las opciones de cifrado.

2

Migre sus datos existentes de MongoDB Atlas Hosting a su3 bucket S. Según la cantidad de datos y sus requisitos específicos, esto podría implicar exportar datos de MongoDB con la CLI de App Services (appservices pull --include-hosting) y luego cargar los datos a S3 usando herramientas como AWS CLI o AWS SDK.

3

Modifique el código de su aplicación para que interactúe con el bucket S3 en lugar de con MongoDB Atlas Hosting. Esto incluye actualizar el código que gestiona la carga o descarga de archivos, si utiliza los comandos de la CLI de App Services para ello.

4

Una vez que haya verificado que sus archivos se implementaron correctamente en su bucket S3, elimine los archivos alojados de su aplicación Atlas App Services. Como recordatorio, los dominios alojados en Atlas App Services dejarán de funcionar a partir del 30 ​​de septiembre de 2025.

Puedes acceder al contenido estático almacenado en tu3 bucket S desde Atlas Functions. Para ello, necesitas:

  1. Integrar con funciones Atlas

  2. Escribir funciones para acceder a un depósito S3

Importante

Probar y validar

Pruebe sus funciones Atlas para garantizar que puedan acceder y manipular correctamente los objetos del bucket S3. Verifique que las funciones se comporten como se espera y gestionen los errores correctamente.

Sube a S3 usando la @aws-sdk dependencia externa. Atlas App Services transpila automáticamente las dependencias y también es compatible con la mayoría de los módulos predeterminados de Node.js.

Para importar y usar una dependencia externa, primero debe agregarla a su aplicación. Puede agregar paquetes por nombre o cargar un directorio de dependencias.

Importante

Compatibilidad con AWS SDK

App Services aún no admite la versión 3 del AWS SDK. Utiliza la versión 2 del SDK al especificar el módulo npm

Escriba funciones de MongoDB Atlas que interactúen con su bucket S3. Estas funciones pueden realizar diversas operaciones, como cargar y descargar archivos, listar y eliminar objetos del bucket S3.

En esta guía, cubriremos algunos ejemplos básicos. Quizás quieras explorar otras formas de interactuar con tu bucket S3 consultando la guía completa. lista de comandos del cliente para @aws-sdk/client-s3.

Para autenticar solicitudes de AWS, almacena tu ID de clave de acceso y tu clave de acceso secreta como valores. Luego puedes acceder a ellos dentro de las funciones y pasarlos al SDK.

exports = async function() {
// require calls must be in exports function
const { S3Client, PutObjectCommand, GetObjectCommand } = require("@aws-sdk/client-s3");
const s3Client = new S3Client({
region: "us-east-1", // replace with your AWS region
credentials: {
accessKeyId: context.values.get("awsAccessKeyId"),
secretAccessKey: context.values.get("awsSecretAccessKey"),
},
});
const putCommand = new PutObjectCommand({
Bucket: "bucketName",
Key: "keyName",
Body: EJSON.stringify({ hello: "world" }),
});
const putResult = await s3Client.send(putCommand);
const getCommand = new GetObjectCommand({
Bucket: "bucketName",
Key: "keyName",
});
const getResult = await s3Client.send(getCommand);
}

Obtenga activos estáticos y cárguelos en S3 ya sea descargando activos estáticos desde la URL o cargándolos como archivos locales.

Para subir el contenido descargado a S3, usa una biblioteca HTTP o módulos integrados de Node.js como http o https para descargar el recurso estático desde la URL. Después, puedes subir el contenido descargado a S3.

A continuación se muestra un ejemplo de cómo descargar un activo utilizando la biblioteca axios:

const axios = require('axios');
const stream = require('stream');
const { promisify } = require('util');
// Promisify pipeline function to pipe streams
const pipeline = promisify(stream.pipeline);
async function uploadAssetToS3() {
try {
const response = await axios.get('URL_OF_YOUR_STATIC_ASSET', { responseType: 'stream' });
const uploadParams = {
Bucket: 'YOUR_BUCKET_NAME',
Key: 'YOUR_OBJECT_KEY',
Body: response.data
};
// Upload the static asset to S3
await s3.upload(uploadParams).promise();
console.log('Static asset uploaded successfully');
} catch (error) {
console.error('Error uploading static asset:', error);
}
}
uploadAssetToS3();

Para cargar un activo local en S3, use el siguiente fragmento de código:

const uploadParams = {
Bucket: 'YOUR_BUCKET_NAME',
// Specify the name/key for the object in the bucket (usually the file name)
Key: 'YOUR_OBJECT_KEY',
// Provide the local file to be uploaded
Body: 'STATIC_ASSET_CONTENT',
};
// Upload the static asset to S3
s3.upload(uploadParams, (err, data) => {
if (err) {
console.error('Error uploading static asset:', err);
} else {
console.log('Static asset uploaded successfully:', data.Location);
}
});

Volver

Migrar a Render

En esta página