serverless で lambda をデプロイしてみる

2023年4月10日

参考

認証

awscli を使って認証する。

pip install awscli
aws --version
aws configure

インストール

インストールする。

npm install -g serverless

確認する。

sls -v
Framework Core: 3.30.1
Plugin: 6.2.3
SDK: 4.3.2

プロジェクト作成

プロジェクトを作成する。
ここでは project-hoge と言うプロジェクトを作成してみる。

sls create --template aws-python3 -p project-hoge

プロジェクトに移動する。

cd projet-hoge

階層は次のような感じ。

.
└── project-hoge
    ├── .gitignore
    ├── handler.py
    └── serverless.yml

ファイル

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

service: project-hoge
frameworkVersion: "3"

provider:
  name: aws
  runtime: python3.9
functions:
  hello:
    handler: handler.hello

実行

ファンクションの hello を実行する。

sls invoke local --function hello

結果が表示される。

{
    "statusCode": 200,
    "body": "{\"message\": \"Go Serverless v1.0! Your function executed successfully!\", \"input\": {}}"
}

引数の event に hogehoge を渡して実行する。

sls invoke local --function hello --data "hogehoge"

結果が表示される。

{
    "statusCode": 200,
    "body": "{\"message\": \"Go Serverless v1.0! Your function executed successfully!\", \"input\": \"hogehoge\"}"
}

デプロイ

デプロイコマンド sls deploy を実行してみる。

sls deploy

Deploying project-hoge to stage dev (us-east-1)

✔ Service deployed to stack project-hoge-dev (131s)

functions:
  hello: project-hoge-dev-hello (872 B)

Need a better logging experience than CloudWatch? Try our Dev Mode in console: run "serverless --console"

デフォルトだとリージョンが「バージニア北部」らしい。
serverless.yml で変更出来るとの事。

Lambda 確認

画像の通り Lambda が出来ているのが確認できました。

2023年4月10日