チュートリアル: Amazon ECS サービスへのプライベート統合を使用した HTTP API の構築
このチュートリアルでは、Amazon VPC で実行される Amazon ECS サービスに接続するサーバーレス API を作成します。Amazon VPC 外のクライアントは、API を使用して Amazon ECS サービスにアクセスできます。
チュートリアルの所要時間は約 1 時間です。まず、AWS CloudFormation テンプレートを使用して Amazon VPC と Amazon ECS サービスを作成します。次に、API Gateway コンソールを使用して VPC リンクを作成します。VPC リンクは、API Gateway が Amazon VPC で実行されている Amazon ECS サービスにアクセスすることを許可します。次に、VPC リンクを使用して Amazon ECS サービスに接続する HTTP API を作成します。最後に、API をテストします。
HTTP API を呼び出すと、API Gateway は VPC リンクを介して Amazon ECS サービスにリクエストをルーティングし、サービスからの応答を返します。
このチュートリアルを完了するには、AWS アカウントと、コンソールへのアクセス権がある AWS Identity and Access Management ユーザーが必要です。詳細については、「API Gateway の開始方法の前提条件」を参照してください。
このチュートリアルでは、 を使用しますAWS Management Console この API とすべての関連リソースを作成する AWS CloudFormation テンプレートについては、template.yaml を参照してください。
トピック
ステップ 1: Amazon ECS サービスを作成する
Amazon ECS は、クラスターで Docker コンテナを簡単に実行、停止、管理できるようにするコンテナ管理サービスです。このチュートリアルでは、Amazon ECS によって管理されるサーバーレスインフラストラクチャでクラスターを実行します。
この AWS CloudFormation テンプレートをダウンロードして解凍すると、Amazon VPC を含むサービスのすべての依存関係が作成されます。テンプレートを使用して、Application Load Balancer を使用する Amazon ECS サービスを作成します。
AWS CloudFormation スタックを作成するには
https://console.aws.amazon.com/cloudformation
で AWS CloudFormation コンソール を開きます。 -
[スタックの作成] を選択し、[With new resources (standard) 新しいリソースを使用 (標準)] を選択します。
-
[Specify template (テンプレートの指定)] で、[Upload a template file (テンプレートファイルのアップロード)] を選択します。
-
ダウンロードしたテンプレートを選択します。
-
[Next (次へ)] を選択します。
-
[Stack name] (スタックの名前) で、
http-api-private-integrations-tutorial
と入力し、[Next] (次へ) を選択します。 -
[Configure stack options] (スタックオプションの設定) で、[Next] (次へ) を選択します。
-
[Capabilities] (機能) で、AWS CloudFormation がアカウントに IAM リソースを作成できることを承認します。
-
送信 を選択します。
AWS CloudFormation は ECS サービスをプロビジョニングします。これには数分かかる場合があります。AWS CloudFormation スタックのステータスが CREATE_COMPLETE の場合は、次のステップに進む準備ができています。
ステップ 2: VPC リンクを作成する
VPC リンクは、API Gateway が Amazon VPC 内のプライベートリソースにアクセスすることを許可します。VPC リンクを使用して、クライアントが HTTP API を介して Amazon ECS サービスにアクセスできるようにします。
VPC リンクを作成するには
https://console.aws.amazon.com/apigateway
で API Gateway コンソールにサインインします。 -
メインナビゲーションペインで、[VPC リンク]、[作成] の順に選択します。
メインナビゲーションペインを開くには、必要に応じて、メニューアイコンを選択します。
-
[Choose a VPC link version] (VPC リンクバージョンを選択) で、[VPC link for HTTP APIs] (HTTP API の VPC リンク) を選択します。
-
[名前] に「
private-integrations-tutorial
」と入力します。 -
[VPC] で、ステップ 1 で作成した VPC を選択します。名前は、PrivateIntegrationsStack で始まる必要があります。
-
[Subnets] (サブネット) で、VPC 内の 2 つのプライベートサブネットを選択します。名前の末尾は
PrivateSubnet
です。 -
[Create] を選択します。
VPC リンクを作成すると、API Gateway は、VPC にアクセスするために Elastic Network Interface をプロビジョニングします。プロセスには数分かかることがあります。その間、API を作成できます。
ステップ 3: HTTP API を作成する
HTTP API は、Amazon ECS サービスの HTTP エンドポイントを提供します。このステップでは、空の API を作成します。ステップ 4 と 5 では、API と Amazon ECS サービスを接続するためのルートと統合を設定します。
HTTP API を作成するには
https://console.aws.amazon.com/apigateway
で API Gateway コンソールにサインインします。 -
[API を作成] を選択し、[HTTP API] で [構築] を選択します。
-
[API 名] に「
http-private-integrations-tutorial
」と入力します。 -
[Next (次へ)] を選択します。
-
[ルートの設定] で、[次へ] を選択してルートの作成をスキップします。ルートは後で作成します。
-
API Gateway が作成するステージを確認します。API Gateway は、自動デプロイを有効にした
$default
ステージを作成します。これは、このチュートリアルでは最適な選択肢です。[Next (次へ)] を選択します。 -
[Create] を選択します。
ステップ 4: ルートを作成する
ルートは、着信 API リクエストをバックエンドリソースに送信する方法です。ルートは、HTTP メソッドとリソースパスという 2 つの部分で構成されます (例: GET /items
)。この例の API では、1 つのルートを作成します。
ルートを作成するには
https://console.aws.amazon.com/apigateway
で API Gateway コンソールにサインインします。 -
API を選択します。
-
[ルート] をクリックします。
-
[Create] を選択します。
-
[Method] (メソッド) で、[
ANY
] を選択します。 -
パスには、「
/{proxy+}
」と入力します。パスの最後の{proxy+}
は、最大一致のパス変数です。API Gateway は、API へのすべてのリクエストをこのルートに送信します。 -
[Create] を選択します。
ステップ 5: 統合を作成する
ルートをバックエンドリソースに接続するための統合を作成します。
統合を作成するには
https://console.aws.amazon.com/apigateway
で API Gateway コンソールにサインインします。 -
API を選択します。
-
[統合] を選択します。
-
[統合を管理] を選択し、[作成] をクリックします。
-
[Attach this integration to a route] (この統合をルートにアタッチする) で、前に作成した ANY /{proxy+} ルートを選択します。
-
[Integration type] (統合タイプ) で、[Private resource] (プライベートリソース) を選択します。
-
[Integration details] (統合の詳細) で、[Select manually] (手動での選択) を選択します。
-
[Target service] (ターゲットサービス) で、[ALB/NLB] を選択します。
-
[Load Balancer] (ロードバランサー) には、ステップ 1 で AWS CloudFormation テンプレートを使用して作成したロードバランサーを選択します。名前は http-Priva で始まる必要があります。
-
[Listener] (リスナー) で、
HTTP 80
を選択します。 -
[VPC link] (VPC リンク) で、ステップ 2 で作成した VPC リンクを選択します。名前は
private-integrations-tutorial
である必要があります。 -
[Create] を選択します。
ルートと統合が正しく設定されていることを確認するには、[Attach integrations to routes] (統合をルートにアタッチする) を選択します。コンソールには、VPC ロードバランサーへの統合を含む ANY /{proxy+}
ルートがあることが示されます。
これで、API をテストする準備ができました。
ステップ 6: API をテストする
次に、API をテストして作動していることを確認します。シンプルにテストをするため、ウェブブラウザを使用して API を呼び出します。
API をテストするために
API Gateway コンソール (https://console.aws.amazon.com/apigateway
) にサインインします。 -
API を選択します。
-
API の呼び出し URL を書き留めます。
-
ウェブブラウザで、API の呼び出し URL にアクセスします。
URL は次のようになります。
https://
abcdef123
.execute-api.us-east-2
.amazonaws.comブラウザが API に
GET
リクエストを送信します。 -
API の応答が、アプリケーションが Amazon ECS で実行されていることを示すウェルカムメッセージであることを確認します。
Amazon VPC で実行される Amazon ECS サービスを正常に作成し、VPC リンクを持つ API Gateway HTTP API を使用して Amazon ECS サービスにアクセスすると、ウェルカムメッセージが表示されます。
ステップ 7: クリーンアップ
不要なコストを回避するには、このチュートリアルで作成したリソースを削除します。次の手順では、VPC リンク、AWS CloudFormation スタック、および HTTP API を削除します。
HTTP API を削除するには
https://console.aws.amazon.com/apigateway
で API Gateway コンソールにサインインします。 -
[API] ページで API を選択します。[Actions] (アクション)、[Delete] (削除) の順に選択し、選択を確定します。
VPC リンクを削除するには
https://console.aws.amazon.com/apigateway
で API Gateway コンソールにサインインします。 -
[VPC link] (VPC リンク) を選択します。
-
VPC リンクを選択し、[Delete] (削除) を選択して、選択を確定します。
AWS CloudFormation スタックを削除するには
AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation
) を開きます。 -
AWS CloudFormation スタックを選択します。
-
[Delete] (削除) を選択し、選択を確定します。
次のステップ: AWS CloudFormation を使用して自動化する
このチュートリアルで使用するすべての AWS リソースの作成とクリーンアップを自動化できます。AWS CloudFormation テンプレートの完全な例については、template.yaml を参照してください。