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