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

问题描述 投票:0回答:2

当我进入 SageMaker 中的笔记本实例并在 linear_learner_mnist 示例中创建模型时,即使我具有附加了 AmazonSageMakerFullAccessAssumeRole 附加策略的角色,我也会收到错误。 当我将 AdministratorAccesspolicy 添加到角色时 - 一切正常。我在这里缺少什么?

角色存在并附加

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”担任该角色。

amazon-web-services amazon-iam amazon-sagemaker
2个回答
5
投票

令我惊讶的是,当您添加 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) 控制台中,我将上面的语句部分添加到我的角色的信任关系部分下的信任策略中,它为我修复了此错误。


1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.