Migrar para seu próprio bucket S3
Nesta página
Importante
Consulte sempre a documentação oficial do MongoDB Atlas e da Amazon Web Services para obter as informações mais atualizadas e precisas. As etapas específicas podem variar dependendo dos detalhes do seu projeto e das tecnologias utilizadas.
Migrar para S3
Se você estiver usando apenas o serviço de hospedagem estática do MongoDB Atlas como um armazenamento de blobs para conteúdo estático e não estiver hospedando um aplicativo cliente, siga as etapas abaixo para migrar da hospedagem do Atlas para o uso de seu próprio bucket S3 .
Migrar dados existentes
Migre seus dados existentes da hospedagem do MongoDB Atlas para seu contêiner S3 . Dependendo da quantidade de dados e de seus requisitos específicos, isso pode envolver a exportação de dados do MongoDB com a App Services CLI (appservices pull --include-hosting
) e o upload dos dados para o S3 usando ferramentas como a Amazon Web Services CLI ou Amazon Web Services SDK.
Encerrar a hospedagem do Atlas App Services
Depois de verificar se a implantação bem-sucedida dos seus arquivos no bucket S3 , exclua os arquivos hospedados do aplicativo Atlas App Services. Lembre-se de que a hospedagem de domínios no Atlas App Services não será mais executada a partir de 12 de março de 2025.
Acessar o bucket S3 a partir do Atlas Functions
Você pode acessar o conteúdo estático armazenado em seu bucket S3 a partir do Atlas Functions. Para fazer isso, você precisa:
Integrar com Atlas Functions
Funções de gravação para acessar um bucket S3
Importante
Testar e validar
Teste suas Atlas Functions para garantir que elas possam acessar e manipular objetos com êxito no bucket S3 . Valide que as funções se comportam conforme o esperado e lidam com erros normalmente.
Integrar com Atlas Functions
Faça o upload para S3 usando a dependência externa @aws-sdk
. O Atlas App Services transpila automaticamente as dependências e também oferece suporte à maioria dos módulos Node.js padrão.
Para importar e usar uma dependência externa, primeiro você precisa adicionar a dependência ao seu aplicativo. Você pode adicionar pacotes por nome ou enviar um diretório de dependências.
Importante
Suporte ao SDK do Amazon Web Services
Atlas App Services ainda não é compatível com a versão 3 do Amazon Web Services SDK. Use a versão 2 do SDK ao especificar o módulo npm
Funções de gravação para acessar um bucket S3
Escreva funções do MongoDB Atlas que interagem com seu bucket S3 . Essas funções podem executar várias operações, como upload de arquivos, download de arquivos, listar objetos e excluir objetos do bucket S3 .
Veremos alguns exemplos básicos neste guia. Talvez você queira explorar outras maneiras de interagir com seu3 bucket S visualizando a lista completa de comandos do cliente para o @aws-sdk/client-s3.
Autenticar solicitações de serviços web da Amazon
Para autenticar solicitações Amazon Web Services, armazene seu ID de chave de acesso e chave de acesso secreta como valores. Em seguida, você pode acessá-los dentro de funções e passá-los para o 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); }
Buscar um ativo e fazer upload para S3
Buscar ativos estáticos e carregá-los em S3 fazendo o download de ativos estáticos a partir da URL ou carregá-los como arquivos locais.
Para carregar o conteúdo baixado para S3, use uma biblioteca HTTP ou módulos Node.js integrados, como http
ou https
, para baixar o ativo estático a partir da URL. Você pode então fazer upload do conteúdo baixado para S3.
Aqui está um exemplo de baixar um ativo utilizando a 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();
Carregar ativo local para S3
Para carregar um ativo local para S3, use o seguinte trecho 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); } });