참고 : https://www.smileshark.kr/post/all-about-aws-lambda-the-complete-beginners-guide-2
참고 : https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-util-dynamodb/
# AWS Lambda의 특징
AWS Lambda는 Serverless 컴퓨팅 서비스로, 개발자가 코드를 실행할 수 있는 서버 없이 함수형 프로그래밍을 실행할 수 있다.
Lambda 함수는 특정 이벤트에 의해 트리거되어 실행되며, 필요할 때만 코드를 실행하고 요청에 응답한다.
① 이벤트 기반 실행
• Lambda 함수는 특정 이벤트에 의해 트리거되어 실행된다.
• 예를 들어, API 요청, 파일 업로드, DataBase 변경 등 다양한 이벤트에 의해 함수가 실행될 수 있습니다.
② 서버리스 아키텍처
• 개발자는 서버를 프로비저닝하거나 관리할 필요가 없으며, 코드를 실행할 수 있는 환경을 제공받는다.
• 이는 관리 부담이나 인프라 관련 비용을 줄여준다.
③ 스케일링
• Lambda 함수는 필요한 만큼 자동으로 확장되며, 요청이 증가하면 자동으로 처리할 수 있는 인프라를 동적으로 할당한다.
• 이를 통해 사용량에 따라 비용을 최적화할 수 있다.
④ 다양한 런타임
• Lambda 함수는 여러 프로그래밍 언어로 작성할 수 있다.
( 지원되는 런타임으로는 Node.js, Python, Java, Go, Ruby 등이 있다. )
⑤ 서비스 통합
• Lambda 함수는 다양한 AWS 서비스와 통합될 수 있다.
• S3, DynamoDB, API Gateway, SNS, SQS 등의 서비스와 연동하여 Data를 처리하거나 비즈니스 로직을 실행한다.
⑥ 이벤트 드리븐 아키텍처
• Lambda 함수는 이벤트를 기반으로 실행되므로, 이벤트 드리븐 아키텍처를 구축할 때 유용하게 사용된다.
1. IAM 권한 설정
IAM( Identity and Access Management )란 AWS 계정 내에서 리소스에 대한 보안 및 Access 를 관리하는 서비스이다.
IAM을 사용하면 AWS 리소스에 대한 액세스를 제어하고, 사용자와 그룹에 대한 권한을 관리하며, 암호화 키 및 보안 자격 증명을 관리할 수 있습니다.
AWS Manage Ment Consol에서 IAM을 서비스를 찾는다.
IAM 서비스에 접속하면 상단 우측의 지역설정이 글로벌로 지정되어 있다.
좌측 카테고리에서 역할을 선택하고 역할 생성 버튼을 클릭하여 준다.
역할 생성 창에서 아래와 화면과 같이 선택하여 준다.
① 신뢰할 수 있는 엔티티 유형 : AWS 서비스
② 서비스 또는 사용 사례 : Lambda
이제 AWS Lambda와 DynamoDB를 사용하기 위한 Access 제공 권한을 추가하여 준다.
AWSLambda_FullAccess | • 사용자나 그룹은 Lambda 함수를 생성하고 관리할 수 있다. • 함수를 실행하기 위해 필요한 다른 AWS 리소스에 액세스할 수 있다. |
AmazonDynamoDBFullAccess | • DynamoDB 테이블을 생성하고 관리하며, 테이블에 데이터를 쓰고 읽을 수 있다. • DynamoDB를 사용하여 데이터를 저장, 검색 및 관리하는 모든 권한을 부여 |
AWSLambda_FullAccess와 AmazonDynamoDBFullAccess를 검색하여 선택하여 준다.
IAM의 역할 이름을 지정해 준다.
해당 포스팅에서는 『 serverless-access-role 』 이라고 지정하였다.
권한 정책 요약 항목에 이전에 선택한 AWSLambda_FullAccess와 AmazonDynamoDBFullAccess가 선택되어있는것을 확인하여 준다.
이후 역할 생성을 클릭한다.
다시 IAM 서비스 > 역할 페이지에서 생성한 역할 이름이 존재하는지 확인한다.
생성했던 역할 이름인 『 serverless-access-role 』 가 존재하는것을 확인 할 수 있다.
2. DynamoDB 저장소 - Table 제작
Amazon DynamoDB는 완전 관리형 NoSQL 데이터베이스 서비스이다.
DynamoDB를 사용하면 대규모 및 실시간 애플리케이션을 구축할 수 있으며, 빠른 성능과 확장 가능성을 통해 요구 사항에 맞게 조정할 수 있는 것이 장점이다.
AWS Manage Ment Consol에서 DynamoDB 서비스를 찾는다.
IAM을 생성하면서 AWS Manage Ment Consol의 리전이 변경되어 있을 것이다.
지역설정을 서울( ap-northeast-2 )로 되어있는지 꼭 확인하고 그렇지 않다면 서울로 바꿔준다.
좌측 카테고리 메뉴 에서 테이블을 선택하고 테이블 생성 버튼을 클릭한다.
테이블 생성 설정 페이지가 오픈되면 아래 순서대로 작업을 진행하여 준다.
① 테이블 이름 : 사용할 DynamoDB의 테이블 이름을 지어준다.
예) 해당 포스팅에서는 『 serverless-dynamodb 』를 사용하였다.
② 파티션 키( 선택 ) : 파티션 키는 DynamoDB 테이블 내에서 각 항목을 고유하게 식별하는 데 사용된다.
예) 사용자의 ID를 파티션 키로 선택한다면 식별자로서 RDB의 Primary Key의 역할을 수행한다.
③ 정렬 키( 선택 ) : 정렬 키는 파티션 내에서 항목을 정렬하는 데 사용된다.
예) 등록 시간을 정렬 키로 선택한다면 특정 사용자의 데이터의 정렬 순서를 지정하고, 범위 검색을 할 수 있다.
④ 기본 설정
설정 | 값 | 생성 후 편집 가능 |
테이블 클래스 | DynamoDB Standard | 예 |
용량 모드 | 프로비저닝됨 | 예 |
프로비저닝 읽기 용량 | 5RCU | 예 |
프로비저닝 쓰기 용량 | 5WCU | 예 |
Auto Scaling | 켜기 | 예 |
로컬 보조 인덱스 | - | 아니요 |
글로벌 보조 인덱스 | - | 아니요 |
암호화 키 관리 | Amazon DynamoDB가 소유 | 예 |
삭제 방지 | 끄기 | 예 |
리소스 기반 정책 | 활성 상태가 아님 | 예 |
모든 설정을 완료하면 테이블 생성 버튼을 클릭한다.
다시 DynamoDB의 테이블 페이지에서 생성한 테이블 이름이 존재하는지 확인해 본다.
『 serverless-dynamodb 』가 존재하는것을 확인할 수 있다.
3. Lambda - 함수 생성
AWS Lambda 함수는 여러 이벤트 소스에서 트리거될 수 있다.
Lambda 함수는 이러한 이벤트를 감지하고 트리거되면 함수가 실행되어 지정된 작업을 수행한다.
AWS Manage Ment Consol에서 Lambda 서비스를 찾는다.
상단 우측 리전 설정이 서울( ap-northeast-2 )로 되어있는지 확인한다.
좌측 카테고리에서 함수를 선택하고 함수 생성 버튼을 클릭한다.
함수 생성 페이지에서 사용할 Lmbda 함수의 설정을 잡아준다.
① 새로 작성을 선택한다.
② 사용할 Lmbda 함수의 이름을 지어준다.
( 해당 포스팅에서는 『 serverless-lambda-function 』 사용 )
③ 런타임 환경 설정
( 해당 포스팅에서는 『 Node.js 20.x 』 사용 )
④ 아키텍처 : x86_64와 arm64중 택일 한다.
( 대부분의 기본적인 Lambda 함수는 x86_64 아키텍처에서 충분히 실행된다. )
⑤ 실행 역할에서 기존 역할 사용을 선택하여 준다.
⑥ 기존 역할은 IAM에서 선언한 『 serverless-access-role 』를 선언해 주면된다.
함수가 생성되면 아래와 같이 지정함 함수 이름과 함수의 정보가 표기될 것이다.
Lambda 함수가 정상적으로 생성되었다.
그렇지만 아직 설정을 더 잡아주어야 하기에 이후에 Lambda 함수를 작성해 보도록 하자.
4. Lambda - 계층을 통한 Modeul 관리
Lambda 함수의 계층( Layer )은 주로 모듈 및 라이브러리 관리를 위해 사용됩니다.
계층을 공통 코드 및 라이브러리 공유하여 코드 중복을 줄이고, 코드의 재사용성을 높일 수 있다.
해당 포스팅에서는 Node.js를 사용하므로 Node.js 모듈을 설치하여 진행할 것이다.
※ Node.js가 설치 되지 않은 환경에서는 Node.js를 설치하고 진행해 주어야 한다.
CMD 창을 열고 아래와 같이 바탕화면에 nodejs라는 디렉토리를 생성하여 준다.
PowerShell등의 ShellScript 창을 열고 아래 순서와 같이 진행하여 준다.
먼저 사용자 로컬 환경의 Node.js를 버전을 확인해 준다.
> node -v
v20.버전
※ 버전 충돌 문제가 발생할 수 있으므로 로컬 환경의 Node.js 버전도 되도록 AWS Lambda 환경의 런타임 설정과 맞춰주는것을 권한다.
경로를 바탕화면으로 이동한다.
> cd desktop
nodejs 라는 디렉토리를 생성한다.
> mkdir nodejs
생성한 nodejs 디렉토리로 이동한다.
> cd ./nodejs
nodejs 디렉토리에 위치했는지 확인해 보자.
> pwd
Path
----
C:\Users\사용자_계정\desktop\nodejs
위와 같이 nodejs 디렉토리에 위치하는것을 확인 할 수 있다.
nodejs 경로에 위치했다면 아래의 node.js 모듈을 설치하여 준다.
> npm install @aws-sdk/client-dynamodb
> npm install @aws-sdk/util-dynamodb
> npm install uuid
> npm install moment
그럼 nodejs 폴더아래에 node_modules 디렉토리가 생성되고 기본적인 구조는 아래와같다.
nodejs
└─ node_modules
├─ .bin
├─ @aws-crypto
├─ @aws-sdk
├─ @smithy
├─ bowser
├─ fast-xml-parser
├─ mnemonist
├─ moment
├─ obliterator
├─ strnum
├─ tslib
└─ uuid
Node.js 모듈이 설치된 nodejs 디렉토리를 nodejs.zip 파일로 압축하여준다.
다시 AWS Manage Ment Consol의 Lambda 서비스에 접속한다.
좌측 카테고리에서 계층을 선택하고 계층 생성 버튼을 클릭한다.
계층 생성 페이지에서 아래와같이 계층을 구성한다.
① 생성할 계층의 이름( 해당 포스팅은 『 serverless-layer 』 사용 )
② .zip 파일 업로드 선택
③ 업로드 버튼을 클릭하고 로컬 컴퓨터에 생성한 nodejs 디렉토리를 찾는다.
④ 압축한 nodejs.zip 파일을 업로드 하여 준다.
⑤ 호환 런타임을 선택한다.( 해당 포스팅은 『 Node.js 20.x 』 사용 )
설정을 마무리 하면 생성 버튼을 클릭하여준다.
계층이 생성되면 아래와 같이 계층 정보가 표기될 것이다.
※ 새로 생성한 계층의 버전 정보는 1부터 시작한다.
다시 좌측 카테고리에서 함수를 선택하여 준다.
생성한 Lambda 함수 『 serverless-lambda-function 』을 선택하여 상세정보를 확인한다.
다시 Lambda 함수 상세 설정 화면에서 코드 메뉴를 선택하고 계층을 추가하여 준다.
[ Add a Layer ] 버튼을 클릭하여 위에서 생성한 계층을 추가할 것이다.
계층 추가 창이 나타면 아래순서대로 작업을 진행하여 준다.
① 사용자 지정 계층을 선택한다.
② 생성한 계층의 이름을 선택하여 준다.( 해당 포스팅은 『 serverless-layer 』 사용 )
③ 따로 버전을 생성하지 않았다면 최초 버전은 1번이다.
계층이 생성되면 아래 이미지와 같이 Lambda 함수에 계층이 추간된 것을 확인 할 수 있다.
『 serverless-layer 』 계층이 추가되어 있다.
5. API Gateway 생성 및 배포
API Gateway 서비스로 이동하여 새 API를 생성하여 준다.
AWS API Gateway는 클라우드 기반의 완전관리형 서비스로, 개발자가 쉽게 RESTful API를 생성, 게시, 유지 및 모니터링할 수 있도록 지원하는 기능을 지원한다.
이렇게 API Gateway 통해 생성한 API 주소를 통해 클라이언트가 Lambda 함수와 Data를 송수신 할 수 있게 한다.
AWS Manage Ment Consol에서 API Gateway을 서비스를 찾는다.
상단 우측 리전 설정이 서울( ap-northeast-2 )로 되어있는지 확인한다.
좌측 카테고리에서 API를 선택하고 API 생성 버튼을 클릭한다.
API 유형선택에서는 Rest API를 선택하여 준다.
HTTP API | OIDC 및 OAuth2와 같은 기능과 기본 CORS 지원이 내장된, 지연 시간이 짧고 비용 효율적인 REST API를 구축합니다. |
WebSocket API | 채팅 Application 또는 대시보드와 같은 실시간 사용 사례를 위해 지속적 연결을 사용하여 WebSocket API를 구축합니다. |
REST API | API 관리 기능과 함께 용청 및 응답을 완벽하게 제어할 수 있는 REST API를 개발합니다. |
REST API 프라이빗 | VPC 내에서만 Access 할 수 있는 REST API를 생성합니다. |
아래와 같은 순서대로 설정을 잡아서 REST API를 생성한다.
① 새 API를 선택한다.
② API의 이름을 지정하여 준다.( 해당 포스팅은 『 serverless-api-gatway 』로 설정한다. )
생성한 API인 『 serverless-api-gatway 』가 생성되면 아래와 같이 리소스 설정 페이지로 이동하게 된다.
좌측 카테고리에서 리소스를 선택하고 메서드 생성 버튼을 클릭한다.
메서드 생성 세부정보를 아래와 같이 설정하여 준다.
① 메서드 유형은 POST를 선택한다.
② 통합 유형은 Lambda 함수를 선택한다.
③ Lambda 프록시 통합을 활성화 해준다.
④ Lambda 함수의 리전( 서울 : ap-northeast-2 )을 선택한다.
⑤ 생성한 Lambda 함수 『 serverless-lambda-function 』를 선택하여 준다.
⑥ 기본 제한 시간을 활성화 해준다.
메서드 생성 버튼을 클릭하여 메서드를 생성하여 준다.
다시 API Gateway 페이지에로 돌아와서 POST로 생성한 메서드가 생성된 것을 확인 할 수 있다.
POST를 선택하고 API 배포 버튼을 클릭하여 준다.
Deploy API 팝업창이 오픈되면 스테이지를 새로 생성하여 준다.
① * 새 스테이지 *를 선택하여 준다.
② 스테이지 이름을 작성하여 준다.( 해당 포스팅은 『 serverless-deploy-stage 』 를 사용한다. )
배포 버튼을 클릭하여 API를 배포하여 준다.
그럼 생성한 『 serverless-api-gatway 』의 스테이지 창에 아래와 같이 스테이지 세부 정보가 표기된다.
URL 호출 항목을 보면 사용할 REST API의 URL 주소가 추가되어 있다.
해당 URL 주소를 복사하여 Web Browser를 열고 주소창에 복사 붙여넣기 하여 주자.
그럼 아래와같은 Message가 나타난다.
message | Missing Authentication Token( 인증 토큰 누락 ) |
만든 메서드는 POST이고 아직 Lambda 함수의 코드를 추가하지 않았기에 위와 같은 메시지가 나타난다.
추가로 GET 메서드도 작성하여 주도록 한다.
POST를 생성했던 경우와 마찬가지로 메서드 생성 버튼을 클릭하여 준다.
메서드 생성 세부정보를 아래와 같이 설정하여 준다.
① 메서드 유형은 GET를 선택한다.
② 통합 유형은 Lambda 함수를 선택한다.
③ Lambda 프록시 통합을 활성화 해준다.
④ Lambda 함수의 리전( 서울 : ap-northeast-2 )을 선택한다.
⑤ 생성한 Lambda 함수 『 serverless-lambda-function 』를 선택하여 준다.
⑥ 기본 제한 시간을 활성화 해준다.
메서드 생성 버튼을 클릭하여 메서드를 생성하여 준다.
다시 리소스 페이지에서 GET 메서드가 생성된 것을 확인 할 수 있다.
GET 리소스를 선택하고 마찬가지로 API 배포 버튼을 클릭한다.
Deploy API 팝업창이 오픈된다.
① 스테이지 선택창을 오픈한다.
② 이전 POST에서 생성했던 스테이지 이름을 동일하게 사용해준다.
( 해당 포스팅은 『 serverless-deploy-stage 』 를 사용한다. )
그럼 스테이지 페이지에서 호출할 URL 주소가 나타나는 것을 확인 할 수 있다.
실제로 URL 호출 주소는 POST에서 생성한 URL 주소와 동일하다.
호출 URL 주소를 복사하여 준다.
복사한 URL 주소를 Web Browser를 열고 주소창에 복사 붙여넣기 하여 준다.
message | Internal Server error( 서버 내부 오류 ) |
POST 호출시 Missing Authentication Token, GET 호출시Internal Server error
위와 같이 에러가 발생하지만 이건 아직 Lambda 함수의 코드를 GET, POST 값을 송수신 할 수 있도록
코드를 수정하지 않았기 때문이다.
이제 REST API 요청이 있을때 수행할 Lambda 함수의 코드를 추가하여 다시 테스트 해본다.
6. Lambda - 함수 작업 수행
AWS Manage Ment Consol에서 Lambda 서비스를 찾는다.
상단 우측 리전 설정이 서울( ap-northeast-2 )로 되어있는지 확인한다.
좌측 카테고리에서 함수를 선택하고 생성했던 『 serverless-lambda-function 』 함수를 선택하여 준다.
『 serverless-lambda-function 』 함수의 상세보기 창에 API Gateway 항목이 추가된 것을 확인 할 수 있다.
API Gateway가 2개 추가되어 있는데 메서드를 보면 POST와 GET 메서드로 각각 분리되어 있는것을 알 수 있다.
API 엔드 포인트 항목의 URL 주소를 통해 POST 방식 GET 방식 모두 지원하게 설정되었다.
이제 하단 메뉴에서 코드를 선택하고 수행할 Node.js 작업 코드를 작성하여 준다.
※ AWS Lambda에서 기본 코드는 index.mjs이다. index.js를 사용할 경우 파일명을 변경하여 준다.
ECMAScript 모듈 ( 확장자 : *.mjs ) |
• ECMAScript 모듈은 브라우저와 최신 버전의 Node.js에서 지원된다. • --experimental-modules 플래그를 사용하여 Node.js에서 실행할 수 있다. |
CommonJS 모듈 ( 확장자 : *.js ) |
• CommonJS 모듈은 브라우저에서는 지원되지 않고, Node.js에서 널리 사용된다. • 기본적으로 Node.js는 CommonJS 모듈을 지원한다. |
index.mjs( 혹은 index.js )를 선택하고 아래 코드를 추가하여 준다.
index.mjs
const { v4 : uuidv4 } = require( "uuid" );
const moment = require( "moment" );
// Request 데이터 형식 x-www-form-urlencoded 사용시
// import querystring from "querystring";
// AWS SDK 모듈 import
import { DynamoDBClient, PutItemCommand } from "@aws-sdk/client-dynamodb";
import { marshall } from "@aws-sdk/util-dynamodb";
// DynamoDB 클라이언트 생성
const dbClient = new DynamoDBClient( { region: "ap-northeast-2" } );
// Lambda 핸들러 함수 정의
exports.handler = async( event, context, callback ) => {
let object = new Object();
let response = {
isBase64Encoded : true
, headers : {
"Content-Type" : "application/json;charset=utf-8"
, "Access-Control-Expose-Headers" : "*"
, "Access-Control-Allow-Origin" : "*"
}
};
try {
switch( event.httpMethod ) {
case "GET" :
object.result = "failure";
object.message = "GET으로 요청하였습니다.\nPOST 방식으로 요청해주세요.";
response.statusCode = 405;
response.body = JSON.stringify( object );
break;
case "POST" :
if( event.body ) {
const requestBody = JSON.parse( event.body );
// Request 데이터 형식 x-www-form-urlencoded 사용시
// const requestBody = querystring.parse( event.body );
try {
// 데이터 삽입을 위해 DynamoDB 클라이언트 및 명령 생성
const command = new PutItemCommand({
TableName : "serverless-dynamodb"
, Item : marshall({
uuid : uuidv4()
, name : requestBody.name
, age : requestBody.age
, registry_date : moment().utcOffset( 9 ).format( "YYYY-MM-DD HH:mm:ss" )
})
});
// 데이터 삽입 요청 보내기
await dbClient.send( command );
object.name = requestBody.name;
object.age = requestBody.age;
object.result = "success";
response.statusCode = 200;
response.body = JSON.stringify( object );
} catch (error) {
console.error( "Error inserting data : ", error );
object.message = "Error inserting data : " + error;
object.result = "failure";
response.statusCode = 500;
response.body = JSON.stringify( object );
}
}
break;
default :
object.message = "GET, POST 방식이 아닙니다.\nPOST 방식으로 요청해주세요.";
object.result = "failure";
response.statusCode = 405;
response.body = JSON.stringify( object );
break;
}
} catch( error ) {
console.error( "Error : ", error );
object.message = "Error : " + error;
object.result = "failure";
response.statusCode = 500;
response.body = JSON.stringify( object );
}
return response;
};
※ 위 Code는 JSON 방식으로 Data를 Request 받는다.
index.js
const { v4 : uuidv4 } = require( "uuid" );
const moment = require( "moment" );
// Request 데이터 형식 x-www-form-urlencoded 사용시
// const querystring = require("querystring");
// AWS SDK 모듈 const
const { DynamoDB , PutItemCommand } = require( "@aws-sdk/client-dynamodb" );
const { marshall} = require( "@aws-sdk/util-dynamodb" );
// DynamoDB 클라이언트 생성
const dbClient = new DynamoDB( { region : "ap-northeast-2" } );
// Lambda 핸들러 함수 정의
exports.handler = async( event, context, callback ) => {
let object = new Object();
let response = {
isBase64Encoded : true
, headers : {
"Content-Type" : "application/json;charset=utf-8"
, "Access-Control-Expose-Headers" : "*"
, "Access-Control-Allow-Origin" : "*"
}
};
try {
switch( event.httpMethod ) {
case "GET" :
object.result = "failure";
object.message = "GET으로 요청하였습니다.\nPOST 방식으로 요청해주세요.";
response.statusCode = 405;
response.body = JSON.stringify( object );
break;
case "POST" :
if( event.body ) {
const requestBody = JSON.parse( event.body );
// Request 데이터 형식 x-www-form-urlencoded 사용시
// const requestBody = querystring.parse( event.body );
try {
// 데이터 삽입을 위해 DynamoDB 클라이언트 및 명령 생성
const command = new PutItemCommand({
TableName : "serverless-dynamodb"
, Item : marshall({
uuid : uuidv4()
, name : requestBody.name
, age : requestBody.age
, registry_date : moment().utcOffset( 9 ).format( "YYYY-MM-DD HH:mm:ss" )
})
});
// 데이터 삽입 요청 보내기
await dbClient.send( command );
object.name = requestBody.name;
object.age = requestBody.age;
object.result = "success";
response.statusCode = 200;
response.body = JSON.stringify( object );
} catch (error) {
console.error( "Error inserting data : ", error );
object.message = "Error inserting data : " + error;
object.result = "failure";
response.statusCode = 500;
response.body = JSON.stringify( object );
}
}
break;
default :
object.message = "GET, POST 방식이 아닙니다.\nPOST 방식으로 요청해주세요.";
object.result = "failure";
response.statusCode = 405;
response.body = JSON.stringify( object );
break;
}
} catch( error ) {
console.error( "Error : ", error );
object.message = "Error : " + error;
object.result = "failure";
response.statusCode = 500;
response.body = JSON.stringify( object );
}
return response;
};
Postman 프로그램을 통해 API Gateway에서 생성한 URL 주소를 사용하여 Data를 송수신 해보자.
아래는 POST 방식을 사용하여 테스트 진행 한 내용이다.
Request 전송 데이터 | Respone 수신 데이터 |
{ "name" : "사악미소" , "age" : 37 } |
{ "name" : "사악미소" , "age" : 37 , "result" : "success" } |
REST API를 이용하여 Lambda 함수에 Data를 송수힌한 결과는 위와같다.
실제로 DynamoDB에 전송한 데이터가 입력되었는지 여부도 살펴보도록 하자.
다시 AWS Manage Ment Consol에서 DynamoDB를 찾는다.
좌측 카테고리에서 테이블을 선택하고 생성한 『 serverless-dynamodb 』를 선택한다.
좌측 테이블 메뉴에서 『 serverless-dynamodb 』를 선택한다.
반환된 항목의 값을 살펴보면 입력한 값이 추가되어 있는것을 확인 할 수 있다.
번외로 Postman을 통해 GET 방식에 대한 테스트 결과도 확인해 보자.
결과는 실패라고 나오지만 Lambda 함수 Code에서 GET 요청에 대해서
StatusCode는 405로 POST로 다시 요청을 하라는 안내메시지가 나오게 설정해 두었기에
정상적으로 처리되고 있는 것을 확인 할 수 있다.
7. CloudWarch를 이용한 모니터링
AWS CloudWatch를 통해 Lambda 함수의 실행 상태, 성능 지표, 로그 등을 모니터링할 수 있다.
이러한 모니터링 기능을 통해 Lambda 함수의 실행 상태를 실시간으로 추적하고, 성능을 모니터링하여 안정적인 운영을 지원할 수 있다.
로그 스트림을 선택하고 로그 스트림 리스트의 항목을 하나 선택하여 보자.
선택한 로그의 정보를 확인 할 수 있다.
위 정보는 REST API를 이용하여 Lambda 함수에 Data 송수신한 작업의 이력을 보관하고 있다.
'AWS' 카테고리의 다른 글
[AWS] 데이터 베이스 환경 생성 - MariaDB (0) | 2021.12.23 |
---|---|
[AWS] EC2 - Amazon Linux 2 SSL / TLS 인증 (0) | 2021.11.29 |
[AWS] 버전 관리 시스템 - GIT 원격지 서버 구축 (0) | 2021.07.08 |
[AWS] EC2 - Amazon Linux 2 AMI 서버 구축 (0) | 2021.07.06 |