Risoluzione dei problemi relativi alle regole di routing - Amazon API Gateway

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risoluzione dei problemi relativi alle regole di routing

Le seguenti istruzioni per la risoluzione dei problemi potrebbero aiutare a risolvere i problemi relativi alle regole di routing.

Non riesco a capire come API Gateway abbia inviato il traffico al mio APIs

Puoi utilizzare i log di accesso per la fase dell'API REST per registrare e risolvere i problemi delle regole di routing. È possibile visualizzare l'ID della regola di routing utilizzato da API Gateway per inviare il traffico all'API utilizzando la $context.customDomain.routingRuleIdMatched variabile. Per visualizzare la mappatura delle API utilizzata da API Gateway per inviare il traffico alla tua API, utilizza la $context.customDomain.basePathMatched variabile.

Per registrare le regole di routing, devi configurare un ARN del ruolo CloudWatch Logs appropriato per il tuo account e creare un gruppo di log.

Il seguente gruppo di log di accesso può recuperare le informazioni pertinenti per la risoluzione dei problemi delle regole di routing e delle mappature delle API. API Gateway compila solo la variabile di contesto per il meccanismo di routing utilizzato, altrimenti la variabile di contesto è. -

CLF
$context.path $context.customDomain.routingRuleIdMatched $context.customDomain.basePathMatched $context.requestId $context.extendedRequestId
JSON
{"requestPath": "$context.path", "routingRuleId" : "$context.customDomain.routingRuleIdMatched", "API mapping" : "$context.customDomain.basePathMatched", "requestId":"$context.requestId", "extendedRequestId":"$context.extendedRequestId"}
XML
<request id="$context.requestId"> <requestPath>$context.path</requestPath> <ruleId>$context.customDomain.routingRuleIdMatched</ruleId> <ApiMapping>$context.customDomain.basePathMatched</ApiMapping> <extendedRequestId>$context.extendedRequestId</extendedRequestId> </request>
CSV
$context.path,$context.customDomain.routingRuleIdMatched,$context.customDomain.basePathMatched,$context.requestId,$context.extendedRequestId

Ti consigliamo inoltre di confermare la modalità di routing per il tuo nome di dominio personalizzato. Per ulteriori informazioni, consulta Imposta la modalità di routing per il tuo nome di dominio personalizzato.

Non riesco ad abilitare le regole di routing sul mio nome di dominio personalizzato

Potresti ricevere il seguente errore da API Gateway:

Your account doesn’t have permission to use RoutingRules. This might be caused by an IAM policy in your account with a deny statement on BasePathMapping or ApiMapping. To grant permission for this account to use RoutingRules, use the UpdateAccount API. This will impact any existing IAM policies that deny access to BasePathMapping or ApiMapping. See API Gateway documentation for further details.

Riceverai questo errore se disponi o disponi di una policy IAM che nega l'accesso a BasePathMappingo ApiMapping. Quando abiliti le regole di routing per un nome di dominio personalizzato, anche se la tua politica continuerà a negare l'accesso BasePathMapping oApiMapping, la stessa politica può essere utilizzata per l'accesso. RoutingRule Ciò potrebbe consentire a un utente di modificare il comportamento di routing del nome di dominio personalizzato.

Ad esempio, se disponessi di una politica come la seguente:

{ "Sid": "DenyCreatingApiMappings", "Effect": "Deny", "Action": "apigateway:POST", "Resource": [ "arn:aws:apigateway:us-west-2::/domainnames/example.com/apimappings" ] }

Quando abiliti le regole di routing perexample.com, questa politica continuerà a negare l'accesso alla creazione di un ApiMapping ma non negherà l'accesso alla creazione di un. RoutingRule

Ti consigliamo di controllare le politiche IAM del tuo account. La seguente politica di esempio negherà l'accesso alla creazione di ApiMappingBasePathMapping, eRoutingRule:

{ "Sid": "DenyCreatingBasePathMappingsApiMappings", "Effect": "Deny", "Action": "apigateway:POST", "Resource": [ "arn:aws:apigateway:us-west-2::/domainnames/example.com/basepathmappings", "arn:aws:apigateway:us-west-2::/domainnames/example.com/apimappings" ] }, { "Sid": "DenyCreatingRoutingRules", "Effect": "Deny", "Action": "apigateway:CreateRoutingRule", "Resource": [ "arn:aws:apigateway:us-west-2:111122223333:/domainnames/example.com/routingrules/*" ] }

Dopo aver confermato che tutte le tue politiche sono state aggiornate, puoi aggiornare le impostazioni a livello di account dell'API per abilitare le regole di routing per una regione.

Utilizza il seguente comando update-account per aggiornare le impostazioni a livello di account dell'API per una regione:

aws apigateway update-account --patch-operations 'op=remove,path=/features,value=BlockedForRoutingRules' --region us-west-2

Dopo aver aggiornato le impostazioni a livello di account dell'API, puoi modificare la modalità di routing del tuo nome di dominio personalizzato. Puoi anche continuare a utilizzare le policy IAM per negare l'accesso a, o. RoutingRules ApiMapping BasePathMapping