第3回 作りながら覚えるFlask+Pipenv 〜AWSへのデプロイ後、ドメインでアクセスできるように設定〜

#概要
●記事一覧
<a href="https://qiita.com/ryohei0109_develop/items/b726efe02424e655e819">第1回 作りながら覚えるFlask+Pipenv 〜フォルダごとのURLルーティングについて〜</a>
<a href="https://qiita.com/ryohei0109_develop/items/66b7dfc04292d15a6223">第2回 作りながら覚えるFlask+Pipenv 〜Zappaを使用してAWSへのデプロイ〜</a>
第3回 作りながら覚えるFlask+Pipenv 〜AWSへのデプロイ後、ドメインでアクセスできるように設定〜 ※本記事

前回、Zappaを用いてAWSへのデプロイが完了しました。
ただ、API Gatewayで発行された長ったらしいURLでアクセスしているので、
今回は、ドメインを割り当ててアクセスできるようにしていきます。

#手順1 Route53にドメインの登録
AWSの「Route53」でドメインを取得します。
AWS→Route53 レフトナビの「登録済みドメイン」にて、
新しくドメインの取得もしくはRoute53へのドメインの移管を行えます。

![スクリーンショット 2021-02-18 21.40.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694199/c7a2566c-6f77-9732-289f-3fffb55acf9a.png)

#手順2 Certificate Managerで証明書の作成
Route53にドメインが登録されたら、AWSの「Certificate Manager」で証明書の作成を行います。
※東京リージョンでRoute53にドメインを登録していても、
Certificate Managerでは必ず「バージニア北部」リージョンを選択して下さい。
でないと後ほどエラーになります。

![スクリーンショット 2021-02-18 21.44.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694199/aa8a46a7-5d68-93ad-70a8-ed7074081eb7.png)

「証明書のリクエスト」ボタンをクリックします。

![スクリーンショット 2021-02-18 21.48.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694199/2ec99ae5-f7c6-db3c-fa27-55f924862d50.png)

「パブリック証明書のリクエスト」にチェックを入れ、「証明書のリクエスト」ボタンをクリックします。

![スクリーンショット 2021-02-18 21.51.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694199/4e64eff5-8f4e-c522-5f85-9408e4854d3d.png)

手順1でRoute53で登録したドメイン名を入力し、「次へ」ボタンをクリックします。

![スクリーンショット 2021-02-18 21.53.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694199/5fad4517-abcc-1532-caba-e6893479e108.png)

DNSもしくはEメールで、入力したドメインの持ち主かどうかの検証ができますが、今回は「DNSの検証」を行います。
「DNSの検証」にチェックを入れ、「次へ」ボタンをクリックします。

![スクリーンショット 2021-02-18 21.55.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694199/4e59bccc-a1ba-b7f0-32ae-47a780876007.png)

今回はタグは設定せずに、「確認」ボタンをクリックします。

![スクリーンショット 2021-02-18 21.56.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694199/b3336d9e-8630-77a0-a0d3-9756bddc800f.png)

入力した内容に間違いが無いか確認し、「確定とリクエスト」ボタンをクリックします。

![スクリーンショット 2021-02-18 21.59.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694199/5f89fb75-b6bb-0e5e-304e-9f9e84d5d84d.png)

完了画面が表示されるので、
赤枠で囲ったドメイン名をクリックすると詳細が表示されます。

![スクリーンショット 2021-02-18 22.04.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694199/dab992c8-11d8-7e2a-c2fb-4fcc172f51ce.png)

「Route53でのレコードの作成」ボタンをクリックし、DNS検証用のレコードを作成します。

![スクリーンショット 2021-02-18 22.07.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694199/c504ad96-f222-75c6-fb32-e7e5c2ea02f8.png)

確認画面が表示されるので、「作成」ボタンをクリックすると自動的にレコードを作成してくれます。
これとても便利ですね。

![スクリーンショット 2021-02-18 22.10.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694199/351e8f78-e186-bb40-a854-6e495d6f9a78.png)

レコードの作成が成功したことを確認し、画面右下の「続行」ボタンをクリックします。

![スクリーンショット 2021-02-18 22.12.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694199/103a5e72-6f61-1c81-ad0a-f04cf06e74bb.png)

証明書一覧画面に戻ると、「検証保留中」と表示されています。
30分ほど待つと…

![スクリーンショット 2021-02-18 22.15.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694199/7dac67b5-6e34-c6b8-333f-e234cf74fe7c.png)

無事、証明書が発行されました！

次のステップで必要になるので、画面を少し下にスクロールしARNをコピーしておきます。

![スクリーンショット 2021-02-18 22.31.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694199/e0e595bf-3a56-cc7e-2c60-34252e5001fa.png)


#手順3 Zappa configファイルにドメイン及び証明書情報の追記
続いて、ZappaのconfigファイルにRoute53で設定したドメイン及びCertificate Managerで取得したARNを追記します。

```json
{
    "dev": {
        "app_function": "server.app",
        "aws_region": "ap-northeast-1",
        "profile_name": "flask-sample",
        "project_name": "application",
        "runtime": "python3.8",
        "s3_bucket": "zappa-zl2df33oj",
        "domain": "Route53に登録したドメイン",
        "certificate_arn": "手順1のCertificate Managerで取得したARN"
    }
}
```

#手順4 ZappaコマンドでAWSにドメイン反映

前回記事でPipfileが生成されたフォルダ階層で、仮想環境(Pipenv)に入ります。

```
% pipenv shell
```

ZappaコマンドでAWSにドメイン設定を反映します。

```
% zappa certify
```

```
Calling certify for stage dev..
Are you sure you want to certify? [y/n] 
```
本当に良いのか聞かれるので、[y]でEnter。

```
Certifying domain hogehoge.com..
Created a new domain name with supplied certificate. Please note that it can take up to 40 minutes for this domain to be created and propagated through AWS, but it requires no further work on your part.
Certificate updated!
```

無事、Certificate updated!と表示されれば完了です。
40分ほど待ってくださいね、とのことなのでしばらく待てば、設定したドメインでアクセスできるようになります。

お疲れ様でした！


●記事一覧
<a href="https://qiita.com/ryohei0109_develop/items/b726efe02424e655e819">第1回 作りながら覚えるFlask+Pipenv 〜フォルダごとのURLルーティングについて〜</a>
<a href="https://qiita.com/ryohei0109_develop/items/66b7dfc04292d15a6223">第2回 作りながら覚えるFlask+Pipenv 〜Zappaを使用してAWSへのデプロイ〜</a>
第3回 作りながら覚えるFlask+Pipenv 〜AWSへのデプロイ後、ドメインでアクセスできるように設定〜 ※本記事