Behebung von Problemen mit Routing-Regeln - Amazon API Gateway

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Behebung von Problemen mit Routing-Regeln

Die folgenden Anleitungen zur Fehlerbehebung können Ihnen helfen, Probleme mit Ihren Routing-Regeln zu lösen.

Ich kann nicht sagen, wie API Gateway Traffic an meinen gesendet hat APIs

Sie können Zugriffsprotokolle für Ihre REST-API-Phase verwenden, um Ihre Routing-Regeln zu protokollieren und Fehler zu beheben. Mithilfe der $context.customDomain.routingRuleIdMatched Variablen können Sie die Routing-Regel-ID anzeigen, die API Gateway verwendet hat, um Traffic an Ihre API zu senden. Verwenden Sie die $context.customDomain.basePathMatched Variable, um die API-Zuordnung anzuzeigen, die API Gateway verwendet hat, um Traffic an Ihre API zu senden.

Um Ihre Routing-Regeln zu protokollieren, müssen Sie einen entsprechenden CloudWatch Logs-Rollen-ARN für Ihr Konto konfigurieren und eine Protokollgruppe erstellen.

Die folgende Beispielgruppe für Zugriffs-Logs kann die relevanten Informationen zur Fehlerbehebung bei Routing-Regeln und API-Zuordnungen abrufen. API Gateway füllt nur die Kontextvariable für den verwendeten Routing-Mechanismus auf, andernfalls ist - es die Kontextvariable.

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

Wir empfehlen Ihnen außerdem, den Routing-Modus für Ihren benutzerdefinierten Domainnamen zu bestätigen. Weitere Informationen finden Sie unter Stellen Sie den Routing-Modus für Ihren benutzerdefinierten Domainnamen ein.

Ich kann keine Routing-Regeln für meinen benutzerdefinierten Domainnamen aktivieren

Möglicherweise erhalten Sie den folgenden Fehler von 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.

Sie erhalten diesen Fehler, wenn Sie eine IAM-Richtlinie haben oder hatten, die den Zugriff BasePathMappingauf oder verweigert. ApiMapping Wenn Sie Routing-Regeln für einen benutzerdefinierten Domainnamen aktivieren, obwohl Ihre Richtlinie weiterhin den Zugriff auf BasePathMapping oder verweigertApiMapping, kann dieselbe Richtlinie für den Zugriff verwendet werden. RoutingRule Dadurch kann ein Benutzer möglicherweise das Routing-Verhalten Ihres benutzerdefinierten Domainnamens ändern.

Wenn Sie beispielsweise eine Richtlinie wie die folgende hätten:

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

Wenn Sie Routingregeln für aktivierenexample.com, verweigert diese Richtlinie weiterhin den Zugriff auf die Erstellung einer, verweigert ApiMapping jedoch nicht den Zugriff auf die Erstellung einerRoutingRule.

Wir empfehlen Ihnen, die IAM-Richtlinien in Ihrem Konto zu überprüfen. Die folgende Beispielrichtlinie verweigert den Zugriff auf das Erstellen von ApiMappingBasePathMapping, undRoutingRule:

{ "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/*" ] }

Nachdem Sie bestätigt haben, dass alle Ihre Richtlinien aktualisiert wurden, können Sie die Einstellungen Ihrer API auf Kontoebene aktualisieren, um Routing-Regeln für eine Region zu aktivieren.

Verwenden Sie den folgenden Befehl update-account, um die Einstellungen für die Einstellungen Ihrer API auf Kontoebene zu aktualisieren:

aws update-account --patch-operations 'op=remove,path=/features,value=BlockedForRoutingRules'

Nachdem Sie die Einstellungen Ihrer API auf Kontoebene aktualisiert haben, können Sie den Routing-Modus Ihres benutzerdefinierten Domainnamens ändern. Sie können auch weiterhin IAM-Richtlinien verwenden, um den Zugriff auf oder zu verweigern. RoutingRules ApiMapping BasePathMapping