教學課程:建立私人 REST API - Amazon API Gateway

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

教學課程:建立私人 REST API

在本自學課程中,您將建立私有的RESTAPI。客戶可以從您的 Amazon 內部訪問API唯一的VPC。與公共互聯網隔離,這是一種常見的安全要求。API

本教學課程需要約 30 分鐘的時間完成。首先,您可以使用 AWS CloudFormation 範本建立 Amazon VPC、VPC端點、 AWS Lambda 函數,並啟動 Amazon EC2 執行個體來測試您的API. 接下來,您可以使 AWS Management Console 用建立私有API並附加資源策略,該策略僅允許從您的VPC端點進行存取。最後,您測試您的API.

您在此自學課程中API建立的私人概觀。

若要完成本教學課程,您需要一個 AWS 帳戶和具有主控台存取權限的 AWS Identity and Access Management 使用者。如需詳細資訊,請參閱 設定 以使用 API Gateway

在本教學課程中,您需使用 AWS Management Console。如需建立此資源API及所有相關資源的 AWS CloudFormation 範本,請參閱 template. yaml。

步驟 1:建立相依性

下載並解壓縮此 AWS CloudFormation 模板。您可以使用範本為您的私有建立所有相依性 APIVPC,包括 Amazon、VPC端點和 Lambda 函數,做為您的API. 您API稍後創建私人。

建立 AWS CloudFormation 堆疊的步驟
  1. 請在以下位置開啟 AWS CloudFormation 主控台。 https://console.aws.amazon.com/cloudformation

  2. 選擇 Create stack (建立堆疊),然後選擇 With new resources (standard) (使用新資源 (標準))

  3. 對於 Specify template (指定範本),選擇 Upload a template file (上傳範本檔案)

  4. 選取您下載的範本。

  5. 選擇 Next (下一步)。

  6. 針對 Stack name (堆疊名稱),輸入 private-api-tutorial,然後選擇 Next (下一步)

  7. 針對 Configure stack options (設定堆疊選項),選擇 Next (下一步)

  8. 對於權能,請確認 AWS CloudFormation 可以在您的帳戶中建立IAM資源。

  9. 選擇提交

AWS CloudFormation 為您佈建相依性API,這可能需要幾分鐘的時間。當 AWS CloudFormation 堆疊狀態為 CREATE_ 時COMPLETE,請選擇 [輸出]。請記下您的VPC端點 ID。您在本教程課程中的後續步驟需要它。

步驟 2:建立私人 API

您創建了一個私有API的,只允許您內VPC的客戶訪問它。

若要建立私人 API
  1. 請在 https://console.aws.amazon.com/apigateway 登入API閘道主控台。

  2. 選擇 [建立]API,然後選擇 [建置]。RESTAPI

  3. 對於API名稱,輸入private-api-tutorial

  4. 對於API端點類型,請選取私人

  5. 對於VPC端點 IDs,輸入來自 AWS CloudFormation 堆疊輸出的VPC端點 ID。

  6. 選擇 [建立] API。

步驟 3:建立方法與整合

您可以建立GET方法和 Lambda 整合來GET處理您的API. 當用戶端叫用您的時候API,APIGateway 會將請求傳送至您在步驟 1 中建立的 Lambda 函數,然後將回應傳回給用戶端。

建立方法與整合
  1. 請在 https://console.aws.amazon.com/apigateway 登入API閘道主控台。

  2. 選擇您的 API。

  3. 選擇建立方法

  4. 針對方法類型,選取 GET

  5. 針對整合類型,選取 Lambda 函數

  6. 開啟 Lambda 代理整合。透過 Lambda 代理整合,API閘道會使用定義的結構將事件傳送至 Lambda,並將 Lambda 函數的回應轉換為HTTP回應。

  7. 對於 Lambda 函數,請在步驟 1 中選擇您使用 AWS CloudFormation 範本建立的函數。函數的名稱以 private-api-tutorial 開頭。

  8. 選擇建立方法

步驟 4:連接資源政策

您將資源策略附加到您的,API該策略允許客戶端API只通過您的VPC端點調用您的。若要進一步限制對您的存取API,您也可以為您的VPC端點設定VPC端點策略,但本教學課程不是必要的。

