本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定許可,以從 SageMaker Studio 啟用列出和啟動 Amazon EMR 應用程式
在本節中,我們會詳細說明從 SageMaker Studio 列出和連線至 EMR Serverless 應用程式所需的角色和許可,並考量 Studio 和 EMR Serverless 應用程式部署在相同 AWS 帳戶或跨不同帳戶的情況。
您必須新增必要許可的角色取決於 Studio 和 EMR Serverless 應用程式是否位於相同的 AWS 帳戶 (單一帳戶) 或單獨的帳戶 (跨帳戶)。涉及兩種類型的角色:
-
執行角色:
-
EMR Serverless 使用的執行期執行角色 (以角色為基礎的存取控制角色):這些是 EMR Serverless 任務執行環境用來存取執行期所需其他 AWS 服務的 IAM 角色,例如 Amazon S3 用於資料存取、CloudWatch 用於記錄、 AWS Glue Data Catalog 存取,或根據您的工作負載需求存取其他 服務。我們建議您在執行 EMR Serverless 應用程式的帳戶內建立這些角色。
若要進一步了解執行期角色,請參閱 EMR Serverless 使用者指南中的任務執行期角色。
注意
您可以為 EMR Serverless 應用程式定義多個 RBAC 角色。這些角色可以根據組織中不同使用者或群組所需的責任和存取層級。如需 RBAC 許可的詳細資訊,請參閱 Amazon EMR Serverless 的安全最佳實務。
-
SageMaker AI 執行角色:執行角色允許 SageMaker AI 執行特定任務,例如從 Amazon S3 儲存貯體讀取資料、將日誌寫入 CloudWatch,以及存取工作流程可能需要的其他 AWS 服務。SageMaker AI 執行角色也具有稱為 的特殊許可
iam:PassRole
,允許 SageMaker AI 將臨時執行時間執行角色傳遞給 EMR Serverless 應用程式。這些角色為 EMR Serverless 應用程式提供在執行時與其他 AWS 資源互動所需的許可。
-
-
可擔任的角色 (也稱為服務存取角色):
-
這些是 SageMaker AI 執行角色可以擔任的 IAM 角色,以執行與管理 EMR Serverless 應用程式相關的操作。這些角色定義列出、連線至或管理 EMR Serverless 應用程式時所需的許可和存取政策。它們通常用於跨帳戶案例,其中 EMR Serverless 應用程式位於與 SageMaker AI 網域不同的 AWS 帳戶中。擁有 EMR Serverless 應用程式的專用 IAM 角色有助於遵循最低權限原則,並確保 Amazon EMR 僅具備執行任務所需的許可,同時保護您 AWS 帳戶中的其他資源。
-
透過正確了解和設定這些角色,您可以確保 SageMaker Studio 具有與 EMR Serverless 應用程式互動的必要許可,無論這些應用程式是部署在相同帳戶還是跨不同帳戶。
單一帳戶
下圖說明在 Studio 和應用程式部署在相同 AWS 帳戶中時,從 Studio 列出和連線至 EMR Serverless 應用程式所需的角色和許可。

