为 Amazon EMR Studio 创建 Amazon CloudFormation 模板 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

为 Amazon EMR Studio 创建 Amazon CloudFormation 模板

关于 EMR Studio 集群模板

您可以创建 Amazon CloudFormation 模板以帮助 EMR Studio 用户在 Workspace 启动新的 Amazon EMR 集群。CloudFormation 模板是 JSON 或 YAML 格式的文本文件。在模板中,您描述了 Amazon 资源堆栈并告知 CloudFormation 如何为您预置这些资源。针对 EMR Studio,您可以创建一个或多个描述 Amazon EMR 集群的模板。

您在 Amazon Service Catalog 中组织模板,Amazon Service Catalog以便您可以创建并管理常用部署的 IT 服务,该服务名为 Amazon 的产品。您将模板作为产品收集到与 EMR Studio 用户共享的文件夹。创建集群模板后,Studio 用户可以使用其中一个模板为 Workspace 启动新集群。用户必须具有从模板创建新集群的权限。您可以在 EMR Studio 权限策略 设置用户权限。

要了解有关 CloudFormation 模板的更多信息,请参阅《Amazon CloudFormation 用户指南》中的模板。有关 Amazon Service Catalog 的更多信息,请参阅什么是 Amazon Service Catalog。​

以下视频演示了如何为 Amazon EMR Studio 设置 Amazon Service Catalog 的集群模板。如果您想了解详情,还可参阅博文 Build a self-service environment for each line of business using Amazon EMR and Amazon Service Catalog

可选模板参数

您可以在模板的Parameters部分添加额外选项。参数允许 Studio 用户为集群输入或选择自定义值。例如,您可以添加允许用户选择特定 Amazon EMR 版本的参数。有关更多信息,请参阅《Amazon CloudFormation 用户指南》中的参数

以下示例 Parameters 部分定义了其他输入参数,例如 ClusterNameEmrRelease 版本和 ClusterInstanceType

Parameters: SubnetId: Type: "String" ClusterName: Type: "String" Default: "Cluster_Name_Placeholder" EmrRelease: Type: "String" Default: "emr-6.2.0" AllowedValues: - "emr-6.2.0" - "emr-5.32.0" ClusterInstanceType: Type: "String" Default: "m5.xlarge" AllowedValues: - "m5.xlarge" - "m5.2xlarge"

添加参数时,Studio 用户在选择集群模板后会看到其他表单选项。下图为 EmrRelease 版本、ClusterNameInstanceType 提供了以下的其他表单选项。


              用户选择带参数的集群模板时 Studio 用户界面中的额外输入屏幕截图。

Prerequisites

在创建集群模板之前,请确保您具有访问 Amazon Service Catalog 管理员控制台视图的 IAM 权限。您还需要 IAM 权限才能执行 Amazon Service Catalog 管理任务。有关更多信息,请参阅向 Amazon Service Catalog 管理员授予权限

Instructions

