Всякий раз, когда я запускаю следующую команду с ролью, которая использовалась для создания кластера eks ...
aws eks update-kubeconfig --name eks-cluster --role-arn arn:aws:iam::999999999999:role/eksServiceRole
... я получаю следующую ошибку:
An error occurred (AccessDeniedException) when calling the DescribeCluster operation: User: arn:aws:iam::111111111111:user/username is not authorized to perform: eks:DescribeCluster on resource: arn:aws:eks:us-east-1:561353845098:cluster/eks-cluster
Есть ли у кого-нибудь совет о том, как диагностировать и исправить эту ошибку?
--role-arn
это роль, которую будет использовать aws-iam-authenticator
когда ты бежишь kubectl
получить токен и вводится только в сгенерированный конфиг; он никоим образом не используется командой для получения ресурсов EKS.
Вы столкнулись с ошибкой, потому что учетные данные AWS, которые вы используете для запуска update-kubeconfig
У команды нет разрешений на описание этого кластера.
Несколько предложений, которые могут помочь, а могут и не помочь:
Вы можете включить --verbose
к вашей команде, чтобы, возможно, получить более подробную информацию о том, где он терпит неудачу. Может ли быть, что пользователь, от имени которого вы аутентифицированы, не может взять на себя указанную роль?
В мануале для aws-cli --role-arn
передается как строка, вы должны попытаться заключить ее в двойные кавычки:
aws eks update-kubeconfig --name eks-cluster --role-arn "arn:aws:iam::999999999999:role/eksServiceRole"
Попробуйте вручную взять на себя роль через aws-cli.
Проверьте текущий сеанс аутентификации: aws sts get-caller-identity
Попытка взять на себя роль: aws sts assume-role --role-arn "arn:aws:iam::999999999999:role/eksServiceRole" --role-session-name test-eks-role
я не который знаком с EKS, но я думаю, пользователь, что вы запускаете aws eks
команде, поскольку необходимы привилегии для описания кластера.
Это работает успешно?
~ $ aws eks describe-cluster --name eks-cluster
Если нет, вам нужно проверить свой разрешения aws-cli и заставьте это работать первым.
Это всего лишь предположение, но надеюсь, что это поможет :)
Если вы получите AccessDeniedException
при вызове операции AWS API учетные данные пользователя или роли AWS Identity and Access Management (IAM), которые вы используете, не имеют необходимых разрешений для выполнения этого вызова.
Чтобы предоставить пользователю права администратора Amazon EKS, см. Создание политик Amazon EKS IAM.
(Ссылка: https://docs.aws.amazon.com/eks/latest/userguide/troubleshooting.html#iam-error)
Я придумал ту же ошибку. Но после того, как я обновил правильный ключ доступа и секретный ключ в файле .aws / credentials, проблема была решена.
Обратите внимание, что вам необходимо использовать ключ доступа и секретный ключ пользователя, который позволяет выполнять действия, связанные с AWS EKS.
Включен ли ваш идентификатор пользователя, с которым вы создаете кластер MFA? Если это так, вам необходимо получить токен и обновить файл учетных данных.
Подтверждая, что эта ошибка с aws eks
все еще присутствует по состоянию на 2020/04 год. Я столкнулся с той же проблемой, что и OP, несмотря на правильность всех конфигураций. В конце концов я обнаружил, что aws eks update-kubeconfig --name eks-cluster --profile profilename
успешно, если предполагаемая роль IAM определена в конфигурации, альтернатива, которая должна делать то же самое, поэтому определенно ошибка с aws eks
В моем случае эта проблема возникла из-за отсутствия слова «профиль» в .aws / config для именованных профилей. Если именованные профили не используются, т.е. существует только профиль по умолчанию, «профиль» не требуется. Источник: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html