連接資源政策
  1. 請在 https://console.aws.amazon.com/apigateway 登入API閘道主控台。

  2. 選擇您的 API。

  3. 選擇資源政策,然後選擇建立政策

  4. 輸入下列政策。Replace (取代) vpceID 使用 AWS CloudFormation 堆棧輸出中的VPC端點 ID。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpceID" } } }, { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*" } ] }
  5. 選擇儲存變更

步驟 5:部署 API

接下來,您API將部署以使其可用於 Amazon 中的客戶VPC。

若要部署 API
  1. 請在 https://console.aws.amazon.com/apigateway 登入API閘道主控台。

  2. 選擇您的 API。

  3. 選擇部署API

  4. 針對階段,選取新階段

  5. 針對階段名稱,輸入 test

  6. 描述,請輸入描述。

  7. 選擇部署

現在您已準備好測試您的API.

步驟 6:確認您API無法公開存取

curl於驗證您無法API從 Amazon 之外調用您的VPC。

若要測試您的 API
  1. 請在 https://console.aws.amazon.com/apigateway 登入API閘道主控台。

  2. 選擇您的 API。

  3. 在主導覽窗格中,選擇階段,然後選擇測試階段。

  4. 階段詳細資料下,選擇複製圖示以複製您API的呼叫URL。URL看起來像https://abcdef123.execute-api.us-west-2.amazonaws.com/test。您在步驟 1 中建立的VPC端點已DNS啟用 private,因此您可以使用提供的URL來呼叫API.

  5. 使用 curl 嘗試API從您的VPC.

    curl https://abcdef123.execute-api.us-west-2.amazonaws.com/test

    Curl 表示您API的端點無法解析。如果您收到不同的回應,請返回步驟 2,並確定您API為端點類型選擇「私人」。

    curl: (6) Could not resolve host: abcdef123.execute-api.us-west-2.amazonaws.com/test

接下來,您連接到 Amazon EC2 實例VPC以調用您的API.

步驟 7:Connect 到您的執行個體VPC並叫用 API

接下來,您可以API從 Amazon 內部進行測試VPC。要訪問您的私有API,您可以連接到您的 Amazon EC2 實例,VPC然後使用 curl 調用您的API. 您可以使用 Systems Manager 工作階段管理員,在瀏覽器中連接到您的執行個體。

若要測試您的 API
  1. 在打開 Amazon EC2 控制台https://console.aws.amazon.com/ec2/

  2. 選擇 Instances (執行個體)。

  3. 選擇您在步驟 1 中private-api-tutorial使用 AWS CloudFormation 範本建立的名稱為執行個體。

  4. 選擇 Connect (連線),然後選擇 Session Manager (工作階段管理員)

  5. 選擇 Connect (連線) 以對您的執行個體啟動瀏覽器型工作階段。

  6. 在您的會話管理器會話中,使用 curl 調用API. 你可以調用你,API因為你在你的 Amazon 使用一個實例VPC。

    curl https://abcdef123.execute-api.us-west-2.amazonaws.com/test

    驗證您收到回應 Hello from Lambda!

您可以使用會話管理器API從您的 Amazon 中調用您VPC。

您成功創建API了只能從您的 Amazon 內部訪問的,VPC然後驗證它的工作原理。

步驟 8:清除

若要避免不必要的成本,請刪除您在此教學課程中建立的資源。以下步驟刪除您RESTAPI和您的 AWS CloudFormation 堆棧。

若要刪除 REST API
  1. 請在 https://console.aws.amazon.com/apigateway 登入API閘道主控台。

  2. APIs頁面上,選取一個API。選擇API動作,選擇 [刪除]API,然後確認您的選擇。

刪除 AWS CloudFormation 堆疊的步驟
  1. 請在以下位置開啟 AWS CloudFormation 主控台。 https://console.aws.amazon.com/cloudformation

  2. 選取您的 AWS CloudFormation 堆疊。

  3. 選擇刪除,然後確認您的選擇。

後續步驟:自動化 AWS CloudFormation

您可以自動建立和清理本自學課程中涉及的所有 AWS 資源。如需完整的 AWS CloudFormation 範本範例,請參閱 template.yaml