-
Notifications
You must be signed in to change notification settings - Fork 672
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unable to Stream Responses from AWS Lambda #655
Comments
For those curious on streaming support. https://aaronstuyvenberg.com/posts/introducing-response-streaming Is anyone looking into this for express? I kind of assumed given the popularity this was done already. Totally willing to help if Express itself allows this? |
@metaskills happy to receive PRs for this. Express does support streaming response https://stackoverflow.com/a/38789462/436540 |
Hello, Anyone find a solution to stream content? |
So I found a temporary workaround: just grab the entire payload from const pipeline = require('util').promisify(require('stream').pipeline);
const { Readable } = require('stream');
let serverlessExpressInstance;
const getServerlessExpress = async () => {
if (!serverlessExpressInstance) {
serverlessExpressInstance = serverlessExpress({
app,
resolutionMode: 'PROMISE',
});
}
return serverlessExpressInstance;
}
// @ts-ignore: https://github.com/aws/aws-lambda-nodejs-runtime-interface-client/issues/74
exports.handler = awslambda.streamifyResponse(async (event, responseStream, context) => {
const serverlessHandler = await getServerlessExpress();
const result = await serverlessHandler(event, context, () => { });
const metadata = {
statusCode: result.statusCode,
headers: result.headers,
cookies: result.cookies,
};
let payload;
if (result.body) {
payload = Buffer.from(result.body, result.isBase64Encoded ? 'base64' : 'utf8');
} else {
payload = Buffer.alloc(0);
}
// Assign to the responseStream parameter to prevent accidental reuse of the non-wrapped stream.
// @ts-ignore: https://github.com/aws/aws-lambda-nodejs-runtime-interface-client/issues/74
responseStream = awslambda.HttpResponseStream.from(responseStream, metadata);
await pipeline(
Readable.from(payload),
responseStream,
);
}); I have also encountered some issues when there is no payload to send, only headers. So if your |
Any native support by this library for the lambda streaming response? |
I am facing difficulties in streaming responses from AWS Lambda. Initially, I attempted to use the serverless-http package for this purpose, but I learned that it doesn't support streaming. Subsequently, I switched to the @vendia/serverless-express package, hoping it would resolve the issue. However, even with this package, I can still not achieve streaming functionality.
My code:
The text was updated successfully, but these errors were encountered: