aws / aws/aws-sam-cli

FileNotFoundError [WinError 3] when running sam local invoke with python cdk lambda layer function

Open
#4,142 2 comments 0 reactions 0 assignees View on GitHub
blocked/more-info-needed maintainer/need-followup
Dominant language
Python
Stars
6.7k
Forks
1.2k
Avg merge
1d 10h
Merged PRs (30d)
52

Description

### Description:
I am trying to build a local lambda function complete with layer containing pandas and sqlalchemy. The cdk template seems to get created fine but when I go to test it using sam local invoke I get the following error:

`Invoking handler.handle (python3.9)
PypassLambdaLayer0643FC6D is a local Layer in the template
Building image...Traceback (most recent call last):
File "runpy.py", line 194, in _run_module_as_main
File "runpy.py", line 87, in _run_code
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\__main__.py", line 12, in
cli(prog_name="sam")
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 782, in main
rv = self.invoke(ctx)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 1259, 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 1259, 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 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 610, in invoke
return callback(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\decorators.py", line 73, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 610, in invoke
return callback(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\telemetry\metric.py", line 166, 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 124, in wrapped
return_value = func(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\utils\version_checker.py", line 41, in wrapped
actual_result = func(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\cli\main.py", line 87, in wrapper
return func(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\commands\local\invoke\cli.py", line 85, in cli
do_cli(
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\commands\local\invoke\cli.py", line 182, 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 137, in invoke
self.local_runtime.invoke(
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\telemetry\metric.py", line 230, in wrapped_func
return_value = func(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\lambdafn\runtime.py", line 177, 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 73, in create
container = LambdaContainer(
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\docker\lambda_container.py", line 93, in __init__
image = LambdaContainer._get_image(
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\docker\lambda_container.py", line 236, 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 163, in build
self._build_image(
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\docker\lambda_image.py", line 261, in _build_image
with create_tarball(tar_paths, tar_filter=tar_filter) as tarballfile:
File "contextlib.py", line 113, in __enter__
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\utils\tar.py", line 29, in create_tarball archive.add(path_on_system, arcname=path_in_tarball, filter=tar_filter)
File "tarfile.py", line 1977, in add
File "tarfile.py", line 1977, in add
File "tarfile.py", line 1977, in add
[Previous line repeated 2 more times]
File "tarfile.py", line 1955, in add
File "tarfile.py", line 1834, in gettarinfo
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\Users\\LeeBarrett\\OneDrive - LumiraDx Group Ltd\\Documents\\pypass_dev\\2022\\local-lambdas\\pypass_connect_lambda\\cdk.out\\asset.60e64357ce064cf62274b8d1a8976ceb2903f31abd576090b450010d30b4ac7a\\python\\greenlet\\tests\\__pycache__\\test_extension_interface.cpython-39.pyc'`

Sometimes it's a different file that the error claims to be missing.

Here is the stack code I am using for the lambda function/layer:

```
from aws_cdk import (# Duration, Stack, aws_lambda as _lambda,# aws_sqs as sqs,)
# import aws_cdk.aws_lambda_python_alpha as _alambda
from constructs import Construct
class PypassConnectLambdaStack(Stack):
def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)

pypass_lambda_layer = _lambda.LayerVersion(
self, 'PypassLambdaLayer',
code=_lambda.Code.from_asset(".\\lambda\\layers"),
compatible_runtimes=[_lambda.Runtime.PYTHON_3_9],
# description='Pypass packages',
# layer_version_name='pypass'
)

my_lambda = _lambda.Function(
self,
"PypassHandler",
runtime=_lambda.Runtime.PYTHON_3_9,
code=_lambda.Code.from_asset(".\\lambda\\code"),
handler="handler.handle",
layers=[pypass_lambda_layer]

)
```

This is the folder structure for the location of the handler file and the layer:
\lambda
\layers
\python
\code
handler.py

