aws / aws/aws-sam-cli

Bug: "socket.gaierror: [Errno -2] Name or service not known" when running in Ubuntu container

Open
#5,784 5 comments 0 reactions 0 assignees View on GitHub
stage/bug-repro
Dominant language
Python
Stars
6.7k
Forks
1.2k
Avg merge
1d 10h
Merged PRs (30d)
52

Description

### Description:
Whenever I run my tests in GitHub Actions (which runs them via the Ubuntu image), I get errors in my tests when they try to call my Lambda after starting the SAM CLI (also done by my tests).

### Steps to reproduce:

The relevant part of my GitHub actions YML is here:
```yaml
jobs:
build:
name: Build
runs-on: ubuntu-latest
```

My `template.yaml` looks like this:
```yaml
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31

Globals:
Function:
Runtime: nodejs18.x

Resources:
Lambda:
Type: AWS::Serverless::Function
Properties:
CodeUri: .
Handler: app.handler
Timeout: 60
Architectures:
- x86_64
Events:
Api:
Type: HttpApi
Properties:
Path: /events
TimeoutInMillis: 60000
Method: POST
```

Inside that container, I programmatically try to start the SAM CLI with the following options:
```bash
sam local start-api \
--container-env-vars ./.aws-sam/scripts/container-environment.start.json \
--template ./.aws-sam/build/template.yaml \
--host "0.0.0.0" \
--container-host host.docker.internal \
--container-host-interface "0.0.0.0" \
--docker-volume-basedir ${LOCAL_WORKSPACE_FOLDER}/src/apps/redacted/src/.aws-sam/build
```

Then I make a request to the lambda.

This also happens if I just make an Ubuntu container myself and try to do it from there via CURL.

### Observed result:
```
2023-08-17 12:10:12 127.0.0.1 - - [17/Aug/2023 12:10:12] "POST /events HTTP/1.1" 502 -
Invoking app.handler (nodejs18.x)
Using local image: public.ecr.aws/lambda/nodejs:18-rapid-x86_64.
Mounting /src/apps/redacted/src/.aws-sam/build/Lambda as /var/task:ro,delegated, inside runtime container
Exception on /events [POST]
Traceback (most recent call last):
File "flask/app.py", line 2529, in wsgi_app
File "flask/app.py", line 1825, in full_dispatch_request
File "flask/app.py", line 1823, in full_dispatch_request
File "flask/app.py", line 1799, in dispatch_request
File "samcli/local/apigw/local_apigw_service.py", line 714, in _request_handler
File "samcli/local/apigw/local_apigw_service.py", line 612, in _invoke_lambda_function
File "samcli/commands/local/lib/local_lambda.py", line 144, in invoke
File "samcli/lib/telemetry/metric.py", line 324, in wrapped_func
File "samcli/local/lambdafn/runtime.py", line 201, in invoke
File "samcli/local/docker/container.py", line 349, in wait_for_result
File "samcli/local/docker/container.py", line 388, in _wait_for_socket_connection
File "samcli/local/docker/container.py", line 406, in _can_connect_to_socket
socket.gaierror: [Errno -2] Name or service not known
```

### Expected result:

I expected the call to succeed.

### Additional environment details (Ex: Windows, Mac, Amazon Linux etc)

1. OS: Any OS (happens inside Ubuntu container though)
2. `sam --version`: `SAM CLI, version 1.77.0`
3. AWS region: `eu-west-1`

```
# Paste the output of `sam --info` here
{
"version": "1.77.0",
"system": {
"python": "3.8.17",
"os": "macOS-13.5-arm64-arm-64bit"
},
"additional_dependencies": {
"docker_engine": "24.0.2",
"aws_cdk": "2.14.0 (build 762d71b)",
"terraform": "Not available"
}
}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.