無料ドメインや外部のドメインを使ってAPIGWを実行する

記事タイトルとURLをコピーする

はじめに

こんにちは、AmazonブラックフライデーセールでiPad Airを買いました、アプリケーションサービス部 ディベロップメントサービス1課の北出です。

今回は、無料のドメインでAPI Gatewayにリクエストを送る検証をする必要があり、やったことを記述させていただきます。 無料ドメインにかかわらず、外部ドメインを使用する際は近い流れになるかと思いますので参考になれば幸いです。

関連サービス

  • AWS
    • Amazon Route53
    • AWS Certificate Manager
    • Amazon API Gateway
  • その他

無料ドメインの取得に、当初はfreenomの使用を検討していましたが、freenomが使用不可になっていたため、InfinityFreeを使用しました。

前提条件

API Gatewayは作成済み

無料ドメインの取得

  • InfinityFreeにアクセスし、サインアップし、ログインします。
  • ログイン後、Create Accountを選択します
  • 無料プランを選択し、Create Nowを選択します。
  • ドメイン名を設定し、Check Availabilityを選択し、問題なければCreate Accountを選択します。

サブドメインの作成

ドメイン名からAPI Gatewayのエンドポイントに通信を転送するためには、CNAMEレコードを設定する必要があります。 しかし、InfinityFreeではデフォルトのドメインのターゲットをAPI Gatewayのエンドポイントに設定することができないため、サブドメインを設定し、サブドメインをAPI Gatewayのエンドポイントに設定します。 例えば、作成したドメイン名の最初にapi.を追加したものをサブドメイン名とします。

Route53でホストゾーンの作成

  • AWSマネジメントコンソールにログインし、Route53に移動します
  • ホストゾーンの作成を選択します
    • サブドメインを含めたドメイン名を設定し、パブリックホストゾーンにチェックし、ホストゾーンの作成を選択します。

ACM証明書の取得

サブドメインのACM証明書をリクエスト

  • AWS マネジメントコンソールにログインし、AWS Certificate Managerに移動します。
  • 証明書をリクエストを選択します。
    • パブリック証明書をリクエストを選択します。
    • ドメイン名にサブドメイン名を指定し、ほかの設定はデフォルトのままリクエストを選択します

Route53にレコード追加

  • 証明書からリクエスト中の証明書を選択します
  • ドメインのRoute53でレコードを作成を選択します。
  • 作成したドメインを選択し、レコードの作成をします
    • Route53のホストゾーンにCNAMEレコードが作成されたことを確認します

DNSレコードについてはこちらの記事がありました

InfinityFreeにCNAMEレコードを追加

  • InfinityFreeで作成したドメインのアカウントを選択します。
  • Manageを選択します
  • 移動後の画面で左ナビゲーションバーからDNS Recordsを選択します。
  • Add Recordを選択し、Create CNAME Recordを選択します。
    • NameにはRoute53に追加されたCNAMEレコード名をコピーします
    • Targetにはレコードの値から末尾のピリオドを除いた部分をコピーします
    • Create CNAME Recordでレコードを追加します
  • 1~2時間程度でACM証明書のリクエストが完了します。

API Gatewayにカスタムドメインを設定

  • AWS マネジメントコンソールにログインし、API Gatewayに移動します
  • 左のナビゲーションバーでカスタムドメイン名を選択します。
    • ドメイン名を追加を選択します
    • ドメイン名に作成したサブドメイン名を設定します。
    • 下部のACM証明書に作成されたACM証明書を選択します
    • 他の設定はデフォルトのままドメイン名を追加を選択します
  • カスタムドメインの画面のAPI マッピングでAPIマッピングを設定を選択します。
    • API マッピングで作成しているAPIとステージを選択し保存します。

InfinityFreeにCNAMEレコードを追加

  • API Gatewayで作成したカスタムドメイン名を選択します
  • エンドポイント設定のAPI Gatewayドメイン名をコピーします
  • InfinityFreeでCreate CNAME Recordを選択します
    • Nameにはサブドメイン名を設定します
    • Targetには、コピーしたAPI Gatewayドメイン名を設定します。
    • Create CNAME Recordでレコードを追加します

サブドメイン名にアクセスする

以上の設定をしたうえでサブドメイン名にアクセスするとAPI GatewayのAPIのアクセスしたのと同様の結果になります

最後に

AWSでは、Route53でドメインを取得して使うことが多いかもしれませんが、外部のドメインを使うケースや、お金をかけずに試してみたいといったケースもあるかもしれないと思いますのでその一助になれば幸いです。

北出 宏紀(執筆記事の一覧)

アプリケーションサービス部ディベロップメントサービス1課

2024年9月中途入社です。 毎朝1時間資格勉強継続中です。