Function URL invoke hangs when the response stream is empty

Ouverte
#95 7 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
35/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
aws, node.js, typescript
Domaine
api, backend, cloud

Piste de recherche

Commencez par la reproduction dans index.cjs en utilisant awslambda.streamifyResponse, HttpResponseStream.from, pipeline et Readable.from(Buffer.alloc(0)) dans une invocation de Function URL. Exécutez-la dans us-east-1 et comparez le comportement des comptes anciens et nouveaux. Le travail est terminé lorsqu’un flux de réponse vide avec statusCode 403 ferme la connexion du client au lieu de rester bloqué.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

I have a lambda with response streaming enabled. Invoked via Function URL. I am trying to return a status code with no response body. I have reduced my code to the below sample to reproduce the issue:

// File: index.cjs
// Handler: index.handler

const pipeline = require("util").promisify(require("stream").pipeline);
const { Readable } = require("stream");

exports.handler = awslambda.streamifyResponse(async (event, responseStream, context) => {
  responseStream = awslambda.HttpResponseStream.from(responseStream, {
    statusCode: 403,
  });

  await pipeline(
    Readable.from(Buffer.alloc(0)),
    responseStream,
  );
});

I can see the HTTP headers are sent correctly and received by the client. But the connection remains open for up to 16 minutes. It seems like the runtime expects a response body, and if there is none, it just hangs and does not close the connection.

What's even stranger is that I have tested this in 2 different accounts. One of the accounts has been created ages ago, and the code above actually works fine as one would expect. The other account is newer (and it's where that code is supposed to run), and it just hangs and doesn't close the connection. Region is us-east-1.

Langage dominant
TypeScript
Étoiles
224
Forks
60
Merge moyen
26 min
PR mergées (30 j)
2

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de aws/aws-lambda-nodejs-runtime-interface-client

Toutes les issues de aws/aws-lambda-nodejs-runtime-interface-client

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.