참고 자료
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
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
진행 도중 Internal Server Error
가 떠서 Cloud Watch
로 보니 특정 모듈을 찾을 수 없다는 에러를 발견했다. 이는 빌드하지 않아서 발생한 이슈였고, sam build
를 넣어서 다시 배포 sam deploy
해줌으로써 해결하였다.