本文介紹在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內容來設定相關許可權。