Amazon API Gateway 常見問題/名詞解析

Amazon API Gateway 常見問題

背景:參與的項目中需要使用Amazon API GateWay ,第一階段收集網上可靠資料,進行預研,用例測試。——2018.12.4

一般性問題

  • 問:什麼是 Amazon API Gateway?

    • Amazon API Gateway 是一種完全託管的服務,可以幫助開發者輕鬆創建、發佈、維護、監控和保護任意規模的 API。只需在 AWS 管理控制檯中點擊幾下,您便可以創建可充當應用程序“前門”的 API,從後端服務訪問數據、業務邏輯或功能,例如基於 Amazon Elastic Compute Cloud (Amazon EC2) 運行的工作負載、基於 AWS Lambda 運行的代碼或任意 Web 應用。Amazon API Gateway 負責管理所有任務,涉及接受和處理成千上萬個併發 API 調用,包括流量管理、授權和訪問控制、監控以及 API 版本管理。Amazon API Gateway 沒有最低費用和啓動成本。您只需爲收到的 API 調用以及傳出的數據量付費。
  • 問:爲什麼要使用 Amazon API Gateway?

    • 答:Amazon API Gateway 爲開發人員提供了一種簡單靈活的完全託管服務,此服務按使用量計費,可以處理爲應用程序後端創建並操作功能強大的 API 的各個方面事務。 通過 Amazon API Gateway,您可以更快速地啓動新服務並降低投資,從而專注於構建核心業務服務。 Amazon API Gateway 專爲幫助您處理創建和管理 API 的多個方面而構建:

      • 1) 計量。 API Gateway 可幫助您定義用於計量和限制第三方開發人員訪問 API 的計劃。您可以依據每個 API 密鑰定義一組計劃、配置限制和設定配額限制。API Gateway 自動計量流向 API 的流量並允許您提取每個 API 密匙的使用數據。

      • 2) 安全性。API Gateway 可爲您提供多種授權訪問 API 和控制服務操作訪問的工具。Amazon API Gateway 使您可以利用多種 AWS 管理和安全工具(比如 AWS Identity and Access Management (IAM) 和 Amazon Cognito)來授權對您的 API 的訪問。Amazon API Gateway 可以通過 AWS 用於其自身 API 的相同方法來代表您驗證簽名的 API 調用。藉助以 AWS Lambda 函數形式編寫的自定義授權命令,API Gateway 還可以幫助您驗證傳入不記名令牌,從而消除後端代碼的授權問題。

      • 3) 彈性。Amazon API Gateway 可幫助您通過限制來管理流量,從而讓後端操作可以抵擋流量高峯。Amazon API Gateway 還通過緩存 API 調用的輸出來避免每次都調用後端,這樣可幫助您提升 API 性能並縮短最終用戶遇到的延遲。

      • 4) 操作監控。在 API 發佈並處於使用狀態後,API Gateway 便會爲您提供指標控制面板,以監控對您服務的調用情況。通過與 Amazon CloudWatch 集成,Amazon API Gateway 控制面板爲您提供各種後端性能指標,包括 API 調用次數、延遲數據和錯誤率。您可以查看 API 中每種方法的詳細指標,也可以在 CloudWatch 日誌中生成錯誤日誌、訪問日誌或調試日誌。

      • 5) 生命週期管理。 在發佈了 API 之後,您通常需要構建和測試增強現有功能或添加新功能的新版本。藉助 Amazon API Gateway,您可以同時操作多個 API 版本以及各個版本的多個階段,以便在新版 API 發佈之後,現有應用程序可以繼續調用舊版 API。

      • 6) 專爲開發人員設計。Amazon API Gateway 使您可以快速創建 API 併爲其響應分配靜態內容,以降低您的應用程序的跨團隊開發工作和麪市時間。依賴於您的 API 的團隊可以在您構建後端進程的同時開始進行開發。

  • 問:如何開始使用 Amazon API Gateway?

    • 使用 Amazon API Gateway,您可以快速輕鬆地創建自定義 API。對於簡單的“Hello World”示例,請遵循以下步驟:

      • 1.轉到 Amazon API Gateway 控制檯。

      • 2.選擇現有 REST API 或者通過輸入 API 的名稱來新建一個。

      • 3.在 REST API 樹視圖中,單擊“Create Resource”。

      • 4.選擇資源的名稱,比如“cars”。

      • 5.選擇新資源後,單擊按鈕新建一個方法,然後選擇與此方法相關聯的 HTTP 動詞(例如 GET)。

      • 6.選擇集成類型(例如,HTTP 代理),然後輸入 Amazon API Gateway 應調用的 URL。

      • 7.定義如何使用映射模板來轉換請求和響應,或者接受默認設置以傳遞所有請求和響應數據,而不應用任何轉換。

      • 8.配置方法的安全設置。

      • 9.將新建的 API 部署到相應的階段。

      • 10.在“Stage management”頁面中,設置緩存和限制。

      • 11.在 Amazon API Gateway 控制檯的“Client Platforms”選項卡中,單擊按鈕下載 Android、iOS SDK 或 JavaScript 庫,這結庫中包含用於調用 sayHello 操作的幫助程序方法。SDK 庫以與調用本地方法類似的方法調用您的 API。客戶端 SDK 自動處理重試,向開發人員告知網絡或其他故障狀況。SDK 庫包含用於將客戶端應用程序向您的 API 進行身份驗證所需要的邏輯。

      • 12.將下載的 SDK 集成到您的移動應用程序中。編寫用於調用您的自定義 API 的代碼。例如,要在 iOS 應用程序中調用 getCar(int carId)

      • 13.運行您的應用程序。API:
