5.4 カスタムドメインとSSL証明書の設定

5.4 カスタムドメインとSSL証明書の設定 #

AWS LambdaとZappaを使用してFlaskアプリをデプロイする際、カスタムドメインとSSL証明書の設定を行うことで、セキュアな通信を確保し、ブランドの信頼性を向上させることができます。このセクションでは、Route 53とAWS Certificate Manager(ACM)を使用して、カスタムドメインの設定とSSL証明書の取得・設定手順について詳しく説明します。

1. Route 53でドメインの設定 #

  1. AWS Management Consoleにログインし、Route 53のサービスページに移動します。
  2. 「ホストゾーンの作成」をクリックし、ドメイン名を入力します。
  3. ホストゾーンが作成されると、レコードセットの管理画面に移動します。
  4. レコードセットの作成をクリックし、以下の設定を行います:
    • タイプ: A - IPv4アドレス
    • ルーティングポリシー: シンプル
    • TTL: デフォルト値(または要件に応じて変更)
    • 値: Lambda関数のAPI Gatewayエンドポイント
  5. 設定を保存します。

2. ACMでSSL証明書の取得 #

  1. AWS Management Consoleにログインし、AWS Certificate Manager(ACM)のサービスページに移動します。
  2. 「証明書のリクエスト」をクリックし、以下の設定を行います:
    • ドメイン名: カスタムドメイン名
    • 追加のドメイン名: サブドメインなど追加のドメイン(必要に応じて)
    • 検証方法: DNS
  3. 「証明書のリクエスト」をクリックして証明書のリクエストを送信します。

3. 証明書の検証 #

  1. 証明書のリクエストが完了すると、ACMのコンソールで証明書の詳細が表示されます。
  2. 証明書の詳細にいき「Route 53でレコードを作成」をクリックし、レコードを作成します。

4. API Gatewayでカスタムドメインの設定 #

  1. AWS Management Consoleにログインし、API Gatewayのサービスページに移動します。
  2. デプロイしたAPIを選択し、「カスタムドメイン名」をクリックします。
  3. 「カスタムドメイン名の設定」をクリックし、以下の設定を行います:
    • カスタムドメイン名: カスタムドメイン名
    • ACM証明書: 発行されたSSL証明書を選択
    • ベースパスマッピング: 必要に応じて設定
  4. 設定を保存します。
  5. 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にデプロイします。

  1. ターミナルまたはコマンドプロンプトを開き、Flaskアプリのルートディレクトリに移動します。
  2. 必要なライブラリや依存関係をインストールします。
  3. zappa deploy devコマンドを実行してデプロイを開始します。devはzappa_settings.jsonファイルの環境名です。
  4. デプロイが完了すると、API Gatewayのエンドポイントやカスタムドメインが表示されます。
  5. カスタムドメインのDNSレコードを設定して、ドメイン名をデプロイしたAPIに関連付けます。
  6. デプロイが成功したら、AWS LambdaとZappaを使ってFlaskアプリがカスタムドメインでセキュアに動作するようになります。

以上で、AWS LambdaとZappaを使用したFlaskアプリのデプロイおよびカスタムドメインとSSL証明書の設定が完了しました。