見出し画像

「動かして学ぶ!Pythonサーバレスアプリ開発入門」を読んでみた ~ Day 2 ~

「動かして学ぶ!Pythonサーバレスアプリ開発入門」を読んでみて、色々伝えたことを書いていく2日目です

1日目
「動かして学ぶ!Pythonサーバレスアプリ開発入門」を読んでみた ~ Day 1 ~

---------------

Chapter 6

黙々とviewのtempleteを作成

---------------

Chapter 7

DynamoDBの設定をおこなっていきます。

ローカルで動かすために、DynamoDBをダウンロードします。https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html

テーブルを作成する上で、Flask-Scriptを使うのですが、実はFlask2.0はFlask-Script非対応です。2.0以降にアップデートした瞬間使えなくなります。2.0でflask scriptを実行すると以下のようなエラーが出ます。

ModuleNotFoundError: No module named 'flask._compat'

公式マニュアルにもあるとおり、flaskではflask本体に組み込まれているスクリプト実行機能を推奨しています。
https://flask-script.readthedocs.io/en/latest/

スクリーンショット 2021-06-28 1.47.48

Custom Command を使うと同じような機能が実装できます。
https://flask.palletsprojects.com/en/2.0.x/cli/#custom-commands

mange.pyは作らずに、 __init__.py に以下を加えます。

from flask_blog.models.entries import Entry


@app.cli.command("init_db")
def create_table():
   if not Entry.exists():
       Entry.create_table(read_capacity_units=5, write_capacity_units=2)

保存したら以下のコマンドでテーブルが作成されます

% flask init_db 

ここで、気をつけたいのが、テーブルの作成に失敗してもエラーが出ないことがあります。以下のコマンドでローカルDBの中のテーブルを一覧で表示することができます。

% aws dynamodb list-tables --endpoint-url http://localhost:8000

{
   "TableNames": [
       "serverless_blog_entries"
   ]
}​

コマンドの詳細についてはこちら
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocal.UsageNotes.html

うっかりFlask2.0で始めたらここで詰まるので、特に伝えたかった内容でした。

---------------

Chapter 8

ログイン機能を実装します。

会員認証機能では無くて、あくまでログイン機能という表現で、実体は環境変数に保存したIDとパスワードでログインする機能です。

---------------

次はいよいよサーバレス環境にDeployしていきます

つづく………


この記事が参加している募集

いつもありがとうございます! いただいたサポートは開発費(サーバー運用費)などに使わせていただきます!