如何設定 API Gateway API 來透過 Lambda 代理整合來處理二進位資料?

2 分的閱讀內容
0

我想使用 AWS Lambda 代理整合透過我的 Amazon API Gateway REST API 或 HTTP API 傳回二進位資料。

解決方法

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

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

請完成下列步驟:

  1. 開啟 Lambda console (Lambda 主控台)。
  2. 建立新的 Lambda 函數
    注意: 有關 Python 3 Lambda 函數的範例,請參閱在 API Gateway 中從 Lambda 代理整合返回二進位媒體
  3. 開啟 API Gateway console (API Gateway 主控台)。
  4. 新建 REST API
  5. 要為新的 API 創建 GET 方法,請執行下列動作:
    Methods (方法) 面板中,選擇 Create method (建立方法)。
    對於 Method type (方法類型),請選擇 GET
    / - GET - Setup (/ – GET – 設定) 區域中,針對 Integration type (整合類型) 選擇 Lambda function (Lambda 函數)。啟動 Use Lambda proxy integration (使用 Lambda 代理整合)。
    對於 Lambda 函數,選擇您創建 Lambda 函數所在的 AWS 區域。然後,輸入新 Lambda 函數的名稱。
    選擇 Create method (建立方法)。
  6. 對於 API,請選擇 API settings (設定)。
  7. Binary media types (二進位媒體類型) 下,選擇 Manage media types (管理媒體類型),然後選擇 Add binary media type (新增二進位媒體類型)。
  8. 新增檔案格式,例如 image/pngapplication/pdf
  9. 選擇 Save changes (儲存變更)。
  10. 將您的 API 部署至新階段
    注意: 有關如何設定新階段的資訊,請參閱請參閱在 API Gateway 中為 REST API 設置階段

有關API 的詳細資訊,請參閱在 API 閘道中調用 REST API

注意: 對於二進位資料,您必須在 Lambda 函數的輸出中,將 ;isBase64Encoded 屬性設定為 truebody 屬性也必須包含 base64 編碼的二進位媒體。如需詳細資訊,請參閱 API Gateway 中 REST API 的二進位媒體類型

使用 Postman 或 cURL 調用 REST API 以返回二進位資料

重要: 對於 Postman 或 cURL,請在 API 請求中包含 Accept 標頭。Accept (接受) 標頭值必須與您正在使用的檔案格式相符,例如 image/pngapplication/pdf

執行下列 curl 指令:

curl 'https://exampleRestApiId.execute-api.exampleRegion.amazonaws.com/exampleStageName/' -H 'Accept: image/png'

注意: 在上述指令中,將 exampleRestApiId 替換為您的 API 識別碼,並將 exampleRegion 替換為您的 API 所在的區域。另外,用您的 exampleStageName 替換為 API 階段名稱,並將 image/png 替換為您的圖片檔案類型。

使用 Web 瀏覽器調用您的 REST API 以返回二進位資料

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

「圖片 "https://{restapi_id}.execute-api.{region}.amazonaws.com/{stage_name}/" 無法顯示,因為它包含錯誤。」

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

  1. 開啟 API Gateway console (API Gateway 主控台)。
  2. 選擇您的 API。
  3. 在導覽窗格中,選擇 API settings (API 設定)。
  4. Binary media types (二進位媒體類型) 下,選擇 Manage media types (管理媒體類型),然後選擇 Add binary media type (新增二進位媒體類型)。
  5. 輸入 text/html
  6. 選擇 Save changes (儲存變更)。
  7. 部署您的 API

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

AWS 官方
AWS 官方已更新 6 個月前