如果您的 Amazon EMR 應用程式和 Studio 部署在同一個 AWS 帳戶中,請遵循下列步驟:
-
步驟 1:擷取您用於 Amazon S3 主控台中資料來源和輸出資料儲存的 Amazon S3
儲存貯體 ARN。 若要了解如何依名稱尋找儲存貯體,請參閱存取和列出 Amazon S3 儲存貯體。如需如何建立 Amazon S3 儲存貯體的資訊,請參閱建立儲存貯體。
-
步驟 2:在您的帳戶中為 EMR Serverless 應用程式建立至少一個任務執行期執行角色 (上述單一帳戶使用案例圖表
EMRServerlessRuntimeExecutionRoleA
中的 )。選擇自訂信任政策做為信任的實體。新增任務所需的許可。您至少需要完整存取 Amazon S3 儲存貯體,並建立和讀取 AWS Glue Data Catalog 的存取權。如需如何為 EMR Serverless 應用程式建立新的執行階段執行角色的詳細說明,請遵循下列步驟:
-
導覽至 IAM 主控台
。 -
在左側導覽窗格中,選擇政策,然後選擇建立政策。
-
新增執行時間角色所需的許可、為政策命名,然後選擇建立政策。
您可以參考 EMR Serverless 的任務執行期角色,以尋找 EMR Serverless 執行期角色的範例執行期政策。
-
在左側導覽窗格中,選擇角色,然後選擇建立角色。
-
在建立角色頁面上,選擇自訂信任政策作為信任的實體。
-
在自訂信任政策區段中貼上下列 JSON 文件,然後選擇下一步。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
在新增許可頁面中,新增您建立的政策,然後選擇下一步。
-
在檢閱頁面上,輸入角色的名稱,例如
EMRServerlessAppRuntimeRoleA
和選用的描述。 -
檢閱角色詳細資訊,並選擇 Create role (建立角色)。
透過這些角色,您和您的團隊成員可以連接到相同的應用程式,每個應用程式都使用範圍限定的執行期角色,其許可符合對資料的個別存取層級。
注意
Spark 工作階段的運作方式不同。Spark 工作階段會根據從 Studio 使用的執行角色來隔離,因此具有不同執行角色的使用者將擁有個別隔離的 Spark 工作階段。此外,如果您已啟用網域的來源身分,則不同來源身分的 Spark 工作階段會進一步隔離。
-
-
步驟 3:擷取私有空間所使用的 SageMaker AI 執行角色 ARN。
如需 SageMaker AI 中空間和執行角色的資訊,請參閱 了解網域空間許可和執行角色。
如需如何擷取 SageMaker AI 執行角色 ARN 的詳細資訊,請參閱 取得您的執行角色。
注意
或者,SageMaker AI 的新手可以透過使用適當的許可自動建立新的 SageMaker AI 執行角色來簡化其設定程序。在此情況下,請略過步驟 3 和 4。反之,使用者可以:
-
從 SageMaker AI 主控台
左側導覽中的網域功能表建立新網域時,請選擇為組織設定選項。 -
從主控台的角色管理員功能表建立新的執行角色,然後將角色連接至現有的網域或使用者設定檔。
建立角色時,請在使用者將執行哪些 ML 活動中選擇 Run Studio EMR Serverless 應用程式選項? 然後,提供 Amazon S3 儲存貯體的名稱,以及您希望 EMR Serverless 應用程式使用的任務執行時間執行角色 (步驟 2)。
SageMaker Role Manager 會自動將執行和連線至 EMR Serverless 應用程式的必要許可新增至新的執行角色。使用 SageMaker Role Manager,您只能將一個執行期角色指派給您的 EMR Serverless 應用程式,而且應用程式必須在部署 Studio 的相同帳戶中執行,並使用在相同帳戶中建立的執行期角色。
-
-
步驟 4:將下列許可連接到存取 EMR Serverless 應用程式的 SageMaker AI 執行角色。
-
在 https://console.aws.amazon.com/sagemaker/
開啟 IAM 主控台。 -
選擇角色,然後在搜尋欄位中依名稱搜尋您的執行角色。角色名稱是 ARN 的最後一部分,在最後一個正斜線 (/) 之後。
-
遵循您的角色連結。
-
選擇新增許可,然後選擇建立內嵌政策。
-
在 JSON 索引標籤中,新增允許 EMR Serverless 存取和操作的 Amazon EMR Serverless 許可。如需政策文件的詳細資訊,請參閱 中的 EMR Serverless 政策參考政策。將陳述式清單複製到角色的內嵌政策之前,請將
區域
、accountID
和傳遞的EMRServerlessAppRuntimeRole
(s) 取代為實際值。注意
您可以在許可中視需要包含任意數量的執行期角色 ARN 字串,以逗號分隔。
-
選擇下一步,然後提供政策名稱。
-
選擇 建立政策。
-
重複建立內嵌政策步驟,以新增另一個內嵌政策,授予角色更新網域、使用者設定檔和空格的許可。如需
SageMakerUpdateResourcesPolicy
政策文件的詳細資訊,請參閱 中的網域、使用者設定檔和空間更新動作政策參考政策。將陳述式清單複製到角色的內嵌政策之前,請將區域
和accountID
取代為實際值。
-
-
步驟 5:
將執行期角色清單與您的使用者設定檔或網域建立關聯,以便您以視覺化方式瀏覽角色清單,並選取從 JupyterLab 連線至 EMR Serverless 應用程式時要使用的清單。您可以使用 SageMaker AI 主控台或下列指令碼。之後,從筆記本建立的所有 Apache Spark 或 Apache Hive 任務只會存取連接到所選執行時間角色的政策所允許的資料和資源。
重要
如果未完成此步驟,您將無法將 JupyterLab 筆記本連接至 EMR Serverless 應用程式。
跨帳戶
下圖說明在不同 AWS 帳戶中部署 Studio 和應用程式時,從 Studio 列出和連線至 EMR Serverless 應用程式所需的角色和許可。

