

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Rückgabe binärer Medien aus einer Lambda-Proxy-Integration in API Gateway
<a name="lambda-proxy-binary-media"></a>

Zum Zurückgeben binärer Medien aus einer [AWS Lambda -Proxy-Integration](set-up-lambda-proxy-integrations.md) verwenden Sie für die Antwort Ihrer Lambda-Funktion base64-Codierung. Sie müssen auch [die binären Medientypen Ihrer API konfigurieren](api-gateway-payload-encodings-configure-with-console.md). Wenn Sie die binären Medientypen Ihrer API konfigurieren, behandelt Ihre API diesen Inhaltstyp als binäre Daten. Die maximale Größe der Nutzlast ist 10 MB.

**Anmerkung**  
Um einen Webbrowser zum Aufruf einer API mit dieser Beispielintegration zu verwenden, legen Sie die binären Medientypen Ihrer API auf fes `*/*`. API Gateway verwendet den ersten `Accept`-Header von Clients, um zu bestimmen, ob eine Antwort binäre Medien zurückgeben soll. Um binäre Medien zurückzugeben, wenn Sie die Reihenfolge der `Accept`-Headerwerte nicht steuern können, z. B. Anforderungen von einem Browser, setzen Sie die binären Medientypen der API (für alle Inhaltstypen) auf `*/*`.

Die folgende Beispiel-Lambda-Funktion kann ein binäres Bild von Amazon S3 oder Text an Clients zurückgeben. Die Antwort der Funktion enthält einen `Content-Type`-Header, der dem Client den Typ der zurückgegebenen Daten angibt. Die Funktion legt die `isBase64Encoded`-Eigenschaft bedingt in ihrer Antwort fest, abhängig von der Art der Daten, die sie zurückgibt.

------
#### [ Node.js ]

```
import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3"

const client = new S3Client({region: 'us-east-2'});

export const handler = async (event) => {

  var randomint = function(max) {
    return Math.floor(Math.random() * max);
  }
  var number = randomint(2);
  if (number == 1){ 
    const input = {
      "Bucket" : "bucket-name",
      "Key" : "image.png"
      }
    try {
      const command = new GetObjectCommand(input)
      const response = await client.send(command);
      var str = await response.Body.transformToByteArray();
    } catch (err) {
      console.error(err);
    }
    const base64body = Buffer.from(str).toString('base64');
    return {
      'headers': { "Content-Type": "image/png" },
      'statusCode': 200,
      'body': base64body,
      'isBase64Encoded': true
      }
    } else {
        return {
        'headers': { "Content-Type": "text/html" },
        'statusCode': 200,
        'body': "<h1>This is text</h1>",
        }
    }
}
```

------
#### [ Python ]

```
import base64
import boto3
import json
import random

s3 = boto3.client('s3')

def lambda_handler(event, context):
    number = random.randint(0,1)
    if number == 1:
        response = s3.get_object(
            Bucket='bucket-name',
            Key='image.png',
        )
        image = response['Body'].read()
        return {
            'headers': { "Content-Type": "image/png" },
            'statusCode': 200,
            'body': base64.b64encode(image).decode('utf-8'),
            'isBase64Encoded': True
        }
    else:
        return {
            'headers': { "Content-type": "text/html" },
            'statusCode': 200,
            'body': "<h1>This is text</h1>",
        }
```

------

Weitere Informationen zu binären Medientypen finden Sie unter [Binäre Medientypen für REST APIs in API Gateway](api-gateway-payload-encodings.md).