SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
Akihiro Kuwano
 
サーバ構築自動化 On aws sqaleの場合
サーバ構築自動化 On aws   sqaleの場合サーバ構築自動化 On aws   sqaleの場合
サーバ構築自動化 On aws sqaleの場合
Ryo Kuroda
 
福岡Ruby会議01 20121201 LT
福岡Ruby会議01 20121201 LT福岡Ruby会議01 20121201 LT
福岡Ruby会議01 20121201 LT
学 松崎
 

Was ist angesagt? (20)

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

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

Fluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in TokyoFluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in Tokyo
Kyosuke Inoue
 
fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in Tokyo
Kyosuke Inoue
 
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn
 
Dodai projectの紹介
Dodai projectの紹介Dodai projectの紹介
Dodai projectの紹介
Osamu Habuka
 
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
Masanori Itoh
 

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

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

Mehr von 真治 米田

OSSを用いた監視/運用ツールの運用課題について
OSSを用いた監視/運用ツールの運用課題についてOSSを用いた監視/運用ツールの運用課題について
OSSを用いた監視/運用ツールの運用課題について
真治 米田
 
第2回 OSS運用管理勉強会 運用あるある(Zabbix)
第2回 OSS運用管理勉強会 運用あるある(Zabbix)第2回 OSS運用管理勉強会 運用あるある(Zabbix)
第2回 OSS運用管理勉強会 運用あるある(Zabbix)
真治 米田
 

Mehr von 真治 米田 (9)

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

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