当前的AWS身份不是sagemaker的角色吗?

时间:2017-12-08 08:43:30

标签: amazon-web-services amazon-sagemaker

当我从python中的sagemaker调用get_execution_role()时,我收到错误。 我已经附加了相同的错误。 enter image description here

我已将SagemakerFullAccess政策添加到角色和用户。

3 个答案:

答案 0 :(得分:9)

get_execution_role()Amazon SageMaker Examples GitHub repository中使用的函数助手。

这些示例是从Amazon SageMaker提供的完全托管的Jupyter笔记本中执行的。

从这些笔记本中, get_execution_role()将返回作为笔记本创建过程中传入的IAM角色名称。这样可以在不更改代码的情况下执行笔记本示例。

从这些笔记本外部, get_execution_role()将返回异常,因为它不知道SageMaker所需的角色名称是什么。

要解决此问题,请传递IAM角色名称,而不是使用get_execution_role()。

而不是:

role = get_execution_role()

kmeans = KMeans(role=role,
                train_instance_count=2,
                train_instance_type='ml.c4.8xlarge',
                output_path=output_location,
                k=10,
                data_location=data_location)

你需要这样做:

role = 'role_name_with_sagemaker_permissions'

kmeans = KMeans(role=role,
                train_instance_count=2,
                train_instance_type='ml.c4.8xlarge',
                output_path=output_location,
                k=10,
                data_location=data_location)

答案 1 :(得分:4)

我挣扎了一段时间并且有一些不同的部分,但我相信这些是要解决的步骤(根据这个doc

您必须在aws配置文件中添加角色。转到终端并输入:

~/.aws/config

添加您自己的个人资料

[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadmin
source_profile = default

然后在AWS仪表板中编辑信任关系:

enter image description here

添加此内容并更新:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "sagemaker.amazonaws.com",
        "AWS": "arn:aws:iam::XXXXXXX:user/YOURUSERNAME"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

最后,我点击了

的链接
  

将此链接提供给可以在控制台中切换角色的用户

添加我的凭据后 - 它有效。

答案 2 :(得分:0)

感谢您试用SageMaker!

您看到的例外情况已经说明了原因。您使用的凭据不是角色凭证,但很可能是用户。 用户'的格式凭证将如下所示:

' ARN:AWS:IAM :: ACCID:用户/名称'而不是角色: ' ARN:AWS:IAM :: ACCID:角色/名称'

希望这有帮助!