在 AWS Service Catalog 中配置 Amazon EMR 模板(面向管理员) - Amazon SageMaker

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 AWS Service Catalog 中配置 Amazon EMR 模板(面向管理员)

本节详细介绍管理员如何配置AWS Service Catalog产品,以便用户可以从 Amazon Studio Classic 笔记本电脑中独立自行配置 A SageMaker mazon EMR 集群。此外,管理员可以配置 Amazon EMR 集群模板,以便最终用户可以对集群的各个方面进行自定义,以满足其特定要求。例如,管理员可以定义允许的实例类型列表,用户在创建集群时可以从中进行选择。

本主题假设您熟悉 AWS Service Catalog中的产品组合和产品的创建,以及 Amazon EMRAWS CloudFormation

注意

您可以将 aws-samples/sagemaker-studio-emr 存储库中的 AWS CloudFormation 模板 GitHub 作为部署 IAM 角色、Amazon VPC、沙盒 Studi o Classic 域、用户个人资料以及启动亚马逊 EMR 集群的模板的堆栈 CloudFormation 示例。 CloudFormation 根据您在 Studio Classic 和 Amazon EMR 集群之间的身份验证方法,有几个选项可供选择。在这些示例中,父 CloudFormation模板将 SageMaker VPC ID、安全组和子网 ID 参数传递给 Amazon EMR 集群的 CloudFormation 模板。

你可以在嵌套存储库 sagemaker-studio-emr/cloudformation/emr_servicecatalog_templates 中访问各种 CloudFormation 亚马逊 EMR 模板示例,还可以从单一账户部署到跨账户部署中进一步进行选择。

有关连接到 Amazon EMR 集群时可用的身份验证方法的更多信息,请参阅使用 Studio Classic 笔记本电脑中的 Amazon EMR 集群

为了简化 Amazon EMR 集群的创建,管理员可以将 Amazon EMR 集群的CloudFormation 模板注册为产品组合中的产品。 AWS Service Catalog然后,他们将 Service Catalog 产品组合与 Studio Classic 执行角色相关联,以确保模板在 Studio Classic 中可用。此外,为了确保数据科学家能够从他们的 Studio Classic 笔记本电脑发现这些模板、配置 Amazon EMR 集群并连接到 Amazon EMR 集群,管理员需要设置适当的访问权限。

以下列表提供了管理员为使 Studio Classic 能够访问服务目录产品和配置 Amazon EMR 集群而需要应用于基准 CloudFormation 堆栈的其他设置。这些设置必须在多个级别应用:

  • 在 Service Catalog 产品组合中

  • 在 Service Catalog 产品中

  • 在声明为 Service Catalog 产品的 CloudFormation 亚马逊 EMR 模板中

