Docs Menu
Docs Home
/ /
Atlas App Services
/ /

자체 S3 버킷으로 마이그레이션

이 페이지의 내용

  • S3로 마이그레이션
  • S3 버킷 만들기
  • 기존 데이터 마이그레이션
  • 애플리케이션 코드 업데이트
  • Atlas App Services 호스팅 종료
  • Atlas Function에서 S3 버킷에 액세스
  • Atlas Function과 통합
  • S3 버킷에 액세스하는 함수 작성

중요

최신의 정확한 정보를 얻으려면 항상 MongoDB Atlas 와 Amazon Web Services의 공식 문서를 참조하세요. 구체적인 단계는 프로젝트의 세부 정보와 사용된 기술에 따라 달라질 수 있습니다.

정적 콘텐츠의 Blob 저장소로 MongoDB Atlas 정적 호스팅 서비스만 사용하고 클라이언트 애플리케이션을 호스팅하지 않는 경우, 아래 단계에 따라 Atlas 호스팅 사용에서 자체 S3 버킷 사용으로 마이그레이션하세요.

1

아직 설정하지 않은 경우 Amazon Web Services 계정에서 자체 S3 버킷을 설정합니다. 액세스 권한 및 암호화 옵션 등 요구 사항에 따라 버킷 설정을 구성합니다.

2

기존 데이터를 MongoDB Atlas 호스팅에서 S3 버킷으로 마이그레이션합니다. 데이터의 양과 특정 요구 사항에 MongoDB App Services CLIappservices pull --include-hosting따라 ()를 사용하여 에서 데이터를 내보낸3 Amazon Web Services CLI 다음 또는 Amazon Web Services SDK.

3

MongoDB Atlas 호스팅 대신 S3 버킷과 상호 작용하도록 애플리케이션 코드를 수정합니다. 여기에는 App Services CLI 명령을 사용하여 파일 업로드 또는 다운로드를 처리하는 코드 업데이트가 포함됩니다.

4

파일이 S3 버킷에 성공적으로 배포되는지 확인했으면 Atlas App Services 앱에서 호스팅된 파일을 삭제합니다. 참고로, Atlas App Services의 호스팅 도메인은 3월 12, 2025 부터 더 이상 실행되지 않습니다.

Atlas Functions 에서 S3 버킷에 저장된 정적 콘텐츠에 액세스 할 수 있습니다. 이렇게 하려면 다음을 수행해야 합니다.

  1. Atlas Function과 통합

  2. S3 버킷에 액세스하는 함수 작성

중요

테스트 및 유효성 검사

Atlas Function을 테스트하여 S3 버킷에 있는 객체에 성공적으로 액세스하고 객체를 조작할 수 있는지 확인합니다. 함수가 예상대로 작동하고 오류를 정상적으로 처리하는지 확인합니다.

@aws-sdk 외부 종속성 을 사용하여 S3 에 업로드합니다. Atlas App Services는 종속성을 자동으로 변환하고 대부분의 기본 Node.js 모듈도 지원합니다.

외부 종속성을 가져와서 사용하려면 먼저 애플리케이션에 종속성을 추가해야 합니다. 패키지를 이름으로 추가 하거나 종속성 디렉토리를 업로드할 수 있습니다.

중요

Amazon Web Services SDK 지원

Atlas App Services는 아직 Amazon Web Services SDK의 3 버전을 지원하지 않습니다. npm 모듈을 지정할 때 버전 2 SDK 사용

S3 버킷과 상호 작용하는 MongoDB Atlas Function을 작성합니다. 이러한 함수는 파일 업로드, 파일 다운로드, 객체 나열, S3 버킷에서 객체 삭제와 같은 다양한 작업을 수행할 수 있습니다.

이 가이드 에서는 몇 가지 기본적인 예를 다룹니다. 클라이언트 명령 의3 전체 클라이언트 확인하여 S 버킷과 상호 작용 하는 다른 방법을 탐색할 수3 있습니다. @aws-sdk/client-s .

Amazon Web Services 요청을 인증하려면 Access Key ID와 비밀 액세스 키를 values 로 저장합니다. 그런 다음 함수 내에서 액세스하여 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);
}

정적 자산을 가져와서 URL에서 정적 자산을 다운로드하거나 로컬 파일로 업로드하여 S3 에 업로드합니다.

다운로드한 콘텐츠를 S3 에 업로드하려면 HTTP 라이브러리 또는 http 또는 https 와 같은 내장 Node.js 모듈을 사용하여 URL에서 정적 자산을 다운로드합니다. 그런 다음 다운로드한 콘텐츠를 S3 에 업로드할 수 있습니다.

다음은 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();

로컬 자산을 S3 에 업로드하려면 다음 코드 스니펫을 사용하세요.

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

돌아가기

렌더링으로 마이그레이션