์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- AWS
- ์๋ง์กด์น์๋น์ค
- ๋ฆฌ์กํธ
- nlp
- ํ๋ธ๋ก
- ๊นํ๋ธ
- ํ์ด์ฌ
- ๋ฐ์ดํฐ ๋ถ์
- ๋น ๋ฐ์ดํฐ
- ์ฝ๋ฉํ ์คํธ
- erp
- tableau
- abap
- github
- ๋ฅ๋ฌ๋
- ์ฝํ
- DFS
- ํ๋ธ๋ฃจ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ํ ์คํธ๋ถ์
- ์ธ๊ณต์ง๋ฅ
- react
- ์์ฐ์ด์ฒ๋ฆฌ
- ๋ฐ์ดํฐ๋ถ์
- ์๊ณ ๋ฆฌ์ฆ
- ๋ฐฑ์ค
- AI
- sap
- ํ ์คํธ๋ง์ด๋
- Git
- Today
- Total
DATA101
ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (6) AWS Lambda ํจ์ ์์ฑ ๋ณธ๋ฌธ
ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (6) AWS Lambda ํจ์ ์์ฑ
DATA101 2022. 6. 10. 03:02๐ ์๋ฆฌ์ฆ ํฌ์คํ
1. ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (1) React ๊ธฐ๋ฐ Frontend ๊ฐ๋ฐ
2. ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (2) AWS IAM ์ญํ ์์ฑ
3. ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (3) AWS Lambda ์์ฑ
4. ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (4) AWS S3 ์์ฑ
5. ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (5) AWS API Gateway ์์ฑ
6. ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (6) AWS Lambda ํจ์ ์์ฑ
7. ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (7) Axios ๊ธฐ๋ฐ API Call
8. ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (8) ํ์ผ ์ ๋ก๋ ํ ์คํธ
9. ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (9) AWS S3 ๊ธฐ๋ฐ ์น ํธ์คํ
๐จโ๐ป ๋ค์ด๊ฐ๋ฉฐ
๋ณธ ํฌ์คํ ์์๋ Backend ์ญํ ๋ก์จ Lambda ํจ์ ์์ฑ ์ฝ๋๋ฅผ ๊ณต์ ํฉ๋๋ค.
1. ์ ์ฒด ์ฝ๋
Lambda ํจ์์ ์์ฑํด์ผ ํ ์ ์ฒด ์ฝ๋๋ ์๋์ Github์ ์ ๋ก๋ํ์์ผ๋ ์ฐธ๊ณ ํ์๊ธธ ๋ฐ๋๋๋ค.
https://github.com/park-gb/file-uploader-backend
park-gb/file-uploader-backend
AWS์ React๋ฅผ ํ์ฉํ ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌํ: Backend. Contribute to park-gb/file-uploader-backend development by creating an account on GitHub.
github.com
์์ ์์ฑํ๋ Lambda ํจ์ ๋ด ์ฝ๋๋ ์๋์ ๊ทธ๋ฆผ 1๊ณผ ๊ฐ์ด 3๊ฐ์ ์์ค ํ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.

