AWS Lambda는 Amazon Web Services(AWS)의 서버리스 컴퓨팅은 서버를 직접 관리하지 않고도 코드를 실행할 수 있게 해주는 서비리스 컴퓨팅 서비스이다.
사용사례
예시:
const AWS = require("aws-sdk");
AWS.config.update({
region: "ap-northeast-2"
});
const s3 = new AWS.S3();
const STORAGE_BUCKET_NAME = `upload-storage`; //저장될 버킷
exports.handler = async (event, context) => {
try {
const params = { Bucket: STORAGE_BUCKET_NAME, Key: event.fileKey };
const signedUrl = await s3.getSignedUrlPromise("putObject", params); //put으로 해야함
return signedUrl
} catch (error) {
console.error(error);
}
};
//환경변수
VITE_AWS_API_HOST=api주소 입력
//api set 정보
const set = [
//aws file upload
{
name: 'getSignedUrl',
method: 'post',
url: '/develop/s3-signed-url',
},
]
// api call header에 Accept 넣어줘야함
if (apiType === 'aws') headers.Accept = '/'
//signedUrl을 받아서 파일을 저장하는 함수
const { mutate, isLoading } = useMutation(async (params: any) => {
const res = await api.call('getSignedUrl', params.name, 'aws') //signedUrl을 받음
await axios.put(res.data, params.value) // 받아온 url로 파일을 저장
const url = res.data.substring(0, res.data.indexOf(params.name.fileKey) + params.name.fileKey.length)
// s3에 저장될 파일의 링크
// 해당 링크를 서버에 저장하는 요청을 하면됨
return url
})
서버 관리 필요 없음:
자동 확장 및 축소(Scalability):
비용 효율적:
빠른 배포:
다양한 이벤트 소스:
보안:
시작 지연(Cold Start):
제한된 실행 시간:
종속성 관리:
로컬 개발, 테스트 어려움:
함수 환경 제약:
벤더 종속성:
AWS Lambda는 서버리스 아키텍처의 장점을 잘 살린 기능으로, 특히 작은 규모의 애플리케이션이나 특정 이벤트 기반 작업에 매우 유용합니다. 하지만 실행 시간 제한, 콜드 스타트 문제, 복잡한 종속성 관리 등 몇몇 단점도 존재합니다. 이를 잘 이해하고 적절히 활용한다면 효율적이고 비용 효과적인 시스템을 구축할 수 있을 것입니다.