You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

sam sync --watch命令无法自动更新AWS Stack问题求助

SAM CLI sam sync --watch 自动更新功能失效问题

问题现象

  • 执行sam sync --watch --stack-name sam-app --region us-east-1,首次运行可正常完成栈部署与代码同步,但--watch本该具备的本地代码变更自动同步AWS栈的功能完全失效
  • 按照AWS官方文档操作后,尝试指定资源的命令sam sync --stack-name sam-app --code --resource-id HelloWorldFunction --resource-id HelloWorldLayer --region us-east-1 --watch,仍无法触发自动更新;但移除--watch参数后,同命令可正常完成代码同步

命令执行输出(已翻译)

sam sync --watch --stack-name sam-app --region=us-east-1

SAM CLI 将使用AWS Lambda、Amazon API Gateway和AWS StepFunctions API上传代码,无需执行CloudFormation部署。这会导致CloudFormation栈出现漂移。
**sync命令仅应在开发栈上使用**。

已排队基础设施同步,等待进行中的代码同步完成...
开始基础设施同步。
(HelloWorldFunction)的清单未变更,运行增量构建
构建代码路径: /mnt/c/Users/Topicus/Documents/AWS SAM workshop/sam-accelerate-test/sam-tutorial/hello_world 运行时: python3.9 元数据: {} 架构: x86_64 函数: HelloWorldFunction
运行PythonPipBuilder:CopySource

构建成功

已成功打包工件并将输出模板写入文件 /tmp/tmpbib_f3ku。
执行以下命令部署打包后的模板
sam deploy --template-file /tmp/tmpbib_f3ku --stack-name <你的栈名称>


        部署使用以下参数
        ===============================
        栈名称                   : sam-app
        区域                       : us-east-1
        禁用回滚             : False
        部署S3存储桶         : aws-sam-cli-managed-default-samclisourcebucket-ghvaajc0i25f
        权限                 : ["CAPABILITY_NAMED_IAM", "CAPABILITY_AUTO_EXPAND"]
        参数覆盖          : {}
        签名配置文件             : null

启动部署
=====================

2023-02-13 14:27:45 - 等待栈创建/更新完成

CloudFormation栈操作事件(每0.5秒刷新一次)
-------------------------------------------------------------------------------------------------
资源状态           资源类型             逻辑资源ID        资源状态原因
-------------------------------------------------------------------------------------------------
CREATE_IN_PROGRESS       AWS::CloudFormation::Stack   sam-app                  转换成功
CREATE_IN_PROGRESS       AWS::IAM::Role           HelloWorldFunctionRole   -

CREATE_IN_PROGRESS       AWS::CloudFormation::Stack   AwsSamAutoDependencyLayerNestedStack   -

CREATE_IN_PROGRESS       AWS::ResourceGroups::Group   ApplicationResourceGroup   -

CREATE_IN_PROGRESS       AWS::IAM::Role           HelloWorldFunctionRole   资源创建已启动
CREATE_IN_PROGRESS       AWS::CloudFormation::Stack   AwsSamAutoDependencyLayerNestedStack   资源创建已启动
CREATE_IN_PROGRESS       AWS::ResourceGroups::Group   ApplicationResourceGroup   资源创建已启动
CREATE_COMPLETE          AWS::ResourceGroups::Group   ApplicationResourceGroup   -

CREATE_IN_PROGRESS       AWS::ApplicationInsights::Application   ApplicationInsightsMonitoring   -

CREATE_IN_PROGRESS       AWS::ApplicationInsights::Application   ApplicationInsightsMonitoring   资源创建已启动
CREATE_COMPLETE          AWS::IAM::Role           HelloWorldFunctionRole   -

CREATE_COMPLETE          AWS::CloudFormation::Stack   AwsSamAutoDependencyLayerNestedStack   -

CREATE_IN_PROGRESS       AWS::Lambda::Function    HelloWorldFunction       -