2. ์์ค ํ์ผ
2.1. ์ธ๋ฑ์ค ํ์ผ
3๋ฒ์งธ ๋ผ์ธ์ ์์ฑํ API ๊ฒ์ดํธ์จ์ด ๋ฆฌ์์ค ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค. ๋ฉ์๋๊ฐ POST์ด๋ฉด์ ์์ฑํ API ๊ฒ์ดํธ์จ์ด ๋ฆฌ์์ค ์ด๋ฆ๊ณผ ๊ฐ์ ๊ฒฝ์ฐ, ํ์ผ ํ๋ก์ธ์ฑ ์ฝ๋๋ฅผ ์คํ์ํต๋๋ค.
// index.js
const fileProcessingService = require('./file-processing-service');
const util = require('./util');
const fileUploadPath = '/file-upload'; // API ๊ฒ์ดํธ์จ์ด ๋ฆฌ์์ค ์ด๋ฆ
exports.handler = async (event) => {
console.log('Request Event: ', event);
let response;
switch(true){
case event.httpMethod === 'POST' && event.path === fileUploadPath:
response = await fileProcessingService.process(event.body);
break;
default:
response = util.buildResponse(404);
}
return response;
};
2.2. ํ์ผ ํ๋ก์ธ์ฑ ํ์ผ
5๋ฒ์งธ ๋ผ์ธ์ ์์ ์์ฑํ S3 ๋ฒํท์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ ๋ก๋ ํ ํ์ผ์ ๊ฐ์ฒด๋ก ๋ฐ์ S3๋ก put ํฉ๋๋ค.
// file-processing-service.js
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
const util = require("./util");
const bucketName = '์์ฑํ S3 ๋ฒํท ์ด๋ฆ ์
๋ ฅ'; // S3 ๋ฒํท์ด๋ฆ ์
๋ ฅ
const s3Subfolder = 'data';
async function process(requestBody){
const fileName = requestBody.split('\r\n')[1].split(';')[2].split('=')[1].replace(/^"|$/g, '').trim();
let fileContent = requestBody.split('\r\n')[4].trim();
fileContent += `\n\nProcess Timestap: ${new Date().toISOString()}`
const params = {
Bucket: bucketName,
Key: `${s3Subfolder}/${fileName}`,
Body: fileContent
}
await s3.putObject(params).promise();
return util.buildResponse(200,requestBody);
}
module.exports.process = process;
2.3. Response Builder ํ์ผ
๋ชจ๋ ๋๋ฉ์ธ์์ ์ ๊ทผํ ์ ์๋๋ก ์ธํ ํ์์ต๋๋ค.
// util.js
function buildResponse(statusCode, body){
return{
statusCode: statusCode,
headers:{
'Access-Control-Allow-Origin' : '*',
'Content-Type' : 'application/json'
},
body: JSON.stringify(body)
}
}
module.exports.buildResponse = buildResponse;
์ด์ Backend๋ฅผ ๋ด๋นํ๋ ๋๋ค ํจ์์ ํ์ํ ์ฝ๋๋ ๋ชจ๋ ์์ฑํ์์ต๋๋ค. ์ด์ ์๋์ ๊ทธ๋ฆผ 2์ ๊ฐ์ด, Deploy(๋ฐฐํฌ) ๋ฒํผ์ ๋๋ฌ์ฃผ์ธ์.

๋ค์ ํฌ์คํ ์์๋ ํ๋ก ํธ์๋์์ axios๋ฅผ ํ์ฉํ์ฌ API๋ฅผ Callํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํฉ๋๋ค.
๐ ์๋ฆฌ์ฆ ํฌ์คํ
1. ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (1) React ๊ธฐ๋ฐ Frontend ๊ฐ๋ฐ
2. ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (2) AWS IAM ์ญํ ์์ฑ
3. ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (3) AWS Lambda ์์ฑ
4. ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (4) AWS S3 ์์ฑ
5. ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (5) AWS API Gateway ์์ฑ
6. ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (6) AWS Lambda ํจ์ ์์ฑ
7. ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (7) Axios ๊ธฐ๋ฐ API Call
8. ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (8) ํ์ผ ์ ๋ก๋ ํ ์คํธ
9. ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (9) AWS S3 ๊ธฐ๋ฐ ์น ํธ์คํ
ํฌ์คํ ๋ด์ฉ์ ์ค๋ฅ๊ฐ ์๊ฑฐ๋ ๋ณด์ํ ์ ์ด ์๋ค๋ฉด ์๋์ ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์!
๊ทธ๋ผ ์ค๋๋ ์ฆ๊ฒ๊ณ ๊ฑด๊ฐํ ํ๋ฃจ ๋ณด๋ด์๊ธธ ๋ฐ๋๋๋ค :)
๊ณ ๋ง์ต๋๋ค๐
'SW ๊ฐ๋ฐ > Amazon Web Service' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (8) ํ์ผ ์ ๋ก๋ ํ ์คํธ (2) | 2022.06.10 |
---|---|
ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (7) Axios ๊ธฐ๋ฐ API Call (0) | 2022.06.10 |
ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (5) AWS API Gateway ์์ฑ (0) | 2022.06.10 |
ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (4) AWS S3 ์์ฑ (0) | 2022.06.10 |
ํ์ผ ์ ๋ก๋ ์น ํ์ด์ง ๊ตฌ์ถ: (3) AWS Lambda ์์ฑ (0) | 2022.06.10 |