Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Archivos de host

Migrate to Your Own S3 Bucket

Importante

Always refer to the official documentation of both MongoDB Atlas and AWS for the most up-to-date and accurate information. The specific steps may vary depending on the details of your project and the technologies used.

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, incluidos 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 tu bucket S3 desde Funcionalidades de Atlas. Para hacerlo, debes:

  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.

Upload to S3 using the @aws-sdk external dependency. Atlas App Services automatically transpiles dependencies and also supports most default Node.js modules.

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();

To upload a local asset to S3, use the following code snippet:

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