5.4 カスタムドメインとSSL証明書の設定 #
AWS LambdaとZappaを使用してFlaskアプリをデプロイする際、カスタムドメインとSSL証明書の設定を行うことで、セキュアな通信を確保し、ブランドの信頼性を向上させることができます。このセクションでは、Route 53とAWS Certificate Manager(ACM)を使用して、カスタムドメインの設定とSSL証明書の取得・設定手順について詳しく説明します。
1. Route 53でドメインの設定 #
- AWS Management Consoleにログインし、Route 53のサービスページに移動します。
- 「ホストゾーンの作成」をクリックし、ドメイン名を入力します。
- ホストゾーンが作成されると、レコードセットの管理画面に移動します。
- レコードセットの作成をクリックし、以下の設定を行います:
- タイプ: A - IPv4アドレス
- ルーティングポリシー: シンプル
- TTL: デフォルト値(または要件に応じて変更)
- 値: Lambda関数のAPI Gatewayエンドポイント
- 設定を保存します。
2. ACMでSSL証明書の取得 #
- AWS Management Consoleにログインし、AWS Certificate Manager(ACM)のサービスページに移動します。
- 「証明書のリクエスト」をクリックし、以下の設定を行います:
- ドメイン名: カスタムドメイン名
- 追加のドメイン名: サブドメインなど追加のドメイン(必要に応じて)
- 検証方法: DNS
- 「証明書のリクエスト」をクリックして証明書のリクエストを送信します。
3. 証明書の検証 #
- 証明書のリクエストが完了すると、ACMのコンソールで証明書の詳細が表示されます。
- 証明書の詳細にいき「Route 53でレコードを作成」をクリックし、レコードを作成します。
4. API Gatewayでカスタムドメインの設定 #
- AWS Management Consoleにログインし、API Gatewayのサービスページに移動します。
- デプロイしたAPIを選択し、「カスタムドメイン名」をクリックします。
- 「カスタムドメイン名の設定」をクリックし、以下の設定を行います:
- カスタムドメイン名: カスタムドメイン名
- ACM証明書: 発行されたSSL証明書を選択
- ベースパスマッピング: 必要に応じて設定
- 設定を保存します。
- APIマッピングをします
以上でカスタムドメインとSSL証明書の設定が完了しました。
5. zappa_settings.jsonの設定 #
AWS LambdaとZappaを使用してFlaskアプリをデプロイするために、zappa_settings.jsonファイルを作成して必要な設定を行います。以下はzappa_settings.jsonファイルの典型的な内容です。
{
"dev": {
"app_function": "my_app.app",
"aws_region": "us-west-1",
"profile_name": "my_aws_profile",
"project_name": "my_flask_app",
"runtime": "python3.8",
"s3_bucket": "my_unique_s3_bucket_name",
"keep_warm": false,
"domain": "mycustomdomain.com",
"certificate_arn": "arn:aws:acm:us-west-1:123456789012:certificate/abcdefg-1234-5678-abcd-1234567890ab"
}
}
上記の例では、次の設定が含まれています:
- dev: 環境名(開発環境など)を指定します。
- app_function: デプロイするFlaskアプリのエントリーポイントを指定します。my_appはアプリケーションのPythonファイル名であり、appはFlaskアプリケーションのインスタンス名です。
- aws_region: デプロイするAWSリージョンを指定します。
- profile_name: 使用するAWSプロファイルの名前を指定します。
- project_name: プロジェクトの名前を指定します。
- runtime: 使用するPythonランタイムのバージョンを指定します。
- s3_bucket: Zappaがデプロイに使用する一時的なS3バケットの名前を指定します。
- keep_warm: ウォームアップを有効にするかどうかを指定します(オプション)。
- domain: カスタムドメイン名を指定します。
- certificate_arn: ACMで取得したSSL証明書のARNを指定します。 設定を適宜変更し、zappa_settings.jsonファイルを作成して保存してください。
7. デプロイ #
以下の手順でFlaskアプリをAWS Lambdaにデプロイします。
- ターミナルまたはコマンドプロンプトを開き、Flaskアプリのルートディレクトリに移動します。
- 必要なライブラリや依存関係をインストールします。
- zappa deploy devコマンドを実行してデプロイを開始します。devはzappa_settings.jsonファイルの環境名です。
- デプロイが完了すると、API Gatewayのエンドポイントやカスタムドメインが表示されます。
- カスタムドメインのDNSレコードを設定して、ドメイン名をデプロイしたAPIに関連付けます。
- デプロイが成功したら、AWS LambdaとZappaを使ってFlaskアプリがカスタムドメインでセキュアに動作するようになります。
以上で、AWS LambdaとZappaを使用したFlaskアプリのデプロイおよびカスタムドメインとSSL証明書の設定が完了しました。