Zendesk APIをPythonから簡単に呼び出せるようにするラッパーZenpyをAWS Lambda Layerに入れてみます。
なぜLambda Layerを使うのか?
AWS Lambdaへプログラムをデプロイする際に関連するライブラリ群も一緒に入れる必要があります。そのため、複雑なプログラムになるとデプロイパッケージが肥大化しがちでした。
ライブラリやカスタムランタイム、その他の依存関係をまとめたZIPパッケージです。
- AWS公式ドキュメント: AWS Lambda レイヤー
この記事で行うこと
AWS Lambda LayerへZenpy
ライブラリをデプロイする。
事前準備
- Dockerが必要です
- AWS SAMが必要です
pip install aws-sam-cli
- Amazon S3バケットを事前に作成する
s3-bucket ${APP_NAME}-${ENV}
Gihubから以下のリポジトリをクローン
ビルド&デプロイ
pip install --upgrade pip
(cd ./; ./build.sh)
(cd ./; ENV=stg ./cli deploy)
作成されるLayerの名前は Zenpy-python37-layer
です
動確するLambdaサンプルコード
import json
from zenpy import Zenpy
creds = {
"token": "zendesknotoken",
"email": "hoge@moge.jp",
"subdomain": "zendesktest"
}
def lambda_handler(event, context):
try:
zenpy_client = Zenpy(**creds)
ticket = zenpy_client.tickets(id=947)
print(ticket)
except Exception as e:
print(e)
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}