Как спасти поврежденный проект AWS Amplify - PullRequest
2 голосов
/ 07 марта 2019

Я запустил проект по амплификации, следуя этому учебнику и созданию-реакции-приложения, и прошел проверку подлинности шаги настройки без проблем.

Затем я попытался добавить конечную точку API REST, которая позволяет мне POST / PUT запись в 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.

Затем я (по глупости знаю) удалил стек облачной информации, связанный с этим ресурсом, думая, что это позволит мне воссоздать его с нуля:

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. Каков наилучший способ выполнения таких настроек / изменений таблиц, чтобы я не сталкивался с подобными проблемами в будущем? Я думаю, что я делаю что-то не так, потому что я привык к миру k8s, где достаточно положить yaml файлы в git и использовать kubectl apply, чтобы исправить большинство ошибок, но большинство файлов амплификации .gitignore d и облачные ресурсы кажутся более хрупкими, поэтому я не уверен, как сделать вещи надежными и безопасными в этой экосистеме.

...