翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
仮想ゲートウェイ
仮想ゲートウェイを使用すると、メッシュ外のリソースは、メッシュ内のリソースと通信できます。仮想ゲートウェイは、Amazon ECSサービス、Kubernetes サービス、または Amazon EC2インスタンスで実行されている Envoy プロキシを表します。仮想ゲートウェイは、アプリケーションで実行されている Envoy を表す仮想ノードとは異なり、単独でデプロイされた Envoy を表します。
外部リソースは、Envoy を実行するサービスまたはインスタンスに割り当てられた IP アドレスにDNS名前を解決できる必要があります。Envoy は、メッシュ内にある App Mesh リソースのすべてのアプリケーションメッシュ設定にアクセスできます。仮想ゲートウェイでの着信リクエストを処理するための設定は、ゲートウェイルートを使用して指定します。
HTTP または HTTP2 リスナーを持つ仮想ゲートウェイは、受信リクエストのホスト名をゲートウェイルートターゲット仮想サービスの名前に書き換え、ゲートウェイルートから一致したプレフィックスは/
デフォルトで に書き換えられます。例えば、ゲートウェイルート一致プレフィクスが /chapter
、そして、着信リクエストが /chapter/1
とすると、リクエストは /1
に書き換えられます 書き換えを設定するには、「ゲートウェイルート」の「ゲートウェイルートの作成」セクションを参照してください。
仮想ゲートウェイを作成するときは、proxyConfiguration
と user
は設定しないでください。
チュートリアルを完了するには、 end-to-end「インバウンドゲートウェイの設定」を参照してください。
仮想ゲートウェイの作成
仮想ゲートウェイを作成するときは、作成した仮想ゲートウェイにゲートウェイルートを関連付ける名前空間のリストを識別するラベル付きの名前空間セレクターを追加する必要があります。
- AWS Management Console
-
を使用して仮想ゲートウェイを作成するには AWS Management Console
-
で App Mesh コンソールを開きますhttps://console.aws.amazon.com/appmesh/。
-
仮想ゲートウェイを作成するメッシュを選択します。自分が所有しているメッシュや、共有されているメッシュがすべて一覧表示されます。
-
左側のナビゲーションで [仮想ルーター] を選択します。
-
[仮想ゲートウェイを作成] を選択します。
-
[仮想ゲートウェイ名] に、仮想ゲートウェイの名前を入力します。
-
(オプションですが、推奨) クライアントポリシーのデフォルトを設定します。
-
(オプション) Transport Layer Security () を使用してゲートウェイが仮想サービスとのみ通信する場合は、Enforce TLS を選択しますTLS。
-
(オプション) ポート では、仮想サービスとのTLS通信を適用するポートを 1 つ以上指定します。
-
検証方法を使用する場合、次のいずれかのオプションを選択します。指定する証明書は、すでに存在し、特定の要件を満たしている必要があります。詳細については、「証明書の要件」を参照してください。
-
AWS Private Certificate Authority ホスティング — 既存の 1 つまたは複数のを選択します。証明書。
-
Envoy Secret Discovery Service (SDS) ホスティング – Envoy が Secret Discovery Service を使用して取得するシークレットの名前を入力します。
-
ローカルファイルホスティング — Envoy がデプロイされているファイルシステム上の証明書チェーンファイルへのパスを指定します。
-
(オプション) サブジェクトの別名を入力します。を追加するにはSANs、「 の追加SAN」を選択します。SANs は FQDNまたは URI 形式である必要があります。
-
(オプション) クライアント証明書と以下のオプションのいずれかを指定を選択して、サーバーがクライアント証明書を要求したときにクライアント証明書を提供し、相互TLS認証を有効にします。相互 の詳細についてはTLS、App Mesh 相互TLS認証ドキュメントを参照してください。
-
Envoy Secret Discovery Service (SDS) ホスティング – Envoy が Secret Discovery Service を使用して取得するシークレットの名前を入力します。
-
ローカルファイルホスティング - Envoy がデプロイされているファイルシステムで、証明書チェーンファイルとプライベートキーへのパスを指定します。詳細については、ローカルファイルによる暗号化を使用してサンプルアプリケーションを使用してメッシュをデプロイする end-to-end手順については、「 でファイル提供TLS証明書TLSを使用して設定する」を参照してください GitHub。
(オプション) ログを設定するには、ログ記録を選択します。Envoy で使用するHTTPアクセスログパスを入力します。Docker ログドライバーを使用して Envoy ログを Amazon CloudWatch Logs などの サービスにエクスポートできるように、 /dev/stdout
パスをお勧めします。
ログは引き続き、アプリケーション内のエージェントによって取り込まれ、送信先に送信される必要があります。このファイルパスは、Envoy にログを送信する場所を指示するだけです。
-
リスナーを設定します。
-
[プロトコル] を選択し、Envoy がトラフィックをリッスンする [ポート] を指定します。http リスナーは、WebSocket への接続移行を許可します。[リスナーの追加] をクリックすると、複数のリスナーを追加できます。[削除] ボタンをクリックすると、そのリスナーが削除されます。
(オプション) 接続プールの有効化
接続プーリングにより、仮想ゲートウェイ Envoy が同時に確立できる接続の数が制限されます。これは、Envoyインスタンスを接続に圧倒されないように保護することを目的としており、アプリケーションのニーズに合わせてトラフィックシェーピングを調整できます。
仮想ゲートウェイリスナーの宛先側の接続プール設定を行うことができます。App Mesh は、クライアント側の接続プールの設定をデフォルトで無限に設定し、メッシュ設定を簡素化します。
プロトコルconnectionPool
と connectionPool
portMapping プロトコルは同じである必要があります。リスナープロトコルが grpc
または http2
の場合は、maxRequests
のみを指定します。リスナープロトコルが http
の場合、maxConnections
と maxPendingRequests
の両方を指定できます。
(オプション) リスナーのヘルスチェックを設定する場合は、[ヘルスチェックの有効化] を選択します。
ヘルスチェックポリシーはオプションですが、正常なポリシーに値を指定する場合は、正常なしきい値、Health チェック間隔、ヘルスチェックプロトコル、タイムアウト期間、 および非正常なしきい値の値を指定する必要があります。
-
[ヘルスチェックプロトコル] で、プロトコルを選択します。grpc を選択した場合、サービスはGRPCヘルスチェックプロトコル に準拠している必要があります。
-
[ヘルスチェックポート] に、ヘルスチェックを実行するポートを指定します。
-
[正常なしきい値] に、リスナーが正常であると宣言するために必要となるヘルスチェック成功の数を指定します。
-
[ヘルスチェック間隔] に、各ヘルスチェックの実行間隔をミリ秒単位で指定します。
-
[パス] に、ヘルスチェックリクエストの送信先パスを指定します。この値は、ヘルスチェックプロトコルが http
または http2
の場合のみ使用されます。この値は、他のプロトコルでは無視されます。
-
[タイムアウト期間] に、ヘルスチェックからの応答を受け取るまで待機する時間をミリ秒単位で指定します。
-
[非正常なしきい値] に、リスナーが異常であると宣言するために必要となるヘルスチェック失敗の数を指定します。
(オプション) クライアントが を使用してこの仮想ゲートウェイと通信するかどうかを指定する場合はTLS、TLS終了を有効にする を選択します。
-
モード では、リスナーで設定TLSするモードを選択します。
-
[証明書メソッド] で、次のいずれかのオプションを選択します。証明書は特定の要件を満たしている必要があります。詳細については、「証明書の要件」を参照してください。
-
AWS Certificate Manager ホスティング – 既存の証明書 を選択します。
-
Envoy Secret Discovery Service (SDS) ホスティング – Envoy が Secret Discovery Service を使用して取得するシークレットの名前を入力します。
-
ローカルファイルホスティング - Envoy がデプロイされているファイルシステム上の証明書チェーンとプライベートキーファイルへのパスを指定します。
-
(オプション) クライアントが証明書を提供する場合、クライアント証明書と以下のオプションのいずれかを要求を選択して相互TLS認証を有効にします。相互 の詳細についてはTLS、App Mesh 相互TLS認証ドキュメントを参照してください。
-
(オプション) サブジェクトの別名を入力します。を追加するにはSANs、「 の追加SAN」を選択します。SANs は FQDNまたは URI 形式である必要があります。
-
[仮想ゲートウェイを作成] を選択して終了します。
- AWS CLI
-
AWS CLIを使用して仮想ゲートウェイを作成するには
次のコマンドと入力を使用して仮想ゲートウェイを作成します JSON ( red
独自の値):
-
aws appmesh create-virtual-gateway \
--mesh-name meshName
\
--virtual-gateway-name virtualGatewayName
\
--cli-input-json file://create-virtual-gateway.json
-
create-virtual-gateway.json の例の内容:
{
"spec": {
"listeners": [
{
"portMapping": {
"port": 9080,
"protocol": "http"
}
}
]
}
}
-
出力例:
{
"virtualGateway": {
"meshName": "meshName",
"metadata": {
"arn": "arn:aws:appmesh:us-west-2
:123456789012:mesh/meshName/virtualGateway/virtualGatewayName",
"createdAt": "2022-04-06T10:42:42.015000-05:00",
"lastUpdatedAt": "2022-04-06T10:42:42.015000-05:00",
"meshOwner": "123456789012",
"resourceOwner": "123456789012",
"uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
"version": 1
},
"spec": {
"listeners": [
{
"portMapping": {
"port": 9080,
"protocol": "http"
}
}
]
},
"status": {
"status": "ACTIVE"
},
"virtualGatewayName": "virtualGatewayName"
}
}
AWS CLI for App Mesh で仮想ゲートウェイを作成する方法の詳細については、 AWS CLI リファレンスの create-virtual-gateway コマンドを参照してください。
仮想ゲートウェイのデプロイ
Envoy コンテナ のみを含む Amazon ECSまたは Kubernetes サービスをデプロイします。Amazon EC2インスタンスに Envoy コンテナをデプロイすることもできます。詳細については、「App Mesh と Amazon の開始方法EC2」を参照してください。Amazon にデプロイする方法の詳細については、「App Mesh と Amazon の使用開始ECS」またはAWS 「App Mesh と Kubernetes の使用開始ECS」を参照して Kubernetes にデプロイします。APPMESH_RESOURCE_ARN
環境変数を mesh/mesh-name
/virtualGateway/virtual-gateway-name
に設定する必要があります。また、プロキシ設定を指定しないでください。そうすると、プロキシのトラフィックがそれ自体にリダイレクトされないようになります。デフォルトでは、App Mesh は、Envoy がメトリックとトレースで自身を参照しているときに APPMESH_RESOURCE_ARN
指定したリソースの名前を使用します。APPMESH_RESOURCE_CLUSTER
環境変数に独自の名前を設定することで、この動作を上書きできます。
コンテナの複数のインスタンスをデプロイし、Network Load Balancer を設定して、インスタンスへのトラフィックの負荷分散を行うようお勧めします。ロードバランサーのサービス検出名は、メッシュ内のリソースにアクセスするために外部サービスで使用する名前です。myapp.example.com
。 詳細については、「Network Load Balancer (Amazon ) の作成」、「外部Load Balancer (Kubernetes) の作成」、または「チュートリアル: Amazon でのアプリケーションの可用性を向上させるEC2」を参照してください。 ECSまた、さらに多くの例やチュートリアルについては、App Mesh の例を参照してください。
プロキシ認可を有効にします。詳細については、「Envoy プロキシの認可」を参照してください。
仮想ゲートウェイの削除
- AWS Management Console
-
を使用して仮想ゲートウェイを削除するには AWS Management Console
-
で App Mesh コンソールを開きますhttps://console.aws.amazon.com/appmesh/。
-
仮想ゲートウェイを削除するメッシュを選択します。自分が所有しているメッシュや、共有されているメッシュがすべて一覧表示されます。
-
左側のナビゲーションで [仮想ルーター] を選択します。
-
削除する仮想ゲートウェイを選択したら、[削除] を選択します。仮想ゲートウェイが関連付けられている場合は、仮想ゲートウェイを削除できません。まず、関連するゲートウェイルートを削除する必要があります。アカウントがリソース所有者として一覧されている仮想ゲートウェイのみを削除できます。
-
確認ボックスに delete
と入力し、次に、[削除] を選択します。
- AWS CLI
-
を使用して仮想ゲートウェイを削除するには AWS CLI
-
次のコマンドを使用して、仮想ゲートウェイを削除します ( red
独自の値):
aws appmesh delete-virtual-gateway \
--mesh-name meshName
\
--virtual-gateway-name virtualGatewayName
-
出力例:
{
"virtualGateway": {
"meshName": "meshName",
"metadata": {
"arn": "arn:aws:appmesh:us-west-2
:123456789012:mesh/meshName/virtualGateway/virtualGatewayName",
"createdAt": "2022-04-06T10:42:42.015000-05:00",
"lastUpdatedAt": "2022-04-07T10:57:22.638000-05:00",
"meshOwner": "123456789012",
"resourceOwner": "123456789012",
"uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
"version": 2
},
"spec": {
"listeners": [
{
"portMapping": {
"port": 9080,
"protocol": "http"
}
}
]
},
"status": {
"status": "DELETED"
},
"virtualGatewayName": "virtualGatewayName"
}
}
AWS CLI for App Mesh で仮想ゲートウェイを削除する方法の詳細については、 AWS CLI リファレンスの delete-virtual-gateway コマンドを参照してください。