SageMaker ClientError:调用CreateTrainingJob操作时发生错误(ValidationException):无法担任角色

时间:2019-05-21 14:41:27

标签: amazon-web-services amazon-iam amazon-sagemaker

当我在SageMaker中进入Notebook实例并在 linear_learner_mnist 示例中创建模型时,即使我具有 AmazonSageMakerFullAccess AssumeRole 的角色,我也会出错>附加政策。 当我向角色添加 AdministratorAccess 策略时-一切正常。我在这里想念什么?

P.S角色存在并附加了:)

Resources:
  SageMakerExecutionRole:
    Condition: RoleArnEmpty
    Type: "AWS::IAM::Role"
    Properties:
      AssumeRolePolicyDocument:
        Statement:
          - Effect: "Allow"
            Principal:
              Service:
                - "sagemaker.amazonaws.com"
            Action:
              - sts:AssumeRole
      ManagedPolicyArns:
        - "arn:aws:iam::aws:policy/AmazonSageMakerFullAccess"
      Path: "/service-role/"
      Policies:
        Fn::If:
        - S3BucketNotEmpty
        -
          - PolicyName: SageMakerS3BucketAccess
            PolicyDocument:
              Version: '2012-10-17'
              Statement:
                - Effect: Allow
                  Action:
                    - s3:*
                  Resource:
                    - !Sub 'arn:aws:s3:::${SageMakerS3Bucket}'
                    - !Sub 'arn:aws:s3:::${SageMakerS3Bucket}/*'
        - Ref: AWS::NoValue
  

ClientError:调用时发生错误(ValidationException)   CreateTrainingJob操作:无法担任角色   arn:aws:iam :: XXX:role / sagemaker-stack-SageMakerExecutionRole-1JT7AT4OPUK9R。   请确保该角色存在并允许委托人   “ sagemaker.amazonaws.com”担任该角色。

2 个答案:

答案 0 :(得分:1)

我尝试根据您提供的CloudFormation模板创建一个IAM角色,并获得了ARN的角色-arn:aws:iam :: xxx:role / service-role / test-iam-SageMakerExecutionRole-187YIQM7UMMXF。

我认为问题是您在创建培训工作时设置的角色ARN不正确。您可能需要在角色名称之前添加“ / service-role”。

答案 1 :(得分:0)

当您添加AdministratorAccess策略时,一切正常,我感到很惊讶。该错误及其纠正方法已在https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html中记录。

  

Amazon SageMaker用户可以使用IAM角色(称为执行角色)授予这些权限。在进行以下API调用时,用户将通过角色:CreateNotebookInstance,CreateHyperParameterTuningJob,CreateTrainingJob和CreateModel。

     

您将以下信任策略附加到IAM角色,该角色授予Amazon SageMaker主体角色承担该角色,并且对于所有执行角色都相同:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "sagemaker.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

在身份和访问管理(IAM)控制台中,我在角色的信任关系部分下的信任策略中添加了上面的语句部分,并为我解决了此错误。