當我嘗試建立 Amazon EMR 叢集時,收到下列一條錯誤訊息: 「EMR_DefaultRole 無效」「EMR_EC2_DefaultRole 無效」
簡短說明
在編輯附加到 Amazon EMR 預設角色的一或多個 AWS 身分和存取管理 (IAM) 政策時,通常會發生這些錯誤。若要進行疑難排解,請將修改後的角色與原始版本進行比較 (AmazonElasticMapReduceRole 或 AmazonElasticMapReduceforEC2Role)。
如果找不到問題的根源,請刪除角色並重新建立。
解決方法
將修改後的角色與原始版本進行比較
如果您將政策新增至 IAM 角色 EMR_DefaultRole 或 EMR_EC2_DefaultRole,請檢閱您所做的變更。將角色的修改後版本與原始版本進行比較 (AmazonElasticMapReduceRole 或 AmazonElasticMapReduceforEC2Role)。如果您無法判斷造成問題的原因,請刪除角色和執行個體設定檔,如下節所述。
刪除並重新建立角色和執行個體設定檔
在開始之前,請注意下列事項:
- 請確認您沒有任何執行中的 EC2 執行個體在使用即將刪除的角色或執行個體設定檔。刪除與執行中的執行個體相關聯的角色或執行個體設定檔會損壞執行個體上執行的應用程式。
- 下列步驟會將 EMR_DefaultRole 和 EMR_EC2_DefaultRole 重設為其原始組態。如果您自訂附加到這些角色的 IAM 政策,則這些變更將遺失。
AWS 管理主控台
1. 使用 IAM 主控台刪除角色。IAM 會自動刪除與該角色相關聯的執行個體設定檔和政策。
2. 開啟 Amazon EMR 主控台。
3. 建立 EMR 叢集。對於權限,選擇預設。Amazon EMR 會在啟動叢集時建立預設角色。這些角色可供您稍後啟動的任何叢集使用。
AWS Command Line Interface (AWS CLI)
**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請確認您使用的是最新版本的 AWS CLI。
1. 從執行個體設定檔中移除 EMR_EC2_DefaultRole:
aws iam remove-role-from-instance-profile --instance-profile-name EMR_EC2_DefaultRole --role-name EMR_EC2_DefaultRole
2. 刪除執行個體設定檔:
aws iam delete-instance-profile --instance-profile-name EMR_EC2_DefaultRole
3. 移除與 EMR_EC2_DefaultRole 相關聯的 IAM 政策:
aws iam detach-role-policy --role-name EMR_EC2_DefaultRole --policy-arn arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role
4. 刪除 EMR_EC2_DefaultRole:
aws iam delete-role --role-name EMR_EC2_DefaultRole
5. 移除與 EMR_DefaultRole相關聯的 IAM 政策:
aws iam detach-role-policy --role-name EMR_DefaultRole --policy-arn arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceRole
6. 刪除 EMR_DefaultRole:
aws iam delete-role --role-name EMR_DefaultRole
7. 重新建立預設角色:
aws emr create-default-roles
8. 啟動新的 EMR 叢集。
相關資訊
為 AWS 服務和資源的 Amazon EMR 權限設定 IAM 服務角色