我怀疑这与IAM角色比与Sagemaker有关。
我正在跟踪示例here
具体来说,当它发出呼叫时
tf_estimator.fit('s3://bucket/path/to/training/data')
我收到此错误
ClientError: An error occurred (AccessDenied) when calling the GetRole operation: User: arn:aws:sts::013772784144:assumed-role/AmazonSageMaker-ExecutionRole-20181022T195630/SageMaker is not authorized to perform: iam:GetRole on resource: role SageMakerRole
我的笔记本实例具有一个IAM角色。
该角色具有AmazonSageMakerFullAccess
策略。它还有一个类似这样的自定义政策
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::*"
]
}
]
}
我的输入文件和.py脚本位于s3存储桶中,其中带有短语sagemaker
。
我还想念什么?
答案 0 :(得分:1)
这不是S3存储桶策略的问题,但是对于IAM,您选择的用户角色具有附加的策略,该策略不授予其管理其他IAM角色的权限。您需要确保所使用的角色可以管理(创建,读取,更新)IAM角色。
希望这会有所帮助!
答案 1 :(得分:1)
如果在SageMaker笔记本实例上运行示例代码,则可以使用附加了AmazonSageMakerFullAccess
的execution_role。
from sagemaker import get_execution_role
sagemaker_session = sagemaker.Session()
role = get_execution_role()
并且您可以在初始化tf_estimator
时通过此角色。
您可以在此处查看示例[1],该示例在笔记本实例上将execution_role
与S3一起使用。
[1] https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-ex-role.html