SlideShare une entreprise Scribd logo
1  sur  13
Apexとpython-lambda-local
で始める
AWS Lambda Function開発
株式会社フンザ 小松茂敏
自己紹介
• 小松 茂敏 (cgetc)
• 株式会社フンザ(チケットキャンプ運営)
• 第一研究開発チーム(サーバーサイド)
• 今年2月に入社
• Python歴 本格的には2月から
• Google App Engine出たての時に触ったことあり
• 本を何冊か読んだことはあった程度
概要
• Apexとpythom-lambda-localでAWS Lambdaの
Functionを作ってみた。
• 課題など。
• 実用性のあるものが作れるのか?
Apexとは?
• AWS Lambdaに特化した構成ツール
• デプロイ、起動、ログなど
• 複数のランタイムに対応
• terraformと連携できる
python-lambda-localとは
• AWS LambdaのPython実行環境をエミュレート
• 動作確認のたびにAWS Lambdaにデプロイす
る手間が省ける
どう組み合わせたか
• Apexのファイル構成のまま
• 各ファンクションの直下にライブラリをインストール
• python-lambda-localで以下を指定して実行
• ファイル名(_apex_main.py)
• 関数名(handle)
• ライブラリの読み込み先(カレントディレクトリ)
python-lambda-local -l . 
-f handle _apex_main.py event.json
課題
• 対策
• ソースとデプロイ用のフォ
ルダを分ける
• Fabricでソースとライブ
ラリをコピーして、
Apex deployを実行する
• terraformとの連携は?
課題
• AWS LambdaのPythonランタイムは環境変数を使
えない
• Apexがアップロードするzipファイルには、環境
変数を定義する.env.jsonが含まれている
• AWS Lambdaが対応していない?
• 実行時に.env.jsonの内容を環境変数に設定する
コードを書くことで解決
課題
• ローカル環境の環境設定に使えて一石二鳥
import json
import os
with open('.env.json') as f:
os.environ.update(json.load(f, encoding='utf-8'))
def handle(event, context):
_apex_main.py
実用性のあるものが作れるのか
?
• 実行時間の制約
• 最大300秒
• 複数の関数を組み合わせて対応
• スケジューラで引数が指定できない
• 起動用の関数に引数を内包させて、その関数か
ら主処理の関数を呼び出す
実際に作ったもの
• Googleのクロールエラーを検知する処理
• Google Search Console APIでクロールエラー
を問い合わせ
• Incoming WebhookでSlackに通知
https://github.com/cgetc/lambda-seo-alert
感想
• Apexが便利
• 複数の関数を管理するのにProjectになっている
• マイナーバージョンアップでも仕様変更あり?
• それなりに動くものは作れそう
• google-api-python-clientとrequestsは動く。
最後に
株式会社フンザは
Pythonエンジニアを募集中です
hunza.jp/jobs

Contenu connexe

En vedette

(CMP407) Lambda as Cron: Scheduling Invocations in AWS Lambda
(CMP407) Lambda as Cron: Scheduling Invocations in AWS Lambda(CMP407) Lambda as Cron: Scheduling Invocations in AWS Lambda
(CMP407) Lambda as Cron: Scheduling Invocations in AWS LambdaAmazon Web Services
 
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch LogsAWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch LogsAmazon Web Services Japan
 
bottle.pyをつかったチャットアプリ作成チュートリアル
bottle.pyをつかったチャットアプリ作成チュートリアルbottle.pyをつかったチャットアプリ作成チュートリアル
bottle.pyをつかったチャットアプリ作成チュートリアルSatoshi Yamada
 
AWS Lambda を使ってみた話 at づや会Vol.3
AWS Lambda を使ってみた話 at  づや会Vol.3AWS Lambda を使ってみた話 at  づや会Vol.3
AWS Lambda を使ってみた話 at づや会Vol.3ko ty
 
AWS Lambdaで作るクローラー/スクレイピング
AWS Lambdaで作るクローラー/スクレイピングAWS Lambdaで作るクローラー/スクレイピング
AWS Lambdaで作るクローラー/スクレイピングTakuro Sasaki
 
Apache Big Data EU 2016: Building Streaming Applications with Apache Apex
Apache Big Data EU 2016: Building Streaming Applications with Apache ApexApache Big Data EU 2016: Building Streaming Applications with Apache Apex
Apache Big Data EU 2016: Building Streaming Applications with Apache ApexApache Apex
 
Capital One's Next Generation Decision in less than 2 ms
Capital One's Next Generation Decision in less than 2 msCapital One's Next Generation Decision in less than 2 ms
Capital One's Next Generation Decision in less than 2 msApache Apex
 
AWS CAF & Well-Architected Framework
AWS CAF & Well-Architected FrameworkAWS CAF & Well-Architected Framework
AWS CAF & Well-Architected Framework真吾 吉田
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門Hironori Sekine
 

En vedette (9)

(CMP407) Lambda as Cron: Scheduling Invocations in AWS Lambda
(CMP407) Lambda as Cron: Scheduling Invocations in AWS Lambda(CMP407) Lambda as Cron: Scheduling Invocations in AWS Lambda
(CMP407) Lambda as Cron: Scheduling Invocations in AWS Lambda
 
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch LogsAWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
 
bottle.pyをつかったチャットアプリ作成チュートリアル
bottle.pyをつかったチャットアプリ作成チュートリアルbottle.pyをつかったチャットアプリ作成チュートリアル
bottle.pyをつかったチャットアプリ作成チュートリアル
 
AWS Lambda を使ってみた話 at づや会Vol.3
AWS Lambda を使ってみた話 at  づや会Vol.3AWS Lambda を使ってみた話 at  づや会Vol.3
AWS Lambda を使ってみた話 at づや会Vol.3
 
AWS Lambdaで作るクローラー/スクレイピング
AWS Lambdaで作るクローラー/スクレイピングAWS Lambdaで作るクローラー/スクレイピング
AWS Lambdaで作るクローラー/スクレイピング
 
Apache Big Data EU 2016: Building Streaming Applications with Apache Apex
Apache Big Data EU 2016: Building Streaming Applications with Apache ApexApache Big Data EU 2016: Building Streaming Applications with Apache Apex
Apache Big Data EU 2016: Building Streaming Applications with Apache Apex
 
Capital One's Next Generation Decision in less than 2 ms
Capital One's Next Generation Decision in less than 2 msCapital One's Next Generation Decision in less than 2 ms
Capital One's Next Generation Decision in less than 2 ms
 
AWS CAF & Well-Architected Framework
AWS CAF & Well-Architected FrameworkAWS CAF & Well-Architected Framework
AWS CAF & Well-Architected Framework
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
 

Apexとpython-lambda-local で始める AWS Lambda Function開発