Getting started with AWS lambda

Create IAM User

Using AWS CLI

다음과 같은 AWS CLI 를 확인하여 Administrators 유저 그룹을 만들고 루트 계정을 생성한다.

1
2
3
4
5
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

함수의 확인

1
aws lambda list-functions

Serverless Application Management(SAM)

Lambda Function 을 작성하고 배포하는 일련의 과정을 위해서 SAM 을 사용한다.

1
2
3
brew install aws-sam-cli # install SAM
sam init # initialize sam
sam local start-api # test locally

local test

아래 함수를 실행하면 로컬의 3000번 포트에서 lambda 함수들이 동작된다.

1
sam local start-api

create package

람다함수가 클라우드 환경에서 실행되기 위해서는 S3 버킷에 배포되어야 하고 이를 위해 package 화를 시켜야 한다.

1
2
3
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 함수를 배포할 차례이다.

1
2
3
4
5
sam deploy \
--template-file packaged.yaml \
--stack-name samp-app \
--capabilities CAPABILIY_IAM \
--region ap-northeast-2

npm serverless

SAM 이 아니라 serverless 는 npm 패키지로 좀 더 쉽다.

아래와 같이 설치하고

1
npm install -g serverless # install serverless

serverless.yaml

1
2
3
4
5
6
7
8
9
service: my-app

provider:
name: aws
runtime: nodejs8.10

functions:
helloWorld:
handler: handler.js

handler.js

1
2
3
4
module.exports.run = (event, context, callback)=>{
console.log("Debugging...");
callback(null,"hello world");
}

deploy

1
2
sls deploy # deploy project
sls deploy function --function helloWorld # deploy function

invoke

1
sls invoke --function helloWorld --log

What is AWS Lambda

CLI Tool

Getting started with IOST Getting started with gradle

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×