无法使用EC2 IAM角色的临时凭证启动EMR作业流

qww*_*wwq 10 amazon-web-services amazon-emr

我有一个已分配EC2 IAM角色的实例.我无法使用具有角色分配实例的临时凭证从此实例创建EMR作业流,我从API获得以下响应:

  <Error>
    <Type>Sender</Type>
    <Code>ValidationError</Code>
    <Message>Service role and InstanceProfile are required for calls made with temporary credentials provided by STS</Message>
  </Error>
Run Code Online (Sandbox Code Playgroud)

谷歌搜索此错误消息绝对没有透露.无论是使用AWS CLI还是boto直接使用,我都会从API获得相同的响应.为了尝试遵循此错误消息的建议,我尝试传递{InstanceProfile: <instance_profile_name>}给boto中api_paramsrun_jobflow方法的参数,但仍然得到相同的错误.我也试过使用service_role参数run_jobflow,也失败了.将两者一起传递也失败了.

根据亚马逊文档的这个页面,EMR应该支持STS和EC2 IAM角色,所以想知道是否有人以前有这个工作.

Rom*_*cki 3

我在java中得到了这个工作。和 Sam 一样,我指定了服务角色和工作流角色。令我惊讶的是,有关 InstanceProfile 的错误要求我设置作业流程角色。前任:

myRunJobFlowRequest.setServiceRole("EMR_DefaultRole");
myRunJobFlowRequest.setJobFlowRole("EMR_EC2_DefaultRole")
Run Code Online (Sandbox Code Playgroud)

我做的另一件事是在我的云形成模板中,我向我的实例角色授予了 AmazonElasticMapReduceFullAccess 策略。前任:

"Policies": [
          {
            "PolicyName": "AmazonElasticMapReduceFullAccess",
            "PolicyDocument": {
              "Statement": [
                {
                  "Effect": "Allow",
                  "Action": "*",
                  "Resource": "*"
                }
              ]
            }
          }
Run Code Online (Sandbox Code Playgroud)

  • 此策略允许受影响的资源执行他们喜欢的任何 AWS 操作。这可能有点过分了。 (3认同)