概要
Serverless FrameworkをつかってLambda(Python)をAWS環境にデプロイしてみます。
手順
手順です。
1. テンプレートを作成する
今回デプロイするAWS Lambda用のServerless Frameworkのテンプレートを作成します。
serverless create --template aws-python3 --name requests-test --path ./requests-test
できました。
ls -l ./requests-test total 8 -rw-r--r--. 1 vagrant vagrant 497 Feb 2 07:16 handler.py -rw-r--r--. 1 vagrant vagrant 3201 Feb 2 07:16 serverless.yml
2. Lambda(Python)のコードをかく
デプロイしたいLambdaのコードをかきます。
今回はhandler.pyを以下のように上書きしてしまいます。
requestsをつかってcurlするだけのPythonです。
import requests def main(event, context): response = requests.get('https://www.kabegiwablog.com/') print(response) if __name__ == '__main__': main('', '')
ローカルでちゃんと動作することがわかります。
python3 ./handler.py <Response [200]>
3. 必要なパッケージをrequirements.txtにかく
このhandler.pyの実行に必要なパッケージをrequirements.txtに記載してあげます。
pip3 freeze | grep requests > ./requirements.txt
こんなかんじ。
$ cat requirements.txt requests==2.22.0
4. serverless.ymlを編集してあげる
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
5. serverless-python-requirementsをインストールする
serverless-python-requirementsをインストールしてあげます。
これにより、requirements.txtで依存関係を自動的にバンドルしてくれます。
npm install --save serverless-python-requirements
6. AWS環境にデプロイする
いよいよデプロイです。
以下コマンドを実行してあげると、AWS環境にLambda関数がデプロイされます。
裏でCloudFormationがうごいています。
$ sls deploy Serverless: Generated requirements from /home/vagrant/requests_test/requirements.txt in /home/vagrant/requests_test/.serverless/requirements.txt... Serverless: Installing requirements from /home/vagrant/.cache/serverless-python-requirements/f866cf90d6349902a899d904a8c7724b092b63ed16fa2530c859ec177d70c68e_slspyc/requirements.txt ... Serverless: Using download cache directory /home/vagrant/.cache/serverless-python-requirements/downloadCacheslspyc Serverless: Running ... Serverless: Packaging service... Serverless: Excluding development dependencies... Serverless: Injecting required Python packages to package... Serverless: Uploading CloudFormation file to S3... Serverless: Uploading artifacts... Serverless: Uploading service requests-test.zip file to S3 (1.92 MB)... Serverless: Validating template... Serverless: Updating Stack... Serverless: Checking Stack update progress... ......... Serverless: Stack update finished... Service Information service: requests-test stage: dev region: ap-northeast-1 stack: requests-test-dev resources: 6 api keys: None endpoints: None functions: requests-test-lambda: requests-test-dev-requests-test-lambda layers: None Serverless: Run the "serverless" command to setup monitoring, troubleshooting and testing.
7. 確認
できました。
8. ゴミ掃除
removeで全削除できます。
sls remove
おわりに
べんりな世の中になりましたね。
- 作者:Peter Sbarski
- 出版社/メーカー: 翔泳社
- 発売日: 2018/03/14
- メディア: 単行本(ソフトカバー)