メニュー
AWS Identity and Access Management
ユーザーガイド

Amazon EC2 および IAM のトラブルシューティング

この情報を使用して、アクセス拒否された問題や、Amazon EC2 および IAM を操作するときに発生する可能性のある他の問題のトラブルシューティングや修復を行います。

インスタンスの起動時に、Amazon EC2 コンソールの [IAM role] リストにあるべきロールが見当たらない。

以下を確認してください。

  • IAM ユーザーとしてサインインしている場合、ListInstanceProfiles を呼び出す権限があることを確認します。ロールを使用した作業に必要なアクセス許可の詳細については、Amazon EC2 インスタンスで実行されるアプリケーションに IAM ロールを使用してアクセス権限を付与する の Permissions Required for Using Roles with Amazon EC2 を参照してください。ユーザーに権限を付与する方法の詳細については、「ポリシーの使用」を参照してください。

    自身のアクセス許可を修正できない場合は、IAM を操作できる管理者へ問い合わせてアクセス許可を更新する必要があります。

  • IAM CLI または API を使用してロールを作成した場合は、インスタンスプロファイルを作成して、そのインスタンスプロファイルにロールを追加していることを確認します。また、ロールとインスタンスプロファイルに異なる名前を付けた場合は、Amazon EC2 コンソールの IAM ロールのリストに正しいロール名が表示されません。Amazon EC2 コンソールの [IAM ロール] リストには、ロール名ではなくインスタンスプロファイルの名前が表示されます。使用するロールが含まれるインスタンスプロファイルの名前を選択する必要があります。インスタンスプロファイルの詳細については、インスタンスプロファイルの使用 を参照してください。

    注記

    IAM コンソールを使用してロールを作成する場合は、インスタンスプロファイルを使用する必要はありません。IAM コンソールで作成する各ロールでは、ロールと同じ名前のインスタンスプロファイルが作成され、ロールは自動的にそのインスタンスプロファイルに追加されます。インスタンスプロファイルに含めることができる IAM ロールは 1 つのみであり、緩和できません。

インスタンスの認証情報が間違ったロールのものになっている。

インスタンスプロファイルのロールが最近置き換えられた場合、アプリケーションは自動的に予定された次回の認証情報の更新を終えてからでなければ、ロールの認証情報にアクセスすることはできません。

AddRoleToInstanceProfile を呼び出そうとすると、AccessDenied エラーが発生する。

IAM ユーザーとしてリクエストを発行する場合は、以下の条件が満たされていることを確認します。

  • iam:AddRoleToInstanceProfile でインスタンスプロファイルの ARN(arn:aws:iam::999999999999:instance-profile/ExampleInstanceProfile など)に一致するリソースが定義されている。

ロールを使用した作業に必要な権限の詳細については、「Amazon EC2 インスタンスで実行されるアプリケーションに IAM ロールを使用してアクセス権限を付与する」の「使用開始方法」を参照してください。ユーザーに権限を付与する方法の詳細については、「ポリシーの使用」を参照してください。

Amazon EC2: ロールを使用してインスタンスを起動しようとすると、AccessDenied エラーが発生する。

以下を確認してください。

  • インスタンスプロファイルを使用せずにインスタンスを起動します。この作業は、問題が Amazon EC2 インスタンスの IAM ロールに限定していることを確認するものです。

  • IAM ユーザーとしてリクエストを発行する場合は、以下の条件が満たされていることを確認します。

    • ec2:RunInstances でリソースがワイルドカード(*)で定義されている

    • iam:PassRole でロールの ARN(arn:aws:iam::999999999999:role/ExampleRoleName など)に一致するリソースが定義されている

  • IAM GetInstanceProfile アクションを呼び出し、有効なインスタンスプロファイル名またはインスタンスプロファイル ARN を使用していることを確認します。詳細については、「Using IAM roles with Amazon EC2 instances」を参照してください。

  • IAM GetInstanceProfile アクションを呼び出し、インスタンスプロファイルにロールがあることを確認します。空のインスタンスプロファイルは、AccessDenied エラーとなります。ロールの作成に関する詳細については、「IAM ロールの作成」を参照してください。