创建 EMR 集群模板 – 使用 Amazon Service Catalog

  1. 创建一个或多个 CloudFormation 模板。您可以随意选择存储模板的位置。由于模板是格式化的文本文件,因此您可以将它们上传到 Amazon S3 或保存在本地文件系统。要了解有关 CloudFormation 模板的更多信息,请参阅《Amazon CloudFormation 用户指南》中的模板

    使用以下规则来命名您的模板,或根据模式 [a-zA-Z0-9][a-zA-Z0-9._-]* 检查您的名称。

    • 模板名称必须以字母或数字开头。

    • 模板名称只能包含字母、数字、句点 (.)、下划线 (_) 和连字符 (-)。

    每个您创建的集群模板都必须包括以下选项:

    输入参数

    • SubnetId – 将在其中启动集群的子网 ID。EMR Studio 将该值输入 Workspace 的子网 ID。

      重要

      指定子网时,在整个集群模板中使用 SubnetId 参数名称。EMR Studio 不支持类似于实例机群的 Amazon EMR 集群功能的多个子网。

    • ClusterName – 集群的名称,用于帮助用户在预置集群后识别集群。

    输出

    • ClusterId – 新预置的 EMR 集群的 ID。

    以下是 YAML 格式的示例 Amazon CloudFormation 模板,适用于有两个节点的集群。示例模板包括所需的模板选项,定义了 EmrReleaseClusterInstanceType 的其他输入参数。

    AWSTemplateFormatVersion: 2010-09-09 Parameters: SubnetId: Type: "String" ClusterName: Type: "String" Default: "Example_Two_Node_Cluster" EmrRelease: Type: "String" Default: "emr-6.2.0" AllowedValues: - "emr-6.2.0" - "emr-5.32.0" ClusterInstanceType: Type: "String" Default: "m5.xlarge" AllowedValues: - "m5.xlarge" - "m5.2xlarge" Resources: EmrCluster: Type: AWS::EMR::Cluster Properties: Applications: - Name: Spark - Name: Livy - Name: JupyterEnterpriseGateway - Name: Hive EbsRootVolumeSize: '10' Name: !Ref ClusterName JobFlowRole: EMR_EC2_DefaultRole ServiceRole: EMR_DefaultRole ReleaseLabel: !Ref EmrRelease VisibleToAllUsers: true LogUri: Fn::Sub: 's3://aws-logs-${AWS::AccountId}-${AWS::Region}/elasticmapreduce/' Instances: TerminationProtected: false Ec2SubnetId: !Ref SubnetId MasterInstanceGroup: InstanceCount: 1 InstanceType: !Ref ClusterInstanceType CoreInstanceGroup: InstanceCount: 1 InstanceType: !Ref ClusterInstanceType Market: ON_DEMAND Name: Core Outputs: ClusterId: Value: Ref: EmrCluster Description: The ID of the EMR Cluster
  2. 在与您的 Studio 相同的 Amazon 账户中为您的集群模板创建一个产品组合。

    1. 打开 Amazon Service Catalog 控制台:https://console.aws.amazon.com/servicequotas/

    2. 从左侧导航菜单中,选择 Portfolios (产品组合)

    3. Create portfolio (创建产品组合) 页面输入所需信息。

    4. 选择 Create (创建)。Amazon Service Catalog 创建产品组合并显示产品组合详细信息。

  3. 使用以下步骤将集群模板添加为 Amazon Service Catalog 产品。

    1. 在 Amazon Service Catalog 管理控制台,导航到 Administration (管理) 下面的 Products(产品) 页面。

    2. 选择 Upload new product (上传新产品)

    3. 输入 Product name (产品名称) Owner (拥有者)

    4. Version details (详细版本) 指定模板文件。

    5. 选择 Review (审核),查看您的产品设置,然后选择 Create product (创建产品)

  4. 完成以下步骤,将产品添加到产品组合。

    1. 导航到 Amazon Service Catalog 管理控制台的 Products (产品) 页面。

    2. 选择您的产品,选择 Actions (操作),然后选择 Add product to portfolio (添加产品至产品组合)

    3. 选择您的产品组合,然后选择 Add product to portfolio (添加产品至产品组合)

  5. 为您的产品创建启动约束。启动约束是指定用户启动产品权限的 IAM 角色。您可以定制启动约束,但必须通过 CloudFormation、Amazon EMR 和Amazon Service Catalog授予权限。有关更多信息和说明,请参阅 Amazon Service Catalog launch constraints (启动约束)

  6. 将启动约束应用于产品组合中的每个产品。您必须将启动约束分别应用于每个产品。

    1. 从 Amazon Service Catalog 管理控制台的 Portfolios (产品组合) 页面选择产品组合。

    2. 选择 Constraints (约束) 选项卡并选择 Create constraint (创建约束)

    3. Constraint type (约束类型) 下,选择产品,然后选择 Launch (启动)。选择 Continue (继续)

    4. 选择 Launch constraint (启动约束) 部分中的启动约束角色,然后选择Create (创建)

  7. 授予对产品组合的访问权限。

    1. 从 Amazon Service Catalog 管理控制台的 Portfolios (产品组合) 页面选择产品组合。

    2. 展开 Groups, roles, and users (组、角色和用户) 选项卡然后选择 Add groups, roles, users (添加组、角色和用户)

    3. Roles (角色)选 项卡搜索 EMR Studio IAM 角色,选择角色,然后选择 Add access (添加访问)

      如果您使用… 授予对…的访问权限
      IAM 身份验证 您的本地 IAM 用户
      IAM 联合身份验证 联合身份验证的 IAM 角色
      Amazon Web Services SSO 联合身份验证 您的 EMR Studio 用户角色