sam build --use-container失败的安装目录

问题描述

不久前构建项目没有问题,但是它开始抛出错误

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。 这导致共享目录通知失败,从而导致构建失败。

因此,请确保您的Focus Assist设置为OFF。 enter image description here

,

似乎很多情况都可以触发相同的错误。有关更多信息,可以像这样使用 --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,现在可以使用了。