创建 EMR 集群时出错,EMR 服务角色无效

Posted

技术标签:

【中文标题】创建 EMR 集群时出错,EMR 服务角色无效【英文标题】:Error when creating EMR cluster, EMR service role is invalid 【发布时间】:2020-05-12 01:05:08 【问题描述】:

我正在通过 cloudformation 和 lambda 函数创建一个 emr 集群。创建堆栈后,当我运行 lambda 函数时,它通过给 EMR 服务角色启动集群:无效错误。附上我的服务角色和工作流角色代码。这是我缺少的权限还是我应该给予的权限,以便我的 emr 开始执行这些步骤。

EMRClusterServiceRole:
    Type: 'AWS::IAM::Role'
    Properties:
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
        - Effect: Allow
          Principal:
            Service:
            - ec2.amazonaws.com
          Action:
          - 'sts:AssumeRole'
      ManagedPolicyArns:
            - arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role
      Path: /

  EMRClusterinstanceProfileRole: 
    Type: 'AWS::IAM::Role'
    Properties:
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
        - Effect: Allow
          Principal: 
            Service: 
            - ec2.amazonaws.com
          Action: 
          - 'sts:AssumeRole'
      ManagedPolicyArns: 
        - arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role
      Path: /

  EMRClusterinstanceProfile:
    Type: AWS::IAM::InstanceProfile
    Properties:
      Path: /
      Roles:
      - !Ref EMRClusterinstanceProfileRole

  EMRJobFlowProfileinstance: 
    Type: AWS::IAM::InstanceProfile
    Properties:
      Path: /
      Roles:
      - !Ref EMRJobFlowRole


  EMRJobFlowRole:       
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
        - Effect: Allow
          Principal: 
            Service: 
            - ec2.amazonaws.com
          Action: 
          - 'sts:AssumeRole'
      ManagedPolicyArns: 
        - arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role
      Path: /    

【问题讨论】:

EMRClusterServiceRole 有错误的缩进。不知道是由于复制粘贴到 SO 还是在您的代码中实际上是这样的。 在堆栈创建完成后创建角色。但是当创建 emr 时,它给了我上述错误。我还检查了缩进,看起来不错。 EMR 服务角色不应该在其信任策略中使用elasticmapreduce.amazonaws.com 吗? EMR 创建默认角色。检查它们,并与你的比较。 是的,当我添加策略时它起作用了 很高兴听到。如果您不介意,我会添加一个答案以供将来参考。 【参考方案1】:

基于 cmets,解决方案是使用 aselasticmapreduce.amazonaws.com 信任策略原则。

【讨论】:

以上是关于创建 EMR 集群时出错,EMR 服务角色无效的主要内容,如果未能解决你的问题,请参考以下文章

如何设置支持 Impala 的 EMR 集群?

如何在 EMR 上使用 MrJob 0.4.2 设置 IAM 角色

打开/关闭 AWS EMR 集群

Amazon EMR 服务与 EMR 集群

为啥我们在启用 Kerberos 的 EMR 集群上使用直线连接到 Hive 时使用 Hive 服务主体?

有没有办法将我的 DynamoDB 导出任务分组到一个 EMR 集群上?