LoginSignup
2
0

More than 3 years have passed since last update.

第2回 作りながら覚えるFlask+Pipenv 〜Zappaを使用してAWSへのデプロイ〜

Last updated at Posted at 2021-02-18

概要

●記事一覧
第1回 作りながら覚えるFlask+Pipenv 〜フォルダごとのURLルーティングについて〜
第2回 作りながら覚えるFlask+Pipenv 〜Zappaを使用してAWSへのデプロイ〜 ※本記事
第3回 作りながら覚えるFlask+Pipenv 〜AWSへのデプロイ後、ドメインでアクセスできるように設定〜

前回作成したFlaskアプリケーションをZappaを使用してAWSへデプロイしていきます。
※あらかじめAWSアカウントはご準備下さい。

手順1. AWS ポリシー作成

ZappaからAWSにアクセスするにあたり、
セキュリティ対策のために必要最低限の権限(ポリシー)を作成します。

・AWSへアクセスし、IAMサービスに移動
スクリーンショット 2021-02-18 14.21.22.png

・レフトナビから「ポリシー」をクリック

・「ポリシーの作成」をクリック

・「JSON」タブをクリック

・以下ポリシールールをコピペ

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "iam:*",
                "cloudfront:*",
                "s3:*",
                "apigateway:*",
                "logs:*",
                "route53:*",
                "lambda:*",
                "cloudformation:*",
                "dynamodb:*",
                "events:*"
            ],
            "Resource": "*"
        }
    ]
}

・画面右下の「次のステップ:タグ」をクリック

・画面右下の「次のステップ:確認」をクリック
※今回はタグは設定しません。
スクリーンショット 2021-02-18 14.31.47.png

・任意のポリシーの名前を入力
スクリーンショット 2021-02-18 14.32.48.png

・最後に画面右下の「ポリシーの作成」をクリックし、ポリシー作成完了

手順2. AWS IAM作成

手順1で作成したポリシーを設定したIAMを作成します。
AWS IAMとは、AWSを操作するためのアカウントのことです。

・IAMの画面のレフトナビで「ユーザー」をクリック

・画面上部の青い「ユーザーを追加」ボタンをクリック
スクリーンショット 2021-02-18 14.39.43.png

・任意の「ユーザー名」を入力
・「プログラムによるアクセス」にチェック
・画面右下の青い「次のステップ:アクセス権限」ボタンをクリック
スクリーンショット 2021-02-18 14.40.43.png

・「既存のポリシーを直接アタッチ」をクリック
・先程作成したポリシーにチェック
・画面右下の青い「次のステップ:タグ」ボタンをクリック
スクリーンショット 2021-02-18 14.42.15.png

・画面右下の青い「次のステップ:確認」ボタンをクリック
※今回はタグは設定しません。
スクリーンショット 2021-02-18 14.43.26.png

・最終確認画面が表示されるので、問題なければ画面右下青い「ユーザーの作成」ボタンをクリック
スクリーンショット 2021-02-18 14.44.23.png

・ユーザーの作成が完了すると、このユーザーを使用してAWSへアクセスするための「アクセスキーID」および「シークレットアクセスキー」が表示されます。
・「.csvのダウンロード」ボタンからキーをダウンロードできるので、大切に保管しておきましょう。
※アクセスキーID及びシークレットアクセスキーは、ユーザー作成直後のこの画面でしか確認できないため、必ずダウンロードもしくはメモをとるようにしましょう。
もしメモを忘れた場合は、新しくユーザーを作成し直す必要があります。
スクリーンショット 2021-02-18 14.45.44.png

手順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へのデプロイ後、ドメインでアクセスできるように設定〜

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0