
사내 임시 백엔드 구축을 위한 간단 학습
AWS Lambda란 AWS에서 제공하는 서버리스 서비스
필요시에만 코드를 실해앟고 코드가 실행되지 않을 때는 요금이 부여되지 않는 서비스
평소에는 프로비저닝 상태로 서비스를 유지하고 내가 필요할 때 코드를 실행하고 그때만 어떤 처리를 한 뒤 응답을 받고 종료
app을 실행하기 위한 별도의 서버 set이 필요하지 않고 바로 코드를 실행해주는 서비스
즉, 항상 서버가 떠있는 상태가 아니라 내가 필요할 때만 코드를 실행하고 그에 대한 비용을 지불하는 것
node.js로 작성한 lambda 함수 예제
exports.handler = async (event) => {
// Lambda 함수에 전달된 이벤트 확인
console.log('Received event:', JSON.stringify(event, null, 2));
// 입력 이벤트로부터 필요한 데이터 추출
const name = event.name || 'World';
// 응답 생성
const response = {
statusCode: 200,
body: JSON.stringify({ message: `Hello, ${name}!` })
};
return response;
};
람다 함수에 외부 API 요청을 할 수 있나?
axios, node-fetch 등의 HTTP 요청 라이브러리를 사용const axios = require('axios');
exports.handler = async (event) => {
try {
// 외부 API에 GET 요청 보내기
const response = await axios.get('https://api.example.com/data');
// 응답 데이터 처리
const responseData = response.data;
// 응답 생성
const responseBody = {
statusCode: 200,
body: JSON.stringify(responseData)
};
return responseBody;
} catch (error) {
// 오류 처리
console.error('Error:', error);
// 오류 응답 생성
const errorResponse = {
statusCode: 500,
body: JSON.stringify({ message: 'Internal Server Error' })
};
return errorResponse;
}
};
람다에서 외부 라이브러리 관리는 어떤식으로 될까 ?
AWS에서 서버리스 애플리케이션을 빌드하고 실행하는 개발자 환경을 개선하는 도구 키트
API Gateway는 클라이언트가 Lambda 함수에 액세스할 수 있는 엔드포인트 역할을 수행
일반적으로 SAM 템플릿에서 API Gateway 리소스를 정의하고 Lambda 함수와 연결
API Gateway 리소스에는 사용자가 액세스할 수 있는 엔드포인트 URL이 포함
SAM CLI를 사용하여 배포할 때, 배포가 성공하면 SAM CLI는 생성된 API Gateway 엔드포인트의 URL을 제공
또한 AWS 콘솔에서 Lambda 함수를 선택하고 해당 함수의 트리거 탭을 확인하면 API Gateway의 엔드포인트 URL을 확인할 수 있다.
따라서 Lambda 함수를 배포하면 해당 함수에 대한 API Gateway 엔드포인트가 자동으로 관리되며,
이를 통해 클라이언트가 함수에 액세스할 수 있다.