我想创建 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 数据库的权限。如果执行角色没有权限,请完成以下步骤:
- 打开 LakeFormation 控制台。
- 在左侧边栏中,选择 Permissions(权限),然后选择 Data Permissions(数据权限)。
- 选择 Grant(授予)。
- 从 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 存储桶策略,然后检查用于创建特征组的执行角色是否有权访问该存储桶。
相关信息
授予资源链接权限