Sagemaker 的 IAM 角色?
IAM Roles for Sagemaker?
我正在尝试让 AWS SageMaker 调用 AWS Comprehend。我在 SageMaker 中收到此消息:
ClientError: An error occurred (AccessDeniedException) when calling
the StartTopicsDetectionJob operation: User:
arn:aws:sts::545176143103:assumed-role/access-aws-services-from-sagemaker/SageMaker
is not authorized to perform: iam:PassRole on resource:
arn:aws:iam::545176143103:role/access-aws-services-from-sagemaker
创建Jupyter笔记本时,我使用了这个角色:
arn:aws:sagemaker:us-east-2:545176143103:notebook-instance/access-comprehend-from-sagemaker
...附加了以下政策:
我在 SageMaker 中使用相同的 IAM 角色:
data_access_role_arn = "arn:aws:iam::545176143103:role/access-aws-services-from-sagemaker"
看来我正在为角色提供它需要的所有访问权限。我该如何纠正这个错误?
根据您的错误,SageMaker 笔记本似乎存在权限问题,试图从没有明确权限的笔记本中更改 IAM 设置。
这里有几个选项可以解决这个问题:
选项 1:授予 SageMaker 笔记本权限以在运行时在笔记本内定义 IAM 角色。
在控制台中,单击左侧导航栏上的 Hosted Notebooks
,然后在 Permissions
下单击附加的 IAM 角色。在这里,您可以添加 IAMFullAccess
或 IAMReadOnlyAccess
等策略。当您尝试从笔记本中附加 IAM 角色时,这应该可以解决权限错误。
选项 2:明确定义您希望 SageMaker 在控制台中拥有的权限。
在控制台中,单击左侧导航栏上的 Hosted Notebooks
,然后在 Permissions
下单击附加的 IAM 角色。在这里,您可以直接添加资源权限策略(例如 Comprehend)。如果不将显式 IAM 访问策略附加到此角色,您将无法在运行时更改权限。
选项 3:两者
如果您想预定义对某些资源的访问权限,但也可能在试验期间添加其他资源权限,您可以同时执行步骤 1 和 2(在控制台中向托管笔记本添加 IAM + 其他资源权限,能够在实验期间内联更改您的 SageMaker IAM 角色)。
您需要添加 sts 完全访问权限才能让 Sagemaker 担任角色。
User: arn:aws:sts::545176143103:assumed-role
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"sts:DecodeAuthorizationMessage",
"sts:GetAccessKeyInfo",
"sts:GetCallerIdentity"
],
"Resource": "*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "sts:*",
"Resource": "*"
}
]
}
我正在尝试让 AWS SageMaker 调用 AWS Comprehend。我在 SageMaker 中收到此消息:
ClientError: An error occurred (AccessDeniedException) when calling the StartTopicsDetectionJob operation: User: arn:aws:sts::545176143103:assumed-role/access-aws-services-from-sagemaker/SageMaker is not authorized to perform: iam:PassRole on resource: arn:aws:iam::545176143103:role/access-aws-services-from-sagemaker
创建Jupyter笔记本时,我使用了这个角色:
arn:aws:sagemaker:us-east-2:545176143103:notebook-instance/access-comprehend-from-sagemaker
...附加了以下政策:
我在 SageMaker 中使用相同的 IAM 角色:
data_access_role_arn = "arn:aws:iam::545176143103:role/access-aws-services-from-sagemaker"
看来我正在为角色提供它需要的所有访问权限。我该如何纠正这个错误?
根据您的错误,SageMaker 笔记本似乎存在权限问题,试图从没有明确权限的笔记本中更改 IAM 设置。
这里有几个选项可以解决这个问题:
选项 1:授予 SageMaker 笔记本权限以在运行时在笔记本内定义 IAM 角色。
在控制台中,单击左侧导航栏上的 Hosted Notebooks
,然后在 Permissions
下单击附加的 IAM 角色。在这里,您可以添加 IAMFullAccess
或 IAMReadOnlyAccess
等策略。当您尝试从笔记本中附加 IAM 角色时,这应该可以解决权限错误。
选项 2:明确定义您希望 SageMaker 在控制台中拥有的权限。
在控制台中,单击左侧导航栏上的 Hosted Notebooks
,然后在 Permissions
下单击附加的 IAM 角色。在这里,您可以直接添加资源权限策略(例如 Comprehend)。如果不将显式 IAM 访问策略附加到此角色,您将无法在运行时更改权限。
选项 3:两者
如果您想预定义对某些资源的访问权限,但也可能在试验期间添加其他资源权限,您可以同时执行步骤 1 和 2(在控制台中向托管笔记本添加 IAM + 其他资源权限,能够在实验期间内联更改您的 SageMaker IAM 角色)。
您需要添加 sts 完全访问权限才能让 Sagemaker 担任角色。
User: arn:aws:sts::545176143103:assumed-role
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"sts:DecodeAuthorizationMessage",
"sts:GetAccessKeyInfo",
"sts:GetCallerIdentity"
],
"Resource": "*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "sts:*",
"Resource": "*"
}
]
}