本文介紹在E-MapReduce控制台上,通過建立叢集時在基礎配置頁面的進階設定地區設定ECS應用角色,實現以免密的方式訪問同帳號下的其它資源。例如,Object Storage Service和Log ServiceSLS。
背景資訊
- 指定叢集只能訪問指定OSS的資料目錄。
- 指定叢集訪問指定的外部資源。
前提條件
操作流程
步驟一:建立權限原則
-
進入建立自訂權限原則頁面。
-
使用雲帳號登入RAM控制台。
-
在RAM存取控制頁面,選擇。
-
在权限策略頁面,單擊创建权限策略。
-
-
在创建权限策略頁面,單擊指令碼編輯頁簽。
-
輸入權限原則內容,然後單擊确定。
添加如下策略。
{ "Version": "1", "Statement": [ { "Action": [ "oss:GetObject", "oss:ListObjects" ], "Resource": [ "acs:oss:*:*:emr-logs2", "acs:oss:*:*:emr-logs2/*" ], "Effect": "Allow" } ] }說明策略中涉及的元素如下所示:
-
Action:是指對具體資源的操作。本樣本是OSS的讀取和查詢目錄的許可權。
-
Resource:是指被授權的具體對象。本樣本是訪問名為emr-logs2的OSS Bucket及其中的內容。
更多權限原則的基本元素,請參見權限原則基本元素。
-
-
輸入權限原則名称。
本樣本為test-emr。
-
單擊确定。
步驟二:建立RAM角色
-
在RAM存取控制頁面,選擇。
-
在角色頁面,單擊创建角色。
-
建立RAM角色。
-
單擊阿里云服务。
-
單擊下一步。
-
在配置角色面板,配置以下資訊。
參數
描述
角色名称
本樣本為test-emr。
选择受信服务
選擇云服务器。
-
單擊完成。
-
-
可選:修改授信服務。
重要如果您建立的叢集是EMR 3.32之後版本、EMR 4.5之後版本或EMR 5.x及之後版本,則無需執行本步驟。
-
在角色頁面,單擊剛建立的角色名称。
-
單擊信任策略頁簽。
-
單擊編輯信任策略。
-
修改
ecs.aliyuncs.com為emr.aliyuncs.com。
-
單擊儲存信任策略。
-
-
添加相應許可權。
-
在角色頁面,單擊剛建立角色名称的操作列的新增授权。
-
在新增授权頁面,選擇自定义策略,添加建立的權限原則。
-
單擊確認新增授權。
-
單擊关闭。
-
步驟三:建立叢集並訪問外部資源
-
在頂部功能表列處,根據實際情況選擇地區和資源群組。
-
單擊创建集群,在基础配置頁面的高级设置地區,添加步驟二:建立RAM角色中建立的角色名稱。建立詳情請參見建立叢集。

-
叢集建立成功後,通過SSH登入叢集,詳情請參見登入叢集。
執行以下命令,驗證授權是否成功。
hdfs dfs -ls oss://<yourBucketName>/說明樣本中的<yourBucketName>為您OSS Bucket的名稱。
-
沒有該Bucket存取權限時,無法訪問OSS路徑。
-
有該Bucket存取權限時,可以正常訪問OSS路徑。
-
常見問題
- Q:建立叢集時提示NoPermission。A:您可以參照如下方式排查解決。
- 您建立叢集使用的使用者是否有建立叢集和更換ECS應用角色的許可權,如果該RAM使用者權限為AliyunEMRDevelopAccess可以修改為AliyunEMRFullAccess。
- 建立叢集時ECS應用角色名稱是否填寫正確。
- 授信策略是否修改為emr.aliyuncs.com。
-
Q:HDFS無法訪問OSS路徑。
A:您可以參照如下方式排查解決。
-
確認訪問的OSS Bucket是否和叢集在同一個地區(Region),如果不在同一地區(Region),在訪問連結中需要添加相應的Endpoint。
-
確認訪問的OSS Bucket是否包含在建立的權限原則中,如果沒有,需要修改權限原則。
-
確認是否在OSS控制台上設定了該Bucket的相關許可權。如果設定了相關許可權,您可以在OSS控制台上取消相關許可權的設定,通過設定權限原則中的Action內容來設定相關許可權。
-