使用 cloudformation 将 ec2 密钥对添加到 EMR 集群

Posted

技术标签:

【中文标题】使用 cloudformation 将 ec2 密钥对添加到 EMR 集群【英文标题】:adding ec2 key pair to EMR cluster using cloudformation 【发布时间】:2021-11-02 15:46:12 【问题描述】:

我正在尝试编写一个模板来使用 cloudformation 创建一个 EMR 集群。

到目前为止,我想出了这个

AWSTemplateFormatVersion: 2010-09-09

Parameters:
  SubnetId:
    Type: "String"
    Default: "subnet-0caca76de8cc43e70"
  ClusterName:
    Type: "String"
    Default: "Example_Three_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: 2
          InstanceType: !Ref ClusterInstanceType
          Market: ON_DEMAND
          Name: Core

Outputs:
  ClusterId:
    Value:
      Ref: EmrCluster
    Description: The ID of the EMR Cluster

我在其他地方创建了默认角色(目前不使用 cloudformation)

我想了解如何添加 EC2 密钥对,以便我可以通过 ssh 进入节点。

有什么帮助吗?

使用 cli 似乎更严格

aws emr create-cluster \
--name "MyCluster" \
--release-label emr-5.33.1 \
--applications Name=Spark \
--ec2-attributes KeyName=MyKey \
--instance-type m5.xlarge \
--instance-count 3 \
--use-default-roles

【问题讨论】:

【参考方案1】:

有Ec2KeyName参数:

EC2 密钥对的名称,可用于以用户名为“hadoop”的身份使用 SSH 连接到主节点。

【讨论】:

以上是关于使用 cloudformation 将 ec2 密钥对添加到 EMR 集群的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CloudFormation 将安全组添加到现有 EC2 实例

如何使用cloudformation模板将两个EC2实例(安装AMI创建的Elasticsearch)作为多节点?

Cloudformation + OpsWorks

如何修复与 AWS::CloudFormation::Init 一起创建 EC2 的 cloudformation 模板

如何使用 CloudFormation 在现有 EC2 实例上启动容器?

如何使用 CloudFormation 设置 EC2 实例连接?