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.
Migrar a S3
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.
Migrar datos existentes
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.
Cerrar el alojamiento de Atlas App Services
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.
Acceder al depósito S3 desde las funciones de Atlas
Puedes acceder al contenido estático almacenado en tu3 bucket S desde Atlas Functions. Para ello, necesitas:
Integrar con funciones Atlas
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.
Integrar con funciones Atlas
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
Escribir funciones para acceder a un contenedor S3
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.
Autenticar solicitudes de AWS
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); }
Obtener un activo y subirlo a S3
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();
Subir activo local a S3
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); } });