–(void)getSampleCar

{

NSString *response = [MyServiceClient getCar:1323];

NSLog( @”Response was [%@]”, response );

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 問:我是否可以創建 HTTPS 端點?

    • 答:可以,通過 Amazon API Gateway 創建的所有 API 都只公開 HTTPS 終端節點。Amazon API Gateway 不支持未加密的 (HTTP) 終端節點。默認情況下,Amazon API Gateway 將內部域分配給自動使用 Amazon API Gateway 證書的 API。如果您將 API 配置爲以自定義域名運行,則可以爲域提供您自己的證書。
  • 問:我可以對 Amazon API Gateway 使用哪些類型的數據?

    • 基於 Amazon API Gateway 構建的 API 可以接受通過 HTTP 發送的任何負載。典型數據格式包括 JSON、XML、查詢字符串參數和請求標頭。您可以爲 API 響應聲明任何內容類型,然後使用轉換模板將後端響應更改爲相應的格式。
  • 問:Amazon API Gateway 可以與哪些後端通信?

    • 答:Amazon API Gateway 可以用您的賬戶執行 AWS Lambda 函數、啓動 AWS Step Functions 狀態機,也可以調用在 AWS Elastic Beanstalk、Amazon EC2 上託管的 HTTP 終端節點,以及基於非 AWS 託管 HTTP 的操作 (可通過公共 Internet 訪問)。 藉助 API Gateway,您還可以指定一個映射模版以生成需返回的靜態內容,從而幫助您在後端就緒前模擬您的 API。您還可以將 API Gateway 與其他 AWS 服務直接集成 – 例如,您可以在 API Gateway 中公開一種可直接向 Amazon Kinesis 發送數據的 API 方法。
  • 問:Amazon API Gateway 可以爲哪些客戶端平臺生成 SDK?

    • API Gateway 爲移動應用開發(通過 Android 和 iOS)生成自定義 SDK,併爲 Web 應用開發(通過 JavaScript)生成自定義 SDK。一旦在 API Gateway 中定義了 API 及其模型,則您可以使用 AWS 控制檯或 API Gateway API 來生成和下載客戶端 SDK。
  • 問:我可以通過 Amazon API Gateway 控制檯管理哪些內容?

    • 通過 Amazon API Gateway 控制檯,您可以定義 REST API 及其關聯的資源和方法,管理 API 生命週期,生成客戶端 SDK 以及查看 API 指標。您還可以使用 API Gateway 控制檯定義 API 使用計劃、管理開發人員的 API 密匙以及配置限制和配額限制。所有相同操作均通過 API Gateway API 提供。
  • 問:什麼是 REST API?

    • 答:在 Amazon API Gateway 中,REST API 既是一組資源和方法,也是終端節點。REST API 可以部署到不同階段並可克隆到新版本。
  • 問:什麼是資源?

    • 資源是一種類型化對象,屬於您的 API 的域。每種資源可能具有關聯的數據模型、與其他資源的關係,並可能對不同方法做出響應。您也可以將資源定義爲變量,以攔截多個子資源的請求。
  • 問:什麼是方法?

    • REST API 中的每種資源可以支持一個或多個標準 HTTP 方法。您將定義應每種資源應支持的動詞(GET、POST、PUT、PATCH、DELETE、HEAD 和 OPTIONS)及其實施方法。例如,汽車資源的 GET 操作應返回一個汽車列表。要將資源內的所有方法連接到單個後端終端節點,API Gateway 還支持一種特殊的“ANY”方法。
  • 問:什麼是使用計劃?

    • 使用計劃可幫助您聲明針對第三方開發人員的計劃,即將訪問限制到特定 API、定義限制以及請求配額限制,並將這些限制與 API 密匙關聯。您還可以基於每個 API 密匙提取使用數據,以分析 API 使用情況並生成賬單單據。例如,您可以創建一個基礎級、專業級和企業級的計劃 – 您可以將基礎使用計劃配置爲:每天僅允許 1000 次請求,而且每秒請求次數 (RPS) 最多爲 5 次。
  • 問:Amazon API Gateway API 生命週期是什麼?

    • 答:藉助 Amazon API Gateway,每個 REST API 都可以有多個階段。階段用於劃分 API 的開發生命週期,例如,在您構建了 API 並將其部署到開發階段後,或者當您準備好進行生產時,您可以將其部署到生產階段。
  • 問:階段是什麼?

    • 答:在 Amazon API Gateway 中,階段類似於標籤,定義了部署訪問路徑。例如,您可以定義開發階段,並將您的 cars API 部署到此階段。資源可以在 https://www.myapi.com/dev/cars 中進行訪問。您還可以設置直接指向階段的自定義域名,這樣您就無需使用其他路徑參數了。例如,如果您將 myapi.com 設置爲直接指向開發階段,則可以在 https://www.myapi.com/cars 訪問 cars 資源。 使用可通過 API 配置或映射模板訪問的變量可對各階段進行配置。
  • 問:什麼是階段變量?

    • 通過階段變量,您可以定義與某個階段相關的配置值的密鑰/值對。這些值與環境變量相似,可用於配置您的 API。例如,您可以將用於方法集成的 HTTP 終端節點定義爲階段變量,並在配置 API 時使用該變量,而不是對終端節點進行硬編碼,這樣一來,您就可以通過相同的 API 配置將不同終端節點用於每個階段(如開發、測試或生產階段)。階段變量也可通過映射模板進行訪問,可用於將配置變量傳遞至您的 Lambda 或 HTTP 後端。
  • 問:如果我錯誤地部署到某個階段,該怎麼辦?

    • Amazon API Gateway 會保存您的部署歷史記錄。使用 Amazon API Gateway API 或控制檯,您隨時都可以將階段回滾到先前的部署。
  • 問:我是否可以運行同一 REST API 的多個版本?

    • 是的。Amazon API Gateway 允許您克隆現有 API。當您準備好開始使用 API 的下一主要版本時,您可以繼續同時使用版本 1 和版本 2 API。
  • 問:我能否使用自己的 Swagger API 定義?

    • 可以。您可以使用我們的開源 Swagger 導入程序工具將自己的 Swagger API 定義導入 Amazon API Gateway 中。利用 Swagger 導入程序工具,您可以創建和部署新的 API,並能更新現有 API。 
      問:如何在 API Gateway 上實現 API 創收? 
      您可以在 AWS Marketplace 中將 API 作爲產品發佈,以在 API Gateway 上實現 API 創收。首先您需要在 AWS Marketplace 中註冊爲賣家,然後在 API Gateway 上將您的使用計劃作爲產品提交。閱讀此處的內容,瞭解有關實現 API 創收的更多信息。
  • 問:如何在 Amazon API Gateway 上爲 API 提供文檔證明?

    • 藉助 API Gateway,您可以創建、更新和刪除與 API 的每個部分關聯的文檔,例如方法和資源。您可以通過 AWS SDK、CLI、RESTful 調用來訪問與文檔關聯的 API,或者通過在 API Gateway 控制檯中直接編輯文檔字符串來實現目標。文檔還可以 Swagger 文件格式導入爲 API 的一部分或單獨存在,讓您在不干擾 API 定義的情況下添加或更新文檔。對於以 Swagger 文件格式導入或導出的文檔,API Gateway 符合 Open API 規範。
  • 問:如何避免創建 API 中頻繁發生的錯誤消息和其他文檔的冗餘副本?

    • 除提供符合標準的 API 文檔支持之外,API Gateway 還支持文檔繼承,只需定義文檔字符串一次,然後將其用於多個位置。繼承功能簡化了定義 API 文檔的過程,並且可以在將 API 導出爲 Swagger 文件時轉換爲標準表示形式。

安全性和授權

  • 問:如何授權對我的 API 的訪問?

    • 藉助 Amazon API Gateway,您可以選擇設置 API 的方法,以便要求授權。設置方法以請求授權時,您可以利用 AWS 簽名版本 4 或自定義授權命令來支持您自己的不記名令牌身份驗證策略。
  • 問:AWS 簽名版本 4 的工作原理是什麼?

您可以像使用其他 AWS 服務一樣使用 AWS 憑證(訪問密鑰和私有密鑰)簽署對您服務的請求並授予訪問權限。Amazon API Gateway API 請求的簽署由針對您的服務生成的自定義 API Gateway SDK 進行管理。您可以使用 Amazon Cognito 來檢索與您的 AWS 賬戶中的某個角色相關聯的臨時憑證。 
- 問:什麼是自定義授權命令?

- 自定義授權命令是 AWS Lambda 函數。藉助自定義請求授權命令,您將能夠使用諸如 OAuth 之類的不記名令牌身份驗證策略授予對 API 的訪問權限。調用 API 後,API Gateway 會檢查是否配置了自定義授權命令,然後針對傳入授權令牌調用 Lambda 函數。您可以使用 Lambda 實施各種授權策略(如 JWT 驗證、OAuth 提供商標註),這些授權策略可返回用於授權請求的 IAM 策略。如果授權命令返回的策略有效,API Gateway 將會緩存與傳入令牌關聯的策略,緩存時長爲 1 小時。
  • 1
  • 問:Amazon API Gateway 能否生成要分配給第三方開發人員的 API 密鑰?

    • 可以。API Gateway 可生成 API 密匙並將其與使用計劃相關聯。從每個 API 密鑰收到的調用會受到監控,並被添加到您可以爲每個階段啓用的 Amazon CloudWatch 日誌中。不過,我們建議您不要使用 API 密鑰進行授權。您應使用 API 密鑰來監控第三方開發人員的使用情況,並利用更強大的機制(如簽名 API 調用或 OAuth)進行授權。
  • 問:我如何解決或防止 API 威脅或濫用?

    • Amazon API Gateway 支持對您的 API 中的每種方法進行限制設置。您可以爲 REST API 中的每個方法設置每秒的標準速率限制和突發速率限制。此外,Amazon API Gateway 還自動保護您的後端系統免受分佈式拒絕服務 (DDoS) 攻擊,無論攻擊者是通過僞造請求(第 7 層),還是通過 SYN 洪流(第 3 層)展開攻擊。
  • 問:Amazon API Gateway 是否能在 Amazon VPC 中使用?

    • 不是。Amazon API Gateway 終端節點對 Internet 始終公開。對後端操作的代理請求同樣需要能夠在 Internet 上公開訪問。但是,您可以在 Amazon API Gateway 生成一個客戶端 SSL 證書,以驗證那些發送到您後端系統的請求是使用證書的公共密鑰通過 API Gateway 發送的。
  • 問:我能否驗證到是 API Gateway 在調用我的後端? 
    能。Amazon API Gateway 能夠生成一個客戶端 SSL 證書,並讓該證書的公共密鑰對您可用。可以使用生成的證書來調用到您的後端,而您也可使用證書的公共密鑰來驗證來自 Amazon API Gateway 的調用。

  • 問:我是否可以將 AWS CloudTrail 與 Amazon API Gateway 配合使用?

    • 可以。Amazon API Gateway 與 AWS CloudTrail 集成,爲您提供對 REST API 更改的完整可審計歷史記錄。爲了創建、修改、刪除或部署 REST API 而對 Amazon API Gateway API 進行的所有 API 調用都會記錄到您 AWS 賬戶的 CloudTrail 中。

管理、指標和記錄

  • 問:我如何監控我的 Amazon API Gateway API?

    • 答:Amazon API Gateway 將 API 調用次數、延遲和錯誤率記錄到您 AWS 賬戶的 Amazon CloudWatch 中。您還可以通過 Amazon API Gateway 控制檯中的 REST API 儀表板來查看這些指標。API Gateway 還會按第三方開發人員計量使用情況,在 API Gatreway 控制檯中通過 API 提供這些使用數據。
  • 問:我能否爲 Amazon API Gateway 指標設置警報?

    • 答:能。Amazon API Gateway 將記錄信息和指標發送到 Amazon CloudWatch 中。您可以利用 Amazon CloudWatch 控制檯來設置自定義警報。
  • 問:如何設置 Amazon API Gateway 的指標?

    • 答:默認情況下,Amazon API Gateway 在 REST API 一級監控流量。您可以視需要使用部署配置 API 或控制檯屏幕爲 REST API 中的每種方法啓用詳細指標。詳細指標還會記錄到 Amazon CloudWatch 中,並按 CloudWatch 費率計費。
  • 問:我能否確定我的客戶在使用的 API 版本?

    • 可以。指標詳細信息是按 REST API 和階段進行指定。此外,您還可以爲 REST API 中的每種方法啓用指標。
  • 問:Amazon API Gateway 是否提供記錄支持?

    • 可以。Amazon API Gateway 與 Amazon CloudWatch 日誌集成。您可以視需要爲 API 中的每個階段啓用記錄。對於您的 REST API 中的每種方法,您可以設置記錄的詳細程度,以及是否應記錄完整請求和響應數據。
  • 問:日誌多快能夠提供?

    • 答:日誌、警報、錯誤率和其他指標均存儲在 Amazon CloudWatch 中,並且幾乎是實時提供。

限制和緩存

  • 問:我如何能防止我的後端系統和應用程序出現流量高峯?

    • 答:Amazon API Gateway 提供了多個級別(包括全局)的限制,並按服務調用提供。您可以設置標準速率和突發速率限制。例如,API 所有者可以爲其 REST API 中的特定方法設置每秒 1000 條請求的速率限制,並能將 Amazon API Gateway 配置爲在幾秒內處理每秒 2000 條請求的突發速率。Amazon API Gateway 跟蹤每秒請求數量。超過限制的任何請求都會收到 429 HTTP 響應。Amazon API Gateway 生成的客戶端 SDK 會在收到此響應時自動重試調用。
  • 問:是否可以限制調用 API 的各個開發人員?

    • 是的。藉助使用計劃,您可以針對各個 API 密匙設置限制。
  • 問:限制對我有什麼幫助?

    • 限制可確保 API 流量得到控制,以幫助您的後端服務保持性能和可用形。
  • 問:Amazon API Gateway 可以在哪些級別限制傳入的 API 流量?

    • 答:可以在方法一級設置限制速率。您可以通過 Amazon API Gateway API 或者在 Amazon API Gateway 控制檯中,編輯方法設置中的限制。
  • 問:如何應用限制規則?

    • 首先,API Gateway 會針對您的 AWS 賬戶限制進行檢查。如果流量低於設置的賬戶限制,則 API Gateway 會檢查您在階段或方式上設置的限制。如果流量低於階段限制,則 API Gateway 會應用您依據每個 API 密匙設置的使用計劃限制。
  • 問:Amazon API Gateway 是否提供 API 結果緩存?

    • 是的。您可以通過預配置 Amazon API Gateway 緩存並指定其大小(以 GB 爲單位),向 API 調用中添加緩存。緩存是針對 API 的特定階段進行預配置。這會提升性能並減少發送到後端的流量。藉助緩存設置,您可以控制如何構建緩存密鑰,以及爲每種方法存儲的數據的生存時間。Amazon API Gateway 還公開了管理 API,可幫助您將每個階段的緩存設爲無效。
  • 問:如果大量最終用戶嘗試同時調用我的 API,則發生什麼情況?

    • 如果未啓用緩存並且沒有應用限制,則所有請求都將傳遞到後端服務,直到達到所設置的賬戶級別限制。如果實施了限制,則 Amazon API Gateway 會削減必要的請求數量,並且僅將定義的限制發送到後端服務。如果配置了緩存,則 Amazon API Gateway 將針對可自定義的時間內的重複請求返回緩存響應,但這僅限於未達到已配置限制的情況。後端與客戶端之間的這種平衡可確保支持的應用程序的 API 性能最佳。限制的請求會自動由 Amazon API Gateway 生成的客戶端 SDK 重試。默認情況下,Amazon API Gateway 沒有針對 API 方法設置任何緩存。
  • 問:API 的規模如何?

    • Amazon API Gateway 充當您已配置的後端操作的代理。Amazon API Gateway 會自動擴展,以處理您的 API 收到的流量。Amazon API Gateway 不會任意限制對您的後端操作的調用,並且 Amazon API Gateway 控制檯中的限制和緩存設置未攔截的所有請求都會發送到您的後端操作。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章