Мы запускаем кластер EKS, который построен на основе программного шаблона Cloudformation. В настоящее время рабочий шаблон близок к https://github.com/awslabs/amazon-eks-ami/blob/master/amazon-eks-nodegroup.yaml,, но у нашего Resources.NodeInstanceRole.ManagedPolicyArns есть некоторые дополнительные пользовательские политики.
Вместо того, чтобы добавлять управляемые политики в этот список, мы хотели бы создать роль IAM с любыми прикрепленными политиками, а затем позволить работникам EKS взять на себя эту роль. Проблема в том, что мы не можем найти способ сделать это в шаблоне Cloudformation.
Ниже следует то, что я считаю соответствующей частью шаблона:
NodeInstanceProfile:
Type: AWS::IAM::InstanceProfile
Properties:
Path: "/"
Roles:
- !Ref NodeInstanceRole
NodeInstanceRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
Service: ec2.amazonaws.com
Action: sts:AssumeRole
Path: "/"
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
- arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
- arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
Вместо создания нового IAM :: Role (NodeInstanceRole), я думаю, должен быть способ ссылки на ARN существующей роли в NodeInstanceProfile. Попытка изменить NodeInstanceProfile следующим образом приводит к следующей ошибке:
NodeInstanceProfile:
Type: AWS::IAM::InstanceProfile
Properties:
Path: "/"
Roles:
- "arn:aws:iam::xxx:role/yyy"
The specified value for roleName is invalid. It must contain only alphanumeric characters and/or the following: +=,.@_- (Service: AmazonIdentityManagement; Status Code: 400; Error Code: ValidationError; Request ID: xxx)