aws-sam-cli: Bug: sam local invoke - APIError

Description:

Trying to run the command sam local invoke <myFunctionHere> -e .\events\event.json and everytime I try to run that command, I get hit with a 500 error

Steps to reproduce:

To reproduce this, all I have to do is run the command mentioned above

Observed result:

2023-03-31 00:51:20,277 | Config file location: C:\Users\mresp\Desktop\Buidness\repos\open-ai-api\endpoints\generateName\samconfig.toml 2023-03-31 00:51:20,278 | Loading configuration values from [default.[‘local’, ‘invoke’].parameters] (env.command_name.section) in config file at ‘C:\Users\mresp\Desktop\Buidness\repos\open-ai-api\endpoints\generateName\samconfig.toml’… 2023-03-31 00:51:20,281 | Configuration values successfully loaded. 2023-03-31 00:51:20,281 | Configuration values are: {‘stack_name’: ‘generateName’} 2023-03-31 00:51:20,284 | Using SAM Template at C:\Users\mresp\Desktop\Buidness\repos\open-ai-api\endpoints\generateName.aws-sam\build\template.yaml 2023-03-31 00:51:20,296 | Using config file: samconfig.toml, config environment: default 2023-03-31 00:51:20,297 | Expand command line arguments to: 2023-03-31 00:51:20,297 | --template_file=C:\Users\mresp\Desktop\Buidness\repos\open-ai-api\endpoints\generateName.aws-sam\build\template.yaml --event=.\events\event.json --function_logical_id=GenerateNameFunction --no_event --layer_cache_basedir=C:\Users\mresp\AppData\Roaming\AWS SAM\layers-pkg --container_host=localhost --container_host_interface=127.0.0.1 2023-03-31 00:51:20,297 | local invoke command is called 2023-03-31 00:51:20,299 | No Parameters detected in the template 2023-03-31 00:51:20,319 | Sam customer defined id is more priority than other IDs. Customer defined id for resource GenerateNameFunction is GenerateNameFunction 2023-03-31 00:51:20,320 | There is no customer defined id or cdk path defined for resource ApplicationResourceGroup, so we will use the resource logical id as the resource id 2023-03-31 00:51:20,320 | There is no customer defined id or cdk path defined for resource ApplicationInsightsMonitoring, so we will use the resource logical id as the resource id 2023-03-31 00:51:20,320 | 0 stacks found in the template 2023-03-31 00:51:20,320 | No Parameters detected in the template 2023-03-31 00:51:20,330 | Sam customer defined id is more priority than other IDs. Customer defined id for resource GenerateNameFunction is GenerateNameFunction 2023-03-31 00:51:20,330 | There is no customer defined id or cdk path defined for resource ApplicationResourceGroup, so we will use the resource logical id as the resource id 2023-03-31 00:51:20,331 | There is no customer defined id or cdk path defined for resource ApplicationInsightsMonitoring, so we will use the resource logical id as the resource id 2023-03-31 00:51:20,331 | 3 resources found in the stack 2023-03-31 00:51:20,331 | Found Serverless function with name=‘GenerateNameFunction’ and CodeUri=‘GenerateNameFunction’ 2023-03-31 00:51:20,331 | --base-dir is not presented, adjusting uri GenerateNameFunction relative to C:\Users\mresp\Desktop\Buidness\repos\open-ai-api\endpoints\generateName.aws-sam\build\template.yaml
2023-03-31 00:51:20,342 | Found one Lambda function with name ‘GenerateNameFunction’ 2023-03-31 00:51:20,342 | Invoking app.lambdaHandler (nodejs18.x) 2023-03-31 00:51:20,342 | No environment variables found for function ‘GenerateNameFunction’ 2023-03-31 00:51:20,342 | Loading AWS credentials from session with profile ‘None’ 2023-03-31 00:51:20,349 | Resolving code path. Cwd=C:\Users\mresp\Desktop\Buidness\repos\open-ai-api\endpoints\generateName.aws-sam\build, CodeUri=C:\Users\mresp\Desktop\Buidness\repos\open-ai-api\endpoints\generateName.aws-sam\build\GenerateNameFunction 2023-03-31 00:51:20,349 | Resolved absolute path to code is C:\Users\mresp\Desktop\Buidness\repos\open-ai-api\endpoints\generateName.aws-sam\build\GenerateNameFunction 2023-03-31 00:51:20,349 | Code C:\Users\mresp\Desktop\Buidness\repos\open-ai-api\endpoints\generateName.aws-sam\build\GenerateNameFunction is not a zip/jar file 2023-03-31 00:51:20,352 | Cleaning all decompressed code dirs 2023-03-31 00:51:20,353 | Telemetry endpoint configured to be https://aws-serverless-tools-telemetry.us-west-2.amazonaws.com/metrics 2023-03-31 00:51:20,438 | Sending Telemetry: {‘metrics’: [{‘commandRun’: {‘requestId’: ‘163d39da-d9d1-44b6-ae90-d7ddd4573a73’, ‘installationId’: ‘261cafca-02e1-45e3-898a-60696bd4b0f9’, ‘sessionId’: ‘3e73484c-063e-4805-a04b-c08e176cf430’, ‘executionEnvironment’: ‘CLI’, ‘ci’: False, ‘pyversion’: ‘3.8.8’, ‘samcliVersion’: ‘1.78.0’, ‘awsProfileProvided’: False, ‘debugFlagProvided’: True, ‘region’: ‘’, ‘commandName’: ‘sam local invoke’, ‘metricSpecificAttributes’: {‘projectType’: ‘CFN’, ‘gitOrigin’: ‘43eef2271780ab63c4ecbb3ee3d15bac8ea1ba8e7005fea7835d8562e240ed27’, ‘projectName’: ‘c476b3cb78cf15c8bd71c3d96f732103e3c4f3d5715a6d89a212d581cc4b3fd5’, ‘initialCommit’: ‘2bc2f20088ce9b163c9f9d27fed40f5522126a9732ca370f901380f9cab78cc8’}, ‘duration’: 56, ‘exitReason’: ‘APIError’, ‘exitCode’: 255}}]} 2023-03-31 00:51:21,023 | Telemetry response: 200

