SageMaker ClientError: произошла ошибка (ValidationException) при вызове операции CreateTrainingJob: не удалось принять роль

Когда я перехожу к экземпляру Notebook в SageMaker и создаю модель в примере 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 взять на себя эту роль.


person Ivan Shelonik    schedule 21.05.2019    source источник


Ответы (2)


Я удивлен, что при добавлении политики 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) я добавил приведенный выше раздел инструкций в политику доверия в разделе доверительных отношений моей роли, и он исправил эту ошибку для меня.

person balast    schedule 07.08.2019

Я попытался создать роль IAM на основе предоставленного вами шаблона CloudFormation и получил роль с ARN - arn: aws: iam :: xxx: role / service-role / test-iam-SageMakerExecutionRole-187YIQM7UMMXF.

Я думаю, проблема в том, что роль ARN, которую вы задали при создании учебного задания, неверна. Вероятно, вам нужно добавить "/ service-role" перед именем роли.

person Alohahaha    schedule 03.07.2019