疑難排解IAM和 Amazon EC2 - AWS Identity and Access Management

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

疑難排解IAM和 Amazon EC2

以下資訊可協助您對 Amazon 的IAM問題進行疑難排解EC2。

當我嘗試啟動執行個體時,在 Amazon EC2 主控台角色清單中看不到該IAM角色

請檢查以下內容:

  • 如果您以IAM使用者身分登入,請確認您有撥打電話的權限ListInstanceProfiles。若要取得有關使用角色所需權限的資訊,請參閱將角色與 Amazon 搭配使用所需的許可 EC2。如需新增許可給使用者的詳細資訊,請參閱 管理IAM策略

    如果您無法修改自己的權限,則必須聯絡可以使用IAM的管理員,以更新您的權限。

  • 如果您使用IAMCLI或建立角色API,請確認下列各項:

    • 您已建立執行個體設定檔,並將該角色新增至該執行個體設定檔。

    • 您對角色和執行個體設定檔使用相同的名稱。如果您的角色和執行個體設定檔以不同的方式命名,您將無法在 Amazon EC2 主控台中看到正確的角色名稱。

    Amazon EC2 主控台中的「IAM角色」清單會列出執行個體設定檔的名稱,而不是角色的名稱。您必須選擇包含所需角色的執行個體設定檔的名稱。如需執行個體設定檔的詳細資訊,請參閱 使用例項設定檔

    注意

    如果您使用IAM主控台建立角色,就不需要使用執行個體設定檔。針對您在IAM主控台中建立的每個角色,系統都會建立與該角色相同名稱的執行個體設定檔,且該角色會自動新增至該執行個體設定檔。執行個體設定檔只能包含一個IAM角色,且無法增加該限制。

我的執行個體上的憑證針對錯誤的角色

在執行個體設定檔的角色最近可能已遭替換。若是如此,則您的應用程式將需要等待下一次自動排程的憑證輪換,您的角色憑證才可用。

若要強制變更,必須取消關聯執行個體描述檔,然後關聯執行個體描述檔,或者可以停止執行個體,然後重新啟動它。

當我嘗試呼叫 AddRoleToInstanceProfile 時,出現 AccessDenied 錯誤

如果您以IAM使用者身分提出要求,請確認您具有下列權限:

  • iam:AddRoleToInstanceProfile資源與執行個體設定檔相符 ARN (例如,arn:aws:iam::999999999999:instance-profile/ExampleInstanceProfile)。

如需使用角色所需權限的詳細資訊,請參閱我該如何開始?。如需新增許可給使用者的詳細資訊,請參閱 管理IAM策略

AmazonEC2:當我嘗試啟動具有角色的實例時,出AccessDenied現錯誤

請檢查以下內容:

  • 啟動沒有執行個體設定檔的執行個體。這有助於確保問題僅限於 Amazon EC2 執行個體的IAM角色。

  • 如果您以IAM使用者身分提出要求,請確認您具有下列權限:

    • ec2:RunInstances 使用萬用字元資源 (「*」)

    • iam:PassRole使用符合角色的資源 ARN (例如,arn:aws:iam::999999999999:role/ExampleRoleName)

  • 呼叫IAMGetInstanceProfile動作以確保您使用的是有效的執行個體設定檔名稱或有效的執行個體設定檔ARN。如需詳細資訊,請參閱在 Amazon EC2 執行個體搭配使用IAM角色

  • 呼叫IAMGetInstanceProfile動作以確保執行個體設定檔具有角色。空白執行個體設定檔將失敗,並顯示 AccessDenied 錯誤。如需建立角色的詳細資訊,請參閱 IAM角色建立

若要取得有關使用角色所需權限的詳細資訊,請參閱〈〉我該如何開始?。如需新增許可給使用者的詳細資訊,請參閱 管理IAM策略

我無法存取EC2執行個體上的臨時安全登入資料

若要存取EC2執行個體上的臨時安全登入資料,您必須先使用IAM主控台建立角色。然後啟動使用該角色的EC2執行個體,並檢查執行中的執行個體。如需詳細資訊,請參閱 使用IAM角色將許可授與在 Amazon EC2 執行個體上執行的應用程式 中的我該如何開始?

如果您仍然無法存取EC2執行個體上的臨時安全登入資料,請檢查下列項目:

  • 您是否可以存取執行個體中繼資料服務 (IMDS) 的其他部分? 如果沒有,請檢查您是否沒有防火牆規則封鎖對IMDS.

    [ec2-user@domU-12-31-39-0A-8D-DE ~]$ GET http://169.254.169.254/latest/meta-data/hostname; echo
  • 是否IMDS存在的iam子樹? 如果沒有,請透過呼叫EC2DescribeInstancesAPI作業或使用aws ec2 describe-instancesCLI指令來驗證您的IAM執行個體設定檔是否具有與其相關聯的執行個體設定檔。

    [ec2-user@domU-12-31-39-0A-8D-DE ~]$ GET http://169.254.169.254/latest/meta-data/iam; echo
  • 檢查IAM子樹狀結構中的info文件是否有錯誤。如果您有錯誤,請參閱 IAM子樹中info文檔中的錯誤是什麼意思? 以取得更多資訊。

    [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 無法再為您的執行個體提供登入資料。您必須將有效的執行個體設定檔附加到 Amazon EC2 執行個體。

如果存在具有該名稱的執行個體描述檔,則請檢查該執行個體描述檔是否已被删除而建立了另一個同名的執行個體描述檔。

  1. 呼叫IAMGetInstanceProfile作業以取得InstanceProfileId.

  2. 調用 Amazon EC2 DescribeInstances 操作以獲取實IamInstanceProfileId例的。

  3. 驗證來InstanceProfileId自IAM操作是否符合IamInstanceProfileId來自 Amazon EC2 操作。

如果不同,則連接到執行個體的執行個體設定檔將不再有效。IDs您必須將有效的執行個體設定檔連接至執行個體。

iam/info 文件表示成功,但指出 "Message":"Instance Profile does not contain a role..."

角色已透過IAMRemoveRoleFromInstanceProfile動作從執行個體設定檔中移除。您可以使用IAMAddRoleToInstanceProfile動作將角色附加至執行個體設定檔。您的應用程式需要等到下一次排程的重新整理才能存取該角色的憑證。

若要強制變更,必須取消關聯執行個體描述檔,然後關聯執行個體描述檔,或者可以停止執行個體,然後重新啟動它。

iam/security-credentials/[role-name] 文件表示 "Code":"AssumeRoleUnauthorizedAccess"

Amazon EC2 沒有權限擔任該角色。擔任角色的許可由連接到角色的信任政策控制,如下面的範例所示。使用IAMUpdateAssumeRolePolicyAPI來更新信任原則。

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

您的應用程式需要等到下一次自動排程的重新整理才能存取該角色的憑證。

若要強制變更,必須取消關聯執行個體描述檔,然後關聯執行個體描述檔,或者可以停止執行個體,然後重新啟動它。