amazon-web-services - 每次更新代码时,使用 AWS SAM-CLI 都需要重新构建
问题描述
我正在使用 SAM CLI 开发 API Gateway Lambda 代理集成。根据文档,我应该能够在sam local start-api
本地测试我的端点。该start-api
命令允许“热重载”,如 AWS SAM 文档中所述。但是,我没有看到这种行为。
我的template.yaml
文件看起来像:
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
PackageType: Image
Architectures:
- x86_64
Events:
HelloWorld:
Type: Api
Properties:
Path: /hello
Method: get
Metadata:
Dockerfile: Dockerfile
DockerContext: ./hello_world
DockerTag: python3.9-v1
当我运行时:
> sam build && sam local start-api
我可以看到端点正在工作:
在http://127.0.0.1:3000/hello挂载 HelloWorldFunction
您现在可以浏览到上述端点来调用您的函数。在处理函数时,您无需重新启动/重新加载 SAM CLI,更改将立即/自动反映。
lambda_handler
但是,当我对内部的函数进行更改时./hello_world/app.py
,对 的响应curl http://localhost:3000
保持不变。不会发生热重载。
我发现的唯一解决方案是sam build
为每个代码更改运行。这大大减慢了开发时间——由于 . 内部的一些依赖关系requirements.txt
,我必须等待 1-2 分钟才能为每个代码更改构建构建。我可以只处理目录中的文件.aws-sam/build
——正如这里所建议的——但这似乎是一个糟糕的解决方案,因为我必须同时维护处理程序的两个副本。
解决方案
根据https://github.com/aws/aws-sam-cli/issues/920 & https://github.com/aws/aws-sam-cli/issues/901,您应该有两个控制台/终端打开。一个你跑的地方sam local start-api
,别管它。另一个你sam build
重复运行的地方(当你需要更新时)。
如果您觉得这 > 有点烦人,
推荐阅读
- windows - 通过 Windows 10 文件资源管理器中的上下文菜单水平翻转
- javascript - 为什么搜索栏会改变标题的位置?
- maven - Gradle init 抛出 NPE
- c# - 如何找到与 Windows 登录相关联的 Microsoft 帐户?
- leaflet - 彩色相交传单圈
- ios - UITableView在插入时重复行
- django - EOF 发生在 python:3.8-slim-buster 上违反协议 (_ssl.c:1125)
- javascript - 使用geojson地图仅在一个轴上调整d3JS中的投影大小
- data-extraction - 如何使用 Visual Basic 从在线网站提取数据并将数据放入文本框或通过附加到 MSSQL 数据库的网格视图?
- scala - 如何在加特林增加计数器?