Getting started with AWS lambda
Create IAM User
Using AWS CLI
다음과 같은 AWS CLI 를 확인하여 Administrators 유저 그룹을 만들고 루트 계정을 생성한다.
brew install aws # install aws cli
aws iam create-group --group-name Administrators # create iam group
aws iam list-groups # list groups
aws iam attach-group-policy --group-name Administrators --policy-arn arn:aws:iam::aws:policy/AdministratorAccess # AdministratorAccess Policy 적용
aws iam list-attached-group-policies --group-name Admins # 적용된 Policy 확인
Create Lambda function
함수의 확인
aws lambda list-functions
Serverless Application Management(SAM)
Lambda Function 을 작성하고 배포하는 일련의 과정을 위해서 SAM 을 사용한다.
brew install aws-sam-cli # install SAM
sam init # initialize sam
sam local start-api # test locally
local test
아래 함수를 실행하면 로컬의 3000번 포트에서 lambda 함수들이 동작된다.
sam local start-api
create package
람다함수가 클라우드 환경에서 실행되기 위해서는 S3 버킷에 배포되어야 하고 이를 위해 package 화를 시켜야 한다.
sam package \
--output-template-file packaged.yaml \
--s3-bucket <bucketname>
위 명령어를 실행하면 sam-app/hello_world 디렉토리를 압축하여 .zip 파일을 만들고 amazon s3 에 업로드 한다. 여기서 새롭게 생긴 packaged.yaml 파일은 template.yaml 파일과 동일한 내용을 가지지만 차이가 있다면, packaged.yaml 파일의 경우 codeUri 가 실제 클라우드 uri 를 가진다는 것이다.
Deploy AWS lambda
패키지화를 다 시키고 s3 를 업데이트 했다면 lambda 함수를 배포할 차례이다.
sam deploy \
--template-file packaged.yaml \
--stack-name samp-app \
--capabilities CAPABILIY_IAM \
--region ap-northeast-2
npm serverless
SAM 이 아니라 serverless 는 npm 패키지로 좀 더 쉽다.
아래와 같이 설치하고
npm install -g serverless # install serverless
serverless.yaml
service: my-app
provider:
name: aws
runtime: nodejs8.10
functions:
helloWorld:
handler: handler.js
handler.js
module.exports.run = (event, context, callback)=>{
console.log("Debugging...");
callback(null,"hello world");
}
deploy
sls deploy # deploy project
sls deploy function --function helloWorld # deploy function
invoke
sls invoke --function helloWorld --log