Djangoをbeanstalk上にデプロイした時に認証が通らない
事象
リクエストのヘッダーにAuthorization情報を付けて、各APIに認証チェックを入れたい。 curlにすると以下のイメージ
curl -H "Authorization: JWT XXXXXXX" -G http://localhost:8000/api/piyo/getList?login_id=test@test.jp
ローカルではちゃんと認証が通ってレスポンスが返却されるが、
AWSにデプロイしたAPIに同じリクエストを送っても認証エラーになってしまう。
{"status":false,"errors":[{"error_id":"認証エラー"}]}
解決方法
python - Authentication credentials were not provided. when deployed to AWS - Stack Overflow
.ebextensions/django.configに対して、「container_commands:〜」以下のコマンドを追加する
option_settings: aws:elasticbeanstalk:container:python: WSGIPath: XXX_api/wsgi.py aws:elasticbeanstalk:application:environment: DJANGO_SETTINGS_MODULE:XXX_api.settings container_commands: 01wsgipass: command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf'
認証が通るようになった!