当我在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”担任该角色。
答案 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)控制台中,我在角色的信任关系部分下的信任策略中添加了上面的语句部分,并为我解决了此错误。