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
相关产品推荐
相关产品推荐

