AWS CloudFormation: создавайте роль, только если роль не существует

Мы используем Jenkins для автоматизации наших развертываний EC.

Последующие развертывания терпят неудачу после первого начального успешного развертывания, потому что CF жалуется, что роль, которую мы пытаемся создать в нашем шаблоне CF, уже существует.

Обнаружив в документации, что эти обновления невозможны, если ресурс роли назван, я попытался удалить это имя и получил отказ разрешений, связанный с попыткой пользователя Jenkins создать роль.

Документация по условию четко не описывает мне, каким должен быть синтаксис условия, чтобы проверить, существует ли уже роль.

У меня была половина мысли об удалении роли на отдельном шаге Jenkins с помощью aws cli, но меня отпугнуло поведение iam delete-role и существующих экземпляров (это должны быть непрерывные обновления).

Как я могу условно создать ресурс роли в зависимости от того, существует ли эта роль?

Ближайший вопрос, который я нашел, был это, но он связан с DynamoDB.

Существующий YAML для создания роли (определения политики выше и ниже являются шаблонными):

Resources:
  MySESRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: MySESRole
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
        - Action: "sts:AssumeRole"
          Principal:
            Service: ["ecs-tasks.amazonaws.com", "ecs.amazonaws.com"]
          Effect: "Allow"
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AmazonSESFullAccess

Вы используете стек обновлений? Или запустить CFT как новый стек?

titogeo 26.09.2018 18:52

Каждый раз это новый стек.

Elliot Rodriguez 26.09.2018 18:54

Это не работает, поскольку имена ролей уникальны. Вы пытались обновить существующий стек.

titogeo 26.09.2018 18:55

Я сделал и получил некоторую несвязанную ошибку. Что-то в нашем конвейере, на что я еще не нашел времени, но похоже, что мне придется это сделать. Вы хотите сказать, что я не могу использовать условие для создания ресурса роли, как вы можете использовать с другими ресурсами?

Elliot Rodriguez 26.09.2018 18:56

Я не видел такой возможности. у нас никогда не было проблем при обновлении существующего стека облачной информации.

titogeo 26.09.2018 19:01

это интересно. спасибо за понимание.

Elliot Rodriguez 26.09.2018 19:04
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
6
2 701
0

Другие вопросы по теме