서버리스(serverless)란 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델입니다.
서버리스 모델에도 서버가 존재하긴 하지만, 애플리케이션 개발에서와 달리 추상화되어 있습니다. 클라우드 제공업체가 서버 인프라에 대한 프로비저닝, 유지 관리, 스케일링 등의 일상적인 작업을 처리하며, 개발자는 배포를 위해 코드를 컨테이너에 패키징하기만 하면 됩니다.
Amazon API Gateway는 규모와 관계없이 REST 및 WebSocket API를 생성, 게시, 유지, 모니터링 및 보호하기 위한 AWS 서비스입니다. API 개발자는 AWS 또는 다른 웹 서비스를 비롯해 AWS 클라우드에 저장된 데이터에 액세스하는 API를 생성할 수 있습니다. API Gateway API 개발자는 자체 클라이언트 애플리케이션에서 사용할 API를 생성할 수 있습니다. 또는 타사 앱 개발자가 API를 사용하도록 제공할 수도 있습니다.
Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다. Lambda는 고가용성 컴퓨팅 인프라에서 코드를 실행하고 서버와 운영 체제 유지 관리, 용량 프로비저닝 및 자동 조정, 코드 및 보안 패치 배포, 코드 모니터링 및 로깅 등 모든 컴퓨팅 리소스 관리를 수행합니다. Lambda를 사용하면 거의 모든 유형의 애플리케이션 또는 백엔드 서비스에 대한 코드를 실행할 수 있습니다. Lambda가 지원하는 언어 중 하나로 코드를 공급하기만 하면 됩니다.
Amazon DynamoDB는 완벽하게 관리되는 NoSQL 데이터베이스 서비스로서 원활한 확장성과 함께 빠르고 예측 가능한 성능을 제공합니다. DynamoDB는 분산 데이터베이스를 운영하고 크기 조정하는 데 따른 관리 부담을 줄여서 하드웨어 프로비저닝, 설정 및 구성, 복제, 소프트웨어 패치 또는 클러스터 크기 조정에 대해 걱정할 필요가 없게 합니다. 또한 DynamoDB는 유휴 시 암호화를 제공하여 중요한 데이터 보호와 관련된 운영 부담 및 복잡성을 제거합니다.
아래와 같이 함수가 뚝딱 만들어진다.
RESTful API를 구축해야 하기 때문에 API "Gateway" 선택
설정완료 후
트리거 섹션에 API 엔드포인트로 접속 하면 람다 함수가 작동하는것을 확인 하 수 있다.
다음 태그 클릭
정책이 연결되면 추가된다
생성완료
생성된 테이블 클릭 시
const AWS = require('aws-sdk')
const dynamodb = new AWS.DynamoDB.DocumentClient()
exports.handler = async (event) => {
let response
if (!event.queryStringParameters || !event.queryStringParameters.id) {
response = {
statusCode: 400,
body: JSON.stringify("id가 없습니다."),
}
return response
} else {
let params = {
Item: {
id: event.queryStringParameters.id,
data: event.queryStringParameters
},
TableName: "api_table",
}
await dynamodb.put(params).promise().catch(e => {
response = {
statusCode: 500,
body: JSON.stringify("에러가 발생하였습니다: " + e),
}
return response
})
response = {
statusCode: 200,
body: JSON.stringify("데이터가 성공적으로 저장되었습니다.")
}
return response
}
};
파라미터가 적용 되지 않았기 때문에 "id가 없습니다" error가 표시 된다
url끝에 ?id=test 라고 작성 해 보면 데이터가 저장 된다
서비스 > dynamoDB > 항목
저장된 데이터 확인
참고 : https://www.redhat.com/ko/topics/cloud-native-apps/what-is-serverless
참고 : https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/welcome.html