자체 S3 버킷으로 마이그레이션
이 페이지의 내용
중요
최신의 정확한 정보를 얻으려면 항상 MongoDB Atlas 와 Amazon Web Services의 공식 문서를 참조하세요. 구체적인 단계는 프로젝트의 세부 정보와 사용된 기술에 따라 달라질 수 있습니다.
S3로 마이그레이션
정적 콘텐츠의 Blob 저장소로 MongoDB Atlas 정적 호스팅 서비스만 사용하고 클라이언트 애플리케이션을 호스팅하지 않는 경우, 아래 단계에 따라 Atlas 호스팅 사용에서 자체 S3 버킷 사용으로 마이그레이션하세요.
기존 데이터 마이그레이션
기존 데이터를 MongoDB Atlas 호스팅에서 S3 버킷으로 마이그레이션합니다. 데이터의 양과 특정 요구 사항에 MongoDB App Services CLIappservices pull --include-hosting
따라 ()를 사용하여 에서 데이터를 내보낸3 Amazon Web Services CLI 다음 또는 Amazon Web Services SDK.
Atlas Function에서 S3 버킷에 액세스
Atlas Functions 에서 S3 버킷에 저장된 정적 콘텐츠에 액세스 할 수 있습니다. 이렇게 하려면 다음을 수행해야 합니다.
Atlas Function과 통합
S3 버킷에 액세스하는 함수 작성
중요
테스트 및 유효성 검사
Atlas Function을 테스트하여 S3 버킷에 있는 객체에 성공적으로 액세스하고 객체를 조작할 수 있는지 확인합니다. 함수가 예상대로 작동하고 오류를 정상적으로 처리하는지 확인합니다.
Atlas Function과 통합
@aws-sdk
외부 종속성 을 사용하여 S3 에 업로드합니다. Atlas App Services는 종속성을 자동으로 변환하고 대부분의 기본 Node.js 모듈도 지원합니다.
외부 종속성을 가져와서 사용하려면 먼저 애플리케이션에 종속성을 추가해야 합니다. 패키지를 이름으로 추가 하거나 종속성 디렉토리를 업로드할 수 있습니다.
중요
Amazon Web Services SDK 지원
Atlas App Services는 아직 Amazon Web Services SDK의 3 버전을 지원하지 않습니다. npm 모듈을 지정할 때 버전 2 SDK 사용
S3 버킷에 액세스하는 함수 작성
S3 버킷과 상호 작용하는 MongoDB Atlas Function을 작성합니다. 이러한 함수는 파일 업로드, 파일 다운로드, 객체 나열, S3 버킷에서 객체 삭제와 같은 다양한 작업을 수행할 수 있습니다.
이 가이드 에서는 몇 가지 기본적인 예를 다룹니다. 클라이언트 명령 의3 전체 클라이언트 확인하여 S 버킷과 상호 작용 하는 다른 방법을 탐색할 수3 있습니다. @aws-sdk/client-s .
Amazon Web Services 요청 인증
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); }
자산 가져오기 및 S3에 업로드
정적 자산을 가져와서 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에 로컬 자산 업로드
로컬 자산을 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); } });