このページの改善にご協力ください
本ユーザーガイドの改善にご協力いただけませんか? すべてのページの右側のペインにある GitHub リンクで、このページの編集を選択してください。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。
このトピックでは、IAM での Amazon EKS の使用中に表示される一般的なエラーとその回避方法について説明します。
AccessDeniedException
AWS API オペレーションの呼び出し時に AccessDeniedException
を受け取った場合、使用している IAM プリンシパルの認証情報には、その呼び出しに必要な許可がありません。
An error occurred (AccessDeniedException) when calling the DescribeCluster operation: User: arn:aws:iam::111122223333:user/user_name is not authorized to perform: eks:DescribeCluster on resource: arn:aws:eks:region:111122223333:cluster/my-cluster
前記のメッセージの例では、ユーザーには Amazon EKS DescribeCluster
API オペレーションを呼び出す許可がありません。IAM プリンシパルに Amazon EKS 管理者の許可を付与するには、「Amazon EKS でのアイデンティティベースのポリシーの例」を参照してください。
IAM の一般的な情報については、IAM ユーザーガイドの「ポリシーを使用したアクセスの制御」を参照してください。
[Compute] (コンピューティング) タブに [Nodes] (ノード) が表示されず、また [Resources] (リソース) タブにも何も表示されず、AWS Management Console でエラーが表示される
Your current user or role does not have access to Kubernetes objects on this EKS cluster
というコンソールのエラーメッセージが表示されることがあります。AWS Management Console を使用している IAM プリンシパルユーザーに必要な許可があることを確認してください。詳細については、「必要なアクセス許可」を参照してください。
aws-auth ConfigMap
がクラスターへのアクセスを許可しない
AWS IAM AuthenticatorConfigMap
で使用されるロール ARN でパスを許可しません。したがって、rolearn
を指定する前に、パスを削除してください。例えば、
arn:aws:iam::
を 111122223333
:role/team
/developers
/eks-admin
arn:aws:iam::
に変更します。111122223333
:role/eks-admin
iam:PassRole を実行する権限がありません
iam:PassRole
アクションを実行する権限がないというエラーが表示された場合は、ポリシーを更新して Amazon EKS にロールを渡せるようにする必要があります。
一部の AWS サービスでは、新しいサービスロールまたはサービスリンクロールを作成せずに、既存のロールをサービスに渡すことができます。そのためには、サービスにロールを渡す権限が必要です。
次の例のエラーは、marymajor
という IAM ユーザーがコンソールを使用して Amazon EKS でアクションを実行しようとする場合に発生します。ただし、このアクションをサービスが実行するには、サービスロールから付与された権限が必要です。メアリーには、ロールをサービスに渡す許可がありません。
User: {arn-aws}iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
この場合、メアリーのポリシーを更新してメアリーに iam:PassRole
アクションの実行を許可する必要があります。
サポートが必要な場合は、AWS 管理者に問い合わせてください。サインイン認証情報を提供した担当者が管理者です。
AWS アカウント以外のユーザーに Amazon EKS リソースへのアクセスを許可したい
他のアカウントのユーザーや組織外のユーザーが、リソースへのアクセスに使用できるロールを作成できます。ロールの引き受けを委託するユーザーを指定できます。リソースベースのポリシーまたはアクセスコントロールリスト (ACL) をサポートするサービスの場合、それらのポリシーを使用して、リソースへのアクセスを付与できます。
詳細については、以下を参照してください。
-
Amazon EKS がこれらの機能をサポートしているかどうかについては、「アマゾン EKS で IAM を使用する方法」を参照してください。
-
所有している AWS アカウント間でリソースへのアクセスを付与する方法については、IAM ユーザーガイド の「所有している別の AWS アカウントへのアクセスを IAM ユーザーに許可」を参照してください。
-
リソースへのアクセスをサードパーティーの AWS アカウントに提供する方法については、IAM ユーザーガイドの「サードパーティーが所有する AWS アカウントへのアクセスの提供」を参照してください。
-
ID フェデレーションを介してアクセスを提供する方法については、「IAM ユーザーガイド」の「外部で認証されたユーザー (ID フェデレーション) へのアクセスの許可」を参照してください。
-
クロスアカウントアクセスにおけるロールとリソースベースのポリシーの使用方法の違いについては、「IAM ユーザーガイド」の「IAM でのクロスアカウントのリソースへのアクセス」を参照してください。
ポッドコンテナは次のエラーを受け取ります: An error occurred (SignatureDoesNotMatch) when calling the GetCallerIdentity operation: Credential should be scoped to a valid region
アプリケーションが明示的に AWS STS グローバル エンドポイント (
https://sts.amazonaws
) にリクエストを送信し、Kubernetes サービスアカウントがリージョンエンドポイントを使用するように設定されている場合、コンテナはこのエラーを受け取ります。次のいずれかのオプションを使用して問題を解決できます。
-
アプリケーションコードを更新して、AWS STS グローバルエンドポイントへの明示的な呼び出しを削除します。
-
アプリケーションコードを更新して、
https://sts.us-west-2.amazonaws.com
などのリージョンエンドポイントへの明示的な呼び出しを行います。AWS リージョン内のサービスに障害が発生した場合に別の AWS リージョンを選択するよう、アプリケーションに冗長性が組み込まれている必要があります。詳細については、IAM ユーザーガイドの「AWS リージョンでの AWS STS の管理」を参照してください。 -
グローバルエンドポイントを使用するようにサービスアカウントを設定します。
1.22
より前のすべてのバージョンでは、デフォルトでグローバルエンドポイントを使用しましたが、バージョン1.22
以降のクラスターでは、デフォルトでリージョンエンドポイントを使用します。詳細については、「サービスアカウントの AWS Security Token Service エンドポイントを設定する」を参照してください。