如需在 AWS 帳戶上建立角色的詳細資訊,請參閱https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html建立 IAM 角色 (主控台)。
開始之前:
-
擷取私有空間使用的 SageMaker AI 執行角色 ARN。如需 SageMaker AI 中空間和執行角色的資訊,請參閱 了解網域空間許可和執行角色。如需如何擷取 SageMaker AI 執行角色 ARN 的詳細資訊,請參閱 取得您的執行角色。
-
在 Amazon S3 主控台中擷取您要用於資料來源和輸出資料儲存的 Amazon S3
儲存貯體 ARN。 如需如何建立 Amazon S3 儲存貯體的資訊,請參閱建立儲存貯體。若要了解如何依名稱尋找儲存貯體,請參閱存取和列出 Amazon S3 儲存貯體。
如果您的 EMR Serverless 應用程式和 Studio 部署在不同的 AWS 帳戶中,您可以在兩個帳戶上設定許可。
在 EMR Serverless 帳戶中
請依照下列步驟,在執行 EMR Serverless 應用程式的帳戶上建立必要的角色和政策,也稱為信任帳戶:
-
步驟 1:在您的 帳戶中為 EMR Serverless 應用程式建立至少一個任務執行期執行角色 (在上述跨帳戶圖表
EMRServerlessRuntimeExecutionRoleB
中的 )。選擇自訂信任政策做為信任的實體。新增任務所需的許可。您至少需要完整存取 Amazon S3 儲存貯體,並建立和讀取 AWS Glue Data Catalog 的存取權。如需如何為 EMR Serverless 應用程式建立新的執行階段執行角色的詳細說明,請遵循下列步驟:
-
導覽至 IAM 主控台
。 -
在左側導覽窗格中,選擇政策,然後選擇建立政策。
-
新增執行時間角色所需的許可、為政策命名,然後選擇建立政策。
如需 EMR Serverless 執行時間角色的範例執行時間政策,請參閱 Amazon EMR Serverless 的任務執行時間角色。
-
在左側導覽窗格中,選擇角色,然後選擇建立角色。
-
在建立角色頁面上,選擇自訂信任政策作為信任的實體。
-
在自訂信任政策區段中貼上下列 JSON 文件,然後選擇下一步。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
在新增許可頁面中,新增您建立的政策,然後選擇下一步。
-
在檢閱頁面上,輸入角色的名稱,例如
EMRServerlessAppRuntimeRoleB
和選用的描述。 -
檢閱角色詳細資訊,並選擇 Create role (建立角色)。
透過這些角色,您和您的團隊成員可以連線到相同的應用程式,每個應用程式都使用範圍限定的執行期角色,其許可符合個別層級的資料存取。
注意
Spark 工作階段的運作方式不同。Spark 工作階段是根據從 Studio 使用的執行角色來隔離,因此具有不同執行角色的使用者將擁有單獨的隔離 Spark 工作階段。此外,如果您已啟用網域的來源身分,則不同來源身分的 Spark 工作階段會進一步隔離。
-
-
步驟 2:使用下列組態建立名為
AssumableRole
的自訂 IAM 角色:-
許可:將必要的許可 (Amazon EMR Serverless 政策) 授予
AssumableRole
,以允許存取 EMR Serverless 資源。此角色也稱為存取角色。 -
信任關係:設定 的信任政策
AssumableRole
,以允許從需要存取的 Studio 帳戶擔任執行角色 (跨帳戶圖表SageMakerExecutionRole
中的 )。
透過擔任角色,Studio 可以暫時存取 EMR Serverless 帳戶中所需的許可。
如需如何在 EMR Serverless
AssumableRole
AWS 帳戶中建立新 的詳細說明,請遵循下列步驟:-
導覽至 IAM 主控台
。 -
在左側導覽窗格中,選擇政策,然後選擇建立政策。
-
在 JSON 索引標籤中,新增允許 EMR Serverless 存取和操作的 Amazon EMR Serverless 許可。如需政策文件的詳細資訊,請參閱 中的 EMR Serverless 政策參考政策。將陳述式清單複製到角色的內嵌政策之前
accountID
,請將region
、 和 傳遞的EMRServerlessAppRuntimeRole
() 取代為實際值。注意
EMRServerlessAppRuntimeRole
以下是在步驟 1 中建立的任務執行期執行角色 (上述跨帳戶圖表EMRServerlessAppRuntimeRoleB
中的 )。您可以在許可中視需要包含任意數量的執行期角色 ARN 字串,以逗號分隔。 -
選擇下一步,然後提供政策名稱。
-
選擇 建立政策。
-
在左側導覽窗格中,選擇角色,然後選擇建立角色。
-
在建立角色頁面上,選擇自訂信任政策作為信任的實體。
-
在自訂信任政策區段中貼上下列 JSON 文件,然後選擇下一步。
studio-account
將 取代為 Studio 帳戶 ID,並將AmazonSageMaker-ExecutionRole
取代為 JupyterLab 空間使用的執行角色。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
studio-account
:role/service-role/AmazonSageMaker-ExecutionRole
" }, "Action": "sts:AssumeRole" } ] } -
在新增許可頁面中,新增
EMRServerlessAppRuntimeRoleB
您在步驟 2 中建立的許可,然後選擇下一步。 -
在檢閱頁面上,輸入角色的名稱,例如
AssumableRole
和選用的描述。 -
檢閱角色詳細資訊,並選擇 Create role (建立角色)。
如需在 AWS 帳戶上建立角色的詳細資訊,請參閱建立 IAM 角色 (主控台)。
-
在 Studio 帳戶上
在部署 Studio 的 帳戶上,也稱為信任帳戶,請使用存取信任帳戶中資源所需的許可,更新存取 EMR Serverless 應用程式的 SageMaker AI 執行角色。
-
步驟 1:擷取空間使用的 SageMaker AI 執行角色 ARN。
如需 SageMaker AI 中空間和執行角色的資訊,請參閱 了解網域空間許可和執行角色。
如需如何擷取 SageMaker AI 執行角色 ARN 的詳細資訊,請參閱 取得您的執行角色。
-
步驟 2:將下列許可連接到存取 EMR Serverless 應用程式的 SageMaker AI 執行角色。
-
在 https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 -
選擇角色,然後在搜尋欄位中依名稱搜尋您的執行角色。角色名稱是 ARN 的最後一部分,在最後一個正斜線 (/) 之後。
-
請遵循您的角色連結。
-
選擇新增許可,然後選擇建立內嵌政策。
-
在 JSON 索引標籤中,新增內嵌政策,授予角色更新網域、使用者設定檔和空格的許可。如需
SageMakerUpdateResourcesPolicy
政策文件的詳細資訊,請參閱 中的網域、使用者設定檔和空間更新動作政策參考政策。將陳述式清單複製到角色的內嵌政策之前,請將region
和accountID
取代為實際值。 -
選擇下一步,然後提供政策名稱。
-
選擇 建立政策。
-
重複建立內嵌政策步驟,以新增另一個政策,授予執行角色擔任 的許可,
AssumableRole
然後執行角色的存取政策所允許的動作。emr-account
將 取代為 Amazon EMR Serverless 帳戶 ID,並將AssumableRole
取代為在 Amazon EMR Serverless 帳戶中建立的可擔任角色名稱。{ "Version": "2012-10-17", "Statement": { "Sid": "AllowSTSToAssumeAssumableRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::
emr-account
:role/AssumableRole
" } }
-
-
步驟 3:
將執行期角色清單與您的網域或使用者設定檔建立關聯,以便您以視覺化方式瀏覽角色清單,並選取從 JupyterLab 連線至 EMR Serverless 應用程式時要使用的清單。您可以使用 SageMaker AI 主控台或下列指令碼。之後,從筆記本建立的所有 Apache Spark 或 Apache Hive 任務只會存取連接到所選執行時間角色的政策所允許的資料和資源。
重要
如果未完成此步驟,您將無法將 JupyterLab 筆記本連接至 EMR Serverless 應用程式。
參考政策
-
EMR Serverless 政策:此政策允許管理 EMR Serverless 應用程式,包括列出、建立 (使用必要的 SageMaker AI 標籤)、啟動、停止、取得詳細資訊、刪除、存取 Livy 端點,以及取得任務執行儀表板。它也允許將所需的 EMR Serverless 應用程式執行期角色傳遞給 服務。
-
EMRServerlessListApplications
:允許 ListApplications 對指定區域和 AWS 帳戶中所有 EMR Serverless 資源執行動作。 -
EMRServerlessPassRole
:允許在提供的 AWS 帳戶中傳遞指定的執行期角色 (但只有在角色傳遞至 時)emr-serverless.amazonaws.com service
。 -
EMRServerlessCreateApplicationAction
:允許在他指定的區域和 AWS 帳戶中的 EMR Serverless 資源上 CreateApplication 和 TagResource 動作。不過,它需要建立或標記的資源具有具有非空值的特定標籤索引鍵 (sagemaker:user-profile-arn
、sagemaker:domain-arn
和sagemaker:space-arn
)。 -
EMRServerlessDenyTaggingAction
:如果資源未設定任何指定的標籤金鑰 (sagemaker:domain-arn
、 和sagemaker:space-arn
)sagemaker:user-profile-arn
,則指定區域和 AWS 帳戶中 EMR Serverless 資源上的 TagResource 和 UntagResource 動作。 -
EMRServerlessActions
:允許 EMR Serverless 資源上的各種動作 (StartApplication
、AccessLivyEndpoints
、、StopApplication
GetApplication
DeleteApplication
和GetDashboardForJobRun
),但前提是資源具有以非空值設定的指定標籤金鑰 (sagemaker:user-profile-arn
、sagemaker:domain-arn
和sagemaker:space-arn
)。
所提供 JSON 文件中定義的 IAM 政策會授予這些許可,但限制存取 EMR Serverless 應用程式上存在的特定 SageMaker AI 標籤,以確保只能管理與特定 SageMaker AI 網域、使用者設定檔和空間相關聯的 Amazon EMR Serverless 資源。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EMRServerlessListApplications", "Effect": "Allow", "Action": [ "emr-serverless:ListApplications" ], "Resource": "arn:aws:emr-serverless:
region
:accountID
:/*" }, { "Sid": "EMRServerlessPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::accountID
:EMRServerlessAppRuntimeRole
", "Condition": { "StringLike": { "iam:PassedToService": "emr-serverless.amazonaws.com" } } }, { "Sid": "EMRServerlessCreateApplicationAction", "Effect": "Allow", "Action": [ "emr-serverless:CreateApplication", "emr-serverless:TagResource" ], "Resource": "arn:aws:emr-serverless:region
:accountID
:/*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": [ "sagemaker:domain-arn", "sagemaker:user-profile-arn", "sagemaker:space-arn" ] }, "Null": { "aws:RequestTag/sagemaker:domain-arn": "false", "aws:RequestTag/sagemaker:user-profile-arn": "false", "aws:RequestTag/sagemaker:space-arn": "false" } } }, { "Sid": "EMRServerlessDenyTaggingAction", "Effect": "Deny", "Action": [ "emr-serverless:TagResource", "emr-serverless:UntagResource" ], "Resource": "arn:aws:emr-serverless:region
:accountID
:/*", "Condition": { "Null": { "aws:ResourceTag/sagemaker:domain-arn": "true", "aws:ResourceTag/sagemaker:user-profile-arn": "true", "aws:ResourceTag/sagemaker:space-arn": "true" } } }, { "Sid": "EMRServerlessActions", "Effect": "Allow", "Action": [ "emr-serverless:StartApplication", "emr-serverless:StopApplication", "emr-serverless:GetApplication", "emr-serverless:DeleteApplication", "emr-serverless:AccessLivyEndpoints", "emr-serverless:GetDashboardForJobRun" ], "Resource": "arn:aws:emr-serverless:region
:accountID
:/applications/*", "Condition": { "Null": { "aws:ResourceTag/sagemaker:domain-arn": "false", "aws:ResourceTag/sagemaker:user-profile-arn": "false", "aws:ResourceTag/sagemaker:space-arn": "false" } } } ] } -
-
網域、使用者設定檔和空間更新動作政策 :下列政策授予許可,以更新指定區域和 AWS 帳戶中的 SageMaker AI 網域、使用者設定檔和空間。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SageMakerUpdateResourcesPolicy", "Effect": "Allow", "Action": [ "sagemaker:UpdateDomain", "sagemaker:UpdateUserprofile", "sagemaker:UpdateSpace" ], "Resource": [ "arn:aws:sagemaker:
region>
:accountID
:domain/*", "arn:aws:sagemaker:region
:accountID
:user-profile/*" ] } ] }