删除AWS Amplify函数遇依赖错误:如何保留S3资源移除该函数?
问题场景
使用amplify remove function命令删除关联了S3触发器的Lambda函数时,触发如下错误:
Resource cannot be removed because it has a dependency on another resource
Dependency: S3 - s3xxxxxxxx
An error occurred when removing the resources from the local directory

不删除S3资源的移除步骤
核心是先切断S3与Lambda的触发器关联,再执行函数移除操作,具体步骤如下:
解除S3与Lambda的触发器绑定
执行amplify update storage命令,选中目标S3存储资源,接着选择"Remove Lambda triggers"选项,勾选需要解绑的Lambda函数,完成配置更新。验证本地配置(可选但推荐)
打开项目目录下的amplify/backend/storage/[你的S3资源名]/parameters.json文件,确认lambdaTriggerConfigurations数组中已移除该Lambda的相关配置条目。重新执行Lambda函数移除
再次运行amplify remove function命令,选中要删除的Lambda函数,此时不会再出现依赖报错。同步云端配置
执行amplify push命令,将本地的配置变更同步到AWS云端,完成资源清理。
备选手动清理方案
如果CLI操作未生效,可以直接修改本地配置文件完成清理:
- 删除
amplify/backend/function/[你的Lambda资源名]整个目录 - 打开
amplify/backend/backend-config.json,找到该Lambda对应的配置条目并删除 - 执行
amplify push同步云端配置
内容的提问来源于stack exchange,提问作者Sahan Amarsha

