本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Service Catalog 中設定 Amazon EMR CloudFormation 範本
本主題假設管理員熟悉 AWS CloudFormationAmazon 中 AWS Service Catalog的產品組合和產品EMR。
為了簡化從 Studio 建立 Amazon EMR 叢集的過程,管理員可以將 Amazon EMR CloudFormation 範本註冊為產品AWS Service Catalog組合中的產品。若要讓資料科學家可以使用範本,他們必須將組合與 Studio 或 Studio 經典中使用的 SageMaker 執行角色產生關聯。最後,為了允許使用者從 Studio 或工作室傳統探索範本、佈建EMR叢集,以及連接到 Amazon 叢集,管理員需要設定適當的存取權限。
Amazon EMR AWS CloudFormation 範本可讓最終使用者自訂各種叢集層面。例如,管理員可以定義使用者在建立叢集時可以從中選擇的執行個體類型的核可清單。
以下說明使用 end-to-end CloudFormation 堆疊
注意
GitHub 存放庫 aws-samples/ sagemaker-studio-emr
sagemaker-studio-emr/雲端格式化/emr_服務ecatalog_範本儲存庫包含各種範例 Amazon 啟動範
如需有關可用從 SageMaker工作室或工作室經典 Connect 到 Amazon EMR 集群於連接 Amazon EMR 叢集的身份驗證方法的詳細資訊,請參閱。
若要讓資料科學家探索 Amazon EMR CloudFormation 範本,並從 Studio 或工作室傳統版佈建叢集,請遵循下列步驟。
步驟 0:檢查您的網路並準備 CloudFormation 堆疊
在您開始之前:
-
請確定您已檢閱中的網路和安全性需求設定聯網。
-
您必須擁有支援您選擇之驗證方法的現有 end-to-end CloudFormation 堆疊。您可以在 aws-Sam sagemaker-studio-emr
GitHub ples/ 存儲庫中找到這樣的 CloudFormation 模板的例子。以下步驟突出顯示 end-to-end堆疊中的特定組態,以便在工作室或工作室經典版中使用 Amazon EMR 範本。
步驟 1:將您的 Service Catalog 產品組合與 SageMaker
在您的 Service Catalog 產品組合中,將您的產品組合 ID 與存取叢集的 SageMaker 執行角色相關聯。
為此,請將以下部分(此處以YAML格式)添加到堆棧中。這會授予 SageMaker 執行角色存取指定的 Service Catalog 產品組合,其中包含 Amazon EMR 範本等產品。它允許由承擔的角色 SageMaker 來啟動這些產品。
Replace (取代) SageMakerExecutionRole.Arn
以及 SageMakerStudioEMRProductPortfolio.ID
與他們的實際價值。
SageMakerStudioEMRProductPortfolioPrincipalAssociation: Type: AWS::ServiceCatalog::PortfolioPrincipalAssociation Properties: PrincipalARN:
SageMakerExecutionRole.Arn
PortfolioId:SageMakerStudioEMRProductPortfolio.ID
PrincipalType: IAM
注意
您應該考慮哪些執行角色?
Studio UI 會從與啟動它的使用者設定檔相關聯的執行角色來決定其權限。UI 會在啟動時設定這些權限。不過,啟動 JupyterLab 或 Studio 傳統版應用程式的空間可以有個別的權限。
若要跨應用程式 (例如 Studio UI 和 Studio 傳統版) 對 Amazon EMR 範本和叢集的一致存取權,請將相同的權限子集授予網域、使用者設定檔或空間層級的所有角色。 JupyterLab許可應允許探索和佈建 Amazon EMR 叢集。
如需必要IAM權限集的詳細資訊,請參閱權限一節。
步驟 2:參考 Service Catalog 產品中的 Amazon EMR 範本
在產品組合的 Service Catalog 產品中,參考 Amazon EMR 範本資源,並確保其在工作室或工作室經典版中的可見性。
若要這麼做,請參考 Service Catalog 產品定義中的 Amazon EMR 範本資源,然後將下列標籤金鑰"sagemaker:studio-visibility:emr"
集新增至值 "true"
(請參閱YAML格式中的範例)。
在 Service Catalog 產品定義中,透過參考叢集 AWS CloudFormation 範本URL。額外的標籤設置為 true 可確保在工作室或工作室經典中 Amazon EMR 模板的可見性。
注意
範例中所提供的 Amazon 範EMR本URL在啟動時不會強制執行任何身份驗證要求。此選項用於示範和學習目的。不建議在生產環境中使用。
SMStudioEMRNoAuthProduct: Type: AWS::ServiceCatalog::CloudFormationProduct Properties: Owner: AWS Name: SageMaker Studio Domain No Auth EMR ProvisioningArtifactParameters: - Name: SageMaker Studio Domain No Auth EMR Description: Provisions a SageMaker domain and No Auth EMR Cluster Info: LoadTemplateFromURL:
Link to your CloudFormation template. For example, https://aws-blogs-artifacts-public.s3.amazonaws.com/artifacts/astra-m4-sagemaker/end-to-end/CFN-EMR-NoStudioNoAuthTemplate-v3.yaml
Tags: - Key: "sagemaker:studio-visibility:emr" Value: "true"
步驟 3:參數化 Amazon 模板 EMR CloudFormation
用於在 Service Catalog 產品中定義 Amazon EMR 叢集的 CloudFormation 範本可讓管理員指定可設定的參數。管理員可以在AllowedValues
範本的Parameters
區段中定義這些參數的Default
值和範圍。在叢集啟動過程中,資料科學家可以提供自訂輸入,或從這些預先定義的選項中進行選擇,以自訂 Amazon EMR 叢集的某些方面。
下列範例說明管理員在建立 Amazon EMR 範本時可設定的其他輸入參數。
"Parameters": { "EmrClusterName": { "Type": "String", "Description": "EMR cluster Name." }, "MasterInstanceType": { "Type": "String", "Description": "Instance type of the EMR master node.", "Default": "m5.xlarge", "AllowedValues": [ "m5.xlarge", "m5.2xlarge", "m5.4xlarge" ] }, "CoreInstanceType": { "Type": "String", "Description": "Instance type of the EMR core nodes.", "Default": "m5.xlarge", "AllowedValues": [ "m5.xlarge", "m5.2xlarge", "m5.4xlarge", "m3.medium", "m3.large", "m3.xlarge", "m3.2xlarge" ] }, "CoreInstanceCount": { "Type": "String", "Description": "Number of core instances in the EMR cluster.", "Default": "2", "AllowedValues": [ "2", "5", "10" ] }, "EmrReleaseVersion": { "Type": "String", "Description": "The release version of EMR to launch.", "Default": "emr-5.33.1", "AllowedValues": [ "emr-5.33.1", "emr-6.4.0" ] } }
管理員在 Studio 中提供 Amazon EMR CloudFormation 範本之後,資料科學家可以使用它們自行佈建 Amazon EMR 叢集。範本中定義的Parameters
區段會轉譯成 Studio 或工作室傳統內叢集建立表單上的輸入欄位。對於每個參數,資料科學家可以在輸入方塊中輸入自訂值,或從下拉式功能表中列出的預先定義選項中進行選取,這些選項對應於範本中AllowedValues
指定的選項。
下圖顯示了從 CloudFormation Amazon EMR 模板組裝的動態表單,以在工作室或工作室經典中創建 Amazon EMR 集群。
![從 CloudFormation Amazon EMR 模板組裝的動態表單的插圖,從工作室或工作室經典創建一個 Amazon EMR 集群。](images/studio/emr/studio-notebooks-emr-cluster-creation.png)
請造訪從工作室或工作室經典啟動 Amazon EMR 集群以了解如何使用這些 Amazon EMR 範本從工作室或工作室傳統版啟動叢集。
步驟 4:設定許可以從 Studio 啟用列出和啟動 Amazon EMR 叢集
最後,附加必要的IAM許可,以便列出現有執行中的 Amazon EMR 叢集,並從 Studio 或 Studio 傳統版自行佈建新叢集。
您必須新增這些許可的角色取決於 Studio 或 Studio Classic 和 Amazon EMR 是在同一個帳戶中部署 (選擇單一帳戶) 還是在不同的帳戶 (選擇「跨帳戶」) 部署。
注意
Studio 目前不支援存取在與部署 Studio 的 AWS 帳戶不同的帳戶中建立的 Amazon EMR 叢集。跨帳戶存取權限僅適用於工作室經典版。
如需有關使用角色進行跨帳戶存取的詳細資訊,請參閱中IAM的跨帳號資源存取。
如果您的 Amazon EMR 叢集和 Studio 或 Studio 經典版部署在同一個 AWS 帳戶中,請將下列許可附加到存取叢集的 SageMaker 執行角色。
注意
您應該考慮哪些執行角色?
Studio UI 會從與啟動它的使用者設定檔相關聯的執行角色來決定其權限。UI 會在啟動時設定這些權限。不過,啟動 JupyterLab 或 Studio 傳統版應用程式的空間可以有個別的權限。
若要跨應用程式 (例如 Studio UI 和 Studio 傳統版) 對 Amazon EMR 範本和叢集的一致存取權,請將相同的權限子集授予網域、使用者設定檔或空間層級的所有角色。 JupyterLab許可應允許探索和佈建 Amazon EMR 叢集。
-
尋找網域、使用者設定檔或空間的執行角色。如需如何擷取執行角色的資訊,請參閱取得您的執行角色。
-
開啟位於 IAM 的 https://console.aws.amazon.com/sagemaker/
主控台。 -
選擇 [角色],然後在 [搜尋] 欄位中輸入角色名稱,以搜尋您建立的角色。
-
點擊鏈接到您的角色。
-
選擇 [新增權限],然後選取 [建立內嵌原
-
在JSON索引標籤中,新增具有權限的下列JSON原則:
-
AllowPresignedUrl
允許生成預先簽名,以URLs便從工作室或工作室經典中訪問星火 UI。 -
AllowClusterDiscovery
並AllowClusterDetailsDiscovery
允許從工作室或工作室經典在帳戶/區域中列出和描述 Amazon EMR 集群。 -
AllowEMRTemplateDiscovery
允許在 Service Catalog 中搜索 Amazon EMR 模板。工作室和工作室經典使用它來顯示可用的模板。 -
AllowSagemakerProjectManagement
允許創建和刪除。在中 SageMaker,對的存取 AWS Service Catalog 是透過管理的MLOps使用 SageMaker 專案自動化。
所提供的中定義的IAM原則會JSON授與這些權限。Replace (取代)
studio-region
以及studio-account
在將語句列表複製到角色的內嵌政策之前,請使用您的實際區域和 AWS 帳戶 ID 值。{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPresignedUrl", "Effect": "Allow", "Action": [ "elasticmapreduce:CreatePersistentAppUI", "elasticmapreduce:DescribePersistentAppUI", "elasticmapreduce:GetPersistentAppUIPresignedURL", "elasticmapreduce:GetOnClusterAppUIPresignedURL" ], "Resource": [ "arn:aws:elasticmapreduce:
studio-region
:studio-account
:cluster/*" ] }, { "Sid": "AllowClusterDetailsDiscovery", "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListInstances", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:DescribeSecurityConfiguration" ], "Resource": [ "arn:aws:elasticmapreduce:studio-region
:studio-account
:cluster/*" ] }, { "Sid": "AllowClusterDiscovery", "Effect": "Allow", "Action": [ "elasticmapreduce:ListClusters" ], "Resource": "*" }, { "Sid": "AllowEMRTemplateDiscovery", "Effect": "Allow", "Action": [ "servicecatalog:SearchProducts" ], "Resource": "*" }, { "Sid": "AllowSagemakerProjectManagement", "Effect": "Allow", "Action": [ "sagemaker:CreateProject", "sagemaker:DeleteProject" ], "Resource": "arn:aws:sagemaker:studio-region
:studio-account
:project/*" } ] } -
-
選擇 [下一步],然後提供原則名稱。
-
選擇 建立政策。
如果您的 Amazon EMR 叢集和工作室或工作室傳統版部署在不同的 AWS 帳戶中,您可以在這兩個帳戶上設定許可。
在 Amazon EMR 帳戶
在部署 Amazon EMR 的帳戶上 (也稱為信任帳戶) 建立以下組態命名ASSUMABLE-ROLE
的自訂IAM角色:
-
許可:授予必要的許可
ASSUMABLE-ROLE
以允許存取 Amazon EMR 資源。 -
信任關係:將信任策略配置
ASSUMABLE-ROLE
為允許從 Studio 帳戶中獲得需要訪問權限的角色。
通過假設角色,工作室或工作室經典版可以臨時訪問它在 Amazon 中需要的許可EMR。
-
為角色建立新原則。
-
開啟位於 IAM 的 https://console.aws.amazon.com/sagemaker/
主控台。 -
在左側功能表中,選擇 [策略],然後選擇 [建立策略]
-
在JSON索引標籤中,新增具有權限的下列JSON原則:
-
AllowPresignedUrl
允許生成預先簽名,以URLs便從工作室內訪問 Spark UI。 -
AllowClusterDiscovery
並AllowClusterDetailsDiscovery
允許從 Studio 在帳戶/區域中列出和描述 Amazon EMR 集群。
Replace (取代)
emr-region
以及emr-account
在複製JSON到您的保單之前,請使用您的實際地區和 AWS 帳戶 ID 值。{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPresignedUrl", "Effect": "Allow", "Action": [ "elasticmapreduce:CreatePersistentAppUI", "elasticmapreduce:DescribePersistentAppUI", "elasticmapreduce:GetPersistentAppUIPresignedURL", "elasticmapreduce:GetOnClusterAppUIPresignedURL" ], "Resource": [ "arn:aws:elasticmapreduce:
emr-region
:emr-account
:cluster/*" ] }, { "Sid": "AllowClusterDetailsDiscovery", "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListInstances", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:DescribeSecurityConfiguration" ], "Resource": [ "arn:aws:elasticmapreduce:emr-region
:emr-account
:cluster/*" ] }, { "Sid": "AllowClusterDiscovery", "Effect": "Allow", "Action": [ "elasticmapreduce:ListClusters" ], "Resource": "*" } ] } -
-
為原則命名,然後選擇 [建立原則]。
-
-
建立名為的自訂IAM角色
ASSUMABLE-ROLE
,然後將新原則附加至該角色。-
在IAM主控台中,選擇左側功能表中的 [角色],然後選擇 [建立角色]。
-
針對信任的實體類型,選擇AWS 帳戶,然後選擇下一步。
-
選取您剛建立的權限,然後選擇 [下一步]。
-
命名您的角色,
ASSUMABLE-ROLE
然後選擇步驟 1:選取信任的實體右側的編輯按鈕。 -
針對 [信任的實體類型],選擇 [自訂信任原則],然後貼上下列信任關係。這將授予部署 Studio 的帳戶(受信任的帳戶)擔任此角色的權限。
Replace (取代)
studio-account
使用其實際 AWS 帳戶 ID。選擇 Next (下一步)。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
studio-account
:root" }, "Action": "sts:AssumeRole" } ] } -
尋找並選取您剛才建立的權限,然後選擇 [下一步]。
-
您的信任政策應該更新為JSON您粘貼的最新信任策略。選擇建立角色。
-
如需在 AWS 帳號上建立角色的詳細資訊,請參閱建立IAM角色 (主控台)。
在工作室帳戶
在部署 Studio 或 Studio Classic 的帳戶 (也稱為受信任帳戶) 上,以存取信任帳戶中的資源所需權限更新存取叢集的 SageMaker 執行角色。
注意
您應該考慮哪些執行角色?
Studio UI 會從與啟動它的使用者設定檔相關聯的執行角色來決定其權限。UI 會在啟動時設定這些權限。不過,啟動 JupyterLab 或 Studio 傳統版應用程式的空間可以有個別的權限。
若要跨應用程式 (例如 Studio UI 和 Studio 傳統版) 對 Amazon EMR 範本和叢集的一致存取權,請將相同的權限子集授予網域、使用者設定檔或空間層級的所有角色。 JupyterLab許可應允許探索和佈建 Amazon EMR 叢集。
-
尋找網域、使用者設定檔或空間的執行角色。如需如何擷取執行角色的資訊,請參閱取得您的執行角色。
-
開啟位於 IAM 的 https://console.aws.amazon.com/sagemaker/
主控台。 -
選擇 [角色],然後在 [搜尋] 欄位中輸入角色名稱,以搜尋您建立的角色。
-
點擊鏈接到您的角色。
-
選擇 [新增權限],然後選取 [建立內嵌原
-
在JSON索引標籤中,新增具有權限的下列JSON原則:
-
AllowEMRTemplateDiscovery
允許在 Service Catalog 中搜索 Amazon EMR 模板。工作室經典使用它來顯示可用的模板。 -
AllowSagemakerProjectManagement
允許創建和刪除。在中 SageMaker,對的存取 AWS Service Catalog 是透過管理的MLOps使用 SageMaker 專案自動化。
所提供的中定義的IAM原則會JSON授與這些權限。Replace (取代)
studio-region
以及studio-account
在將聲明列表複製到您的保單之前,請使用您的實際地區和 AWS 帳戶 ID 值。{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowEMRTemplateDiscovery", "Effect": "Allow", "Action": [ "servicecatalog:SearchProducts" ], "Resource": "*" }, { "Sid": "AllowSagemakerProjectManagement", "Effect": "Allow", "Action": [ "sagemaker:CreateProject", "sagemaker:DeleteProject" ], "Resource": "arn:aws:sagemaker:
studio-region
:studio-account
:project/*" } ] } -
-
選擇 [下一步],然後提供原則名稱。
-
選擇 建立政策。
-
重複此步驟,將另一個內嵌原則新增至 Studio 執行角色。此策略應允許跨帳號角色假設,以探查另一個帳號中的資源。
在您的執行角色詳細資料頁面上,選擇新增權限,然後選擇建立內嵌原則。
-
在JSON索引標籤中,新增下列JSON原則。
emr-account
使用 Amazon EMR 帳戶的帳戶 ID 更新。{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRoleAssumptionForCrossAccountDiscovery", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": ["arn:aws:iam::
emr-account
:role/ASSUMABLE-ROLE
" ] }] } -
選擇 [下一步],提供原則名稱,然後選擇 [建立原則]。
-
若要允許列出部署在與 Studio 相同帳戶中的 Amazon EMR 叢集,請將額外的內嵌政策新增至您的 Studio 執行角色 (如的「單一帳戶」索引標籤中所定義) 配置列出 Amazon EMR 群集。
在 Jupyter 伺服器ARN啟動時傳遞角色
最後,請參跨帳戶存取的其他組態閱以了解如何提供ASSUMABLE-ROLE
給您ARN的 Studio 執行角色。Jupyter 伺服器會在啟動時載入。ARNStudio 使用的執行角色假設該跨帳戶角色,以探索信任帳戶中的 Amazon EMR 叢集並連接。