AWS CLI を使用してプライベート統合で API Gateway API をセットアップする
次のチュートリアルでは、AWS CLI を使用して VPC リンクとプライベート統合を作成する方法を示します。以下の前提条件を満たす必要があります。
-
ターゲットとして VPC ソースを使用して Network Load Balancer を作成し、設定する必要があります。詳細については、「API Gateway のプライベート統合の Network Load Balancer を設定する」を参照してください。これは API と同じ AWS アカウントに存在する必要があります。VPC リンクを作成するには、Network Load Balancer ARN が必要です。
-
VpcLinkを作成および管理するには、API でVpcLinkを作成するためのアクセス許可が必要です。VpcLinkを使用するアクセス許可は必要ありません。詳細については、「VPC リンクを作成するためのアクセス許可を API Gateway に付与する」を参照してください。
AWS CLI を使用して、プライベート統合で API を設定するには
-
次の create-vpc-link コマンドを使用して、指定した Network Load Balancer をターゲットとする
VpcLinkを作成します。aws apigateway create-vpc-link \ --name my-test-vpc-link \ --target-arns arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/net/my-vpclink-test-nlb/1234567890abcdefこのコマンドの出力は、リクエストの受信を確認し、作成中の
VpcLinkのステータスPENDINGを示します。{ "status": "PENDING", "targetArns": [ "arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/net/my-vpclink-test-nlb/1234567890abcdef" ], "id": "gim7c3", "name": "my-test-vpc-link" }API Gateway が
VpcLinkの作成を完了するまでに 2〜4 分かかります。操作が正常に終了すると、statusはAVAILABLEになります。作成した VPC リンクを確認するには、次の get-vpc-link コマンドを使用できます。aws apigateway get-vpc-link --vpc-link-idgim7c3操作が失敗した場合、エラーメッセージを含む
FAILEDと共にstatusMessageステータスが表示されます。たとえば、すでに VPC エンドポイントに関連付けられている Network Load Balancer を使用してVpcLinkを作成しようとすると、statusMessageプロパティで次のように表示されます。"NLB is already associated with another VPC Endpoint Service"VpcLinkが正常に作成された後は、API を作成し、VpcLinkを通じて VPC リソースと統合することができます。新しく作成した
VpcLinkのid値をメモしておきます。この出力例では、gim7c3です。プライベート統合を設定する際にそれが必要になります。 -
次の create-rest-api コマンドを使用して、API Gateway
RestApiリソースを作成します。aws apigateway create-rest-api --name 'My VPC Link Test'返された結果の
RestApiのid値とRestApiのrootResourceId値をメモしておきます。API でさらにオペレーションを実行するには、この値が必要です。次に、ルートリソース (
/) にGETメソッドのみを持つ API を作成し、そのメソッドをVpcLinkと統合します。 -
次の put-method コマンドを使用して、
GET /メソッドを作成します。aws apigateway put-method \ --rest-api-idabcdef123\ --resource-idskpp60rab7\ --http-method GET \ --authorization-type "NONE"VpcLinkとのプロキシ統合を使用しない場合は、少なくとも200ステータスコードのメソッドレスポンスも設定する必要があります。ここでは、プロキシ統合を使用します。 -
GET /メソッドを作成したら、統合を設定します。プライベート統合の場合は、connection-idパラメータを使用してVpcLinkID を指定します。ステージ変数を使用するか、VpcLinkID を直接入力できます。uriパラメータは、エンドポイントへのルーティングリクエストには使用されませんが、Hostヘッダーの設定および証明書の検証に使用されます。いつでも統合を更新して
connection-idを変更することもできます。次の update-integration コマンドを使用して、統合を更新します。aws apigateway update-integration \ --rest-api-idabcdef123\ --resource-idskpp60rab7\ --http-method GET \ --patch-operations '[{"op":"replace","path":"/connectionId","value":"${stageVariables.vpcLinkId}"}]'文字列化された JSON リストを
patch-operationsパラメータ値として使用するようにしてください。プライベートプロキシ統合を使用したため、API はデプロイとテスト実行の準備ができました。
-
ステージ変数を使用して
connection-idを定義した場合は、API をデプロイしてテストする必要があります。次の create-deployment コマンドを使用して、ステージ変数を含めて API をデプロイします。aws apigateway create-deployment \ --rest-api-idabcdef123\ --stage-name test \ --variables vpcLinkId=gim7c3などの別のasf9d7VpcLinkID でステージ変数を更新するには、次の update-stage コマンドを使用します。aws apigateway update-stage \ --rest-api-idabcdef123\ --stage-name test \ --patch-operations op=replace,path='/variables/vpcLinkId',value='asf9d7'VpcLinkID リテラルを使用してconnection-idプロパティをハードコーディングする場合は、API をデプロイしてテストする必要はありません。test-invoke-method コマンドを使用して、デプロイ前に API をテストします。 -
次のコマンドを使用して API を呼び出します。
curl -X GET https://abcdef123.execute-api.us-east-2.amazonaws.com/testまたは、ウェブブラウザに API の invoke-URL を入力して結果を表示することもできます。