[[AWSメモ]] > * Chaliceで外部ライブラリを利用する [#c9be98bb] #setlinebreak(on); #contents -- 関連 --- [[ChaliceでAPI Gateway&Lambda開発]] ** フォルダ構成 [#hca50492] #html(<div style="padding-left:10px;">) #html(<div style="background:#eee;padding:10px 20px 10px 10px;display:inline-block">) ┗ app.py ┗ chalicelib ... 自作ライブラリの格納先 ┗ vendor ... サードパーティのライブラリの格納先 #html(</div>) http://chalice.readthedocs.io/en/latest/topics/packaging.html?highlight=directories #html(</div>) *** プロジェクトの作成 [#e82f1e73] #myterm2(){{ chalice new-project test-libs cd test-libs mkdir chalicelib mkdir vendor }} ** 外部ライブラリの追加 [#sdd76178] #html(<div style="padding-left:10px;">) vendor 配下に WHL形式([[PEP-427>http://legacy.python.org/dev/peps/pep-0427/]])でインストールする #myterm2(){{ cd vendor pip download pyyaml pip wheel PyYAML-3.12.tar.gz rm -rf PyYAML-3.12.tar.gz && cd ../ }} #html(</div>) ** 自作ライブラリの追加 [#ma7db842] #html(<div style="padding-left:10px;">) chalicelib/utils.py #mycode2(){{ # coding: utf-8 """ユーティリティモジュール""" import yaml def parse_yaml(yaml_text): """yaml文字列をdict型にパースする""" return yaml.load(yaml_text) }} #html(</div>) ** メイン処理の作成 [#ga64dd2e] #html(<div style="padding-left:10px;">) app.py #mycode2(){{ from chalice import Chalice from chalicelib import utils app = Chalice(app_name='test-libs') @app.route('/') def index(): with open("test.yaml", "r") as f: print ("yaml read") yaml_text = f.read(); yaml_dict = utils.parse_yaml(yaml_text) if "title" in yaml_dict: return { 'title': yaml_dict["title"] } return { 'message': 'error!' } }} #html(</div>) ** テスト用のYAMLを作成 [#w280e207] test.yaml #mycode2(){{ title: Test Title desc: Test Desc }} ** ローカルサーバ実行 [#v37ea363] #myterm2(){{ chalice local }} ** 動作確認 [#vc120ae8] #myterm2(){{ curl http://localhost:8000 }}