Description
Is your feature request related to a problem? Please describe.
I had been trying make the AWS Lambda response streaming work with aws-lambda-go
runtime and I was not able to succeed. Neither the Lambda Function URLs or direct API call using InvokeWithResponseStream
work and instead I was retrieving the entire response serialized to JSON.
I made my Lambda function return the events.LambdaFunctionURLStreamingResponse
, but the entire response had been serialized and returned as JSON. The passed io.Reader
had not been proceesed and suprisingly enough the response contain JSON serialized representation of the io.Reader
implementation i.e.
{"StatusCode":200,"Headers":{"Content-Type":"application/octet-stream"},"Body":{"ReadCloser":{}},"Cookies":null}
I had been runing the GO Lambda function on al2023
runtime, compiled the binary with -tags lambda.norpc
option and set up the Function URL.
FunctionUrl:
Type: AWS::Lambda::Url
Properties:
TargetFunctionArn: !Ref Function
AuthType: NONE
InvokeMode: RESPONSE_STREAM
Neither of this had any impact and the behavior persisted. Even the documented in code example is not working correctly:
// Example:
//
// lambda.Start(func() (*events.LambdaFunctionURLStreamingResponse, error) {
// return &events.LambdaFunctionURLStreamingResponse{
// StatusCode: 200,
// Headers: map[string]string{
// "Content-Type": "text/html",
// },
// Body: strings.NewReader("<html><body>Hello World!</body></html>"),
// }, nil
// })
//
// Note: This response type requires compiling with `-tags lambda.norpc`, or choosing the `provided` or `provided.al2` runtime.
Which results in response from Function URL:
{"StatusCode":200,"Headers":{"Content-Type":"text/html"},"Body":{},"Cookies":null}
Is Response Streaming not supported with Go runtime?
Describe the solution you'd like
I would like to use Lambda Response Streaming with my Go runtime.
Describe alternatives you've considered
I am not using AWS Lambda for this use case today.
Additional context
github.com/aws/aws-lambda-go v1.47.0