Мы используем 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