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
になります。これを検証するには、次の get-vpc-link コマンドを呼び出します。aws apigateway get-vpc-link --vpc-link-id
gim7c3
操作が失敗した場合、エラーメッセージを含む
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
と統合します。 -
GET /
メソッドを設定します。次の put-method コマンドを使用して、Id
をrest-api-id
として入力し、rootResourceId
をresource-id
として入力します。aws apigateway put-method \ --rest-api-id
abcdef123
\ --resource-idskpp60rab7
\ --http-method GET \ --authorization-type "NONE"VpcLink
とのプロキシ統合を使用しない場合は、少なくとも200
ステータスコードのメソッドレスポンスも設定する必要があります。ここでプロキシ統合を使用します。 -
GET /
メソッドを作成したら、統合を設定します。プライベート統合の場合は、connection-id
パラメータを使用してVpcLink
ID を指定します。ステージ変数を使用するか、VpcLink
ID を直接入力できます。uri
パラメータは、エンドポイントへのルーティングリクエストには使用されませんが、Host
ヘッダーの設定および証明書の検証に使用されます。いつでも統合を更新して
connection-id
を変更することもできます。次の update-integration コマンドは、統合を更新する方法を示しています。aws apigateway update-integration \ --rest-api-id
abcdef123
\ --resource-idskpp60rab7
\ --http-method GET \ --patch-operations '[{"op":"replace","path":"/connectionId","value":"${stageVariables.vpcLinkId}"}]'文字列化された JSON リストを
patch-operations
パラメータ値として使用するようにしてください。プライベートプロキシ統合を使用したので、API はデプロイとテスト実行の準備が整っています。非プロキシ統合では、API を HTTP カスタム統合を使用して設定するのと同じように、メソッドのレスポンスと統合レスポンスも設定する必要があります。
-
ステージ変数を使用して
connection-id
を定義した場合は、API をデプロイしてテストする必要があります。次の create-deployment コマンドは、次のステージ変数を使用して API をデプロイする方法を示しています。aws apigateway create-deployment \ --rest-api-id
abcdef123
\ --stage-name test \ --variables vpcLinkId=gim7c3
ステージ変数を別の
VpcLink
ID (
など) で更新するには、update-stage コマンドを呼び出します。asf9d7
aws apigateway update-stage \ --rest-api-id
abcdef123
\ --stage-name test \ --patch-operations op=replace,path='/variables/vpcLinkId',value='asf9d7
'VpcLink
ID リテラルを使用してconnection-id
プロパティをハードコーディングする場合は、API をデプロイしてテストする必要はありません。test-invoke-method コマンドを使用して、デプロイ前に API をテストします。 -
次のコマンドを使用して API を呼び出します。
curl -X GET https://
abcdef123
.execute-api.us-east-2.amazonaws.com/testまたは、ウェブブラウザに API の invoke-URL を入力して結果を表示することもできます。