当前位置: 首页 > 知识库问答 >
问题:

创建SageMaker模型时的ValidationError

严易安
2023-03-14

我是AWS新手,尝试通过参考他们的演示来构建模型(从web控制台)。然而,当我尝试创建模型时,它给出了以下错误。

无法访问位于https://s3.console.aws.amazon.com/s3/buckets/bucket\u name/models/model\u name-v0。1.hdf5 请确保角色“arn:aws:iam::id:role/service role/AmazonSageMaker ExecutionRole xxx”存在,并且其信任关系策略允许服务主体“sagemaker.amazonaws.com”执行“sts:AssumeRole”操作。还要确保角色具有“s3:GetObject”权限,并且对象位于eu-west-1中。

我检查了IAM角色,它附带了AmazonSageMakerFullAccessAmazonS3FullAccess策略。此外,还为角色指定了信任关系(如下所示)。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "sagemaker.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

我正在正确指定ECR和S3路径,但我不知道发生了什么。有人能帮我解决这个问题吗?

对不起,如果我不能提供更多的信息,但我会提供任何其他信息,如果需要的话。

更新:

以下是IAM政策。

AmazonS3FullAccess

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "*"
        }
    ]
}

亚马逊管理者执行政策xxx

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::<bucket_name>"
            ]
        },
        {
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::<bucket_name>/*"
            ]
        }
    ]
}

AmazonSageMakerFullAccess

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sagemaker:*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "ecr:BatchCheckLayerAvailability",
                "cloudwatch:PutMetricData",
                "cloudwatch:PutMetricAlarm",
                "cloudwatch:DescribeAlarms",
                "cloudwatch:DeleteAlarms",
                "ec2:CreateNetworkInterface",
                "ec2:CreateNetworkInterfacePermission",
                "ec2:DeleteNetworkInterface",
                "ec2:DeleteNetworkInterfacePermission",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeVpcs",
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups",
                "application-autoscaling:DeleteScalingPolicy",
                "application-autoscaling:DeleteScheduledAction",
                "application-autoscaling:DeregisterScalableTarget",
                "application-autoscaling:DescribeScalableTargets",
                "application-autoscaling:DescribeScalingActivities",
                "application-autoscaling:DescribeScalingPolicies",
                "application-autoscaling:DescribeScheduledActions",
                "application-autoscaling:PutScalingPolicy",
                "application-autoscaling:PutScheduledAction",
                "application-autoscaling:RegisterScalableTarget",
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:DescribeLogStreams",
                "logs:GetLogEvents",
                "logs:PutLogEvents"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::*SageMaker*",
                "arn:aws:s3:::*Sagemaker*",
                "arn:aws:s3:::*sagemaker*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:GetBucketLocation",
                "s3:ListBucket",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "*",
            "Condition": {
                "StringEqualsIgnoreCase": {
                    "s3:ExistingObjectTag/SageMaker": "true"
                }
            }
        },
        {
            "Action": "iam:CreateServiceLinkedRole",
            "Effect": "Allow",
            "Resource": "arn:aws:iam::*:role/aws-service-role/sagemaker.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_SageMakerEndpoint",
            "Condition": {
                "StringLike": {
                    "iam:AWSServiceName": "sagemaker.application-autoscaling.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "sagemaker.amazonaws.com"
                }
            }
        }
    ]
}

共有1个答案

亢正德
2023-03-14

我认为sagemaker执行策略缺少桶级权限。尝试添加“arn:aws:s3::

{“版本”:“2012-10-17”,“声明”:[{“操作”:[“s3:ListBucket”],“效果”:“允许”,“资源”:[“arn:aws:s3:::

我使用SageMaker执行策略运行了演示,如下所示,它运行正常。这是非常宽松的政策。一旦工作,您可以根据您的bucket名称更改它。

{"Version":"2012-10-17","语句": [ { "效果":"允许","Action":["s3: GetObject","s3: PutObject","s3: DeleteObject","s3: ListBucket"],"Resources":["arn: aws: s3:::*"]} ] }

 类似资料:
  • 模型创建 简介 在 JavaScript 中获取 model 的引用 在 JavaScript 文件中 在 boot script 中 简介 你可以通过任何方式创建 Loopback 的 model, 取决使用什么样的数据源. 使用$slc loopback:model 创建自定义 Model 使用 Datasource.buildModelFromInstance() 动态创建 无模式(sche

  • 如何知道django模型的一个实例何时在sqlite中创建了?我尝试了许多方法,但是我不知道或不知道我的数据库实例是何时创建的 从datetime导入datetime,time delta time _ threshold = datetime . now()-time delta(hours = 4)results = x . objects . filter(created _ _ lt =

  • 我可以在AWS Sagemaker中通过评估模型来训练多个模型train.py脚本,以及如何从多个模型中获取多个指标? 任何链接、文档或视频都很有用。

  • Entity Framework 使用一组惯例来构建基于实体类型的形状的模型。你可以指定额外的配置来补充或者覆盖被惯例所发现的内容 本文介绍的配置可以应用于针对任何数据存储的模型,并且可以应用于任何关系数据库。提供程序还可以启用为特定数据存储指定的的配置。查看 数据库提供程序 可了解提供程序指定配置的相关内容。 提示 你可以在 GitHub 上查阅当前文章涉及的代码样例。 方法和配置 流式API

  • 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。 创建型模式在创建什么(What),由谁创建(Who),何时创建(When)等方面都为软件设计者提供了尽可能大的灵活性。创建型模式隐藏了类的实例的

  • 我有一个类似Sagemaker的培训脚本, 其中大部分都是我从MNIST的例子中偷来的。 当我训练的时候,一切都很顺利,但是当我试着像, 我得到(完整输出) 在我的S3桶中,我实际上没有看到模型。 我错过了什么?