如何設定 API Gateway API 以使用 Lambda Proxy 整合來處理二進位資料?

2 分的閱讀內容
0

我想使用 AWS Lambda Proxy 整合透過我的 Amazon API Gateway REST API (或 HTTP API) 傳回二進位資料。我該如何設定?

解決方法

**注意:**API Gateway HTTP API 會自動處理二進位資料。若要讓 API Gateway REST API 處理二進位資料,後端 Lambda 函數必須使用 Lambda 函數的正確輸出格式來進行 Proxy 整合

使用 Lambda Proxy 整合透過 API Gateway REST API 傳回二進位資料

1.    在 Lambda 主控台中,建立新的 Lambda 函數
**注意:**如需 Python 3 Lambda 函數的範例,請參閱從 Lambda Proxy 整合傳回二進位媒體

2.    在 API Gateway 主控台中,建立新的 REST API

3.    透過執行下列操作為新 API 建立 GET 方法:
資源面板中,選擇動作
選擇建立方法。然後,選擇 GET
/ - GET – 設定 區段中,針對整合類型選擇 Lambda 函數。選擇使用 Lambda Proxy 整合核取方塊。
針對 Lambda 區域,選擇您在其中建立 Lambda 函數的區域。
針對 Lambda 函數,輸入您在步驟 1 中建立的 Lambda 函數名稱。
選擇儲存
在出現的向 Lambda 函數新增許可對話方塊中,選擇確定

4.    在左側導覽窗格的 API 區段中,選擇設定

5.    在二進位媒體類型下,選擇新增二進位媒體類型,然後新增 image/png 或您想要使用的其他檔案格式,例如 application/pdf

6.    選擇儲存變更

7.    將 API 部署至新階段。如需詳細資訊,請參閱使用 API Gateway 主控台設定階段

您的 API 現在已準備好使用 Lambda Proxy 整合,透過 API Gateway 傳回二進位資料。如需有關如何叫用 API 的資訊,請參閱在 Amazon API Gateway 中叫用 REST API

**注意:**處理二進位資料時,Lambda 函數輸出中的 ;isBase64Encoded 屬性必須設定為 true。****主體屬性也必須包含 base64 編碼的二進位媒體。如需詳細資訊,請參閱使用 REST API 的二進位媒體類型

使用 Postman 和 cURL 叫用您的 REST API 以傳回二進位資料

重要:如果您使用 Postman 或 cURL 來叫用 REST API 以傳回二進位資料,請確保在 API 請求中包含接受標頭。接受標頭值必須符合您正在使用的任何檔案格式。例如,image/pngapplication/pdf

如需有關如何使用 Postman 叫用 REST API 的資訊,請參閱使用 Postman 呼叫 REST API

如需有關 API Gateway 如何對承載進行編碼的詳細資訊,請參閱 API Gateway 中的內容類型轉換

用於叫用 API Gateway REST API 以傳回二進位資料的 cURL 命令範例

$ curl 'https://{restapi_id}.execute-api.{region}.amazonaws.com/{stage_name}/' -H 'Accept: image/png'

**注意:**執行範例 cURL 命令之前,請取代下列變數:
針對 {restapi_id},輸入 API 的識別符。
針對 {region},輸入 API 所在的 AWS 區域。
針對 {stage_name},輸入 API 的階段名稱。
針對 image/png,確保輸入您正在使用的實際影像檔案類型。

使用 Web 瀏覽器叫用 REST API 以傳回二進位資料

如果您使用 Web 瀏覽器叫用 REST API 以傳回二進位資料,請確保將 text/html 作為二進位媒體類型新增至 API。

注意:Web 瀏覽器會自動傳送包含多個值的接受標頭。依預設,第一個值始終是 html/text。由於 API Gateway 僅遵循第一個值,因此您必須將 text/html 作為二進位媒體類型新增至 API。否則,您會收到下列錯誤訊息:

"The image "https://{restapi_id}.execute-api.{region}.amazonaws.com/{stage_name}/" cannot be displayed because it contains errors."

若要將 text/html 作為二進位媒體類型新增至 REST API 中,請執行下列操作:

1.    在 API Gateway 主控台中,選擇您的 API。

2.    在左側導覽窗格的 API 區段底部,選擇設定

3.    在二進位媒體類型下,選擇新增二進位媒體類型,並新增 text/html

4.    選擇儲存變更

5.     部署您的 API

如需詳細資訊,請參閱 API Gateway 中的內容類型轉換


AWS 官方
AWS 官方已更新 3 年前