The state of AWS Lambda Go Streaming support
- Dominant language
- Go
- Stars
- 3.8k
- Forks
- 578
- Avg merge
- 8h 18m
- Merged PRs (30d)
- 1
Description
**Is your feature request related to a problem? Please describe.**
I had been trying make the AWS Lambda [response streaming](https://aws.amazon.com/blogs/compute/introducing-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("Hello World!"),
// }, 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`
Contributor guide
Assessment
This issue has not been assessed yet.