cdk deploy --all не разворачивает все изменённые стеки

Вопрос или проблема

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 деплоится, а остальные стеки не обновляются (даже если они были изменены), это может быть связано с несколькими причинами. Рассмотрим потенциальные причины и возможные решения.

Возможные причины:

  1. Стартовая точка деплоя: CDK развертывает стеки в определенном порядке, начиная с стеков, которые зависят от других стеков. Если стек pipeline является родительским и другие стеки зависят от него, CDK может не развернуть их до тех пор, пока не будет завершено развертывание pipeline.

  2. Состояние стека: Проверьте, что ваши стеки находятся в корректном состоянии. Если стек находится в состоянии ROLLBACK или UPDATE_ROLLBACK, это может повлиять на дальнейшие развертывания. Убедитесь, что все стеки в CREATE_COMPLETE или UPDATE_COMPLETE.

  3. Изменения в коде: Если в коде изменения касаются только некоторых частей вашего приложения, а изменения не затрагивают ресурсы стека pipeline, CDK может не "увидеть" необходимость в развертывании этих стеков.

  4. Парметры конфигурации: Убедитесь, что все параметры и зависимости между вашими стеках правильно настроены. Если есть изменения, требующие зависимости, CDK может не инициировать развертывание.

  5. Флаг --require-approval: Если в конфигурации CDK для ваших стеков требуется одобрение на изменения, это может привести к тому, что некоторые стеки не будут развернуты.

Рекомендации для решения проблемы:

  1. Проверка зависимостей: Используйте команду cdk diff для каждого стека, чтобы увидеть, какие изменения ожидаются. Это может помочь вам понять, почему CDK игнорирует некоторые стеки.

  2. Запуск команд по очереди: Если указание --all не работает, попробуйте запустить cdk deploy для каждого стека вручную, по очереди. Это может помочь выявить проблемы с зависимостями.

  3. Проверка настроек: Убедитесь, что ваши стеки имеют правильные конфигурации и зависимости между собой. Проверьте все параметры, такие как dependencies, и убедитесь, что они не приводят к блокировкам.

  4. Логи и предупреждения: Обратите внимание на предупреждения и логи, которые выводятся при выполнении команд. Некоторые из них могут указывать на проблемы, которые необходимо решить.

  5. Обновление CDK: Убедитесь, что вы используете актуальную версию AWS CDK. Если вы используете устаревшую версию, это может вызвать проблемы с совместимостью.

  6. Документация и сообщество: Загляните в официальную документацию AWS CDK и форумы сообщества. Иногда подобные проблемы могут быть обсуждены другими разработчиками, и вы можете найти полезные советы.

Если проблемы не удается решить самостоятельно, возможно, стоит обратиться за помощью на форумы или специализированные сообщества, предоставив подробную информацию о конфигурации и поведении CDK.

Оцените материал
Добавить комментарий

Капча загружается...