如何使AWS Sagemaker中的IAM角色错误消失?

时间:2018-11-22 02:27:05

标签: amazon-web-services amazon-iam amazon-sagemaker

我怀疑这与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

我还想念什么?

2 个答案:

答案 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