You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过CloudFormation为EMR集群添加EC2密钥对以支持SSH登录

修改方法

你只需要对现有模板做两处调整即可实现SSH密钥对的配置,对应CLI命令里的--ec2-attributes KeyName=MyKey参数效果:

1. 新增密钥对参数

在Parameters代码块中新增EC2密钥对的参数配置:

Parameters:
  # 原有其他参数保持不变
  Ec2KeyName:
    Type: "AWS::EC2::KeyPair::KeyName"
    Description: 用于SSH登录EMR集群节点的EC2密钥对名称
    Default: "MyKey" # 可替换为你常用的密钥对默认名称

2. 关联密钥对到EMR集群配置

找到EmrCluster资源下Properties.Instances配置块,新增Ec2KeyName字段引用上面的参数:

Resources:
  EmrCluster:
    Type: AWS::EMR::Cluster
    Properties:
      # 原有其他属性保持不变
      Instances:
        TerminationProtected: false
        Ec2SubnetId: !Ref SubnetId
        Ec2KeyName: !Ref Ec2KeyName # 新增的密钥对关联配置
        MasterInstanceGroup:
          # 原有主节点配置保持不变
        CoreInstanceGroup:
          # 原有核心节点配置保持不变

修改后完整模板

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"
  Ec2KeyName:
    Type: "AWS::EC2::KeyPair::KeyName"
    Description: 用于SSH登录EMR集群节点的EC2密钥对名称
    Default: "MyKey"

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
        Ec2KeyName: !Ref Ec2KeyName
        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

注意事项

  • 你需要提前在对应AWS区域创建好EC2密钥对,部署模板时可以直接在参数下拉列表中选择已有的密钥对
  • 集群启动成功后,使用密钥对对应的私钥文件,以hadoop用户身份登录主节点即可,命令示例:ssh -i /path/to/your/key.pem hadoop@<EMR主节点公网IP>
  • 请确保集群关联的安全组已经放开22端口的入站规则,否则SSH连接会被拒绝

内容的提问来源于stack exchange,提问作者bruvio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 16:06:07