참고 자료
API Gateway의 endpoint 를 통해 접속해서 람다함수를 호출하고 dynamodDB 에 데이터를 저장하기
AWS CLI 자격 증명 이 완료되어야 함.
$ git clone https://github.com/aws-samples/serverless-patterns/
$ cd serverless-patterns/lambda-dynamodb
template.yaml
내의 코드를 변경한다.
- Runtime: nodejs12.x
+ Runtime: nodejs14.x
우선 빌드한다. sam build
AWS 에 배포한다.sam deploy --guided
를 치면 아래와 같이 뜨는데 전부 ENTER
해준다.
Stack Name [sam-app]- CloudFomation 에 지을 이름- defalut 가 sam-app 이라 그냥 엔터치면 됨AWS Region [ap-northeast-2]- 한국이 기본값이므로 엔터Confirm changes before deploy [y/N]- 배포할 때마다 변경사항을 확인하겠냐는 건데 확인하지 않으므로 엔터. (기본값은 대문자인 N)Allow SAM CLI IAM role creation [Y/n]- SAM CLI의 역할 생성을 허용하겠냐는 말이므로 Yes.Disable rollback [y/N]- Operation 에서 실패했을 때 이전버전으로 되돌아가겠냐는 것 같음. N 를 하면 되돌아가지 않겠다는 의미같음. 여기서는 크게 중요하지 않으므로 아무거나.Save arguments to configuration file [Y/n]- 지금까지 입력한 것들을 파일로 저장해놓겠냐는 의미. Yes.SAM configuration file [samconfig.toml]- 파일명은 뭐로 할거냐는 의미. 엔터. samconfig.toml 로 할 것이기 때문.SAM configuration environment [default]- 설정 환경 이름은 뭐로 할 거냐는 것 같음. 그냥 엔터.
아래처럼 뜨면 성공한 것이다.
배포한 람다함수를 실행해보자.
# aws lambda invoke --function-name {Lambda함수 Arn} --invocation-type Event --payload '{ "Metadata": "Hello" }' response.json --cli-binary-format raw-in-base64-out
$ aws lambda invoke --function-name arn:aws:lambda:ap-northeast-2:640668917513:function:sam-app-LambdaPutDynamoDB-raSopnm1 --invocation-type Event --payload '{ "Metadata": "Hello" }' response.json --cli-binary-format raw-in-base64-out
실행 결과: 202 면 성공
Add Trigger
아래처럼 만듦
아래의 링크를 통해 접근해본다.
OK 가 뜨면 일단 정상동작된 것이다.
DynamoDB에 저장이 되었는 지 확인한다.
진행 도중 Internal Server Error
가 떠서 Cloud Watch
로 보니 특정 모듈을 찾을 수 없다는 에러를 발견했다. 이는 빌드하지 않아서 발생한 이슈였고, sam build
를 넣어서 다시 배포 sam deploy
해줌으로써 해결하였다.