Error: 500 Server Error: Internal Server Error (“readlink /var/lib/docker/overlay2: invalid argument”) Traceback: File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py”, line 1055, in main rv = self.invoke(ctx) File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py”, line 1657, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py”, line 1657, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py”, line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py”, line 760, in invoke return __callback(*args, **kwargs) File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\decorators.py”, line 84, in new_func return ctx.invoke(f, obj, *args, **kwargs) File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py”, line 760, in invoke return __callback(*args, **kwargs) File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\telemetry\metric.py”, line 183, in wrapped raise exception # pylint: disable=raising-bad-type File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\telemetry\metric.py”, line 148, in wrapped return_value = func(*args, **kwargs) File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\utils\version_checker.py”, line 42, in wrapped actual_result = func(*args, **kwargs) File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\cli\main.py”, line 92, in wrapper return func(*args, **kwargs) File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\commands\local\invoke\cli.py”, line 96, in cli do_cli( File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\commands\local\invoke\cli.py”, line 202, in do_cli context.local_lambda_runner.invoke( File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\commands\local\lib\local_lambda.py”, line 144, in invoke self.local_runtime.invoke( File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\telemetry\metric.py”, line 323, in wrapped_func return_value = func(*args, **kwargs) File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\lambdafn\runtime.py”, line 189, in invoke container = self.create(function_config, debug_context, container_host, container_host_interface) File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\lambdafn\runtime.py”, line 85, in create container = LambdaContainer( File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\docker\lambda_container.py”, line 94, in init image = LambdaContainer._get_image( File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\docker\lambda_container.py”, line 237, in _get_image return lambda_image.build(runtime, packagetype, image, layers, architecture, function_name=function_name) File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\docker\lambda_image.py”, line 188, in build self.docker_client.images.get(rapid_image) File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\docker\models\images.py”, line 316, in get return self.prepare_model(self.client.api.inspect_image(name)) File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\docker\utils\decorators.py”, line 19, in wrapped return f(self, resource_id, *args, **kwargs) File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\docker\api\image.py”, line 245, in inspect_image return self._result( File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\docker\api\client.py”, line 267, in _result self._raise_for_status(response) File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\docker\api\client.py”, line 263, in _raise_for_status raise create_api_error_from_http_exception(e) File “C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\docker\errors.py”, line 31, in create_api_error_from_http_exception raise cls(e, response=response, explanation=explanation)

Expected result:

I expect the docker image to be spun up and I will be able to test my lambda function

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

  1. OS: Windows 10
  2. sam --version: SAM CLI, version 1.78.0
  3. AWS region: us-east-2
# Paste the output of `sam --info` here

{ “version”: “1.78.0”, “system”: { “python”: “3.8.8”, “os”: “Windows-10-10.0.19041-SP0” }, “additional_dependencies”: { “docker_engine”: “Not available”, “aws_cdk”: “Not available”, “terraform”: “Not available” } } Add --debug flag to command you are running

About this issue

  • Original URL
  • State: closed
  • Created a year ago
  • Reactions: 1
  • Comments: 17 (4 by maintainers)

Most upvoted comments

