ここに表示されているのは Apigee Edge のドキュメントです。
Go to the
Apigee X のドキュメントに移動します。 info
症状
Apigee Adapter for Envoy を介して呼び出されると、Envoy プロキシが HTTP 403 Forbidden エラーで失敗します。
エラー メッセージ
次のエラー メッセージが表示されます。
HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 03 Nov 2020 00:20:10 GMT server: istio-envoy
考えられる原因
次のいずれかの条件が発生すると、Envoy プロキシは HTTP 403 エラーを発生させます。
| 原因 | 説明 | トラブルシューティングの実施対象 |
|---|---|---|
| API プロダクトが有効になっていない | 特定の環境で API プロダクトが有効になっていません。 | Edge Public Cloud と Private Cloud のユーザー |
| API プロダクトにターゲット サービス URI パスがない | ターゲット サービスの URI パスがないか、API リソースの API プロダクトに追加されていません。 | Edge Public Cloud と Private Cloud のユーザー |
| API プロダクトにホスト名がない | クライアント API リクエストで指定されたホスト名が、Apigee リモート サービス ターゲットの API プロダクトにありません。 | Edge Public Cloud と Private Cloud のユーザー |
| リクエスト ヘッダーに API キーがない | API キーが x-api-key HTTP ヘッダーで渡されていません。 |
Edge Public Cloud と Private Cloud のユーザー |
| 無効な API キー | リクエストの一部として渡された API キーが無効です。 | Edge Public Cloud と Private Cloud のユーザー |
| Apigee Adapter for Envoy が リモート サービス API プロキシと通信できない | Apigee Adapter for Envoy がリモート サービス API プロキシと通信できません。 | Edge Public Cloud と Private Cloud のユーザー |
| Envoy プロキシが Apigee Adapter for Envoy と通信できない | Envoy プロキシが Apigee Adapter for Envoy と通信できません。 | Edge Public Cloud と Private Cloud のユーザー |
始める前に
- Envoy プロキシから
403 Forbiddenレスポンス メッセージが返されていることを確認します。次に例を示します。curl -i -H "x-api-key: $API_KEY" http://httpbin:8080/echo HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 12 Jan 2021 08:18:08 GMT server: envoy RBAC: access denied
デバッグログを有効にします。
Apigee Adapter for Envoy でデバッグログを有効にして、エラーの詳細をキャプチャしていることを確認します。 有効になっていない場合は、Apigee Adapter for Envoy を停止して再起動し、次のコマンドを使用してデバッグログを有効にします。
apigee-remote-service-envoy -c config.yaml -l debug
原因: API プロダクトが有効になっていない
Envoy プロキシで使用される特定の API プロダクトが、API 呼び出しが呼び出される特定の環境で有効になっていない場合、このエラーが発生します。
診断
問題を診断するには、次の手順を行います。
- 上記の手順 2 で説明したように、デバッグログを有効にします。
- Apigee Adapter for Envoy のログを確認し、次のメッセージが
Authorizing requestセクションに表示されていることを確認します。product: API_PRODUCT_NAME not found
デバッグログの出力例:
2021-01-12T08:18:08.124Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:18:08.124Z DEBUG auth/verify_api_key.go:106 fetchToken fetching: 7mQIG... 2021-01-12T08:18:08.589Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:18:08.589Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a0600), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746037188, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:18:08.589Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo target: httpbin:8080 - product: ENVOY-PRODUCT-1 not found
上記の例では、API プロダクト
ENVOY-PRODUCT-1が Apigee Adapter for Envoy で見つかりませんでした。Apigee Adapter for Envoy のロギングの詳細については、 ロギングをご覧ください。
- API リクエストの承認中にこのメッセージが表示された場合は、API 呼び出しを行う特定の環境で特定の API プロダクトが有効になっていない可能性があります。
- これを確認するには、次の手順を行います。
- Edge UI にログインします。
- [Publish > API products] ページで、Apigee Adapter for Envoy の構成に使用した特定の API プロダクトをクリックします。
- API リクエストを行う特定の環境が 有効になっていることを確認します。
- 特定の環境が API プロダクトで有効になっていない場合、これがこの問題の原因です 。
- 特定の環境がすでに有効になっている場合は、 原因: API プロダクトにターゲット サービス URI パスがないに進みます。
解決策
特定の環境が API プロダクトで有効になっていない場合は、次の手順で 問題を解決します。
- Edge UI にログインします。
- [Publish > API products] ページで、Apigee Adapter for Envoy の構成に使用した特定の API プロダクトをクリックします。
- [API products > Product name] ページで、[Edit] をクリックします。
- 関連する環境チェックボックスをオンにして、API リクエストを行う特定の環境を有効にします。
- [保存] をクリックします。
原因: API プロダクトにターゲット サービス URI パスがない
Envoy プロキシで使用される特定の API プロダクトでターゲットの URI パスが指定されていない場合、このエラーが発生します。
診断
問題を診断するには、次の手順を行います。
- 上記の手順 2 で説明したように、デバッグログを有効にします。
-
Apigee Adapter for Envoy のログを確認し、
Authorizing requestセクションで、特定のターゲットに関連付けられた特定の API プロダクトに対して次のメッセージが 表示されていることを確認します。no path: REQUEST_URI_PATH
デバッグログの出力例:
2021-01-12T08:09:02.604Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:09:02.605Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:09:02.605Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a4180), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746036507, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:09:02.605Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo1 target: httpbin:8080 - product: ENVOY-PRODUCT-1 no path: /echo1 2021-01-12T08:09:02.605Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
出力例には次のメッセージが表示されます。
no path: /echo1
これは、API プロダクト
ENVOY-PRODUCT-1でパス/echo1が見つからなかったことを示しています。 - Apigee Adapter for Envoy のデバッグログにメッセージ
no path: REQUEST_URI_PATHが表示される場合は、これがこの問題の原因です。表示されない場合は、 原因: API プロダクトにホスト名がないに進みます。
解決策
特定のリクエスト URI が特定のターゲットの API プロダクトに追加されていない場合は、 次の手順で問題を解決します。
- Edge UI にログインします。
- [Publish > API products] ページで、Apigee Adapter for Envoy の構成に使用した特定の API プロダクトをクリックします。
- [API products > Product name] ページで、[Edit] をクリックします。
- [API resources] ペインで、API リクエスト URI を API プロダクトに追加します。
- Apigee Adapter for Envoy のログをモニタリングし、Apigee Adapter for Envoy が更新された API プロダクトを取得するまで待ちます。その後、別の API リクエストを送信して修正を確認します。
原因: API プロダクトにホスト名がない
ターゲット ホスト名とポートの組み合わせが、Envoy プロキシで使用される特定の API プロダクトに追加されていない場合、このエラーが発生します。
診断
問題を診断するには、次の手順を行います。
- 上記の手順 2 で説明したように、デバッグログを有効にします。
Apigee Adapter for Envoy のログを確認し、 [Authorizing request] セクションで、特定のターゲットに関連付けられた特定の API プロダクトに対して次のメッセージが 表示されていることを確認します。
Authorizing requestno targets: HOSTNAME:PORT
デバッグログの出力例:
2021-01-12T08:12:06.019Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:12:06.019Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:12:06.019Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a4180), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746036507, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:12:06.019Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo target: httpbin1:8080 - product: ENVOY-PRODUCT-1 no targets: httpbin1:8080 2021-01-12T08:12:06.020Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
上記の例では、ホスト名とポートの組み合わせ
httpbin1:8080が API プロダクトENVOY-PRODUCT-1で見つかりませんでした。- リクエストの承認中に、Apigee Adapter for Envoy のログにメッセージ
no targets: HOSTNAME:PORTを含むエントリがある場合は、これが 問題の原因です。表示されない場合は、 原因: リクエスト ヘッダーに API キーがないに進みます。
解決策
ターゲット ホスト名とポートの組み合わせが API プロダクトに追加されていない場合は、次の手順で問題を解決します。
- Edge UI にログインします。
- [Publish > API products] ページで、Apigee Adapter for Envoy の構成に使用した特定の API プロダクトをクリックします。
- [API products > Product name] ページで、[Edit] をクリックします。
[Apigee remote service targets] ペインで、ターゲット ホスト名と ポートを追加して [保存] をクリックします。
UI に [Apigee remote service targets] セクションが表示されない場合は、名前が
apigee-remote-service-targetsのカスタム属性を API プロダクトに追加し、HOSTNAME:PORT 値を Edge API を使用して追加します。次に例を示します。curl https://api.enterprise.apigee.com/v1/organizations/$ORG/apiproducts/$ENVOY_PRODUCT \ -X GET \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type:application/json" \ -d \ { "apiResources": [ "/echo", "/verifyApiKey" ], "approvalType": "auto", "attributes": [ { "name": "access", "value": "public" }, { "name": "apigee-remote-service-targets", "value": "localhost:8080" } ], "createdAt": 1610435989556, "createdBy": "---masked---", "description": "", "displayName": "ENVOY-PRODUCT-1", "environments": [ "test" ], "lastModifiedAt": 1612234134060, "lastModifiedBy": "---masked---", "name": "ENVOY-PRODUCT-1", "proxies": [ "remote-service" ], "scopes": [] }- 上記のタスクが完了したら、Apigee Adapter for Envoy のログをモニタリングし、 Apigee Adapter for Envoy が更新された API プロダクトを取得するまで待ちます。その後、別の API リクエストを送信して修正を確認します。
原因: リクエスト ヘッダーに API キーがない
API キーがリクエスト ヘッダーの一部として渡されない場合、このエラーが発生します。
診断
問題を診断するには、次の手順を行います。
- 上記の手順 2 で説明したように、デバッグログを有効にします。
- Apigee Adapter for Envoy のログを確認し、
[missing authentication]メッセージがAuthenticate errorセクションに表示されていることを確認します。デバッグログの出力例:
2021-01-12T08:20:31.461Z DEBUG auth/auth.go:98 Authenticate: key: , claims: map[string]interface {}(nil) 2021-01-12T08:20:31.461Z DEBUG auth/auth.go:159 Authenticate error: &auth.Context{Context:(*server.Handler) (0xc0001a0600), ClientID:"", AccessToken:"", Application:"", APIProducts:[]string(nil), Expires:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, DeveloperEmail:"", Scopes:[]string(nil), APIKey:""} [missing authentication] 2021-01-12T08:20:31.461Z DEBUG server/authorization.go:205 sending denied: UNAUTHENTICATED 2021-01-12T08:20:32.448Z DEBUG server/header_context.go:68 No context header x-apigee-api, using target header : :authority
上記の出力例には、
[missing authentication]というメッセージが表示されています。 このメッセージは、API キーがリクエスト ヘッダーの一部として渡されていないことを示しています。 - Apigee Adapter for Envoy のログの
Authenticate errorセクションにメッセージ[missing authentication]を含むログエントリがある場合は、これが問題の原因です。表示されない場合は、 原因: 無効な API キーに進みます。
解決策
Apigee Adapter for Envoy のログにエラー [missing authentication] が表示された場合は、次の手順で問題を解決します。
- クライアントが API リクエストで HTTP ヘッダー
x-api-keyを使用して API キーを送信しているかどうかを確認します。送信していない場合は、クライアントに HTTP ヘッダーx-api-keyで API キーを送信するように依頼します。 - Apigee Adapter for Envoy の構成ファイルを確認し、デフォルトの API キー
ヘッダー名
x-api-keyが変更されていることを確認します。次に例を示します:apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | global: tls: ... tenant: ... auth: target_header: api-key上記の例では、デフォルトの API キー ヘッダー名が
api-keyに変更されています。この場合、API キーをヘッダーapi-keyの一部として渡す必要があります。 - デフォルトの API キー ヘッダー名が変更されている場合は、クライアントに更新された API キー ヘッダー名を使用して別の API リクエストを送信し、問題が解決するかどうかを確認するように依頼します。
原因: 無効な API キー
無効な API キーがリクエスト ヘッダーの一部として渡されると、このエラーが発生します。
診断
問題を診断するには、次の手順を行います。
- 上記の手順 2 で説明したように、デバッグログを有効にします。
- Apigee Adapter for Envoy のログを確認し、メッセージ
[permission denied]がAuthenticate errorセクションに表示されていることを確認します。 通常、これは、アダプタが API キーを取得した後に表示されます。これは、 メッセージfetchToken fetching: API_KEYで示されます。デバッグログの出力例:
2021-01-12T05:01:07.198Z DEBUG auth/auth.go:98 Authenticate: key: 123, claims: map[string]interface {}(nil) 2021-01-12T05:01:07.198Z DEBUG auth/verify_api_key.go:106 fetchToken fetching: API_KEY 2021-01-12T05:01:09.102Z DEBUG server/header_context.go:68 No context header x-apigee-api, using target header: :authority 2021-01-12T05:01:09.831Z DEBUG auth/auth.go:159 Authenticate error: &auth.Context{Context:(*server.Handler)(0xc0001640c0), ClientID:"", AccessToken:"", Application:"", APIProducts:[]string(nil), Expires:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, DeveloperEmail:"", Scopes:[]string(nil), APIKey:""} [permission denied] 2021-01-12T05:01:09.832Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
この例では、API リクエストで送信された API キーが無効でした。
- Apigee Adapter for Envoy のログの
Authenticate errorセクションに[permission denied]を含むログエントリがある場合は、リクエストの一部として渡された API キーが無効であり、これが問題の原因であることを示しています。表示されない場合は、 原因: Apigee Adapter for Envoy がリモート サービス API プロキシと通信できないに進みます。
解決策
Apigee Adapter for Envoy のログの Authenticate
error セクションにメッセージ [permission denied] が表示されている場合は、次の手順
で問題を解決します。
- API リクエストで送信された API キーを、API プロダクトに接続されている アプリケーションにある API キーの値と照合します。
- クライアントが使用する API キーが無効な場合は、有効な API キーを送信するようにクライアントに依頼します。
- クライアントが使用する API キーが有効で、HTTP
403エラーが引き続き表示される場合は、Apigee Edge サポートにお問い合わせください。
原因: Apigee Adapter for Envoy がリモート サービス API プロキシと通信できない
構成されているリモート サービス ホストが無効な場合、Apigee Adapter for Envoy がリモート サービス API プロキシと通信できないと、このエラーが発生します。
診断
問題を診断するには、次の手順を行います。
- 上記の手順 2 で説明したように、デバッグログを有効にします。
-
Apigee Adapter for Envoy のログを確認し、次のメッセージが表示されていることを確認します。
Error retrieving products: REQUEST_URI: no such host
デバッグログの出力例:
2021-01-12T08:29:06.499Z DEBUG product/manager.go:188 retrieving products from: https://foo/remote-service/products 2021-01-12T08:29:06.505Z ERROR product/manager.go:164 Error retrieving products: GET "https://foo/remote-service/pro ducts": dial tcp: lookup foo on 169.254.169.254:53: no such host github.com/apigee/apigee-remote-service-golib/product.(*manager).start.func1 /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/product/manager.go:164 github.com/apigee/apigee-remote-service-golib/util.(*Looper).Run /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/util/looper.go:87 github.com/apigee/apigee-remote-service-golib/util.(*Looper).Start.func1 /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/util/looper.go:59
この例では、リモート サーバー API プロキシ URL で指定されたホスト名が無効であるため(エラー
no such hostで示されています)、Apigee Adapter for Envoy がリモート サービス API プロキシと通信できませんでした。 - Apigee Adapter for Envoy のログにメッセージ
no such hostを含むログエントリがある場合は、これが問題の原因です。表示されない場合は、 原因: Envoy プロキシが Apigee Adapter for Envoy と通信できないに進みます。
解決策
Apigee Adapter for Envoy のログに上記のエラーが表示される場合は、次の手順で問題を解決します:
Apigee Adapter for Envoy の構成ファイルを確認し、指定された リモート サービス API プロキシ URL が有効であることを確認します。
有効でない場合は、Apigee Adapter for Envoy を停止し、構成ファイルのリモート サービス API プロキシ URL を修正して、Apigee Adapter for Envoy を起動し、別の API リクエストを送信して修正を確認します。
構成例:
apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | tenant: internal_api: https://istioservices.apigee.net/edgemicro remote_service_api: https://ORG-ENV.apigee.net/remote-service org_name: ORG env_name: ENV key: KEY secret: SECRETremote-serviceAPI プロキシが関連する Edge 環境にデプロイされていることを確認します。デプロイされていない場合は、関連する Edge 環境にremote-serviceAPI プロキシをデプロイして、もう一度試してください。- Apigee Adapter for Envoy と
remote-serviceAPI プロキシ エンドポイント間のネットワーク接続を確認します。ネットワーク接続の問題が見つかった場合は、ネットワーク チームに連絡して問題の解決を試みてください。
原因: Envoy プロキシが Apigee Adapter for Envoy と通信できない
診断
問題を診断するには、次の手順を行います。
Envoy でデバッグログを有効にしていることを確認します。有効になっていない場合は、Envoy を停止して再起動し、 デバッグログを有効にします。その後、別の API リクエストを送信します。
スタンドアロン デプロイ:
envoy -c envoy-config.yaml -l debug
Kubernetes/Istio ベースのデプロイ:
kubectl -n=istio-system get pods kubectl -n=istio-system exec -it INGRESS_GATEWAY_NAME bash -- curl -X POST localhost:15000/logging?connection=debug
- Apigee Adapter for Envoy のログを確認し、次のメッセージを含むログエントリがあることを確認します。
connecting to APIGEE_ENVOY_ADAPTER_HOST:5000
その後に次のメッセージが続きます。
upstream connect error or disconnect/reset before headers. reset reason: ACTUAL_REASON
デバッグログの出力例:
[2021-03-23 05:44:41.867][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:769] [C4] connecting to 127.0.0.1:5000 [2021-03-23 05:44:41.867][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:785] [C4] connection in progress [2021-03-23 05:44:41.868][1303661][debug][http2] [external/envoy/source/common/http/http2/codec_impl.cc:1173] [C4] updating connection-level initial window size to 268435456 [2021-03-23 05:44:41.869][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:634] [C4] delayed connection error: 111 [2021-03-23 05:44:41.869][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:203] [C4] closing socket: 0 [2021-03-23 05:44:41.869][1303661][debug][client] [external/envoy/source/common/http/codec_client.cc:96] [C4] disconnect. resetting 0 pending requests [2021-03-23 05:44:41.869][1303661][debug][pool] [external/envoy/source/common/conn_pool/conn_pool_base.cc:314] [C4] client disconnected, failure reason: [2021-03-23 05:44:41.869][1303661][debug][router] [external/envoy/source/common/router/router.cc:1031] [C0][S6149963213555558594] upstream reset: reset reason: connection failure, transport failure reason: [2021-03-23 05:44:41.869][1303661][debug][http] [external/envoy/source/common/http/async_client_impl.cc:100] async http request response headers (end_stream=true): ':status', '200' 'content-type', 'application/grpc' 'grpc-status', '14' 'grpc-message', 'upstream connect error or disconnect/reset before headers. reset reason: connection failure'
上記の例では、Envoy が
connection failureという理由で Apigee Adapter for Envoy と通信できませんでした。 connection failureは、複数の原因で発生する可能性があります。 各シナリオを見てみましょう。
シナリオ 1: アダプタ プロセスが実行されていない
Apigee Adapter for Envoy プロセスが実行されていない場合、このエラーが発生する可能性があります。
- 次のコマンドを実行して、Apigee Adapter for Envoy プロセスが実行されていることを確認します。Apigee Adapter for Envoy プロセスが実行されている場合は、次の
コマンドの結果に表示されます。
ps -ef | grep apigee-remote-service-envoy
- 実行されていない場合は、それが問題の原因です。
解決策
- Apigee Adapter for Envoy プロセスが実行されていない場合は、 Apigee Adapter for Envoy を起動します。
- 別の API リクエストを送信して、問題が解決したかどうかを確認します。
シナリオ 2: アダプタ プロセスが特定のポートでリッスンしていない
Apigee Adapter for Envoy プロセスが特定のポートでリッスンしていない場合、 このエラーが発生する可能性があります。
Apigee Adapter for Envoy プロセスが実行されている場合は、ポート 5000 でリッスンしているソケットがあることを確認します。
APIGEE_ENVOY_ADAPTER_HOST:5000。
netstat コマンドを実行して確認できます。
sudo netstat -lnp | grep 5000
出力例:
sudo netstat -lnp | grep 5000 tcp6 0 0 :::5000 :::* LISTEN 1596530/./apigee-re
ポート 5000 でリッスンしているソケットがない場合、これがこの問題の原因である可能性があります。
解決策
- Apigee Adapter for Envoy を停止して再起動します。
- 別の API リクエストを送信して、問題が解決したかどうかを確認します。
シナリオ 3: Envoy と Apigee Adapter for Envoy 間のネットワーク接続
- Envoy と Apigee Adapter for Envoy 間のネットワーク接続を確認します。
ssh $ENVOY_HOST telnet $APIGEE_ENVOY_ADAPTER_HOST 5000
telnet が Apigee Adapter for Envoy への TCP 接続を確立できた場合は、次のような出力が表示されます。
telnet $APIGEE_ENVOY_ADAPTER_HOST 5000 Trying ::1... Connected to localhost. Escape character is '^]'.
- telnet でエラー
Connection timed outが表示された場合は、Envoy と Apigee Adapter for Envoy の間にネットワーク接続の問題があることを示しています。
解決策
Envoy と Apigee Adapter for Envoy の間にネットワーク接続の問題がある場合は、 ネットワーク チームに連絡して問題の解決を試みてください。
問題が解決しない場合は、 診断情報の収集が必要な場合をご覧ください。
診断情報の収集が必要な場合
上記の手順を行っても問題が解決しない場合は、次の診断情報 を収集してApigee Edge サポートにお問い合わせください。
-
使用している Apigee プロダクト:
例: Apigee Edge Cloud、Apigee OPDK、Apigee ハイブリッド、Apigee X
- Apigee の組織と環境
Edge API を使用して読み取られた API プロダクト定義:
curl -i -u $USER:$PASSWORD $MANAGEMENT_SERVER_ENDPOINT/v1/organizations/$ORGANIZATION/apiproducts/$API_PRODUCT
リファレンス: Apigee Edge API
Apigee Edge UI を使用して、
remote-serviceAPI プロキシでトレース セッションを開始します。この問題を再現し、トレース セッションの XML ファイルを共有してください。リファレンス: Trace ツールの使用 | Apigee Edge
Apigee Adapter for Envoy のログ(指定された期間に関連する完全なログ)
スタンドアロン デプロイ:
# by default Apigee Envoy write logs to stdout and stderr, check your deployment configuration and collect logs accordingly
Kubernetes/Istio ベースのデプロイ:
kubectl -n=apigee get pods kubectl -n=apigee logs APIGEE_REMOTE_SERVICE_ENVOY_POD_NAME > apigee-remote-service-envoy.log
- `
curl` コマンドを使用して Envoy プロキシに送信された API リクエスト (`curl` コマンドの完全な出力):curl -v ENVOY_PROXY_ENDPOINT
curlコマンドを使用してターゲット サービスに送信された API リクエスト(curlコマンドの完全な出力):curl -v TARGET_SERVICE_ENDPOINT