ロールを使用した作業に必要な権限の詳細については、「Amazon EC2 インスタンスで実行されるアプリケーションに IAM ロールを使用してアクセス権限を付与する」の「使用開始方法」を参照してください。ユーザーに権限を付与する方法の詳細については、「ポリシーの使用」を参照してください。

EC2 インスタンスにある一時的なセキュリティ認証情報にアクセスできない。

以下を確認してください。

  • インスタンスメタデータサービス(IMDS)の他の部分にアクセスできますか?アクセスできない場合、IMDS への要求アクセスを遮断するファイアウォールのルールがないことを確認します。

    Copy
    [ec2-user@domU-12-31-39-0A-8D-DE ~]$ GET http://169.254.169.254/latest/meta-data/hostname; echo
  • IMDS の iam サブツリーは存在していますか?存在していない場合、ec2:DescribeInstances を呼び出し、インスタンスに関連する IAM インスタンスプロファイルがあることを確認します。

    Copy
    [ec2-user@domU-12-31-39-0A-8D-DE ~]$ GET http://169.254.169.254/latest/meta-data/iam; echo
  • IAM サブツリーの info ドキュメントにエラーがあるか確認します。エラーがある場合は、IAM サブツリーの info ドキュメントのエラーは何を意味しますか? をご覧ください。

    Copy
    [ec2-user@domU-12-31-39-0A-8D-DE ~]$ GET http://169.254.169.254/latest/meta-data/iam/info; echo

IAM サブツリーの info ドキュメントのエラーは何を意味しますか?

iam/info ドキュメントで "Code":"InstanceProfileNotFound". が表示される

IAM インスタンスプロファイルが削除され、Amazon EC2 がインスタンスに認証情報を発行できません。そのインスタンスを終了し、有効なインスタンスプロファイルを使用して再起動する必要があります。

その名前が付いたインスタンスプロファイルが存在する場合、そのインスタンスプロファイルが削除されておらず、他のプロファイルが同じ名前で作成されていることを確認します。

インスタンスプロファイルのステータスを確認するには:

  1. IAM の GetInstanceProfile アクションを呼び出し、InstanceProfileId を取得します。

  2. Amazon EC2 の DescribeInstances アクションを呼び出し、インスタンスの IamInstanceProfileId を取得します。

  3. IAM アクションで取得した InstanceProfileId が Amazon EC2 アクションで取得した IamInstanceProfileId と一致することを確認します。

ID が異なる場合、インスタンスに付属したインスタンスプロファイルはすでに無効になっています。そのインスタンスを終了し、有効なインスタンスプロファイルを使用して再起動する必要があります。

iam/info ドキュメントには完了と表示されるが、"Message":"Instance Profile does not contain a role..." が表示される

IAM の RemoveRoleFromInstanceProfile アクションによりロールがインスタンスプロファイルから削除されています。IAM の AddRoleToInstanceProfile アクションを使用すると、インスタンスプロファイルにロールをアタッチすることができます。アプリケーションは、次回に予定された更新を終えてからでなければ、ロールの認証情報にアクセスすることはできません。

iam/security-credentials/[role-name] ドキュメントで "Code":"AssumeRoleUnauthorizedAccess" が表示される

Amazon EC2 にロールを引き受ける権限がありません。以下の例のように、ロールを引き受けるアクセス許可は、そのロールにアタッチされた信頼ポリシーで管理されます。IAM UpdateAssumeRolePolicy API を使用して、信頼ポリシーを更新します。

Copy
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"Service": ["ec2.amazonaws.com"]},"Action": ["sts:AssumeRole"]}]}

アプリケーションは、自動的に予定された次回の更新を終えてからでなければ、ロールの認証情報にアクセスすることはできません。