adding --container-host-interface 0.0.0.0 to the end of my command fixed (at least temporarily) the issue for me.

Example: sam local invoke {function-name} --container-host-interface 0.0.0.0

hopefully this helps others!

I fixed it by doing this:

  1. uninstall docker desktop
  2. go to the Docker Release Notes and download v4.17.0
  3. install it
  4. Open a power shell terminal and run wsl --shutdown
  5. reopen docker and vscode and run the function with sam local invoke

I find WSL to be a major pain especially when dealing with docker…

Now it seems to work without any workaround, so i guess it’s somehow fixed.

thanks guys for reporting this issue. I’m having something similar with WSL2

If I run sam local invoke <function-name> -e event.json I get the following error:

Local image is up-to-date
Using local image: public.ecr.aws/lambda/python:3.8-rapid-x86_64.

Mounting /home/francodegio/<company>/<project>/functions/<function-name> as /var/task:ro,delegated, inside runtime container

Error: 500 Server Error: Internal Server Error ("b'Ports are not available: exposing port TCP 127.0.0.1:7450 -> 0.0.0.0:0: listen tcp 127.0.0.1:7450: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.'")
Traceback:
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/click/core.py", line 1659, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/click/core.py", line 1659, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/click/decorators.py", line 84, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/samcli/lib/telemetry/metric.py", line 183, in wrapped
    raise exception  # pylint: disable=raising-bad-type
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/samcli/lib/telemetry/metric.py", line 148, in wrapped
    return_value = func(*args, **kwargs)
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/samcli/lib/utils/version_checker.py", line 42, in wrapped
    actual_result = func(*args, **kwargs)
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/samcli/cli/main.py", line 92, in wrapper
    return func(*args, **kwargs)
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/samcli/commands/local/invoke/cli.py", line 96, in cli
    do_cli(
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/samcli/commands/local/invoke/cli.py", line 202, in do_cli
    context.local_lambda_runner.invoke(
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/samcli/commands/local/lib/local_lambda.py", line 144, in invoke
    self.local_runtime.invoke(
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/samcli/lib/telemetry/metric.py", line 323, in wrapped_func
    return_value = func(*args, **kwargs)
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/samcli/local/lambdafn/runtime.py", line 190, in invoke
    container = self.run(container, function_config, debug_context)
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/samcli/local/lambdafn/runtime.py", line 145, in run
    self._container_manager.run(container)
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/samcli/local/docker/manager.py", line 116, in run
    container.start(input_data=input_data)
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/samcli/local/docker/container.py", line 316, in start
    real_container.start()
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/docker/models/containers.py", line 400, in start
    return self.client.api.start(self.id, **kwargs)
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/docker/utils/decorators.py", line 19, in wrapped
    return f(self, resource_id, *args, **kwargs)
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/docker/api/container.py", line 1095, in start
    self._raise_for_status(res)
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/docker/api/client.py", line 263, in _raise_for_status
    raise create_api_error_from_http_exception(e)
  File "/home/francodegio/miniconda3/envs/aws/lib/python3.8/site-packages/docker/errors.py", line 31, in create_api_error_from_http_exception
    raise cls(e, response=response, explanation=explanation)
    
An unexpected error was encountered while executing "sam local invoke".
Search for an existing issue:
https://github.com/aws/aws-sam-cli/issues?q=is%3Aissue+is%3Aopen+Bug%3A%20sam%20local%20invoke%20-%20APIError
Or create a bug report:
https://github.com/aws/aws-sam-cli/issues/new?template=Bug_report.md&title=Bug%3A%20sam%20local%20invoke%20-%20APIError

Furthermore, if I try to build in container with sam build <function-name> --use-container it doesn’t go past mounting the directory:

Starting Build inside a container
Building codeuri: /home/francodegio/<company>/<project>/functions/<function-name> runtime: python3.8 metadata: {} architecture: x86_64 functions: <function-name>

Fetching public.ecr.aws/sam/build-python3.8:latest-x86_64 Docker container image......
Mounting /home/francodegio/<company>/<project>/functions/<function-name> as /tmp/samcli/source:ro,delegated, inside runtime container

Hope that helps.

OS Edition Windows 11 Home Version 22H2 OS build 22621.1555

Docker Docker Desktop 4.18.0 (104112)

sam --info

{
  "version": "1.79.0",
  "system": {
    "python": "3.8.15",
    "os": "Linux-5.15.90.1-microsoft-standard-WSL2-x86_64-with-glibc2.17"
  },
  "additional_dependencies": {
    "docker_engine": "20.10.24",
    "aws_cdk": "Not available",
    "terraform": "Not available"
  }
}

I am seeing the same issues when using WSL2