Como configuro uma API do API Gateway para lidar com dados binários usando uma integração de proxy Lambda?

4 minuto de leitura
0

Quero retornar dados binários por meio da minha API REST do Amazon API Gateway (ou API HTTP) usando uma integração de proxy do AWS Lambda. Como faço para configurar isso?

Resolução

Observação: as APIs HTTP do API Gateway lidam automaticamente com dados binários. Para que as APIs REST do API Gateway manipulem dados binários, a função do Lambda de back-end deve usar o formato de saída correto de uma função do Lambda para integração de proxy.

Para retornar dados binários por meio de uma API REST do API Gateway usando uma integração de proxy Lambda

1.    No console do Lambda, crie uma nova função do Lambda.
Observação: para ver um exemplo de função do Lambda do Python 3, consulte Retornar mídia binária de uma integração de proxy Lambda.

2.    No console do API Gateway, crie uma nova API REST.

3.    Crie um método GET para a nova API fazendo o seguinte:
No painel Recursos, selecione Ações.
Selecione Criar método. Em seguida, selecione GET.
Na seção /- GET - Configuração, em Tipo de integração, selecione Função do Lambda. Marque a caixa de seleção Usar integração com o Lambda Proxy.
Para Região do Lambda, selecione a região na qual você criou sua função do Lambda.
Para Função do Lambda, insira o nome da função do Lambda que você criou na etapa 1.
Selecione Salvar.
Na caixa de diálogo Adicionar permissão à função do Lambda exibida, selecione OK.

4.    No painel de navegação esquerdo, na seção API, selecione Configurações.

5.    Em Tipos de mídia binária, selecione Adicionar tipo de mídia binária e adicione imagem/png ou outro formato de arquivo que você gostaria de usar, como aplicação/pdf.

6.    Selecione Salvar alterações.

7.    Implante sua API em um novo estágio. Para obter mais informações, consulte Configurar um estágio usando o console do API Gateway.

Agora, sua API está pronta para retornar dados binários por meio do API Gateway usando uma integração de proxy Lambda. Para obter informações sobre como invocar sua API, consulte Como invocar uma API REST no Amazon API Gateway.

Observação: ao lidar com dados binários, a propriedade isBase64Encoded na saída da função do Lambda deve ser definida como **verdadeira.**A propriedade body também deve conter a mídia binária codificada em base64. Para obter mais informações, consulte Como trabalhar com tipos de mídia binária para APIs REST.

Para invocar sua API REST para retornar dados binários usando Postman e cURL

Importante: se você usa Postman ou cURL para invocar sua API REST para retornar dados binários, certifique-se de incluir o cabeçalho Accept na solicitação da API. O valor do cabeçalho Accept precisa corresponder ao formato de arquivo que você está usando. Por exemplo, imagem/png ou aplicação/pdf.

Para obter informações sobre como invocar uma API REST usando o Postman, consulte Usar o Postman para invocar uma API REST.

Para obter informações sobre como o API Gateway codifica cargas, consulte Conversões de tipo de conteúdo no API Gateway.

Exemplo de comando cURL para invocar uma API REST do API Gateway para retornar dados binários

$ curl 'https://{restapi_id}.execute-api.{region}.amazonaws.com/{stage_name}/' -H 'Accept: image/png'

Observação: substitua as variáveis a seguir antes de executar o comando cURL de exemplo:
Para {restapi_id}, insira o identificador da sua API.
Para {region}, insira a região da AWS em que sua API está.
Para {stage_name}, insira o nome provisório da sua API.
Para image/png, certifique-se de inserir o tipo de arquivo de imagem real que você está usando.

Para invocar sua API REST para retornar dados binários usando um navegador da web

Se você usa um navegador da Web para invocar uma API REST para retornar dados binários, certifique-se de adicionar text/html como um tipo de mídia binária à API.

**Observação:**Os navegadores da Web enviam automaticamente um cabeçalho Accept com vários valores. Por padrão, o primeiro valor é sempre html/text. Como o API Gateway respeita somente o primeiro valor, você deve adicionar text/html como um tipo de mídia binária à API. Caso contrário, você receberá a seguinte mensagem de erro:

"The image "https://{restapi_id}.execute-api.{region}.amazonaws.com/{stage_name}/" cannot be displayed because it contains errors."

Para adicionar text/html como um tipo de mídia binária a uma API REST, faça o seguinte:

1.    No console do API Gateway, selecione sua API.

2.    No painel de navegação esquerdo, na parte inferior da seção API, selecione Configurações.

3.    Em Tipos de mídia binária, selecione Adicionar tipo de mídia binária e adicione texto/html.

4.    Selecione Salvar alterações.

5.    Implante sua API.

Para obter mais informações, consulte Conversões de tipo de conteúdo no API Gateway.