我想使用 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/png 或 application/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 中的內容類型轉換。