### Observed result:
2022-08-24 14:02:14,266 | Telemetry endpoint configured to be https://aws-serverless-tools-telemetry.us-west-2.amazonaws.com/metrics
2022-08-24 14:02:14,267 | Using config file: samconfig.toml, config environment: default
2022-08-24 14:02:14,267 | Expand command line arguments to:
2022-08-24 14:02:14,267 | --template_file=C:\Users\LeeBarrett\OneDrive - LumiraDx Group Ltd\Documents\pypass_dev\2022\local-lambdas\pypass_connect_lambda\cdk.out\PypassConnectLambdaStack.template.json --event=C:\Users\LeeBarrett\OneDrive - LumiraDx Group Ltd\Documents\pypass_dev\2022\local-lambdas\pypass_connect_lambda\events\testevent.json --no_event --layer_cache_basedir=C:\Users\LeeBarrett\AppData\Roaming\AWS SAM\layers-pkg --container_host=localhost --container_host_interface=127.0.0.1
2022-08-24 14:02:14,268 | local invoke command is called
2022-08-24 14:02:14,269 | Collected default values for parameters: {'BootstrapVersion': '/cdk-bootstrap/hnb659fds/version'}
2022-08-24 14:02:14,289 | CDK Path for resource PypassLambdaLayer0643FC6D is ['PypassConnectLambdaStack', 'PypassLambdaLayer', 'Resource']
2022-08-24 14:02:14,289 | CDK Path for resource PypassHandlerServiceRoleA69A1B6B is ['PypassConnectLambdaStack', 'PypassHandler', 'ServiceRole', 'Resource']
2022-08-24 14:02:14,289 | CDK Path for resource PypassHandler6704CCD9 is ['PypassConnectLambdaStack', 'PypassHandler', 'Resource']
2022-08-24 14:02:14,289 | CDK Path for resource CDKMetadata is ['PypassConnectLambdaStack', 'CDKMetadata', 'Default']
2022-08-24 14:02:14,290 | 0 stacks found in the template
2022-08-24 14:02:14,290 | Collected default values for parameters: {'BootstrapVersion': '/cdk-bootstrap/hnb659fds/version'}
2022-08-24 14:02:14,301 | CDK Path for resource PypassLambdaLayer0643FC6D is ['PypassConnectLambdaStack', 'PypassLambdaLayer', 'Resource']
2022-08-24 14:02:14,302 | CDK Path for resource PypassHandlerServiceRoleA69A1B6B is ['PypassConnectLambdaStack', 'PypassHandler', 'ServiceRole', 'Resource']
2022-08-24 14:02:14,302 | CDK Path for resource PypassHandler6704CCD9 is ['PypassConnectLambdaStack', 'PypassHandler', 'Resource']
2022-08-24 14:02:14,302 | CDK Path for resource CDKMetadata is ['PypassConnectLambdaStack', 'CDKMetadata', 'Default']
2022-08-24 14:02:14,303 | 4 resources found in the stack
2022-08-24 14:02:14,303 | --base-dir is not presented, adjusting uri asset.60e64357ce064cf62274b8d1a8976ceb2903f31abd576090b450010d30b4ac7a relative to C:\Users\LeeBarrett\OneDrive - LumiraDx Group Ltd\Documents\pypass_dev\2022\local-lambdas\pypass_connect_lambda\cdk.out\PypassConnectLambdaStack.template.json
2022-08-24 14:02:14,303 | Found Lambda function with name='PypassHandler6704CCD9' and CodeUri='asset.7860f7de748119a5add31aeb22e63d29bf7e40f185c2982cd46d6251931cd931'
2022-08-24 14:02:14,304 | --base-dir is not presented, adjusting uri asset.7860f7de748119a5add31aeb22e63d29bf7e40f185c2982cd46d6251931cd931 relative to C:\Users\LeeBarrett\OneDrive - LumiraDx Group Ltd\Documents\pypass_dev\2022\local-lambdas\pypass_connect_lambda\cdk.out\PypassConnectLambdaStack.template.json
2022-08-24 14:02:14,315 | Found one Lambda function with name 'PypassHandler6704CCD9'
2022-08-24 14:02:14,315 | Invoking handler.handle (python3.9)
2022-08-24 14:02:14,316 | No environment variables found for function 'PypassHandler6704CCD9'
2022-08-24 14:02:14,318 | Environment variables overrides data is standard format
2022-08-24 14:02:14,319 | Loading AWS credentials from session with profile 'None'
2022-08-24 14:02:15,089 | Resolving code path. Cwd=C:\Users\LeeBarrett\OneDrive - LumiraDx Group Ltd\Documents\pypass_dev\2022\local-lambdas\pypass_connect_lambda\cdk.out, CodeUri=C:\Users\LeeBarrett\OneDrive - LumiraDx Group Ltd\Documents\pypass_dev\2022\local-lambdas\pypass_connect_lambda\cdk.out\asset.7860f7de748119a5add31aeb22e63d29bf7e40f185c2982cd46d6251931cd931
2022-08-24 14:02:15,090 | Resolved absolute path to code is C:\Users\LeeBarrett\OneDrive - LumiraDx Group Ltd\Documents\pypass_dev\2022\local-lambdas\pypass_connect_lambda\cdk.out\asset.7860f7de748119a5add31aeb22e63d29bf7e40f185c2982cd46d6251931cd931
2022-08-24 14:02:15,093 | Code C:\Users\LeeBarrett\OneDrive - LumiraDx Group Ltd\Documents\pypass_dev\2022\local-lambdas\pypass_connect_lambda\cdk.out\asset.7860f7de748119a5add31aeb22e63d29bf7e40f185c2982cd46d6251931cd931 is not a zip/jar file
2022-08-24 14:02:15,099 | Code C:\Users\LeeBarrett\OneDrive - LumiraDx Group Ltd\Documents\pypass_dev\2022\local-lambdas\pypass_connect_lambda\cdk.out\asset.60e64357ce064cf62274b8d1a8976ceb2903f31abd576090b450010d30b4ac7a is not a zip/jar file
2022-08-24 14:02:15,101 | PypassLambdaLayer0643FC6D is a local Layer in the template
2022-08-24 14:02:15,102 | Resolving code path. Cwd=C:\Users\LeeBarrett\OneDrive - LumiraDx Group Ltd\Documents\pypass_dev\2022\local-lambdas\pypass_connect_lambda\cdk.out, CodeUri=C:\Users\LeeBarrett\OneDrive - LumiraDx Group Ltd\Documents\pypass_dev\2022\local-lambdas\pypass_connect_lambda\cdk.out\asset.60e64357ce064cf62274b8d1a8976ceb2903f31abd576090b450010d30b4ac7a
Building image...2022-08-24 14:02:15,158 | Cleaning all decompressed code dirs
2022-08-24 14:02:15,159 | Sending Telemetry: {'metrics': [{'commandRun': {'requestId': 'f63092f7-dc89-4fee-a0cb-b976fceb9ff2', 'installationId': '0bf01c6b-c24e-402a-afe9-7a8d9c75804c', 'sessionId': '4fe4d150-b751-4fb0-a9ca-d84050f55eee', 'executionEnvironment': 'CLI', 'ci': False, 'pyversion': '3.8.8', 'samcliVersion': '1.53.0', 'awsProfileProvided': False, 'debugFlagProvided': True, 'region': '', 'commandName': 'sam local invoke', 'metricSpecificAttributes': {'projectType': 'CDK'}, 'duration': 892, 'exitReason': 'FileNotFoundError', 'exitCode': 255}}]}
2022-08-24 14:02:15,837 | HTTPSConnectionPool(host='aws-serverless-tools-telemetry.us-west-2.amazonaws.com', port=443): Read timed out. (read timeout=0.1)
Traceback (most recent call last):
File "runpy.py", line 194, in _run_module_as_main
File "runpy.py", line 87, in _run_code
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\__main__.py", line 12, in
cli(prog_name="sam")
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 782, in main
rv = self.invoke(ctx)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 1259, 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 1259, 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 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 610, in invoke
return callback(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\decorators.py", line 73, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 610, in invoke
return callback(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\telemetry\metric.py", line 166, 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 124, in wrapped
return_value = func(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\utils\version_checker.py", line 41, in wrapped
actual_result = func(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\cli\main.py", line 87, in wrapper
return func(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\commands\local\invoke\cli.py", line 85, in cli
do_cli(
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\commands\local\invoke\cli.py", line 182, 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 137, in invoke
self.local_runtime.invoke(
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\telemetry\metric.py", line 230, in wrapped_func
return_value = func(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\lambdafn\runtime.py", line 177, 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 73, in create
container = LambdaContainer(
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\docker\lambda_container.py", line 93, in __init__
image = LambdaContainer._get_image(
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\docker\lambda_container.py", line 236, 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 163, in build
self._build_image(
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\docker\lambda_image.py", line 261, in _build_image
with create_tarball(tar_paths, tar_filter=tar_filter) as tarballfile:
File "contextlib.py", line 113, in __enter__
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\utils\tar.py", line 29, in create_tarball archive.add(path_on_system, arcname=path_in_tarball, filter=tar_filter)
File "tarfile.py", line 1977, in add
File "tarfile.py", line 1977, in add
File "tarfile.py", line 1977, in add
[Previous line repeated 2 more times]
File "tarfile.py", line 1955, in add
File "tarfile.py", line 1834, in gettarinfo
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\Users\\LeeBarrett\\OneDrive - LumiraDx Group Ltd\\Documents\\pypass_dev\\2022\\local-lambdas\\pypass_connect_lambda\\cdk.out\\asset.60e64357ce064cf62274b8d1a8976ceb2903f31abd576090b450010d30b4ac7a\\python\\greenlet\\tests\\__pycache__\\test_extension_interface.cpython-39.pyc'

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

1. OS: windows
2. `sam --version`: 1.53.0
3. AWS region: eu-west-2

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.