CREATE_IN_PROGRESS       AWS::Lambda::Function    HelloWorldFunction       资源创建已启动
CREATE_COMPLETE          AWS::Lambda::Function    HelloWorldFunction       -

CREATE_IN_PROGRESS       AWS::ApiGateway::RestApi   ServerlessRestApi        -

CREATE_IN_PROGRESS       AWS::ApiGateway::RestApi   ServerlessRestApi        资源创建已启动
CREATE_COMPLETE          AWS::ApiGateway::RestApi   ServerlessRestApi        -

CREATE_IN_PROGRESS       AWS::ApiGateway::Deployment   ServerlessRestApiDeployment47fc2d5f9d   -

CREATE_IN_PROGRESS       AWS::Lambda::Permission    HelloWorldFunctionHelloWorldPermissionProd   -

CREATE_IN_PROGRESS       AWS::Lambda::Permission    HelloWorldFunctionHelloWorldPermissionProd   资源创建已启动
CREATE_IN_PROGRESS       AWS::ApiGateway::Deployment   ServerlessRestApiDeployment47fc2d5f9d   资源创建已启动
CREATE_COMPLETE          AWS::ApiGateway::Deployment   ServerlessRestApiDeployment47fc2d5f9d   -

CREATE_IN_PROGRESS       AWS::ApiGateway::Stage   ServerlessRestApiProdStage   -

CREATE_IN_PROGRESS       AWS::ApiGateway::Stage   ServerlessRestApiProdStage   资源创建已启动
CREATE_COMPLETE          AWS::ApiGateway::Stage   ServerlessRestApiProdStage   -

CREATE_COMPLETE          AWS::Lambda::Permission    HelloWorldFunctionHelloWorldPermissionProd   -

CREATE_COMPLETE          AWS::ApplicationInsights::Application   ApplicationInsightsMonitoring   -

CREATE_COMPLETE          AWS::CloudFormation::Stack   sam-app                  -

-------------------------------------------------------------------------------------------------
已部署栈的CloudFormation输出
-------------------------------------------------------------------------------------------------
输出

-------------------------------------------------------------------------------------------------
键                 HelloWorldFunctionIamRole

描述         为Hello World函数创建的隐式IAM角色

值               arn:aws:iam::492917996281:role/sam-app-HelloWorldFunctionRole-19A7FE07PFT9I

键                 HelloWorldApi

描述         Hello World函数Prod阶段的API网关端点URL
值               https://tzhcv2u047.execute-api.us-east-1.amazonaws.com/Prod/hello/

键                 HelloWorldFunction

描述         Hello World Lambda函数ARN

值               arn:aws:lambda:us-east-1:492917996281:function:sam-app-HelloWorldFunction-0Z7T5JWyTwbt

-------------------------------------------------------------------------------------------------

栈创建成功。基础设施同步完成。

基础设施同步完成。
未创建CodeTrigger,因为ServerlessRestApi缺少CodeUri或DefinitionUri。

排查与解决建议

  • 升级SAM CLI版本:老旧版本可能存在watch功能的已知bug,执行sam --version查看当前版本,使用pip install --upgrade aws-sam-cli升级到最新稳定版
  • 调整代码存储路径:从路径可以看出是WSL环境,SAM CLI对Windows挂载目录的文件变更监听支持不佳,建议将代码迁移到WSL原生文件系统(如/home/你的用户名/目录下)后重试
  • 核对SAM模板配置:确认Lambda函数和Layer的CodeUri字段在template.yaml中配置正确,指向本地代码的相对或绝对路径;输出中提示的API网关无CodeUri不影响Lambda的watch功能,但需确保函数资源的配置无误
  • 清理环境后重新部署:执行sam delete --stack-name sam-app删除旧栈,删除项目根目录下的.aws-sam缓存目录,重新执行sam build和sam sync --watch命令
  • 验证文件监听能力:手动修改Lambda函数代码文件,查看SAM CLI终端是否有日志输出,确认是否能捕获到文件变更事件

内容的提问来源于stack exchange,提问作者Kylian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:50:22