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 コンソールを開きます。
- 左側のサイドバーから [アクセス許可] を選択し、[データのアクセス許可] を選択します。
- **[付与]**を選択します。
- プリンシパルのドロップダウンリストから [IAM 実行ロール] を選択し、必要なアクセス許可を付与します。
注: AWS Lake Formation では、各プリンシパル (ユーザーまたはロール) に Lake Formation マネージドリソースに対してアクションを実行するためのアクセス許可が必要です。
データベースアクセス許可の付与に関する詳細は、「アカウントと共有されているデータベースまたはテーブルに対するアクセス許可を付与する」を参照してください。
AWS KMS ポリシーが欠けている
AWS KMS ポリシーの欠落が原因で、CreateFeatureGroup API コールが失敗します。この問題を確認するには、実行ロールの IAM ポリシーをレビューし、次のポリシーがアタッチされていることを確認します。
kms:GenerateDataKeykms:Decrypt
kms: Encrypt
AWS CLI コマンドを実行しても上記のポリシーが表示されない場合は、かかるポリシーをアタッチしてから再試行してください。
S3 バケットポリシー
AccessDenied エラーは、Amazon S3 バケットポリシーによりバケットにアクセスできないことが原因で発生します。S3 バケットポリシーをレビューし、特徴量グループの作成に使用する実行ロールがバケットにアクセスできるかどうかを確認します。
関連情報
リソースリンクのアクセス許可を付与する