问题描述
不久前构建项目没有问题,但是它开始抛出错误。
RuntimeError:容器不存在。无法为此获取日志 容器
通常在docker无法挂载共享目录时会发生这种情况,但在这种情况下,即使在docker界面中手动添加lambda目录也无济于事!
完成sam build --use-container
的调试日志
Building function 'SAListManagerUrlLambda'
Fetching lambci/lambda:build-python3.7 Docker container image......
Mounting C:\Users\xxxx\xxxx\xxxx\xxxx\functions\xxxx-xxxx\xxxx-xxxx as /tmp/samcli/source:ro,delegated inside runtime container
Container was not created. Skipping deletion
Sending Telemetry: {'metrics': [{'commandRun': {'awsProfileProvided': False,'debugFlagProvided': True,'region': '','commandName': 'sam build','duration': 1292,'exitReason': 'RuntimeError','exitCode': 255,'requestId': 'cbfcd29c-16ae-xxxx-xxxx-b9ffec8de75a','installationId': 'fece8ccc-cb84-xxxx-xxxx-ac72820ef0c3','sessionId': 'e1cbc287-1850-xxxx-xxxx-3a235769f7fb','executionEnvironment': 'CLI','pyversion': '3.7.6','samcliVersion': '0.53.0'}}]}
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 "D:\obj\windows-release\37amd64_Release\msi_python\zip_amd64\runpy.py",line 193,in _run_module_as_main
File "D:\obj\windows-release\37amd64_Release\msi_python\zip_amd64\runpy.py",line 85,in _run_code
File "C:\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\__main__.py",line 12,in <module>
cli(prog_name="sam")
File "C:\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py",line 829,in __call__
return self.main(*args,**kwargs)
File "C:\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py",line 782,in main
rv = self.invoke(ctx)
File "C:\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py",line 1259,in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "C:\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py",line 1066,in invoke
return ctx.invoke(self.callback,**ctx.params)
File "C:\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py",line 610,in invoke
return callback(*args,**kwargs)
File "C:\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\decorators.py",line 73,in new_func
return ctx.invoke(f,obj,*args,**kwargs)
File "C:\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\telemetry\metrics.py",line 96,in wrapped
raise exception # pylint: disable=raising-bad-type
File "C:\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\telemetry\metrics.py",line 62,in wrapped
return_value = func(*args,**kwargs)
File "C:\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\commands\build\command.py",line 129,in cli
mode,File "C:\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\commands\build\command.py",line 194,in do_cli
artifacts = builder.build()
File "C:\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\build\app_builder.py",line 117,in build
function.Metadata)
File "C:\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\build\app_builder.py",line 271,in _build_function
options)
File "C:\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\build\app_builder.py",line 369,in _build_function_on_container
container.wait_for_logs(stdout=stdout_stream,stderr=stderr_stream)
File "C:\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\docker\container.py",line 197,in wait_for_logs
raise RuntimeError("Container does not exist. Cannot get logs for this container")
RuntimeError: Container does not exist. Cannot get logs for this container
解决方法
在我的情况下,原因有所不同,Action Center's
Focus Assist
被设置为Alarms Only
。
这导致共享目录通知失败,从而导致构建失败。
似乎很多情况都可以触发相同的错误。有关更多信息,可以像这样使用 --debug 选项:
sam build --use-container --debug
我看到您正在使用它,因为您获得了如下额外信息:
Sending Telemetry: {'metrics': [{'commandRun': {'awsProfileProvided': False,'debugFlagProvided': True,'region': '','commandName': 'sam build','duration': 1292,'exitReason': 'RuntimeError','exitCode': 255,'requestId': 'cbfcd29c-16ae-xxxx-xxxx-b9ffec8de75a','installationId': 'fece8ccc-cb84-xxxx-xxxx-ac72820ef0c3','sessionId': 'e1cbc287-1850-xxxx-xxxx-3a235769f7fb','executionEnvironment': 'CLI','pyversion': '3.7.6','samcliVersion': '0.53.0'}}]}
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):
就我而言,我确实认为错误是发送遥测数据。
我的猜测是以某种方式构建过程需要通过该区域。就我而言,它不是 us-west-2。
无论如何,我在文档中将其禁用为 specified,现在可以使用了。