スキップしてコンテンツを表示

Lambda プロキシ統合を使用して、バイナリデータを処理するように API Gateway REST API を設定する方法を教えてください。

所要時間2分
0

AWS Lambda プロキシ統合を使用して、Amazon API Gateway REST API 経由でバイナリデータを返したいと考えています。

解決策

API Gateway REST API でバイナリデータを処理するには、バックエンド Lambda 関数は、プロキシ統合用の Lambda 関数の出力形式を使用する必要があります。

注: API Gateway HTTP API は、バイナリデータを自動的に処理します。

Lambda プロキシ統合を使用して API Gateway REST API 経由でバイナリデータを返す

次の手順を実行します。

  1. Lambda コンソールを開きます。
  2. 新しい Lambda 関数を作成します。
    注: Python 3 Lambda 関数の例については、「API ゲートウェイで、Lambda プロキシ統合からバイナリメディアを返す」を参照してください。
  3. API Gateway コンソールを開きます。
  4. 新しい REST API を作成します
  5. 新しい API 用の GET メソッドを作成するには、次の手順を実行します。
    [メソッド] パネルで、[メソッドを作成] を選択します。
    [メソッドタイプ] で、[GET] を選択します。
    [/ - GET - 設定] セクションの [統合タイプ] で、[Lambda 関数] を選択します。
    [Lambda プロキシ統合の使用] を有効にします。
    [Lambda 関数] で、お使いの Lambda 関数 を作成した AWS リージョンを選択します。次に、新しい Lambda 関数の名前を入力します。
    [メソッドを作成] を選択します。
  6. [API][API 設定] を選択します。
  7. [バイナリメディアの種類][メディアタイプの管理] を選択し、[バイナリメディアタイプを追加] を選択します。
  8. image/pngapplication/pdf などのファイル形式を追加します。
  9. [変更を保存] を選択します。
  10. API を新しいステージにデプロイします

注: バイナリデータの場合は、Lambda 関数の出力で、;isBase64Encoded プロパティを true に設定する必要があります。body プロパティには、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 をお使いの画像ファイルタイプに置き換えてください。

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

ウェブブラウザは、複数の値を含む Accept ヘッダーを自動的に送信します。デフォルトでは、最初の値は常に html/text です。API Gateway は最初の値のみを受け入れるため、API のバイナリメディアタイプに text/html を追加する必要があります。そうしないと、次のエラーメッセージが表示されます。

"エラーがあるため、イメージ "https://{restapi_id}.execute-api.{region}.amazonaws.com/{stage_name}/" を表示できません。"

text/html をバイナリメディアタイプとして REST API に追加するには、次の手順を実行します。

  1. API Gateway コンソールを開きます。
  2. API を選択します。
  3. ナビゲーションペインで [API 設定] を選択します。
  4. [バイナリメディアの種類][メディアタイプの管理] を選択し、[バイナリメディアタイプを追加] を選択します。
  5. text/html を入力します。
  6. [変更を保存] を選択します。
  7. API をデプロイします。

詳細については、「API Gateway でのコンテンツタイプの変換」を参照してください。

関連情報

API Gateway で REST API のステージをセットアップする

API Gateway で REST API を呼び出す

AWS公式更新しました 4ヶ月前
コメントはありません

関連するコンテンツ