我正在尝试创建 Amazon SageMaker 功能组,但我收到了“AccessDenied”错误。
简短描述
SageMaker“AccessDenied”错误表明 AWS Identity and Access Management(IAM)角色没有足够的权限来执行创建功能组操作。当执行角色权限缺失或配置错误时,您可能会收到“AccessDenied”错误:
- 缺少 AmazonSageMakerFeatureStoreAccess 策略和 Amazon Simple Storage Service(Amazon S3)存储桶命名要求
- 缺少 LakeFormation 权限
- 缺少 AWS Key Management Service(AWS KMS)策略
- Amazon S3 存储桶策略
解决方法
**注意:**如果您在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请确保您使用的是最新版本的 AWS CLI。
要在创建功能组时查看详细的错误消息,请从终端运行以下命令,然后检查 FailureReason:
$ aws sagemaker describe-feature-group --feature-group-name nameofthefeaturegroup
缺少 AmazonSageMakerfeatureStoreAccess 策略和 Amazon S3 存储桶命名要求
您正在使用的执行角色可能缺少 Amazon 管理的 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 策略,功能组的创建也可能失败。由于该策略是存储在 S3 存储桶中的 Amazon 托管策略,该存储桶的名称中必须包含“sagemaker”字样。
缺少 Lake Formation 权限
由于 AWS Lake Formation 权限不足,功能组的创建可能会失败。创建功能组后,会自动创建 AWS Glue 数据库。使用 SageMaker 创建的任何功能组都是在此 AWS Glue 数据库中以表的形式创建而成。
确认所使用的执行角色已被授予创建 AWS Glue 数据库的权限。如果执行角色没有权限,请执行以下操作:
**注意:**AWS Lake Formation 要求授权每个主体(用户或角色)对 Lake Formation 托管资源执行操作。
- 打开 LakeFormation 控制台
- 从左侧边栏中选择 Permissions(权限),然后选择 Data Permissions(数据权限)
- 选择 Grant(授予)
- 从 principals(主体)下拉菜单中选择 IAM execution role(IAM 执行角色),然后授予所需的权限
有关授予数据库权限的更多信息,请参阅授予与您的账户共享的数据库或表的权限。
缺少 AWS KMS 策略
由于缺少 AWS KMS 策略,CreateFeatureGroup API 调用可能会失败。要进行检查,请查看执行角色的 IAM 策略,然后确认其附加了以下策略:
kms:GenerateDataKey
kms:Decrypt
kms: Encrypt
如果运行 CLI 命令后上述策略不可见,请附加策略,然后重试。
S3 存储桶策略
由于 Amazon S3 存储桶策略禁止访问存储桶,也可能会出现“AccessDenied”错误。查看 S3 存储桶策略,然后检查用于创建功能组的执行角色是否具有该存储桶的访问权限。
相关信息
授予对与您的账户共享的数据库或表的权限
授予资源链接权限
使用存储桶策略