このページの改善にご協力ください
本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。
IAM のトラブルシューティング
このトピックでは、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
この場合、Mary のポリシーを更新してメアリーに iam:PassRole
アクションの実行を許可する必要があります。
サポートが必要な場合は、AWS 管理者に問い合わせてください。サインイン認証情報を提供した担当者が管理者です。
AWS アカウント以外のユーザーに Amazon EKS リソースへのアクセスを許可したい
他のアカウントのユーザーや組織外の人が、リソースにアクセスするために使用できるロールを作成できます。ロールの引き受けを委託するユーザーを指定できます。リソースベースのポリシーまたはアクセスコントロールリスト (ACL) をサポートするサービスの場合、それらのポリシーを使用して、リソースへのアクセスを付与できます。
詳細については、以下を参照してください。
-
Amazon EKS がこれらの機能をサポートしているかどうかについては、「Amazon 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 エンドポイントを設定する」を参照してください。