안정적인 서비스 운영을 위하여 아마존과 같은 글로벌 클라우드 회사에서 제공하는 서버및 데이타베이스, 파일공유시스템등의 서비스를 이용해서 새로운 서비스를 개발하고 출시하는 것이 요즘의 트렌드하고 할 수 있습니다.
다양한 클라우드 서비스 중에서 아마존 S3(Simple Storage Service) 이미지 서버는 NFS(Network File System), NAS(Network Attached Storage)등 기존의 파일공유시스템보다 구축및 운영비용이 저렴하면서도 안정적인 서비스를 제공할 수 있습니다.
AMAZON S3 연동
1 2 3 4 |
// 노드모듈 임포트 import fs from 'react-native-fs'; import { decode } from 'base64-arraybuffer'; import S3 from 'aws-sdk/clients/s3'; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
// 이미지 등록 private async uploadImageOnS3 (image_order: number, file: { uri: any; name: any; type?: string; }) { const s3bucket = new S3({ accessKeyId: CONFIG.ACCESS_KEY_ID, secretAccessKey: CONFIG.SECRET_ACCESS_KEY, signatureVersion: 'v4', }); let contentType = 'image/jpeg'; let contentDeposition = 'inline;filename="' + file.name + '"'; const base64 = await fs.readFile(file.uri, 'base64'); const arrayBuffer = decode(base64); s3bucket.createBucket(() => { const params = { Bucket: CONFIG.BUCKET_NAME, Key: file.name, Body: arrayBuffer, ContentDisposition: contentDeposition, ContentType: contentType, }; s3bucket.upload(params, (err: any, data: { Location: string; }) => { if (err) { console.log('error in callback'); } }); }); }; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// 이미지 삭제 private async deleteImageOnS3 (keyfile: string) { const s3bucket = new S3({ accessKeyId: CONFIG.ACCESS_KEY_ID, secretAccessKey: CONFIG.SECRET_ACCESS_KEY, signatureVersion: 'v4', }); var params = { Bucket: CONFIG.BUCKET_NAME, Key: keyfile }; s3bucket.deleteObject(params, function(err, data) { if (err) { console.log(err, err.stack); } }); } |