全部產品
Search
文件中心

E-MapReduce:使用自訂ECS應用角色訪問同帳號雲資源

更新時間:Dec 11, 2024

本文介紹在E-MapReduce控制台上,通過建立叢集時在基礎配置頁面的進階設定地區設定ECS應用角色,實現以免密的方式訪問同帳號下的其它資源。例如,Object Storage Service和Log ServiceSLS。

背景資訊

您在建立叢集時可以使用自訂的角色,通過給該角色不同的權限原則,以限制叢集訪問外部資源的許可權。例如,您可以進行如下操作:
  • 指定叢集只能訪問指定OSS的資料目錄。
  • 指定叢集訪問指定的外部資源。

前提條件

已在OSS管理主控台,建立與EMR叢集同一地區下的儲存空間,詳情請參見控制台建立儲存空間

操作流程

  1. 步驟一:建立權限原則

  2. 步驟二:建立RAM角色

  3. 步驟三:建立叢集並訪問外部資源

步驟一:建立權限原則

  1. 進入建立自訂權限原則頁面。

    1. 使用雲帳號登入RAM控制台

    2. 在RAM存取控制頁面,選擇許可權管理 > 權限原則

    3. 權限原則頁面,單擊建立權限原則

  2. 建立權限原則頁面,單擊指令碼編輯頁簽。

  3. 輸入權限原則內容,然後單擊確定

    添加如下策略。

    {
        "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及其中的內容。

    更多權限原則的基本元素,請參見權限原則基本元素

  4. 輸入權限原則名稱

    本樣本為test-emr。

  5. 單擊確定

步驟二:建立RAM角色

  1. 在RAM存取控制頁面,選擇身份管理 > 角色

  2. 角色頁面,單擊建立角色

  3. 建立RAM角色。

    1. 單擊阿里雲服務

    2. 單擊下一步

    3. 配置角色面板,配置以下資訊。

      參數

      描述

      角色名稱

      本樣本為test-emr。

      選擇受信服務

      選擇雲端服務器

    4. 單擊完成

  4. 可選:修改授信服務。

    重要

    如果您建立的叢集是EMR 3.32之後版本、EMR 4.5之後版本或EMR 5.x及之後版本,則無需執行本步驟。

    1. 角色頁面,單擊剛建立的角色名稱

    2. 單擊信任策略頁簽。

    3. 單擊編輯信任策略

    4. 修改ecs.aliyuncs.comemr.aliyuncs.com

      策略

    5. 單擊儲存信任策略

  5. 添加相應許可權。

    1. 角色頁面,單擊剛建立角色名稱的操作列的新增授權

    2. 新增授權頁面,選擇自訂策略,添加建立的權限原則。

    3. 單擊確認新增授權

    4. 單擊關閉

步驟三:建立叢集並訪問外部資源

  1. 登入EMR on ECS控制台

  2. 在頂部功能表列處,根據實際情況選擇地區和資源群組

  3. 單擊建立叢集,在基礎配置頁面的進階設定地區,添加步驟二:建立RAM角色中建立的角色名稱。建立詳情請參見建立叢集

    image

  4. 叢集建立成功後,通過SSH登入叢集,詳情請參見登入叢集

    執行以下命令,驗證授權是否成功。

    hdfs dfs -ls oss://<yourBucketName>/
    說明

    樣本中的<yourBucketName>為您OSS Bucket的名稱。

    • 沒有該Bucket存取權限時,無法訪問OSS路徑。

    • 有該Bucket存取權限時,可以正常訪問OSS路徑。

常見問題

  • Q:建立叢集時提示NoPermission。
    A:您可以參照如下方式排查解決。
    1. 您建立叢集使用的使用者是否有建立叢集和更換ECS應用角色的許可權,如果該RAM使用者權限為AliyunEMRDevelopAccess可以修改為AliyunEMRFullAccess。
    2. 建立叢集時ECS應用角色名稱是否填寫正確。
    3. 授信策略是否修改為emr.aliyuncs.com
  • Q:HDFS無法訪問OSS路徑。

    A:您可以參照如下方式排查解決。

    1. 確認訪問的OSS Bucket是否和叢集在同一個地區(Region),如果不在同一地區(Region),在訪問連結中需要添加相應的Endpoint。

    2. 確認訪問的OSS Bucket是否包含在建立的權限原則中,如果沒有,需要修改權限原則。

    3. 確認是否在OSS控制台上設定了該Bucket的相關許可權。如果設定了相關許可權,您可以在OSS控制台上取消相關許可權的設定,通過設定權限原則中的Action內容來設定相關許可權。