Lambdaプロキシ統合を使用して、バイナリデータを処理するAPI Gateway APIを設定するにはどうすればよいですか?

最終更新日: 2021 年 3 月 23 日

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 コンソール新しい Lambda 関数を作成します。
注: Python 3 Lambda 関数の例については、「Lambda プロキシ統合からバイナリメディアを返す」を参照してください。

2.    API Gateway コンソール新しい REST API を作成します。

3.    次の手順を実行して、新しい API の GET メソッドを作成します。
[リソース] パネルで [アクション] を選択します。
[メソッドの作成] を選択します。その後、[GET] をクリックします。
[/ - GET - Setup] セクションで [統合タイプ] を選択し、[Lambda 関数<move_</b>_tag_here>] を選択します。
[Lambda プロキシ統合の使用] チェックボックスを選択します。
[Lambda リージョン] で Lambda 関数を作成したリージョンを選択します。
手順 1 で作成した Lambda 関数の名前を [Lambda 関数] に入力します。
[保存] を選択します。
[Lambda 関数に権限を追加する] ダイアログボックスが表示されたら [OK] を選択します。

4.    左側のナビゲーションペインの [API] セクションで [設定] を選択します。

5.    [バイナリメディアタイプ] セクションで [バイナリメディアタイプの追加] を選択し、image/png または使用する別の形式 (application/pdf など) を選択します。

6.    [変更の保存] を選択します。

7.    API を新規ステージにデプロイします。詳細については、「API Gateway コンソールを使用したステージのセットアップ」を参照してください。

これで、API で Lambda プロキシ統合を使用して API ゲートウェイ経由でバイナリデータを返す準備ができました。API を呼び出す方法については、「Amazon API Gateway での REST API の呼び出し」を参照してください。

注: バイナリデータを扱う場合、Lambda 関数の出力の ;isBase64Encoded プロパティを true に設定する必要があります。 body プロパティには、base64 でエンコードされたバイナリメディアも含まれている必要があります。詳細については、「REST API のバイナリメディアタイプの使用」を参照してください。

Postman と cURL を使用してバイナリデータを返すために REST API を呼び出すには

重要: Postman または cURL を使用して REST API を呼び出してバイナリデータを返す場合は、API リクエストに Accept ヘッダーを含めます。Accept ヘッダー値は、使用するファイル形式に一致する必要があります。たとえば、画像/PNGアプリケーション/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 には、使用する実際の画像ファイルのタイプを入力します。

ウェブブラウザを使用して REST API を呼び出してバイナリデータを返すには

ウェブブラウザーを使用して REST API を呼び出してバイナリデータを返す場合は、text/html をバイナリメディアタイプとして API に追加します。

注: ウェブブラウザは複数の値を含む Accept ヘッダーを自動的に送信します。デフォルトでは、最初の値は常に 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 でのコンテンツタイプの変換」を参照してください。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?