Jef*_*eff 8 amazon-web-services aws-sam-cli aws-serverless aws-sam
我正在使用 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
Run Code Online (Sandbox Code Playgroud)
当我跑步时:
> sam build && sam local start-api
Run Code Online (Sandbox Code Playgroud)
我可以看到端点正在工作:
在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目录中的文件 -正如此处所建议的- 但这似乎是一个糟糕的解决方案,因为我必须同时维护处理程序的两个副本。
Ian*_*n-B 11
解决这个问题的一个很好的方法是使用该skip-pull-image标志,以便 Docker 重用 Lambda 运行时。本质上运行:
sam local start-api -t template.yaml --skip-pull-image
这让热重载对我有用。
根据https://github.com/aws/aws-sam-cli/issues/920和https://github.com/aws/aws-sam-cli/issues/901,您预计有两个控制台/终端开放。sam local start-api一种你跑过去就不管它的地方。另一个是您sam build重复运行的地方(每当您需要更新时)。
如果您觉得这>有点烦人,
| 归档时间: |
|
| 查看次数: |
8556 次 |
| 最近记录: |