大阪リージョン API Gateway にカスタムドメイン・APIマッピングを設定する

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

概要

大阪リージョンのAPI Gatewayにカスタムドメイン・APIマッピングをAWSコンソールから実施するとエラーとなったため、その調査結果についてブログにしました。

結論としては、AWS CLIを使い「create-base-path-mapping」を利用することで実行できます!
参考:create-base-path-mapping

APIマッピングとは?

REST API の API マッピング
AWS API Gatewayのカスタムドメインは、API Gatewayのエンドポイントをカスタムドメイン名にマッピングすることができます。
これにより、APIのエンドポイントを簡単に識別できるようになります。

APIマッピング機能は、API Gatewayのエンドポイントを異なるパスにマッピングすることができます。
これにより、複数のAPIを同じドメイン名で公開することができます。

具体的には、カスタムドメイン機能を使用すると、API Gatewayのエンドポイントを独自のドメイン名にマッピングすることができます。
たとえば、API Gatewayのエンドポイントが「https://api-gateway-endpoint.amazonaws.com/v1」という場合、カスタムドメイン機能を使用して「https://api.example.com/v1」というドメイン名にマッピングすることができます。

また、API Gatewayのエンドポイントを異なるパスにマッピングすることもできます。
たとえば、API Gatewayのエンドポイントが「https://api-gateway-endpoint.amazonaws.com/v1/my-api」という場合、APIマッピング機能を使用して「https://api.example.com/my-api」というパスにマッピングすることもできます。
※ステージ名を省略したり、別パスとすることが可能となります。

APIマッピングの機能を使用することで、API Gatewayのエンドポイントを簡単に識別できるようになり、
複数のAPIを同じドメイン名で公開することが可能となります。

前提

本手順の環境は下記のとおりです。

  • リージョン: 「大阪」
  • エンドポイントタイプ: 「REST API (REGIONAL)」
  • ACM で証明書を準備 ※大阪リージョンで取得
  • カスタムドメイン登録用の Route53 を準備
  • AWS CLI実行にCloudShellを利用

やってみる

では実際に、カスタムドメインの発行からAPIマッピングの設定を実施します。

カスタムドメインの作成

まずは、カスタムドメインを設定します。
カスタムドメイン設定時にドメインに適用するACM証明書は必須のため、事前に準備しておいてください。

作成できると下記の画面のようになります。
カスタムドメインの枠内にある箇所から、APIマッピングを設定しカスタムドメインとパスでのAPIGWの紐づけを行うことが可能です。

APIマッピングの設定

実際にAPIマッピングの設定を実施します。
今回は作成済みのAPI Gatewayの「ステージ:v1」を「https://カスタムドメイン/v1」にマッピングします。

こちらの設定は

https://カスタムドメイン/v1

にアクセスすると、指定したAPI Gatewayの「ステージ:v1」にアクセスをすることが可能になります。この状態で保存を押下します。

すると、このようなエラーが表示され設定がうまくいきません、、、

エラー内容:
Mixing of non-WebSocket APIs is not yet supported in this AWS region. You may use the API Gateway V1 API to associate REST APIs to your domain name or you may use the API Gateway V2 API to associate WebSocket APIs.

APIマッピング設定エラーの回避策

エラー内容にある通り、AWSコンソールから設定はできないため、
RESTAPIの場合は、API Gateway V1
WebSocketの場合は、API Gateway V2
からAPIマッピング設定を実施する必要があります。

ということで、
今回はREST APIに設定したいので、create-base-path-mappingを実行します。
下記、CLIをCloudShellから実行します。

aws apigateway create-base-path-mapping \
  --domain-name {カスタムドメイン名} \
  --base-path {パス} \
  --rest-api-id {APIGatewayID} \
  --stage {ステージ} \
  --region {リージョン}

CLIを実行することで、無事APIマッピングの設定を投入することができました!!

あとは、このカスタムドメインをRoute53で名前解決できるように設定すれば設定は完了です。

参考:Websocketの場合のコマンド

create-api-mapping
参考までに、WebSocketの場合のCLIは下記となります。

aws apigatewayv2 create-api-mapping \
 --api-id {APIGatewayID} \
 --api-mapping-key {パス} \
 --domain-name {カスタムドメイン名} \
 --stage {ステージ} \
 --region {リージョン}

まとめ

大阪リージョン API Gateway REST API(REGIONAL)にカスタムドメイン・APIマッピングを設定する方法を紹介しました。
2023/09月現在AWSコンソール・apigatewayv2からは実行できないようなので、apigateway create-base-path-mappingコマンドを利用してAPIマッピングを設定してください。