ルーティングルールを使用して API マッピングを再作成する
ルーティングルールを使用して API マッピングを再作成できます。API マッピングを再作成するには、必ずベースパスストライピングをオンにしてください。これにより、API マッピングの動作が保持されます。詳細については、「ベースパス条件を使用してベースパスを削除する」を参照してください。
次のチュートリアルでは、API マッピング https://
をルーティングルールとして再作成する方法と、API Gateway が API にトラフィックを送信するために使用するルーティングルール ID をログに記録するようにアクセスログを更新する方法を示します。api.example.com
/orders/v2/items/categories/5
- AWS Management Console
-
ルーティングモードを ROUTING_RULE_THEN_API_MAPPING に設定するには
https://console.aws.amazon.com/apigateway
で API Gateway コンソールにサインインします。 メインのナビゲーションペインから [Custom Domain Names (カスタムドメイン名)] を選択します。
-
カスタムドメイン名を選択します。
-
[ドメインの詳細] で、[編集] を選択します。
-
[ルーティングモード] で、[ROUTING_RULE_THEN_API_MAPPING] を選択します。
-
[保存] を選択します。
ルーティングモードを設定したら、ルーティングルールを作成します。
ルーティングルールを作成するには
-
[ルーティングの詳細] タブで、[ルーティングルールを追加] を選択します。
-
[新しい条件を追加] を選択してから、[パス] を選択します。
-
[パス] には、
orders/v2/items/categories/5
を入力します。 -
[ベースパスをストリップ] で、[アクティブ] を選択します。
[ターゲット API] で、ターゲット API を選択します。
[ターゲットステージ] で、ターゲットステージを選択します。
-
[次へ] を選択します。
-
優先度には、優先度を入力します。
既存の API マッピングを保持していても、ルーティングルールは常に API マッピングよりも優先されるため、API Gateway は常に新しいルーティングルールを使用します。
[Save changes] (変更の保存) をクリックします。
ルーティングルールを作成したら、ステージのアクセスログ形式を更新するか、新しいログを作成して、API Gateway がルーティングルールを使用して API にトラフィックを送信することを確認します。
アクセスログを更新するには
https://console.aws.amazon.com/apigateway
で API Gateway コンソールにサインインします。 API を選択します。
メインナビゲーションペインで、[ステージ] を選択します。
[ログとトレース] で、[編集] を選択します。
ロググループがない場合は、「API Gateway で REST API の CloudWatch ログ記録を設定する」を参照してください。
$context.customDomain.routingRuleIdMatched
をログ形式に追加します。このロググループは、API Gateway が API へのトラフィックの送信に使用したルーティングルール ID を記録します。詳細については、「API Gateway が API にトラフィックを送信した方法がわからない」を参照してください。
[保存] を選択します。
アクセスログを更新したら、カスタムドメイン名を呼び出します。以下は、ベースパス
orders/v2/items/categories/5
を使用してカスタムドメイン名https://
を呼び出す curl コマンドの例です。api.example.com
curl "https://
api.example.com
/orders/v2/items/categories/5"カスタムドメイン名を正常に呼び出したら、CloudWatch Logs に
routingRuleIdMatched
が表示されていることを確認します。CloudWatch Logs コンソールを使用してロググループを表示する方法については、「CloudWatch コンソールで API Gateway のログイベントを表示する」を参照してください。 - AWS CLI
-
-
次の update-domain-name コマンドを使用して、ルーティングモード
ROUTING_RULE_THEN_API_MAPPING
を使用するようにドメイン名
を更新します。api.example.com
aws apigatewayv2 update-domain-name \ --domain-name '
api.example.com
' \ --routing-mode ROUTING_RULE_THEN_API_MAPPING -
次の create-routing-rule コマンドを使用して、API マッピング
https://
を再作成する新しいルーティングルールを作成します。api.example.com
/orders/v2/items/categories/5aws apigatewayv2 create-routing-rule \ --domain-name '
api.example.com
' \ --priority 50 \ --conditions '[ { "MatchBasePaths": { "AnyOf": [ "orders/v2/items/categories/5" ] } } ]' \ --actions '[ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod", "StripBasePath": true } } ]' -
次の update-stage コマンドを使用して、
$context.customDomain.routingRuleIdMatched
変数を含めるようにアクセスログ形式を更新します。この変数は、API Gateway が API へのトラフィックの送信に使用したルーティングルール ID を記録します。このログを使用して、API Gateway がルーティングルールを使用して API にトラフィックを送信することを確認します。詳細については、「API Gateway が API にトラフィックを送信した方法がわからない」を参照してください。aws apigateway update-stage \ --rest-api-id
a1bc2c3
\ --stage-name prod \ --patch-operations "op=replace,path=/accessLogSettings/format,value='\$context.path \$context.customDomain.routingRuleIdMatched \$context.requestId \$context.extendedRequestId'"ロググループがない場合は、「API Gateway で REST API の CloudWatch ログ記録を設定する」を参照してください。
-
次の curl コマンドの例を使用して、ベースパス
orders/v2/items/categories/5
でカスタムドメイン名を呼び出します。curl "https://
api.example.com
/orders/v2/items/categories/5 -
次の filter-log-events コマンドを使用して、ルーティングルール ID
abc123
を含むロググループaccess-log-group-orders
からログイベントを取得します。aws logs filter-log-events --log-group-name access-log-group-orders --filter-pattern abc123
これにより、API Gateway がルーティングルールを使用して API にトラフィックを送信したことを確認します。
-