У нас есть стек, в котором один из ресурсов (контейнер) застрял, и нам пришлось вручную удалить этот ресурс из ECS.
Теперь команда cdk deploy
всегда откатывается со следующей ошибкой,
Обработчик ресурсов вернул сообщение: «Ресурс типа «AWS::ECS::Service» с идентификатором «arn:aws:ecs:us-east-1::service/cdkStackCluster/MyCdkStack-myService1Service54FA7D70-ax55DVPOJUIj» не найден». (RequestToken: XXXXXXXX-7251-339f-21dd-f89a94b916d1, HandlerErrorCode: NotFound)
Есть ли способ сказать CDK игнорировать эту ошибку и двигаться дальше?
Альтернативный метод @jarmod. В зависимости от того, что такое стек, вы можете уничтожить его и повторно развернуть, что должно исправить, но уничтожит весь стек и оставит кучу потерянных ресурсов, если у них есть политика сохранения удаления. Вы также можете удалить службу ECR из своего кода, а затем развернуть ее; после успешного развертывания вы можете добавить его обратно и снова развернуть весь стек.
Спасибо вам обоим. Я попробовал ваше предложение, и оно сработало. Ресурс удален из приложения CDK и развернут. Затем повторно добавил ресурс и снова развернул.
Я попробовал предложение @jarmod и @TrygviLaksafoss.
По сути, я удалил часть кода CDK, создавшую службу ECS, которая была удалена вручную. И развернут (cdk deploy
). Это очистило компонент, который вызывал проблему.
Затем я восстановил код, который был удален на предыдущем шаге, и снова развернул его. Это восстановило все службы, как и ожидалось.
Связанные (плохие новости): github.com/aws/aws-cdk/issues/16769 . Возможно, вы могли бы исследовать удаление ресурса из своего приложения CDK, повторно развернуть, а затем повторно добавить ресурс. В качестве альтернативы можно вручную создать ресурс, импортировать его в соответствующий стек, созданный CDK, а затем повторно развернуть. Я не уверен ни в одном из подходов, так как я этого не делал, поэтому будьте осторожны.