如果DynamoDb表已经存在,如何继续部署

Mar*_*ujo 11 lambda amazon-dynamodb serverless-framework

我想继续部署(或强制),即使资源已经存在。

Atm我收到此错误:

Serverless Error ---------------------------------------

     An error occurred while provisioning your stack: AvailableDynamoDbTable
     - Available already exists.
Run Code Online (Sandbox Code Playgroud)

Vis*_*sai 12

备份表并删除它。部署后恢复。

当我重命名无服务器项目并尝试部署时,我遇到了同样的问题。我有一张tanks再次被使用的桌子。它失败了,并显示以下内容

Serverless Error ---------------------------------------

 An error occurred: TanksDynamoDbTable - tanks already exists in stack arn:aws:cloudformation:eu-central-1:592235674655:stack/colossal-dev/105693a8-77af-11e9-8f9e-2a86e4085a59.
Run Code Online (Sandbox Code Playgroud)

我通过备份坦克表然后删除它来解决这个问题。

  1. 控制台 > DynamoDB
  2. 左边选择备份
  3. 创建备份 > 从下拉列表中选择表并为其命名 > 创建
  4. 在左侧选择表格
  5. 检查坦克 > 删除

删除后,必须等待五分钟,因为缓存会定期清理,而不是立即清理。之后我尝试了一下serverless deploy,成功了。之后,您将需要恢复备份的数据库。

  1. 左边选择备份
  2. 检查备份的表 > 恢复
  3. 为表输入与之前相同的名称,作为新表名称。
  4. 恢复表 恢复的数据库需要一些时间才会出现,因此请等待五分钟或更长时间。

  • 当然可以,你们先删除表,然后部署。要解决的问题是:第一次部署时,然后再部署时。它不应该抛出。 (3认同)

Gáb*_*tér 6

这个问题相当古老,但仍然出现在 Google 的前 5 个结果中,所以这里有一些见解:将无服务器堆栈拆分为多个服务是个好主意,每个服务都有自己的serverless.yml文件。一个用于您的 API 和 lambda,一个用于您的 DynamoDB。通过这种方式,您可以单独处理它们并更新您的 lambda,而无需触及您的数据库。这是一个很好的指南:

  1. https://serverless-stack.com/chapters/organizing-serverless-projects.html
  2. https://serverless-stack.com/chapters/dynamodb-as-a-serverless-service.html
  3. https://serverless-stack.com/chapters/deploying-multiple-services-in-serverless.html

  • 这是一个很好的建议,但不是正确的解决方案。因为它并不能真正解决问题。正如您所看到的,论坛中的讨论很长。 (3认同)

Mar*_*ujo 4

使用 Serverless@1.6.1 不可能实现 atm。

我刚刚在 github 上打开了一个问题:https ://github.com/serverless/serverless/issues/3183

请所有需要此功能的人加入此讨论。

我将在这里更新新闻。