Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話

574 views

Published on

OSX 上で miniconda を使って Python3.6 ベースの localstackによるAWS Lambdaの開発環境を構築する。

Published in: Software
  • Be the first to comment

  • Be the first to like this

localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話

  1. 1. localstackによるAWS Lambdaの開発環境を、 miniconda上でつくったら 簡単便利だった話 米田 真治 17/08/19 オープンデベロッパーズカンファレンス2017 Tokyo 1
  2. 2. about: 米田 真治 (こめだ しんじ @komeda_shinji) 運用エンジニア 日本UNIXユーザ会 会員 経歴 学生時代にUNIXに出会う Internetにつながる環境がきた いろんなプログラムをビルドしているうちに、 開発・構築の楽しさに目覚める 学科のシステム管理を経験 システム運用のおもしろさを覚える 就職してISPのサーバ構築・運用に携わる 2000年6月 サイタスマネジメント創業メンバー 17/08/19 オープンデベロッパーズカンファレンス2017 Tokyo 2
  3. 3. プログラム開発 職業プログラマではありませんが、 ちょっとしたツール開発はやります。 あと、OSSのバグを直したり拡張したり。 最近の主な開発言語: Python 環境 Mac OSX El Capitan OS上の環境とは独立させたい OSバンドル版のPython(2.7.10) _ssl.soでリンクされているOpenSSL古すぎ 17/08/19 オープンデベロッパーズカンファレンス2017 Tokyo 3
  4. 4. minicondaで Python 3.6の環境を構築しよう どうしてminiconda? 手軽にjupyytter-nnoottebooookを使使いいたたいい! anaconda(miniconda)なら、 かんたんにインストールできます。 どうしてPython 3.6? baashh kernnelにはPython3が必要です。 あとからPython 2.7の環境も作れます。 17/08/19 オープンデベロッパーズカンファレンス2017 Tokyo 4
  5. 5. minicondaのインストール 1. https://conda.io/miniconda.html から インストーラー(bashのスクリプト)を入手します。 2. bash でスクリプトを実行します。 インストール後~/.bash_profileを確認すると、ファイルの末尾に以下の 内容が追加されていることがわかります。 あとは なり なりご自由に。 17/08/19 オープンデベロッパーズカンファレンス2017 Tokyo 5
  6. 6. AWS Lambdaのコード開発 みんな大好き AWS Lambda AWSのプラットフォーム上で実行されるため、 テスト&デバッグが面倒です。 ローカルに実行環境をつくってテストしたい 直接エラーメッセージを見たい 17/08/19 オープンデベロッパーズカンファレンス2017 Tokyo 6
  7. 7. python-lambda-local Lambda関数をローカル実行するためのラッパー DynamoDBはローカルバージョンがありますが、 SQSなどはAWS上のサービスを使うことになります。 LambdaからLambdaを呼びたい場合に、 呼び出されるLambda関数もローカル実行させること はできません。 Lambdaのカスケードしたいんやけど…… 17/08/19 オープンデベロッパーズカンファレンス2017 Tokyo 7
  8. 8. そうだlocalstackを使おう https://github.com/localstack/localstack AWSのモック環境です。 料金を気にせずにテストができるます。 エラーメッセージがそのまま見えます。 17/08/19 オープンデベロッパーズカンファレンス2017 Tokyo 8 API Gateway Kinesis DynamoDB DynamoDB Streams Elasticsearch S3 Firehose Lambda SNS SQS Redshift ES (Elasticsearch Service) SES Route53 CloudFormation CloudWatch サポートしているAPI 一部の機能しか実装されて いないAPIもあります
  9. 9. miniconda環境にlocalstack専用の environmentを作成する 1. environment の作成 2. environment を activate 3. localstack をインストール 4. localstack を起動 または †python3の場合、エラーが出るため localstack/services/infra.pyの修正が必要です。 17/08/19 オープンデベロッパーズカンファレンス2017 Tokyo 9
  10. 10. Docker上でも実行できます Docker for Mac をインストール Docker上のlocalstackはpython2.7で実行されま す。 コマンド起動毎にコンテナが作成されるので、 2回目からはdocker startしましょう。 ⚠proxyの設定が有効になっていると、 モックサーバのヘルスチェックに失敗することがあります。 17/08/19 オープンデベロッパーズカンファレンス2017 Tokyo 10
  11. 11. localstackでのデータについて 基本的には、localstack上に作成したものは、 停止すると消滅しします。 Kinesis、DynamoDB、Elasticsearchのみ永続可能 初期状態では、 DynamoDBは オプションがついた状態で 起動されています。 データを保存するためには、環境変数 をセットしておきます。 この環境変数をセットするとKinesisとElasticsearch のデータ保存場所もここに変更されます。 17/08/19 オープンデベロッパーズカンファレンス2017 Tokyo 11
  12. 12. 環境変数DATA_DIRをセット activate したとき自動設定するように、 フックを作成します。 17/08/19 オープンデベロッパーズカンファレンス2017 Tokyo 12
  13. 13. 開発中 localstackの操作はCLIコマンド使います。 localstack を起動し直すと、 SQSやLambdaは再度作成する必要があります。 いちいち面倒くさい。 17/08/19 オープンデベロッパーズカンファレンス2017 Tokyo 13
  14. 14. そうだ jupyter-notebookを使おう bash kernelで設定のCLIコマンドを実行すれば、 かんたんに再実行できます。 見出しをつけておけば、ヒストリから再実行するよりも探しやすい。 マウスクリックで順に実行できて、実行結果も一緒に残ります。 トライ&エラーの過程も残せて便利です。 インストール $ conda install jupyter jupyter_console qtconsole notebook nbconvert bash kernel condaのパッケージがないためpipでインストールします。 $ pip install bash_kernel IPython kernel specの登録コマンドを実行します。 $ python -m bash_kernel.install 17/08/19 オープンデベロッパーズカンファレンス2017 Tokyo 14
  15. 15. 17/08/19 オープンデベロッパーズカンファレンス2017 Tokyo 15
  16. 16. 詳しくはQiitaで書いています Macにminicondaをつかってjupyter notebookを簡単セットアッ プする http://qiita.com/komeda-shinji/items/470c8ca3b2273be1f825 miniconda環境にlocalstack専用のenvironmentを作成する http://qiita.com/komeda-shinji/items/88e493601b9827de51da localstack を Docker on Mac 上で動かす http://qiita.com/komeda-shinji/items/5a0d119fdee5747f5a1f http_proxyの設定があるとlocalstackの起動でエラーにな る http://qiita.com/komeda-shinji/items/c858d4d6f0b0d57854af 17/08/19 オープンデベロッパーズカンファレンス2017 Tokyo 16

×