μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |
- Git
- react
- μ½λ©ν μ€νΈ
- λΉ λ°μ΄ν°
- erp
- λ°μ΄ν° λΆμ
- github
- λ°μ΄ν°λΆμ
- DFS
- κΉνλΈ
- 리μ‘νΈ
- abap
- ν μ€νΈλ§μ΄λ
- tableau
- nlp
- μλ§μ‘΄μΉμλΉμ€
- νμ΄μ¬
- μλ°μ€ν¬λ¦½νΈ
- λ₯λ¬λ
- μΈκ³΅μ§λ₯
- AI
- μμ°μ΄μ²λ¦¬
- ν μ€νΈλΆμ
- AWS
- νλΈλ£¨
- νλΈλ‘
- λ°±μ€
- sap
- μ½ν
- μκ³ λ¦¬μ¦
- Today
- Total
Hey Tech
νμΌ μ λ‘λ μΉ νμ΄μ§ ꡬμΆ: (6) AWS Lambda ν¨μ μμ± λ³Έλ¬Έ
νμΌ μ λ‘λ μΉ νμ΄μ§ ꡬμΆ: (6) AWS Lambda ν¨μ μμ±
Tony Park (ν λ) 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
μμ μμ±νλ 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 |