AWS CloudFormation: создавать роль, только если роль не существует - PullRequest
0 голосов
/ 26 сентября 2018

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

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

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

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

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

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

Ближайший вопрос, который я нашел, был this , но он связан с 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
...