java - 在 IntelliJ 中为 AWS Lambda 应用程序运行 Docker:Docker 引发 404 客户端错误 (docker.errors.ImageNotFound)
问题描述
问题
我正在关注本教程: https ://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/key-tasks.html
操作系统:Win 10 Pro 64 位
马文:
C:\Users\MyUserName>mvn -version
Apache Maven 3.6.2 (40f52333136460af0dc0d7232c0dc0bcf0d9e117; 2019-08-28T01:06:16+10:00)
Maven home: C:\Program Files\apache-maven-3.6.2\bin\..
Java version: 1.8.0_221, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_221\jre
Default locale: en_AU, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
爪哇:
C:\Users\MyUserName>java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
C:\Users\MyUserName>javac -version
javac 1.8.0_221
Docker(已安装并正在运行):
C:\Users\MyUserName>docker -v
Docker version 19.03.2, build 6a30dfc
IntelliJ Docker 插件中的 Docker 设置:
文件 > 设置 > 构建、执行、部署 > Docker:
TCP 套接字 > 引擎 API URL:tcp://localhost:2375
Docker 桌面配置:
- Docker 守护程序以选中的复选框开始:“在 tcp://localhost:2375 上公开守护程序而不使用 TLS”
通过 App.java 上的 Lambda 符号运行 Lambda 函数时出现异常(帖子末尾提供了完整日志):
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: http+docker://localnpipe/v1.35/containers/create
预期产出:Lambda 函数部署到本地 Docker 容器并运行。
手动运行 Docker 命令时,出现此错误:
C:\Users\MyUserName>docker run lambci/lambda:java8
Unable to find image 'lambci/lambda:java8' locally
java8: Pulling from lambci/lambda
docker: image operating system "linux" cannot be used on this platform.
See 'docker run --help'.
从 IntelliJ 中运行 Docker 时,我没有收到此错误。
IntelliJ 日志的完整输出:
"C:\Program Files\Amazon\AWSSAMCLI\bin\sam.cmd" local invoke --template C:\Users\MyUserName\dev\IdeaProjects\Serverless-Project-01\HelloWorldFunction\.aws-sam\build\template.yaml --event "C:\Users\MyUserName\AppData\Local\Temp\[Local] HelloWorldFunction-event.json" HelloWorldFunction
Invoking helloworld.App::handleRequest (java8)
2019-10-05 22:46:08 Found credentials in environment variables.
Fetching lambci/lambda:java8 Docker container image.....
Mounting C:\Users\MyUserName\dev\IdeaProjects\Serverless-Project-01\HelloWorldFunction\.aws-sam\build\HelloWorldFunction as /var/task:ro,delegated inside runtime container
Traceback (most recent call last):
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\docker\api\client.py", line 261, in _raise_for_status
response.raise_for_status()
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\requests\models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: http+docker://localnpipe/v1.35/containers/create
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "runpy.py", line 193, in _run_module_as_main
File "runpy.py", line 85, in _run_code
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\__main__.py", line 12, in <module>
cli(prog_name="sam")
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 764, in __call__
return self.main(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 717, in main
rv = self.invoke(ctx)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 1137, 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 1137, 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 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 555, in invoke
return callback(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\decorators.py", line 64, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 555, in invoke
return callback(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\telemetry\metrics.py", line 93, in wrapped
raise exception # pylint: disable=raising-bad-type
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\telemetry\metrics.py", line 62, in wrapped
return_value = func(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\commands\local\invoke\cli.py", line 90, in cli
parameter_overrides,
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\commands\local\invoke\cli.py", line 150, in do_cli
context.function_name, event=event_data, stdout=context.stdout, stderr=context.stderr
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\commands\local\lib\local_lambda.py", line 97, in invoke
self.local_runtime.invoke(config, event, debug_context=self.debug_context, stdout=stdout, stderr=stderr)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\lambdafn\runtime.py", line 83, in invoke
self._container_manager.run(container)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\docker\manager.py", line 93, in run
container.create()
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\local\docker\container.py", line 134, in create
real_container = self.docker_client.containers.create(self._image, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\docker\models\containers.py", line 861, in create
resp = self.client.api.create_container(**create_kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\docker\api\container.py", line 429, in create_container
return self.create_container_from_config(config, name)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\docker\api\container.py", line 440, in create_container_from_config
return self._result(res, True)
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)
docker.errors.ImageNotFound: 404 Client Error: Not Found ("No such image: lambci/lambda:java8")
我对这一切都很陌生,因此感谢您的支持。
解决方案
我自己就遇到了这个错误
- 右键单击 Windows 托盘中的 Docker 桌面图标
- 选择“切换到 Linux 容器”
推荐阅读
- r - 预测响应与手动逻辑回归概率
- ios - WKWebView:未调用传递给 -[WebWidgetVC webView:decidePolicyForNavigationAction:decisionHandler:] 的完成处理程序
- angular - 如何将 BrowserAnimationsModule 限制为仅使用特定模块?
- python - 如何为 REST API 端点调用构建动态 URL 字符串?
- c# - 我必须比较 asp.net 中单词的大小写敏感性
- typescript - 在 Typescript 中的函数之间共享变量
- python - Python Dataframe 创建带有窗口的列表列的滚动聚合
- spring - 如何组装反应功能模块?
- c++ - OpenGL:使用鼠标移动 2D 正交相机
- r - 无法过滤带有串扰的传单多边形