首页 > 解决方案 > 如何挽救受损的 AWS Amplify 项目

问题描述

我已经按照本教程和 create-react-app开始了一个放大项目,并且顺利完成了身份验证设置步骤。

然后我尝试添加一个允许我在 DynamoDB 中发布/放置记录的 REST API 端点。这也是开箱即用的。

但是,我意识到我需要更改一些 dynamodb 字段的名称。我所做的更改只是重命名字段,如下面的差异(来自amplify/backend/storage/mytable/parameters.json):

 {
     "tableName": "mytable",
-    "partitionKeyName": "user_id",
+    "partitionKeyName": "userId",
     "partitionKeyType": "S",
-    "sortKeyName": "lesson_id",
+    "sortKeyName": "lessonId",
     "sortKeyType": "S"
 }

此更改虽然很小,但会导致后续amplify push尝试失败并出现以下错误:

UPDATE_FAILED               DynamoDBTable                                                       AWS::DynamoDB::Table       Tue Mar 05 2019 16:36:25 GMT-0600 (CST) CloudFormation cannot update a stack when a custom-named resource requires replacing. Rename mytable-dev and update the stack again.

然后我(愚蠢地,我知道)删除了与该资源关联的 cloudformation 堆栈,认为这将允许我从头开始重新创建它:

aws cloudformation delete-stack --stack-name ${DYNAMODB_STACK_NAME}

但是,我仍然不能amplify push,因为现在我收到此错误:

UPDATE_FAILED      storagefactUserCellState AWS::CloudFormation::Stack Tue Mar 05 2019 16:40:20 GMT-0600 (CST) Stack:arn:aws:cloudformation:us-east-2:... is in DELETE_COMPLETE state and can not be updated.

我有两个问题:

  1. 有没有办法挽救这个项目(通过允许我创建 dynamodb 表)而无需从头开始重新创建所有内容?我将在这里尝试该方法,但这似乎是一件艰难的事情。

  2. 执行这些类型的表自定义/更改的最佳实践方法是什么,以便我将来不会遇到此类问题?我认为我只是在做错事,因为我已经习惯了将 yaml 文件放在 git 下并使用kubectl apply足以从大多数错误中恢复的 k8s 世界,但是很多放大文件都是.gitignored 并且云资源似乎更脆弱,所以我不确定如何在这个生态系统中使事情变得健壮和安全。

标签: amazon-web-servicesamazon-dynamodbamazon-cloudformationaws-amplify

解决方案


推荐阅读