ProgramingLake

ナレッジ置き場

(ナレッジ)ServerlessFramework

Serverless Applicationを構成管理&デプロイするためのツール。
Node.jsで作られたCLIツールの為、Node.jsをインストールする必要あり。(Node.jsのv4以上が必要)
 
インストールコマンド
npm install --save serverless
 バージョン確認
serverless --version
 モジュールを一緒にdeployするためのプラグインもインストール
npm install --save serverless-python-requirements
 localでlambdaスクリプトを実行するためのライブラリをインストール
pip install python-lambda-local
 
プロバイダーアカウントのセットアップ
(どのクラウドサービスを使用してServerlessを動かすか)
 Serverlessは「サービス」という単位で実行環境を作る
AWSをプロバイダーとしてpython3でサービスを開設する場合は以下の手順
serverless create --template aws-python3 --name requests-test --path ./requests-test
 
上記を実行すると「requests-test」のディレクトリが作成され、その配下に
以下のファイルが作成される。
.gitignore
serverless.yml
handler.py
 
handler.py内に、デプロイしたいLambdaのコードを書く
 
 
ローカルで試す
(まずは引数用の event.json を作成)
実際は使わないので、空のjson。中身は{}だけ。
python-lambda-local -f main handler.py event.json --log
(mainはメソッド名、.pyは実行ファイル名、event.jsonは実行時引数、--logオプションで実行時ログが確認できる)
 必要なパッケージをrequirements.txtにかく
pip3 freeze | grep requests > ./requirements.txt
 
serverless.ymlを編集
service: requests-test
provider:
name: aws
runtime: python3.7
region: ap-northeast-1
 
functions:
requests-test-lambda:
handler: handler.main
 
plugins:
- serverless-python-requirements
 
custom:
pythonRequirements:
dockerizePip: true
 
# dockerrizePip:true = Lambda関数の実行環境とほぼ同等のDockerイメージを利用する、という意味
   
AWS環境にデプロイ
(裏でCloudFormationが動く。ローカルのコードがS3経由でLambdaにdeploy。)
serverless deploy function -f <yourfunction> --verbose --aws-profile {プロファイル名}
(verboseを付けると途中経過がターミナル上で確認できる。-vでもOK)
(参考)
秘匿したい情報はssmパラメータを参照することで実現できる
 
Githubに上がった既存のサービスをインポート
serverless install -u [GITHUB URL OF SERVICE]