[[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
}}

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS