

# チュートリアル: Amazon ECS サービスへのプライベート統合を使用して HTTP API を作成する
<a name="http-api-private-integration"></a>

このチュートリアルでは、Amazon VPC で実行される Amazon ECS サービスに接続するサーバーレス API を作成します。Amazon VPC 外のクライアントは、API を使用して Amazon ECS サービスにアクセスできます。

チュートリアルの所要時間は約 1 時間です。まず、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 サービスにリクエストをルーティングし、サービスからの応答を返します。

![\[このチュートリアルで作成する HTTP API の概要。\]](http://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/images/private-integration.png)


このチュートリアルを完了するには、AWS アカウントと、コンソールへのアクセス権がある AWS Identity and Access Management ユーザーが必要です。詳細については、「[API Gateway を使用するようにセットアップする](setting-up.md)」を参照してください。

このチュートリアルでは、 を使用しますAWS マネジメントコンソール この API とすべての関連リソースを作成する ‭CloudFormation テンプレートについては、‭[template.yaml](samples/private-integration-full-template.zip) を参照してください。

**Topics**
+ [ステップ 1: Amazon ECS サービスを作成する](#http-api-private-integration-create-ecs-service)
+ [ステップ 2: VPC リンクを作成する](#http-api-private-integration-vpc-link)
+ [ステップ 3: HTTP API を作成する](#http-api-private-integration-create-api)
+ [ステップ 4: ルートを作成する](#http-api-private-integration-create-routes)
+ [ステップ 5: 統合を作成する](#http-api-private-integration-create-integration)
+ [ステップ 6: API をテストする](#http-api-private-integration-invoke-api)
+ [ステップ 7: クリーンアップ](#http-api-private-integration-cleanup)
+ [次のステップ: CloudFormation を使用して自動化する](#http-api-private-integration-next-steps)

## ステップ 1: Amazon ECS サービスを作成する
<a name="http-api-private-integration-create-ecs-service"></a>

Amazon ECS は、クラスターで Docker コンテナを簡単に実行、停止、管理できるようにするコンテナ管理サービスです。このチュートリアルでは、Amazon ECS によって管理されるサーバーレスインフラストラクチャでクラスターを実行します。

[この CloudFormation テンプレート](samples/private-integration-cfn.zip)をダウンロードして解凍すると、Amazon VPC を含むサービスのすべての依存関係が作成されます。テンプレートを使用して、Application Load Balancer を使用する Amazon ECS サービスを作成します。

**CloudFormation スタックを作成するには**

1. [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) で CloudFormation コンソール を開きます。

1. [**スタックの作成**] を選択し、[**With new resources (standard) 新しいリソースを使用 (標準)**] を選択します。

1. [**Specify template (テンプレートの指定)**] で、[**Upload a template file (テンプレートファイルのアップロード)**] を選択します。

1. ダウンロードしたテンプレートを選択します。

1. [**Next (次へ)**] を選択します。

1. [**Stack name**] (スタックの名前) で、**http-api-private-integrations-tutorial** と入力し、[**Next**] (次へ) を選択します。

1. [**Configure stack options**] (スタックオプションの設定) で、[**Next**] (次へ) を選択します。

1. [**Capabilities**] (機能) で、CloudFormation がアカウントに IAM リソースを作成できることを承認します。

1. **[次へ]** を選択し、**[送信]** を選択します。

CloudFormation は ECS サービスをプロビジョニングします。これには数分かかる場合があります。CloudFormation スタックのステータスが **CREATE\$1COMPLETE** の場合は、次のステップに進む準備ができています。

## ステップ 2: VPC リンクを作成する
<a name="http-api-private-integration-vpc-link"></a>

VPC リンクは、API Gateway が Amazon VPC 内のプライベートリソースにアクセスすることを許可します。VPC リンクを使用して、クライアントが HTTP API を介して Amazon ECS サービスにアクセスできるようにします。

**VPC リンクを作成するには**

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway) で API Gateway コンソールにサインインします。

1. メインナビゲーションペインで、**[VPC リンク]**、**[作成]** の順に選択します。

   メインナビゲーションペインを開くには、必要に応じて、メニューアイコンを選択します。

1. [**Choose a VPC link version**] (VPC リンクバージョンを選択) で、[**VPC link for HTTP APIs**] (HTTP API の VPC リンク) を選択します。

1. [**名前**] に「**private-integrations-tutorial**」と入力します。

1. [**VPC**] で、ステップ 1 で作成した VPC を選択します。名前は、**PrivateIntegrationsStack** で始まる必要があります。

1. [**Subnets**] (サブネット) で、VPC 内の 2 つのプライベートサブネットを選択します。名前の末尾は `PrivateSubnet` です。

1. **[セキュリティグループ]**では、`private-integrations-tutorial` で始まり、`PrivateIntegrationsStack/PrivateIntegrationsTutorialService/Service/SecurityGroup` の説明を持つグループ ID を選択します。

1. **[作成]** を選択します。

VPC リンクを作成すると、API Gateway は、VPC にアクセスするために Elastic Network Interface をプロビジョニングします。プロセスには数分かかることがあります。その間、API を作成できます。

## ステップ 3: HTTP API を作成する
<a name="http-api-private-integration-create-api"></a>

HTTP API は、Amazon ECS サービスの HTTP エンドポイントを提供します。このステップでは、空の API を作成します。ステップ 4 と 5 では、API と Amazon ECS サービスを接続するためのルートと統合を設定します。



**HTTP API を作成するには**

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway) で API Gateway コンソールにサインインします。

1. [**API を作成**] を選択し、[**HTTP API**] で [**構築**] を選択します。

1. [**API 名**] に「**http-private-integrations-tutorial**」と入力します。

1. **[IP アドレスの種類]** には **[IPv4]** を選択します。

1. [**次へ**] を選択します。

1. [**ルートの設定**] で、[**次へ**] を選択してルートの作成をスキップします。ルートは後で作成します。

1. API Gateway が作成するステージを確認します。API Gateway は、自動デプロイを有効にした `$default` ステージを作成します。これは、このチュートリアルでは最適な選択肢です。[**Next (次へ)**] を選択します。

1. [**Create**] を選択します。

## ステップ 4: ルートを作成する
<a name="http-api-private-integration-create-routes"></a>

ルートは、着信 API リクエストをバックエンドリソースに送信する方法です。ルートは、HTTP メソッドとリソースパスという 2 つの部分で構成されます (例: `GET /items`)。この例の API では、1 つのルートを作成します。

**ルートを作成するには**

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway) で API Gateway コンソールにサインインします。

1. API を選択します。

1. [**ルート**] をクリックします。

1. [**Create**] を選択します。

1. [**Method**] (メソッド) で、[**ANY**] を選択します。

1. パスには、「**/\$1proxy\$1\$1**」と入力します。パスの最後の `{proxy+}` は、最大一致のパス変数です。API Gateway は、API へのすべてのリクエストをこのルートに送信します。

1. [**Create**] を選択します。

## ステップ 5: 統合を作成する
<a name="http-api-private-integration-create-integration"></a>

ルートをバックエンドリソースに接続するための統合を作成します。

**統合を作成するには**

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway) で API Gateway コンソールにサインインします。

1. API を選択します。

1. [**統合**] を選択します。

1. [**統合を管理**] を選択し、[**作成**] をクリックします。

1. [**Attach this integration to a route**] (この統合をルートにアタッチする) で、前に作成した **ANY /\$1proxy\$1\$1** ルートを選択します。

1. [**Integration type**] (統合タイプ) で、[**Private resource**] (プライベートリソース) を選択します。

1. [**Integration details**] (統合の詳細) で、[**Select manually**] (手動での選択) を選択します。

1. [**Target service**] (ターゲットサービス) で、[**ALB/NLB**] を選択します。

1. [**Load Balancer**] (ロードバランサー) には、ステップ 1 で CloudFormation テンプレートを使用して作成したロードバランサーを選択します。名前は **http-Priva** で始まる必要があります。

1. [**Listener**] (リスナー) で、**HTTP 80** を選択します。

1. [**VPC link**] (VPC リンク) で、ステップ 2 で作成した VPC リンクを選択します。名前は `private-integrations-tutorial` である必要があります。

1. [**Create**] を選択します。

ルートと統合が正しく設定されていることを確認するには、[**Attach integrations to routes**] (統合をルートにアタッチする) を選択します。コンソールには、VPC ロードバランサーへの統合を含む `ANY /{proxy+}` ルートがあることが示されます。

![\[コンソールには、VPC 内のロードバランサーへの統合を含む /{proxy+} ルートがあることが示されます。\]](http://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/images/private-integration-tutorial-route.png)


これで、API をテストする準備ができました。

## ステップ 6: API をテストする
<a name="http-api-private-integration-invoke-api"></a>

次に、API をテストして作動していることを確認します。シンプルにテストをするため、ウェブブラウザを使用して API を呼び出します。

**API をテストするために**

1. API Gateway コンソール ([https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)) にサインインします。

1. API を選択します。

1. API の呼び出し URL を書き留めます。  
![\[APIを作成すると、コンソールに API の呼び出し URL が表示されます。\]](http://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/images/getting-started-invoke-url.png)

1. ウェブブラウザで、API の呼び出し URL にアクセスします。

   URL は次のようになります。`https://abcdef123.execute-api.us-east-2.amazonaws.com`

   ブラウザが API に`GET`リクエストを送信します。

1. API の応答が、アプリケーションが Amazon ECS で実行されていることを示すウェルカムメッセージであることを確認します。

   Amazon VPC で実行される Amazon ECS サービスを正常に作成し、VPC リンクを持つ API Gateway HTTP API を使用して Amazon ECS サービスにアクセスすると、ウェルカムメッセージが表示されます。

## ステップ 7: クリーンアップ
<a name="http-api-private-integration-cleanup"></a>

不要なコストを回避するには、このチュートリアルで作成したリソースを削除します。次の手順では、VPC リンク、CloudFormation スタック、および HTTP API を削除します。

**HTTP API を削除するには**

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway) で API Gateway コンソールにサインインします。

1. [**API**] ページで API を選択します。[**Actions**] (アクション)、[**Delete**] (削除) の順に選択し、選択を確定します。

**VPC リンクを削除するには**

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway) で API Gateway コンソールにサインインします。

1. [**VPC link**] (VPC リンク) を選択します。

1. VPC リンクを選択し、[**Delete**] (削除) を選択して、選択を確定します。

**CloudFormation スタックを削除するには**

1. CloudFormation コンソール ([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)) を開きます。

1. CloudFormation スタックを選択します。

1. [**Delete**] (削除) を選択し、選択を確定します。

## 次のステップ: CloudFormation を使用して自動化する
<a name="http-api-private-integration-next-steps"></a>

このチュートリアルで使用するすべての AWS リソースの作成とクリーンアップを自動化できます。CloudFormation テンプレートの完全な例については、[template.yaml](samples/private-integration-full-template.zip) を参照してください。