#概要
●記事一覧
第1回 作りながら覚えるFlask+Pipenv 〜フォルダごとのURLルーティングについて〜
第2回 作りながら覚えるFlask+Pipenv 〜Zappaを使用してAWSへのデプロイ〜 ※本記事
第3回 作りながら覚えるFlask+Pipenv 〜AWSへのデプロイ後、ドメインでアクセスできるように設定〜
前回作成したFlaskアプリケーションをZappaを使用してAWSへデプロイしていきます。
※あらかじめAWSアカウントはご準備下さい。
#手順1. AWS ポリシー作成
ZappaからAWSにアクセスするにあたり、
セキュリティ対策のために必要最低限の権限(ポリシー)を作成します。
・以下ポリシールールをコピペ
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"iam:*",
"cloudfront:*",
"s3:*",
"apigateway:*",
"logs:*",
"route53:*",
"lambda:*",
"cloudformation:*",
"dynamodb:*",
"events:*"
],
"Resource": "*"
}
]
}
・画面右下の「次のステップ:確認」をクリック
※今回はタグは設定しません。
・最後に画面右下の「ポリシーの作成」をクリックし、ポリシー作成完了
#手順2. AWS IAM作成
手順1で作成したポリシーを設定したIAMを作成します。
AWS IAMとは、AWSを操作するためのアカウントのことです。
・任意の「ユーザー名」を入力
・「プログラムによるアクセス」にチェック
・画面右下の青い「次のステップ:アクセス権限」ボタンをクリック
・「既存のポリシーを直接アタッチ」をクリック
・先程作成したポリシーにチェック
・画面右下の青い「次のステップ:タグ」ボタンをクリック
・画面右下の青い「次のステップ:確認」ボタンをクリック
※今回はタグは設定しません。
・最終確認画面が表示されるので、問題なければ画面右下青い「ユーザーの作成」ボタンをクリック
・ユーザーの作成が完了すると、このユーザーを使用してAWSへアクセスするための「アクセスキーID」および「シークレットアクセスキー」が表示されます。
・「.csvのダウンロード」ボタンからキーをダウンロードできるので、大切に保管しておきましょう。
※アクセスキーID及びシークレットアクセスキーは、ユーザー作成直後のこの画面でしか確認できないため、必ずダウンロードもしくはメモをとるようにしましょう。
もしメモを忘れた場合は、新しくユーザーを作成し直す必要があります。
#手順3. AWS CLIインストール
AWS CLIとは、AWSをコマンドから操作するためのパッケージです。
下記コマンドでインストールできます。
% pipenv install awscli
#手順4. AWS CLI設定
AWS CLIのインストールが完了したら、
手順2で取得したアクセスキーID及びシークレットキーを用いて、プロファイルの設定を行います。
プロファイル設定コマンド
※「Flask-Sample」の部分は任意の名前で大丈夫です。
% aws configure --profile Flask-Sample
すると
AWS Access Key ID [None]:
と聞かれるので、AWSのユーザー作成完了画面でメモしたアクセスキーを貼り付け、Enter。
AWS Secret Access Key [None]:
次はシークレットアクセスキーを聞かれるので、
先程と同様、AWSのユーザー作成完了画面でメモしたものを貼り付け、Enter。
Default region name [None]:
次はリージョンを聞かれるので、東京リージョンを表す
ap-northeast-1
を入力してEnter。
※AWSでは東京、香港等どのリージョンのサービスを使うか指定できます。
Default output format [None]:
最後に出力するフォーマットを聞かれるので、
json
と入力してEnter。
これでAWS CLIのプロファイルの設定は完了したので、
コマンドからAWSの操作ができるようになります。
#手順5. Zappaインストール
続いてZappaをインストールします。
Zappaとは、AWSのLambdaやAPI Gateway等のサービスを利用して、アプリを構築するPythonのサーバーレスフレームワークです。
Zappaを利用することにより、各サービスの細かい設定をしなくても手軽にサーバーレスアプリをデプロイできます。
インストールは下記コマンドでOK。
% pipenv install zappa
#手順6. Zappa config設定
Zappaを用いてAWSへデプロイするために、設定ファイルを作成します。
まずは下記コマンドでZappaの設定ファイルを生成していきます。
% zappa init
What do you want to call this environment (default 'dev'):
デプロイ環境の名前を聞かれるので、そのままでよければEnter。
任意の名前をつけてもOK。
We found the following profiles: test1, test2, Flask-Sample, and default. Which would you like us to use? (default 'default'):
手順4のプロファイル設定時に入力したプロファイル名を入力しEnter。
今回の例では「Flask-Sample」と入力します。
What do you want to call your bucket? (default 'zappa-2hhgpln8q'):
続いてソースコードをアップロードするS3のバケット名を聞かれます。
ランダムに生成された名前でもよければこのままEnter。
※「S3」とは「Simple Storage Service」の頭文字S3つをとって、「S3」といいます。
AWSのストレージサービスのことをさします。
Where is your app's function? (default 'flask_sample.__init__.app'):
次にFlaskアプリケーションの起動ファイルを聞かれます。
今回は察してくれているように「__init__.app」なのでこのままEnter。
Would you like to deploy this application globally? (default 'n') [y/n/(p)rimary]:
次にAPI Gatewayのアクセスについて、グローバルに最適化するかどうか聞かれます。
今回はそこまでのパフォーマンスは必要ないのでデフォルトでこのままEnter。
Does this look okay? (default 'y') [y/n]:
最後に確認してくれるので、問題なければこのままEnter。
するとアプリケーションフォルダ内に「zappa_settings.json」ファイルが自動生成されます。
#手順7. AWSへデプロイ
いよいいよAWSへデプロイします。
といっても、ここまで準備ができたら、あとはコマンド1つで完了です。
% zappa delopy
少しまってデプロイが完了すると、
Your updated Zappa deployment is live!: https://14m3qo7f7d.execute-api.ap-northeast-1.amazonaws.com/dev
こんな形でデプロイしたURLが表示されるので、ブラウザからアクセスして表示されれば完了です!
お疲れ様です!
※ちなみに、ソースコードを更新して再度デプロイする場合のコマンドは、
% zappa update
でできます!
第1回 作りながら覚えるFlask+Pipenv 〜フォルダごとのURLルーティングについて〜
第2回 作りながら覚えるFlask+Pipenv 〜Zappaを使用してAWSへのデプロイ〜 ※本記事
第3回 作りながら覚えるFlask+Pipenv 〜AWSへのデプロイ後、ドメインでアクセスできるように設定〜