「動かして学ぶ!Pythonサーバレスアプリ開発入門」のサンプルコードです。
application
: サーバレスBlogアプリケーションserverless-bot
: サーバレスBotsnippets
: 本文中のリストのスニペット(例:リスト6.2 -> list.6.2.txt)
zappa_settings.json
はzappa_settings.json.sample
としてサンプルを置いております。
変更後の箇所は以下になります。(詳細はこちらをご覧ください)
~/.bashrc
AWS_ACCESS_KEY_ID = 'AWS_ACCESS_KEY_ID'
application/flask_blog/models/entries.py
aws_access_key_id = app.config.get('AWS_ACCESS_KEY_ID')
application/flask_blog/models/sessions.py
aws_access_key_id = app.config.get('AWS_ACCESS_KEY_ID')
application/flask_blog/config.py
class DevelopmentConfig(Config):
....
AWS_ACCESS_KEY_ID = 'AWS_ACCESS_KEY_ID'
....
SESSION_DYNAMODB_KEY_ID = AWS_ACCESS_KEY_ID
....
class ProductionConfig(Config):
....
AWS_ACCESS_KEY_ID = os.environ.get('SERVERLESS_AWS_ACCESS_KEY_ID')
....
SESSION_DYNAMODB_KEY_ID = AWS_ACCESS_KEY_ID
現時点(2021/07/20)のFlask-Scriptの最新バージョンにて、Flask2.0との組み合わせでバグ報告が上がっております。
$ python manage.py init_db
Traceback (most recent call last):
File "C:\Users\xxx\workspace\python-serverless\application\manage.py", line 1, in <module>
from flask_script import Manager
File "C:\Users\xxx\.virtualenvs\application-rWZzxA8f\lib\site-packages\flask_script\__init__.py", line 15, in <module>
from flask._compat import text_type
ModuleNotFoundError: No module named 'flask._compat'
Flaskバージョンを本書記載の1.1.2でインストールしてください。
pipenv install "Flask==1.1.2"
その後、Flask-Scriptのインストールが可能になります。
現時点(2021/07/20)のzappaの最新バージョン(0.53.0)では、Flaskバージョン1.0系にのみ対応しております。
そのため、Flaskバージョン2.0以上をインストールしている場合にはコンフリクトが発生します。
Flaskバージョンを本書記載の1.1.2でインストールしてください。
pipenv install "Flask==1.1.2"
その後、zappaのインストールが可能になります。
zappaの関連ライブラリのアップデートにより、zappaにて以下のエラーが発生しております。
Traceback (most recent call last):
File "/Users/hondatakatomo/.local/share/virtualenvs/application-tAyQEiLX/lib/python3.8/site-packages/zappa/cli.py", line 3422, in handle
sys.exit(cli.handle())
File "/Users/hondatakatomo/.local/share/virtualenvs/application-tAyQEiLX/lib/python3.8/site-packages/zappa/cli.py", line 588, in handle
self.dispatch_command(self.command, stage)
File "/Users/hondatakatomo/.local/share/virtualenvs/application-tAyQEiLX/lib/python3.8/site-packages/zappa/cli.py", line 630, in dispatch_command
self.deploy(self.vargs["zip"], self.vargs["docker_image_uri"])
File "/Users/hondatakatomo/.local/share/virtualenvs/application-tAyQEiLX/lib/python3.8/site-packages/zappa/cli.py", line 952, in deploy
template = self.zappa.create_stack_template(
File "/Users/hondatakatomo/.local/share/virtualenvs/application-tAyQEiLX/lib/python3.8/site-packages/zappa/core.py", line 2417, in create_stack_template
self.cf_template.add_description("Automatically generated with Zappa")
AttributeError: 'Template' object has no attribute 'add_description'
該当のzappa関連ライブラリであるtroposphere
を、以下のバージョン指定でインストールしてください。
pipenv install "troposphere==2.7.1"
2021/08/04時点でのzappa最新バージョン0.53.0では未対応ですが 現在修正対応中のため、今後はzappaの最新バージョンにてエラーが発生しないよう対応される見込みです。 随時こちらでも情報をアップデートさせていただきます。
環境変数が正しく読み込まれていないことが原因になります。
...
botocore.exceptions.NoCredentialsError: Unable to locate credentials
...
以下の5つの環境変数が正しく設定されているか確認してみてください。
「誤字」の項での値が正しく直っているか(ACEESS
-> ACCESS
)も再度ご確認ください。
SERVERLESS_BLOG_CONFIG
SERVERLESS_USER_PW
SERVERLESS_SECRET_KEY
SERVERLESS_AWS_ACCESS_KEY_ID
SERVERLESS_AWS_SECRET_KEY
設定後、windowsを再起動して環境変数が読み込まれているか確認してみてください。