Serverless Framework 설치에서 AWS 디버그로

Serverless Framework의 설치에서 AWS로의 디버깅 프로세스를 설명합니다.

Serverless Framework 설치


Serverless Framework 설치는 를 따릅니다공식 사이트.
Mac OS/Linux는 아래에 설치할 수 있습니다.
$ curl -o- -L https://slss.io/install | bash

새 Serverless 서비스 작성


설치가 완료되면 새 Serverless 서비스가 만들어집니다.
클라우드가 AWS이고 언어가 Python 3.8이면 다음 템플릿을 만들 수 있습니다.
$ sls create -t aws-python3
참고로 aws-python로 제작하면 파이톤 2.7로 제작되었으니 파이톤 2 시스템을 사용하고 싶으면 사용하세요.
실행하면 다음 파일이 생성됩니다.
$ tree -a
.
├── .gitignore
├── handler.py
└── serverless.yml

0 directories, 3 files
각 문서에 대해 설명한다.gitignore에 관해서는 Giit에 관한 것이기 때문에 설명하지 않습니다.
serverless.Serverless Framework의 다양한 설정에서 AWS Lambda 동작의 함수 바디가 됩니다.

serverless.yml 설명


sls create가 실행된 지 얼마 되지 않은 서버less입니다.다음은 yml입니다.
실제로 많은 댓글이 달렸지만 모두 삭제하면 다음과 같은 내용밖에 없다.
service: serverless-sample

frameworkVersion: "2"

provider:
  name: aws
  runtime: python3.8
  lambdaHashingVersion: 20201221

functions:
  hello:
    handler: handler.hello
service는 서비스를 만드는 서비스 이름으로 기본적으로 디렉터리 이름을 사용합니다.frameworkVersion는 Serverless Framework에서 사용하는 버전입니다.현재의 최신판을 사용한다면 2가 될 것이다.provider는 구름을 둘러싼 설정이고 name는 사용하는 구름이며 runtime는 사용하는 언어이다.lambdaHashingVersion는 이가조식에 추가된 옵션이지만 새로운 서비스라면 기본적으로 이렇다.functions는 AWS 람다의 설정이다.hello 섹션은 Lambda에 사용되는 함수 이름입니다.Serverless Framework에서 만든 Lambda 함수 이름은 <service>-<stage>-<関数名>입니다.스테이지 이름의 기본값이 dev이기 때문에 함수 serverless-sample-dev-hello 를 만들었습니다.handler 실제 실행 중인 프로그램의 위치를 표시합니다.handler.Hello는handler입니다.py 파일을 실행하는 Hello 함수를 의미합니다.

handler.py의 설명


handler.py의 내용은 다음과 같다.
handler.py
import json

def hello(event, context):
    body = {
        "message": "Go Serverless v1.0! Your function executed successfully!",
        "input": event
    }

    response = {
        "statusCode": 200,
        "body": json.dumps(body)
    }

    return response
serverless.yml에 설정된 것처럼 hello 함수는 Lambda의 시작점입니다.
매개 변수의 이벤트는 Lambda의 입력 값입니다.람바다가 어떤 행사에서 시동을 걸었는지에 따라 가격이 달라진다.

AWS로 설계


그럼 이 Serverless 서비스를AWS로 진행합시다.

awscli에서credentials 설정


디버깅을 위해 AWS에 대한 credentials를 설정합니다.awscli를 설치한 후 다음 명령을 통해 설정할 수 있습니다 (serverless 명령도 설정할 수 있으며 이 부분은 개인의 취향에 따라 진행할 수 있습니다).
$ aws credentials
상세한 설정 방법은 공식 사이트 설정 방법을 참고하세요.
공식 홈페이지에는 상세히 기재돼 있지만, 사용하는 IAM 이용자에 대해 설정AdministratorAccess하면 거의 문제가 없을 것으로 보인다.

디버그 전에 일부 설정 변경


디자인 서비스에 앞서 도쿄에 개발지를 두고 싶어서 서버리스.yml 좀 수정할게요.
수정된 내용은 다음과 같습니다.provider에는 region가 추가됐다.
serverless.yml
service: serverless-sample

frameworkVersion: "2"

provider:
  name: aws
  runtime: python3.8
  lambdaHashingVersion: 20201221
  region: ap-northeast-1 # 追加部分

functions:
  hello:
    handler: handler.hello

디자인 서비스


다음 명령을 통해 디버깅을 할 수 있습니다.
$ sls deploy

디버그 함수 실행


AWS의 Management Constore에서 수행할 수 있지만 Serverless Framework 명령은 다음과 같습니다.
$ sls invoke -f hello -d '{"key":"value"}'
invoke 명령의 f 옵션은 함수 이름이고 d 옵션에 입력 값을 설정합니다.
결과는 다음과 같다.
{
    "statusCode": 200,
    "body": "{\"message\": \"Go Serverless v1.0! Your function executed successfully!\", \"input\": {\"key\": \"value\"}}"
}

설계 서비스 삭제


프로그램과 함수의 조작을 확인했기 때문에 서비스를 삭제하는 방법도 설명했다.
다음 명령을 실행하면 삭제할 수 있습니다.
$ sls remove


이번에 사용한 코드는 아래 Giithub 창고에 업로드되었습니다. 모든 코드를 확인하고 싶은 분들은 저쪽(v1.0 라벨은 이번 코드)을 보세요.
https://github.com/ombran/serverless-sample/tree/v1.0

좋은 웹페이지 즐겨찾기