本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 設定具有私有整合的 API Gateway API AWS CLI
下列教學課程說明如何使用 AWS CLI 來建立 VPC 連結和私有整合。需要下列先決條件:
-
您需要使用 VPC 來源來建立並設定 Network Load Balancer,並將其當成目標。如需詳細資訊,請參閱設定 API Gateway 私有整合的 Network Load Balancer。這必須與 API AWS 帳戶 位於相同的 中。您需要 Network Load Balancer ARN 才能建立 VPC 連結。
-
若要建立和管理
VpcLink,您需要可在 API 中建立VpcLink的許可權。使用VpcLink不需要許可權。如需詳細資訊,請參閱授予 API Gateway 建立 VPC 連結的許可權。
使用 設定具有私有整合的 API AWS CLI
-
使用以下 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 需要 2-4 分鐘才能完成建立
VpcLink。操作順利完成時,status是AVAILABLE。您可以使用下列 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若要以不同的
VpcLinkID 更新階段變數 (例如),請使用 update-stage 命令:asf9d7aws 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或者,您可以在 Web 瀏覽器中輸入 API 的調用 URL 來檢視結果。