#amazon-cloudformation #aws-amplify
#aws-cloudformation #aws-amplify
Вопрос:
После этого семинара я создал пример приложения Amplify. После этого я вручную удалил стеки CloudFormation (из выбранного в консоли AWS корневого стека и выполнил действие удаления стека), надеясь, что смогу восстановить их с помощью amplify push
. К сожалению, amplify не сообщает об изменениях и не перестраивает стеки. Есть ли способ заставить amplify предоставить ресурсы?
Комментарии:
1. Вы удалили ресурсы (например, таблицу базы данных и т.д.) Или что-то изменили в файлах стека? Вы можете детально проработать удаление стеков CloudFormation .
2. Спасибо за предложение, я отредактировал свой вопрос. Я удалил корневой стек с консоли. Насколько я могу видеть, все ресурсы (таблицы DynamoDB, ElasticSearch и т.д.) ушли за пределы сегментов S3, Которые все еще присутствуют.
3. Ваш случай похож на проблему здесь: github.com/aws-amplify/amplify-cli/issues/549 . Если вы согласны, вам может понадобиться
amplify init
скопировать первый из нихamplify/#current-cloud-backend
во вновь созданныйbackend
файл.4. Спасибо, что указали мне на проблему на github. Действительно, похоже на ту же проблему. К сожалению, предложенное решение не работает. Также немного неясно, в каком проекте мне следует попробовать
amplify push
. Независимо от этого, он выдает ошибку в старом проекте и не обнаруживает изменений в новом. Я попытаюсь более подробно разъяснить тему, которую вы предложили. Еще раз спасибо!
Ответ №1:
cli amplify проверяет разницу между amplify/#current-cloud-backend
и amplify/backend
папкой внутри вашего проекта. Он не проверяет, что в данный момент развернуто в облаке.
Поскольку вы удалили корневой стек, даже если в push были внесены какие-либо изменения, это приведет к сбою, поскольку стек отсутствует. Чтобы исправить эту ошибку, вы можете запустить amplify init
и и, когда вас попросят, Do you want to use an existing environment?
выбрать No
. Это воссоздаст корневой стек и позволит вам внести изменения.
PS: Поддержка нескольких сред доступна в cli amplify версии 1 и выше. Если его команда предварительного v1
инициализации не сработает
Комментарии:
1. Спасибо за ваш пост. Я понимаю, что мне нужно запустить
amplify init
внутри папки приложения. На вопрос, должен ли я указать то же имя среды или что-то другое? Я использую версию 1.1.7, так что все должно быть в порядке.2. При желании вы могли бы указать то же имя. Требуемое имя среды используется только с в файле projects
amplify/team-provider-info.json
. Убедитесь, что вы удалили<proj-root>/amplify
папку перед запуском init3. Еще раз спасибо, Яти. Я удалил
/amplify
папку, которая содержала#current-cloud-backend
иbackend
папки. Затем внутри корневого каталога моего приложения я запустил,amplify init
и это успешно воссоздало/amplify
папку, которую я ранее удалил. Он также создал корневой стек. К сожалению, после запускаamplify init
я получаюNo changes detected
сообщение. Я думаю, что откажусь от дальнейших попыток спасти этот проект. Еще раз большое спасибо за ваш вклад!
Ответ №2:
Похоже, что Amplify хранит информацию о том, что размещено в AWS, в amplify/team-provider-info.json
. Внутри этого файла должен быть объект JSON с ключами, соответствующими именам вашей среды. Если вы оставите запись имени своей среды в этом файле и запустите amplify init
, если вы используете то же имя среды, вы, скорее всего, увидите сбой.
Удалив среду, соответствующую той, которую вы удалили в AWS, amplify забудет о стеке CloudFormation этой среды. Теперь вы можете amplify init
запустить их снова и успешно использовать то же имя среды.
Ответ №3:
Если вы удалите функцию или API, от которых зависят другие ресурсы, это может привести к сбою push. Итак, что я обычно делаю, это воссоздаю ту же функцию или API и запускаю ее снова. Это предварительный хак, который я использую, но я думаю, что мог бы быть лучший.
Ответ №4:
После многих исследований я нашел решение
Если вы удалили серверную часть вручную. вы можете создать их заново с помощью этой команды
amplify init --appId YOUR_APP_ID
Если у вас есть доступ к консоли AWS и вы можете видеть поле App ARN (в общих настройках), вы можете найти идентификатор приложения:
arn:aws:amplify:eu-west-1:xxxxxxxxxx/APPID
Перед инициализацией необходимо удалить стеки
После этого просто запустите поток инициализации amplify, после этого он создаст серверную часть и все начнет сначала
И если вы хотите удалить это приложение, которое вы можете вызвать amplify delete
в командной строке, оно будет удалено из облака и локально