SlideShare a Scribd company logo
localstackによるAWS
Lambdaの開発環境を、
miniconda_卜で、つくったら
簡単便利だった話
米田真治
17/08/19 オープンデベ口ッパーズカンファレンス2017Tokyo 1
about:
・米田真治 (こめだしんじ@komeda_shinji)
・ 運用エンジニア
・ 日本UNI×ユーザ会会員
. 経歴
・ 学生時代!こUNI×に出会う
• Internetにつながる環境がきた
・ いろんなプログラムをビルドしているうちに
開発・構築の楽しさに目覚める
・ 学科のシステム管理を経験
・ システム運用のおもしろさを覚える
・ 就職してISPのサーバ構築・運用に携わる
• 2000年6月サイタスマネジメント創業メンバー
17/08/19 オープンデベ口ツjて-ズカンファレンス2017Tokyo 2
プログラム開発
・職業プログラマではありませんが、
ちょっとしたツール開発はやります。
・あと、 ossのパクを直したり拡張したり。
・最近の主な開発言語:Python
・環境Mac OS×El Capitan
•OS上の環境とは独立させたい
OSバンドル版のPython(2.7 .10)
_ssl.soで、リンクされているOpenSSL古すぎ
17/08/19 オープンデベ口ツjて-ズカンファレンス2017Tokyo 3
minicondaで
Python 3.6の環境を構築しよう
-どうしてminiconda?
・手軽にjupyter-notebookを使いたい!
• anaconda(miniconda)なら、
かんたんにインストールできます0
.どうしてPython 3.6?
• bash kernel iこはPython3が必要で、す0
.あとからPython 2.7の環境も作れます。
17/08/19 オープンデベ口ツjて-ズカンファレンス2017Tokyo 4
minicondaのインストール
1. https://conda.io/miniconda.html から
インストーラ一(bashのスクリプト)を入手します。
2. bashでスクリプトを実行します。
$ bash ./Miniconda3-latest-MacOSX-x86 64.sh
・ インストール後~I.bash_profileを確認すると、 ファイルの末尾に以下の
内容が追加されていることがわかります。
# added by Miniconda3 4.3.21 installer
export PATH=”/Users/username/miniconda3/bin:$PATH”
あとはconda installなりpip installなりご自由に。
17/08/19 オープンデべ口ツjて-ズカンファレンス2017Tokyo 5
AWS Lambdaのコード開発
・みんな大好きAWS Lambda
•AWSのプラット フォーム上で実行されるため、
テスト&デバックが面倒です。
-ローカルに実行環境をつくってテストしたい
.直接エラーメッセージを見たい
17/08/19 オープンデベ口ツjて-ズカンファレンス2017Tokyo 6
python-lambda-local
• Lambda関数をローカル実行するためのラッパ-
$ pip install python-lambda-local
$ python-lambda-local -1 lib/ ー千 handler -t 5
lambda-test.py event.json
• DynamoDBは口一力jし/〈ージ、ヨンがありますが、
SQSなどはAWS上のサービスを使うことになります0
• LambdaからLambdaを呼びたい場合(こ、
呼び、出されるLambda関数も ローカル実行させること
はできません。
• Lambdaのカスケードしたいんやけど……
17/08/19 オープンデベ口ツjて-ズカンファレンス2017Tokyo 7
そうだlocalstackを使おう
• https://github.com/localstack/localstack
•AWSのモック環境です。
-料金を気にせずに テストができるます0
.エラーメッセージがそのまま見えます。
サポートしているAPI
• API Gateway
• Kinesis
• DynamoDB
• DynamoDB
Streams
Firehose • SES
Lambda • Route53
SNS ・ CloudFormation
sos ・ CloudWatch
• Redshift
• Elasticsearch • ES (Elasticsearch 一部の機能しか実装されて
• S3 Service) いないAPIもあります
17/08/19 オープンデベ口ツjて-ズカンファレンス2017Tokyo 8
miniconda環境にlocalstaclく専用の
environmentを作成する
1. environment の作成
$ conda create -n localstack python=2.7
またはS conda create -n localstaclくpython=3.6t
2. environment をactivate
$ . activate localstack
3. localstack をインストール
(localstaclく) $ pip install localstack
4. localstack を起動
(localstaclく) $ localstack start
↑python3の場合、 エラーが出るため
localstack/services/infra.pyの修正が必要で、す。
オープンデベ口ツjてーズカンファレンス2017Tokyo 9
Docker上で、も実行で、きます
• Docker for Mac をインストール
$ localstaclくstart --docker
Docker上のlocalstackは python2.7で、実行されます0
.コマンド起動毎にコンテナが作成されるので、
2回目からはdocker startしましょう。
ムproxyの設定が有効になっていると、
モックサーバのヘルスチェックに失敗することがあります。
17/08/19 オープンデベ口ツjて-ズカンファレンス2017Tokyo 10
localstackでのデータについて
-基本的には、localstack上に作成したものは、
停止すると消滅します。
• Kinesis、 DynamoDB、 Elasticsearchのみ永続可能
.初期状態では、
DynamoDBは-inMemoryオプションがついた状態で
起動されています。
・データを保存するためには、環境変数DATA DIR
をセットしておきます。
・この環境変数をセッ卜するとKinesisとElasticsearch
のデータ保存場所もここに変更されます。
17/08/19 オープンデベ口ツjて-ズカンファレンス2017Tokyo 1 1
環境変数DATA DIRをセット
·activate したとき自動設定するように、
フックを作成します。
/User、sfuser、name/miniconda3/envs/localstack/
etc/conda/act1vate.d/env vars.sh:
export DATA_DIR="$CONDA_PREFIX/data"
etc/conda/deactivate.d/env vars.sh:
unset DATA DIR
17/08/19 オープンデベ口ツjて-ズカンファレンス2017Tokyo 12
開発中
localstackの操作はCし|コマンド使います。
$ zip -ru 千unc.zip handler.py mylib
$ aws --endpoint-url=http://localhost:4574
lambda delete-千unction --千unction-name=my千unc
$ aws --endpoint-url=http:�/localhost:4574
lambda create-千unction --千unction-name=my千unc
--runtime=python2.7 --role=myrole
ー-handler=handler、.handler、
ー-zip-千ile 千ileb://func.zip
$ aws --endpoint-url=http://localhost:4574
lambda invoke -ー千unction-name my千unc
ー-payload ’{”test11: 11test11}1 result.log
localstack を起動し直すと、
SQSやLambdaは再度作成する必要があります。
いちいち面倒くさい。
17/08/19 オープンデベ口ツjて-ズカンファレンス2017Tokyo 13
そうだ
jupyter-notebookを使おう
• bash kernelで、設定のCし|コマンドを実行すれば、
かんたんに再実行できます。
・ 見出しをつけておけば、 ヒストリから再実行するよりも探しやすい0
. マウスクリックでJll頁に実行できて、 実行結果も一緒に残ります。
・ トライ&エラーの過程も残せて便利です。
・ インストール
$ conda install jupyter jupyter_console qtconsole
notebook nbconvert
• bash kernel
condaのパッケージがないためpipで、インストールしますo
$ pip install bash_kernel
・ IPython kernel specの登録コマンドを実行します。
$ python -m bash_kernel.install
17/08/19 オープンデベ口ツjて-ズカンファレンス2017Tokyo 14
ご JUpyter p州on酬明 L勾out
File Ed� View In鵠rt Cell Kern剖 Help Trusted I Bash 0
�11+ 灰 色 町� 1' ψ 制 ・ C Markdown
4‘
‘’ m
17/08/19
アーカイブ作成
In (SJ: zip - u python.zip hello_world.py
Lambda関数更新
工n [6]: aws -- endpoint-url�http: //localhost:4574 lambda delete-function --function-
In [7 J: aws --endpoint-url=http: I/localhost:4574 lambda create-function --function-
Lambda関数実行
工n [aJ: aws --endpoint-url=http: I/localhost:4574 lambda inv。ke --function-name hell
・'StatusCode'・: 200
}
In [ J:
オープンデベロッJ\ーズカンファレンス2017 Tokyo 15
詳しくはQiitaで、書いています
• Maciこminicondaをつかってjupyter notebookを簡単セットアツ
プする
http://aiita.com/komeda-shinii/items/470c8ca3b2273be1 f825
• miniconda環境にlocalstack専用のenvironmentを作成する
http://aiita.com/komeda-shinii/items/88e493601 b9827de5l da
• localstack をDocker on Mac上で動かす
http://aiita.com/komeda-shinii/items/5a0dl l 9fdee5747f5a1 f
• http_pro×yの設定があるとlocalstackの起動で、工ラーにな
る
http://aiita.com/komeda-shinii/items/c858d4d6f0b0d57854af
17/08/19 オープンデべ口ツjて-ズカンファレンス2017Tokyo 16

More Related Content

PDF
LocalStack
PDF
S3 を単純ストレージとして 利用する手段の比較
PDF
Crawler Commons
PDF
Rancher Meetup Tokyo #4 Intro
PPTX
Rancher meetuptokyo #4 Vagrant でつくる Rancher HA構成
PPTX
Osc spring 20220311
PDF
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
PDF
コミュニティ運営とレンタルサーバ
LocalStack
S3 を単純ストレージとして 利用する手段の比較
Crawler Commons
Rancher Meetup Tokyo #4 Intro
Rancher meetuptokyo #4 Vagrant でつくる Rancher HA構成
Osc spring 20220311
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
コミュニティ運営とレンタルサーバ

What's hot (20)

ODP
高トラフィックサイトをRailsで構築するためのTips基礎編
PPTX
PPTX
CfnClusterを使って10分強でHPC環境を構築する
PDF
Capistrano紹介 at kawasaki.rb #002 #kwskrb
PPT
[大図解]ピグライフはこう動いている
PDF
Azure Virtual Machines設計の勘所 | Microsoft Tech Summit 2017
PPTX
Azure Functionsを業務利用する時の勘所
PPTX
LagopusとAzureとIPsecとDPDK
PPTX
U1 lt120119
PPTX
ZabbixとAWS
PDF
第6回はじめてのAws jaws ug-iwata
PPTX
AWSのRedHatにMySQL最速インストール
PPTX
Rancher meetup 20161007
PPTX
Rancher LT Talk 20170126
PDF
サーバ構築自動化 On aws sqaleの場合
PPTX
JAWS-UG HPC #0 LT資料
PDF
福岡Ruby会議01 20121201 LT
PPTX
Azure DevOpsで技術同人誌作成
PDF
WebServerDevelopment
PDF
Terraforming Windows Virtual Desktop Infrastructure on Azure
高トラフィックサイトをRailsで構築するためのTips基礎編
CfnClusterを使って10分強でHPC環境を構築する
Capistrano紹介 at kawasaki.rb #002 #kwskrb
[大図解]ピグライフはこう動いている
Azure Virtual Machines設計の勘所 | Microsoft Tech Summit 2017
Azure Functionsを業務利用する時の勘所
LagopusとAzureとIPsecとDPDK
U1 lt120119
ZabbixとAWS
第6回はじめてのAws jaws ug-iwata
AWSのRedHatにMySQL最速インストール
Rancher meetup 20161007
Rancher LT Talk 20170126
サーバ構築自動化 On aws sqaleの場合
JAWS-UG HPC #0 LT資料
福岡Ruby会議01 20121201 LT
Azure DevOpsで技術同人誌作成
WebServerDevelopment
Terraforming Windows Virtual Desktop Infrastructure on Azure
Ad

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

PPTX
Fluxflex meetup 2011 in Tokyo
PPTX
fluxflex meetup in Tokyo
PDF
Talk 1「データインテグレーションとは何か」
PDF
X pages day発表_20141118 final
PPTX
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
PDF
Reactnative はじめの一歩
PPTX
Keep a diary
PDF
Dodai projectの紹介
PPTX
stapy_028_talk1
PDF
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
PDF
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
PDF
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
PDF
クラウドコラボレーションサーバ「Collabora Online」を構築してみた
PDF
"Global Distcloud File System" ~インタークラウド広域分散ファイルシステム 大陸間横断ライブマイグレーションを実現する技術
PPTX
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7
PPTX
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」
PDF
JavaOne2017参加報告 Microservices topic & approach #jjug
PDF
20140612_Docker上でCloudStackを動かしてみる!!
PPTX
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PDF
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
Fluxflex meetup 2011 in Tokyo
fluxflex meetup in Tokyo
Talk 1「データインテグレーションとは何か」
X pages day発表_20141118 final
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
Reactnative はじめの一歩
Keep a diary
Dodai projectの紹介
stapy_028_talk1
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
クラウドコラボレーションサーバ「Collabora Online」を構築してみた
"Global Distcloud File System" ~インタークラウド広域分散ファイルシステム 大陸間横断ライブマイグレーションを実現する技術
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」
JavaOne2017参加報告 Microservices topic & approach #jjug
20140612_Docker上でCloudStackを動かしてみる!!
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
Ad

More from 真治 米田 (9)

PDF
何はともあれ、まず最初にやることといえばこれ
PDF
JAWS-UG CLI 専門支部のハンズオンテキストを Jupyter Notebook 上で実行できるようにする
PDF
Oss との関わり
PDF
GraphMLとNeo4jでやってみたいこと
PDF
CentOS6 でも Zabbix 3.0 を動かしたい
PDF
SlackのSlash commandの処理をAWS Lambdaで実装してみました
PDF
OSSを用いた監視/運用ツールの運用課題について
PDF
運用の現場での監視運用ツールの活用
PDF
第2回 OSS運用管理勉強会 運用あるある(Zabbix)
何はともあれ、まず最初にやることといえばこれ
JAWS-UG CLI 専門支部のハンズオンテキストを Jupyter Notebook 上で実行できるようにする
Oss との関わり
GraphMLとNeo4jでやってみたいこと
CentOS6 でも Zabbix 3.0 を動かしたい
SlackのSlash commandの処理をAWS Lambdaで実装してみました
OSSを用いた監視/運用ツールの運用課題について
運用の現場での監視運用ツールの活用
第2回 OSS運用管理勉強会 運用あるある(Zabbix)

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