如何对创建 SageMaker 特征组时的权限问题进行故障排除?

1 分钟阅读
0

我想创建 Amazon SageMaker 特征组,但我收到“AccessDenied”错误。

简短描述

SageMaker“AccessDenied”错误表明 AWS Identity and Access Management (IAM) 角色没有足够的权限来执行创建特征组操作。

当执行角色权限缺少以下信息或信息配置错误时,您会收到“AccessDenied”错误:

  • AmazonSageMakerFeatureStoreAccess 策略和 Amazon Simple Storage Service (Amazon S3) 存储桶命名要求
  • AWS Lake Formation 权限
  • AWS Key Management Service (AWS KMS) 策略
  • Amazon S3 存储桶策略

解决方法

**注意:**如果在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

要查看创建特征组时出现的详细的错误消息,请从终端运行以下命令,然后检查 FailureReason

$ aws sagemaker describe-feature-group --feature-group-name nameofthefeaturegroup

缺少 AmazonSageMakerFeatureStoreAccess 策略和 Amazon S3 存储桶命名要求

如果您的执行角色缺少 AmazonSageMakerFeatureStore 策略,请先查看附加到该执行角色的策略。然后,附加 AmazonSageMakerFeatureStoreAccess 策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetBucketAcl",
        "s3:PutObjectAcl"
      ],
      "Resource": [
        "arn:aws:s3:::*SageMaker*",
        "arn:aws:s3:::*Sagemaker*",
        "arn:aws:s3:::*sagemaker*"
      ]
    }
  ]
}

如果在添加 AmazonSageMakerFeatureStoreAccess 策略后特征组创建仍失败,请检查存储桶名称中是否包含“sagemaker”一词。此命名约定对于存储在 S3 存储桶中的 Amazon 托管式策略是必需的。

缺少 Lake Formation 权限

由于 AWS Lake Formation 权限不足,特征组创建失败。创建特征组时,会自动创建 AWS Glue 数据库。使用 SageMaker 创建的所有特征组都是在此 AWS Glue 数据库中以表的形式创建的。

确认执行角色具有创建 AWS Glue 数据库的权限。如果执行角色没有权限,请完成以下步骤:

  1. 打开 LakeFormation 控制台
  2. 在左侧边栏中,选择 Permissions(权限),然后选择 Data Permissions(数据权限)。
  3. 选择 Grant(授予)。
  4. principals(主体)下拉列表中选择 IAM execution role(IAM 执行角色),然后授予所需的权限。

**注意:**AWS Lake Formation 要求授权每个主体(用户或角色)对 Lake Formation 托管的资源执行操作。

有关授予数据库权限的详细信息,请参阅授予对与您的账户共享的数据库或表的权限

缺少 AWS KMS 策略

由于缺少 AWS KMS 策略,CreateFeatureGroup API 调用失败。要检查此问题,请查看执行角色的 IAM 策略,然后确认其是否附加了以下策略:

kms:GenerateDataKeykms:Decrypt
kms: Encrypt

如果在运行 AWS CLI 命令后看不到上述策略,请附加这些策略,然后重试。

S3 存储桶策略

由于 Amazon S3 存储桶策略阻止访问存储桶,因此出现“AccessDenied”错误。查看 S3 存储桶策略,然后检查用于创建特征组的执行角色是否有权访问该存储桶。

相关信息

授予资源链接权限

AWS 官方
AWS 官方已更新 8 个月前