如标题,我想更新或编辑已部署到 AWS 的 DynamoDB 表的一些配置。我目前正在一个 serverelss.yml 文件中管理所有资源。当我更改表的某些配置并尝试通过 Serverless 框架进行部署时,错误是
CloudFormation cannot update a stack when a custom-named resource requires replacing. Rename "Test Dynamo Table" and update the stack again.
我发现的唯一方法是使用更新的配置创建新数据库,迁移到新数据库并手动删除旧数据库(通过AWS控制台)。 或者另一种方法可能是在单独的 serverless.yml 中创建 AWS 资源,这样我就不必每次都删除并重新创建所有资源。我只能删除特定资源。
但是我想知道是否可以通过无服务器框架或其他 IaC 工具来解决这个问题?我只是想知道更新现有资源的编程方式是什么。
目前,我通常做的是运行
sls remove
并重做 sls deploy
。
您很可能正在更新不支持的内容,例如更改表或索引的分区或排序键。
这不是对无服务器的限制,而是对 DynamoDB 的限制。
当自定义命名的资源需要替换时,CloudFormation 无法更新堆栈。重命名“Test Dynamo Table”并再次更新堆栈
因此,您收到的异常告诉您,如果您想更新表,则必须替换它。这就是为什么您在创建新项目时会看到成功。