我正在尝试获取本地环境来使用 VSCode (windows) 运行/调试 Python Lambda。我正在使用提供的 HelloWorld 示例来掌握这一点,但我无法调用。
用于设置 SAM 和调用 Lambda 的步骤:
- 我已经安装并运行了 Docker
- 我已经安装了 SAM CLI
- 我的 AWS 凭证已到位并且正在运行
- 我没有连接问题,并且能够正常连接到 AWS
- 我使用所有文件和资源创建了 SAM 应用程序 (HelloWorld),我没有更改任何内容。
- 我运行“sam build”并成功完成
- 我运行“sam local invoke”,但它因超时而失败。我把超时时间增加到10s,还是超时。 HelloWorld Lambda 代码仅打印而不执行任何其他操作,因此我猜测代码不是问题,而是与容器或 SAM 环境本身相关的其他问题。
C:\xxxxxxx\lambda-python3.8>sam build 您的模板包含
逻辑 ID 为“ServerlessRestApi”的资源,这是一个保留的资源
AWS SAM 中的逻辑 ID。这可能会导致意外行为,因此不建议这样做。
构建代码:
C:\xxxxxxx\lambda-python3.8\hello_world 运行时:python3.8 元数据:
{} 架构:x86_64 函数:['HelloWorldFunction'] 正在运行
PythonPipBuilder:ResolveDependencies 运行
PythonPipBuilder:复制源
构建成功
内置工件:.aws-sam\build 内置模板:
.aws-sam\build\template.yaml
C:\xxxxxxx\lambda-python3.8>sam 本地调用 调用
app.lambda_handler (python3.8) 跳过拉取镜像并使用本地镜像:
public.ecr.aws/sam/emulation-python3.8:rapid-1.51.0-x86_64。
挂载 C:\xxxxxxx\lambda-python3.8.aws-sam\build\HelloWorldFunction
作为 /var/task:ro,在运行时容器内委托 功能
“HelloWorldFunction”10 秒后超时
HelloWorldFunction 的调用容器没有响应
关于这里缺少什么的任何提示吗?
Thanks.
该日志表明容器未启动,或者 SAM 无法连接到它。
有时,Windows 上的主机名解析可能会受到 hosts 文件或系统设置的影响。
尝试运行 invoke 命令,如下所示(这将使容器端口绑定到所有接口):
sam local invoke --container-host-interface 0.0.0.0
...另外尝试设置 container-host 参数(设置为localhost
默认情况下):
sam local invoke --container-host-interface 0.0.0.0 --container-host host.docker.internal
下一个难题是将这些设置合并到 VSCODE 中。这可以在两个地方完成:
- create
samconfig.toml
在项目的根目录中包含以下内容。这将允许运行sam local invoke
从终端无需添加命令行参数:
version=0.1
[default.local_invoke.parameters]
container_host_interface = "0.0.0.0"
- 按如下方式更新启动配置以启用 VSCode 调试:
...
"sam": {
"localArguments": ["--container-host-interface","0.0.0.0"]
}
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)