カスタムドメイン名のルーティングモードを設定する - Amazon API Gateway

カスタムドメイン名のルーティングモードを設定する

API Gateway が API にトラフィックをルーティングするために使用するルーティングモードを選択できます。詳細については、「API Gateway のカスタムドメイン名を使用して API にトラフィックを送信します。」を参照してください。このセクションでは、カスタムドメイン名のルーティングモードについて説明します。API にトラフィックをルーティングするには、カスタムドメイン名のルーティングモードを設定する必要があります。次のルーティングモードがサポートされています。

  • ROUTING_RULE_THEN_API_MAPPING – このモードを使用して、ルーティングルールと API マッピングの両方を使用してトラフィックを API に送信します。このモードでは、すべてのルーティングルールがすべての API マッピングよりも優先されます。このモードの例については、「例 2: ルーティングルールと API マッピング」を参照してください。

  • ROUTING_RULE_ONLY – このモードを使用すると、ルーティングルールのみが API にトラフィックを送信できるようにします。カスタムドメイン名がこのモードを使用する場合、API マッピングを作成することはできませんが、get-api-mappings コマンドを使用して表示することはできます。API 発信者は、API マッピングを使用してこのドメイン名にアクセスすることはできません。

  • API_MAPPING_ONLY – このモードを使用すると、API マッピングのみが API にトラフィックを送信できるようにします。カスタムドメイン名がこのモードを使用する場合、ルーティングルールを作成することはできませんが、list-routing-rules コマンドを使用して表示できます。API 発信者は、ルーティングルールを使用してこのドメイン名にアクセスすることはできません。

    これは、既存のすべてのドメイン名と、作成する新しいドメイン名のデフォルトのルーティングモードです。

apigateway を使用してカスタムドメイン名を作成すると、API_MAPPING_ONLYBASE_PATH_MAPPING_ONLY と呼ばれ、ROUTING_RULE_THEN_API_MAPPINGROUTING_RULE_THEN_BASE_PATH_MAPPING と呼ばれます。この動作は AWS CLI、AWS CloudFormation、または任意の SDK にのみ表示され、AWS Management Consoleには表示されません。

次の手順は、既存のカスタムドメイン名のルーティングモードを変更する方法を示しています。カスタムドメイン名のルーティングモードを変更すると、API 発信者はサポートされていないルーティングモードを使用してドメイン名にアクセスできなくなります。

AWS Management Console
  1. https://console.aws.amazon.com/apigateway で API Gateway コンソールにサインインします。

  2. メインのナビゲーションペインから [Custom Domain Names (カスタムドメイン名)] を選択します。

  3. カスタムドメイン名を選択します。

  4. [ドメインの詳細] については、[編集] を選択します。

  5. [ルーティングモード] については、[ROUTING_RULE_THEN_API_MAPPING] を選択します。

  6. [保存] を選択します。

ルーティングモードを ROUTING_RULE_ONLY または API_MAPPING_ONLY に変更すると、作成した API マッピングまたはルーティングルールがコンソールのドメイン名の詳細ページから削除されます。ルーティングルールまたは API マッピングをサポートするようにルーティングモードを変更すると、これらのリソースが返されます。

AWS CLI - apigatewayv2

次の update-domain-name コマンドは、ルーティングモード ROUTING_RULE_THEN_API_MAPPING を使用するようにドメイン名を更新します。

aws apigatewayv2 update-domain-name \ --domain-name 'api.example.com' \ --routing-mode "ROUTING_RULE_THEN_API_MAPPING"

出力は次のようになります。

{ "ApiMappingSelectionExpression": "$request.basepath", "DomainName": "api.example.com", "DomainNameArn": "arn:aws:apigateway:us-west-2::/domainnames/api.example.com", "DomainNameConfigurations": [ { "ApiGatewayDomainName": "d-abcdefg.execute-api.us-west-2.amazonaws.com", "CertificateArn": "arn:aws:acm:us-west-2:111122223333:certificate/abcdefg-123456-abcdefg", "DomainNameStatus": "AVAILABLE", "EndpointType": "REGIONAL", "HostedZoneId": "Z2OJLYMUO9EFXC", "SecurityPolicy": "TLS_1_2" } ], "RoutingMode": "ROUTING_RULE_THEN_API_MAPPING", "Tags": {} }
AWS CLI - apigateway

次の update-domain-name コマンドは、ルーティングモード ROUTING_RULE_THEN_BASE_PATH_MAPPING を使用するようにプライベートカスタムドメイン名を更新します。

aws apigateway update-domain-name \ --domain-name 'private.example.com' \ --patch-operations "op='replace',path='/routingMode',value='ROUTING_RULE_THEN_BASE_PATH_MAPPING'"

出力は次のようになります。

{ "domainName": "private.example.com", "domainNameId": "abcd1234", "domainNameArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234", "certificateArn": "arn:aws:acm:us-west-2:111122223333:certificate/a1b2c3d4-5678-90ab-cdef", "certificateUploadDate": "2024-09-10T10:31:20-07:00", "endpointConfiguration": { "types": [ "PRIVATE" ], "ipAddressType": "dualstack" }, "domainNameStatus": "AVAILABLE", "securityPolicy": "TLS_1_2", "policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"execute-api:Invoke\",\"Resource\":\"execute-api:\/*\"},{\"Effect\":\"Deny\",\"Principal\":\"*\",\"Action\":\"execute-api:Invoke\",\"Resource\":\""execute-api:\/*\",\"Condition\":{\"StringNotEquals\":{\"aws:SourceVpce\":\"vpce-abcd1234efg\"}}}]}", "routingMode" : "ROUTING_RULE_THEN_BASE_PATH_MAPPING" }