Memecahkan masalah dengan aturan perutean - Amazon API Gateway

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memecahkan masalah dengan aturan perutean

Panduan pemecahan masalah berikut dapat membantu menyelesaikan masalah dengan aturan perutean Anda.

Saya tidak tahu bagaimana API Gateway mengirim lalu lintas ke saya APIs

Anda dapat menggunakan log akses untuk tahap REST API untuk mencatat dan memecahkan masalah aturan perutean Anda. Anda dapat melihat ID aturan perutean yang digunakan API Gateway untuk mengirim lalu lintas ke API menggunakan $context.customDomain.routingRuleIdMatched variabel. Untuk melihat pemetaan API yang digunakan API Gateway untuk mengirim lalu lintas ke API Anda, gunakan $context.customDomain.basePathMatched variabel tersebut.

Untuk mencatat aturan perutean, Anda perlu mengonfigurasi ARN peran CloudWatch Log yang sesuai untuk akun Anda dan membuat grup log.

Contoh grup log akses berikut dapat mengambil informasi yang relevan untuk memecahkan masalah aturan perutean dan pemetaan API. API Gateway hanya mengisi variabel konteks untuk mekanisme perutean yang digunakannya, jika tidak, variabel konteksnya. -

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

Kami juga menyarankan Anda mengonfirmasi mode perutean untuk nama domain kustom Anda. Untuk informasi selengkapnya, lihat Mengatur mode routing untuk nama domain kustom Anda.

Saya tidak dapat mengaktifkan aturan perutean pada nama domain khusus saya

Anda mungkin menerima error berikut dari 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.

Anda akan menerima kesalahan ini jika memiliki atau memiliki kebijakan IAM yang menolak akses ke BasePathMappingatau. ApiMapping Bila Anda mengaktifkan aturan perutean untuk nama domain kustom, meskipun kebijakan Anda akan terus menolak akses ke BasePathMapping atauApiMapping, kebijakan yang sama dapat digunakan untuk mengaksesRoutingRule. Hal ini memungkinkan pengguna untuk mengubah perilaku routing nama domain kustom Anda.

Misalnya, jika Anda memiliki kebijakan seperti berikut:

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

Saat Anda mengaktifkan aturan peruteanexample.com, kebijakan ini akan terus menolak akses untuk membuat ApiMapping tetapi tidak akan menolak akses untuk membuat RoutingRule file.

Kami menyarankan Anda mengaudit kebijakan IAM di akun Anda. Contoh kebijakan berikut akan menolak akses untuk membuatApiMapping,BasePathMapping, danRoutingRule:

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

Setelah mengonfirmasi bahwa semua kebijakan telah diperbarui, Anda dapat memperbarui setelan tingkat akun API untuk mengaktifkan aturan perutean untuk Wilayah.

Gunakan perintah update-account berikut untuk memperbarui pengaturan pengaturan tingkat akun API Anda:

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

Setelah memperbarui setelan tingkat akun API, Anda dapat mengubah mode perutean nama domain kustom Anda. Anda juga dapat terus menggunakan kebijakan IAM untuk menolak akses keRoutingRules, ApiMapping atauBasePathMapping.