Вопрос или проблема
cdk deploy --all
не разворачивает все изменённые стеки
Когда я запускаю cdk deploy --all
для развертывания всех стеков, как указано в документации AWS, я не получаю желаемого поведения.
Если я запускаю cdk list
, я получаю список всех моих стеков следующим образом:
pipeline
pipeline/alpha-stage/externalcommunication (alpha-stage-externalcommunication)
pipeline/alpha-stage/vpc (alpha-stage-vpc)
pipeline/alpha-stage/intercommunication (alpha-stage-intercommunication)
pipeline/alpha-stage/storage (alpha-stage-storage)
pipeline/alpha-stage/service (alpha-stage-service)
pipeline/alpha-stage/observability (alpha-stage-observability)
Если я запускаю cdk deploy --all
, создается и разворачивается только пайплайн стек.
[WARNING] aws-cdk-lib.aws_ec2.LaunchTemplateProps#keyName устарело.
- Используйте вместо этого `keyPair` - https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2-readme.html#using-an-existing-ec2-key-pair
Этот API будет удален в следующем крупном релизе.
✨ Время синтеза: 3.02s
pipeline: развертывание... [1/1]
pipeline: создание изменений CloudFormation...
✅ pipeline (без изменений)
✨ Время развертывания: 3.57s
Stack ARN:
arn:aws:cloudformation:eu-west-1:730335428471:stack/pipeline/2667ad20-0315-11ef-906b-0a89280ac13b
✨ Общее время: 6.59s
Сначала я думал, что, возможно, он не видит никаких отличий в других стеках, но когда я разворачиваю стек вручную, он действительно видит изменения и разворачивает его.
cdk deploy pipeline/alpha-stage/externalcommunication --profile cs-dev
[WARNING] aws-cdk-lib.aws_ec2.LaunchTemplateProps#keyName устарело.
- Используйте вместо этого `keyPair` - https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2-readme.html#using-an-existing-ec2-key-pair
Этот API будет удален в следующем крупном релизе.
✨ Время синтеза: 3.39s
alpha-stage-externalcommunication: старт: Строим cba1532de344d46fde76a38d8b956373267f9fbc4a7fe247ce6caa08f05a9fde:730335428471-eu-west-1
alpha-stage-externalcommunication: успех: Построен cba1532de344d46fde76a38d8b956373267f9fbc4a7fe247ce6caa08f05a9fde:730335428471-eu-west-1
alpha-stage-externalcommunication: старт: Публикация cba1532de344d46fde76a38d8b956373267f9fbc4a7fe247ce6caa08f05a9fde:730335428471-eu-west-1
alpha-stage-externalcommunication: успех: Опубликован cba1532de344d46fde76a38d8b956373267f9fbc4a7fe247ce6caa08f05a9fde:730335428471-eu-west-1
pipeline/alpha-stage/externalcommunication (alpha-stage-externalcommunication): развертывание... [1/1]
alpha-stage-externalcommunication: создание изменений CloudFormation...
[█████▊····················································] (1/10)
14:35:22 | ОБНОВЛЕНИЕ_В_ПРОЦЕССЕ | AWS::CloudFormation::Stack | alpha-stage-externalcommunication
14:35:25 | СОЗДАНИЕ_В_ПРОЦЕССЕ | AWS::Route53::HostedZone
...
Почему команда deploy --all
вообще не пытается развернуть ни один стек, кроме pipeline
?
Ответ или решение
Когда вы выполняете команду cdk deploy --all
и наблюдаете, что только стек pipeline
деплоится, а остальные стеки не обновляются (даже если они были изменены), это может быть связано с несколькими причинами. Рассмотрим потенциальные причины и возможные решения.
Возможные причины:
-
Стартовая точка деплоя: CDK развертывает стеки в определенном порядке, начиная с стеков, которые зависят от других стеков. Если стек
pipeline
является родительским и другие стеки зависят от него, CDK может не развернуть их до тех пор, пока не будет завершено развертываниеpipeline
. -
Состояние стека: Проверьте, что ваши стеки находятся в корректном состоянии. Если стек находится в состоянии
ROLLBACK
илиUPDATE_ROLLBACK
, это может повлиять на дальнейшие развертывания. Убедитесь, что все стеки вCREATE_COMPLETE
илиUPDATE_COMPLETE
. -
Изменения в коде: Если в коде изменения касаются только некоторых частей вашего приложения, а изменения не затрагивают ресурсы стека
pipeline
, CDK может не "увидеть" необходимость в развертывании этих стеков. -
Парметры конфигурации: Убедитесь, что все параметры и зависимости между вашими стеках правильно настроены. Если есть изменения, требующие зависимости, CDK может не инициировать развертывание.
- Флаг
--require-approval
: Если в конфигурации CDK для ваших стеков требуется одобрение на изменения, это может привести к тому, что некоторые стеки не будут развернуты.
Рекомендации для решения проблемы:
-
Проверка зависимостей: Используйте команду
cdk diff
для каждого стека, чтобы увидеть, какие изменения ожидаются. Это может помочь вам понять, почему CDK игнорирует некоторые стеки. -
Запуск команд по очереди: Если указание
--all
не работает, попробуйте запуститьcdk deploy
для каждого стека вручную, по очереди. Это может помочь выявить проблемы с зависимостями. -
Проверка настроек: Убедитесь, что ваши стеки имеют правильные конфигурации и зависимости между собой. Проверьте все параметры, такие как
dependencies
, и убедитесь, что они не приводят к блокировкам. -
Логи и предупреждения: Обратите внимание на предупреждения и логи, которые выводятся при выполнении команд. Некоторые из них могут указывать на проблемы, которые необходимо решить.
-
Обновление CDK: Убедитесь, что вы используете актуальную версию AWS CDK. Если вы используете устаревшую версию, это может вызвать проблемы с совместимостью.
- Документация и сообщество: Загляните в официальную документацию AWS CDK и форумы сообщества. Иногда подобные проблемы могут быть обсуждены другими разработчиками, и вы можете найти полезные советы.
Если проблемы не удается решить самостоятельно, возможно, стоит обратиться за помощью на форумы или специализированные сообщества, предоставив подробную информацию о конфигурации и поведении CDK.