最后,管理员必须根据 Studio Classic 和 Amazon EMR 属于相同账户还是不同账户,为访问集群的 Studio Classic 执行角色和部署 Amazon EMR 的账户分配所需的权限。 AWS

  • 先决条件:联网和身份验证要求

    作为先决条件,请确保您已查看中的网络和安全要求,配置联网(面向管理员)并已创建支持所选身份验证方法的基准 CloudFormation 堆栈。你可以在 aws-samples/sagemaker-studio- CloudFormation emr 中找到模板的示例。

  • 在 Service Catalog 产品组合中:

    将以下部分添加到您的投资组合 CloudFormation 模板中(参见 YAML 格式的示例),以将您的投资组合与访问您的集群的 Studio Classic 执行角色相关联。

    SageMakerStudioEMRProductPortfolioPrincipalAssociation: Type: AWS::ServiceCatalog::PortfolioPrincipalAssociation Properties: PrincipalARN: SageMakerExecutionRole.Arn PortfolioId: SageMakerStudioEMRProductPortfolio ID PrincipalType: IAM
  • 在 Service Catalog 产品中:

    将以下标签键添加到引用 Amazon EMR "sagemaker:studio-visibility:emr" 模板资源的 Service Catalog 产品中,并将标签键的值设置为 "true"(此处为 YAML 格式)。这样可以确保模板在 Studio Classic 中的可见性。

    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-ml-blog.s3.amazonaws.com/artifacts/astra-m4-sagemaker/end-to-end/CFN-EMR-NoStudioNoAuthTemplate-v3.yaml Tags: - Key: "sagemaker:studio-visibility:emr" Value: "true"
  • 在您的 Service Catalog 产品中的 Amazon EMR 集群 CloudFormation 模板中:

    将以下必需的堆栈参数添加为占位符。此部分填充了用户在从 Studio Classic 置备集群时使用的 Studio Classic 项目名称和标识符。

    SageMakerProjectName: Type: String Description: Name of the project SageMakerProjectId: Type: String Description: Service generated Id of the project.

    管理员可以指定 DefaultAllowedValues 以在模板的参数部分中包含选项,从而允许用户在创建集群时输入或选择自定义值。以下示例说明了管理员在创建 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" ] } }
  • 最后,附上所需的 IAM 策略,以便能够查看 A CloudFormation mazon EMR 模板并通过 Studio Classic 笔记本电脑自行配置亚马逊 EMR 集群。您必须将这些策略添加到哪个角色取决于 Studio Classic 和 Amazon EMR 部署在同一个账户(单个账户)中还是部署在不同的账户(跨账户)中。

    • 如果您的 Amazon EMR 集群与 Studio Classic AWS 账户部署在同一个账户中,请参阅 “单一账户” 选项卡。

    • 如果您的 Amazon EMR 集群部署在与 Studio Classic AWS 账户不同的账户中,请参阅 “跨账户” 选项卡。

    有关使用角色进行跨账户存取的更多信息,请参阅 IAM 中的跨账户资源访问跨账户策略评估逻辑

    Single account

    将以下权限附加到 Studio Classic 执行角色访问您的集群。

    以下列表提供了所需权限的明细。

    • AllowEMRTemplateDiscovery 允许 Amazon EMR 模板被发现。

    • AllowSagemakerProjectManagement允许创建SageMaker 项目。在 Studio Classic 中,访问权限 AWS Service Catalog 是通过项目授予的。

    • AllowClusterDetailsDiscoveryAllowClusterDiscovery 允许发现并连接到 Amazon EMR 集群。

    • AllowPresignedUrl 允许创建用于访问 Spark UI 的预签名网址。

    以下是包含这些权限的综合 JSON。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPresignedUrl", "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListInstanceGroups", "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/*" }, ] }
    Cross accounts

    如果您的 Amazon EMR 集群和 Studio Classic 部署在不同的 AWS 账户中,则需要分多个步骤配置权限。

    • 信任账户(部署 Amazon EMR 的账户)上,创建具有以下权限和信任关系的自定义 IAM 角色(在本页中称为 ASSUMABLE-ROLE)。

      有关在 AWS 账户上创建角色的信息,请参阅为创建 IAM 角色(控制台)

      1. 添加 IAM 策略,定义以下权限。

        • AllowClusterDetailsDiscoveryAllowClusterDiscovery,以允许发现并连接到 Amazon EMR 集群。

        • AllowPresignedUrl,以允许创建用于访问 Spark UI 的预签名 URL。

        以下是包含这些权限的综合 JSON。

        { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPresignedUrl", "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListInstanceGroups", "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": "*" } ] }
      2. 要向可信账户(部署 Studio Classic 的账户)授予在信任账户中扮演角色的权限,请包括以下信任关系。

        { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio-account:root" }, "Action": "sts:AssumeRole" } ] }
    • 可信账户(部署 Studio Classic 的账户)上,向 Studio Classic 执行角色添加以下权限和信任关系。

      1. 添加 IAM 策略,定义以下权限。

        • AllowSagemakerProjectManagement允许创建SageMaker 项目。在 Studio Classic 中,访问权限 AWS Service Catalog 是通过项目授予的。

        • AllowEMRTemplateDiscovery,以允许 Amazon EMR 模板可被发现。

        以下是包含这些权限的综合 JSON。

        { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSagemakerProjectManagement", "Effect": "Allow", "Action": [ "sagemaker:CreateProject", "sagemaker:DeleteProject" ], "Resource": "arn:aws:sagemaker:::project/*" }, { "Sid": "AllowEMRTemplateDiscovery", "Effect": "Allow", "Action": [ "servicecatalog:SearchProducts" ], "Resource": "*" } ] }
      2. 要授予 Studio Classic 执行角色代ASSUMABLE-ROLE信任账户的权限,请包括以下信任关系。

        { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRoleAssumptionForCrossAccountDiscovery", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": ["arn:aws:iam::emr-account:role/ASSUMABLE-ROLE" ] }] }
    • 最后,请参阅,了解针对跨账户使用场景的其他配置(面向管理员)如何向 Studio Classic 执行角色提供 ARN。ASSUMABLE-ROLEARN 在启动时由 Studio Classic Jupyter 服务器加载。Studio Classic 执行角色扮演该跨账户角色,在信任账户中发现并连接到 Amazon EMR 集群。

一旦这些 CloudFormation 模板在 Amazon SageMaker Studio Classic 中可用,数据科学家就可以用它们自行配置 Amazon EMR 集群。模板中"Parameters"指定的每个内容都将成为 Studio Classic 集群创建形式中的一个输入框,相应的"AllowedValues"内容出现在下拉菜单中。

下图显示了根据 CloudFormation亚马逊 EMR 模板组装而成的动态表单,用于在 Studio Classic 中创建亚马逊 EMR 集群。 SageMaker

在 Studio Classic 中根据 CloudFormation 亚马逊 EMR 模板组装而成的动态表单的插图,用于创建亚马逊 EMR 集群。 SageMaker

请访问从 Studio Classic 启动亚马逊 EMR 集群,了解如何使用这些 Amazon EMR 模板从 Studio Classic 启动集群。