(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【AWS/EKS】You must be logged in to the server (Unauthorized)というエラー

スポンサーリンク

事象

マネージメントコンソールから作成したEKSに対してCloud9からkubectlコマンドで接続に行くも以下のようなエラーとなる。

$ kubectl get svc
error: You must be logged in to the server (Unauthorized)

詳細なデバッグログは以下。

$ kubectl get svc -v=9
... helpers.go:246] server response object: [{
  "metadata": {},
  "status": "Failure",
  "message": "Unauthorized",
  "reason": "Unauthorized",
  "code": 401
}]
error: You must be logged in to the server (Unauthorized)
環境情報
  • EKS : 1.28
  • aws-cli/2.15.5

原因/解決策

クラスターを作成した際のユーザと接続に行っているユーザが異なっている。
コンソール上で情報を確認した上で

$ aws sts get-caller-identity
{
    "UserId": "xx",
    "Account": "xx",
    "Arn": "arn:aws:sts::xx"
}

EKS側の「Access」>「IAM access entries」より同権限を追加すると

アクセス権限

表題の事象は解消した。

$ kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE

以下、補足です。

補足

EKSを作成時にオーダーを行なったユーザ情報が「AmazonEKSClusterAdminPolicy」等でIAM access entriesに存在しています。

Access entries selection IAM principal ARN Type Username Group names Access policies

なので、ここに新たに必要なユーザ情報を追加することで、EKSクラスターへのアクセスを許可します。

ちなみに追加する際にはネームスペース毎にも権限設定ができるので、例えば必要な権限を与えなかった場合には以下のようなエラーにもなりました。

$ kubectl get svc
Error from server (Forbidden): services is forbidden: User "xx" cannot list resource "services" in API group "" in the namespace "default"


以上、ご参考になれば幸いです。