Amazon SageMaker Feature Group を作成しようとしていますが、「AccessDenied」エラーが表示されます。
簡単な説明
SageMaker の「AccessDenied」エラーは、AWS Identity and Access Management (IAM) ロールに [Create Feature Group] (Feature Group を作成) オペレーションを実行するための十分な許可がないことを示しています。実行ロールの許可がないか、次のように設定が間違っていると、「AccessDenied」エラーが表示されることがあります。
- AmazonSageMakerFeatureStoreAccess ポリシーと Amazon Simple Storage Service (Amazon S3) のバケット命名要件がありません
- LakeFormation の許可がありません
- AWS Key Management Service (AWS KMS) ポリシーがありません
- Amazon S3 バケットポリシー
解決方法
注: AWS コマンドラインインターフェイス (AWS CLI) のコマンド実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
Feature Group の作成中に詳細なエラーメッセージを表示するには、ターミナルから次のコマンドを実行し、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 ポリシーを追加した後でも、Feature Group の作成が失敗することがあります。ポリシーは S3 バケットに保存される Amazon マネージドポリシーであるため、バケットの名前には「sagemaker」という単語が含まれている必要があります。
Lake Formation の許可がありません
AWS Lake Formation の許可が不十分なため、Feature Group の作成が失敗する可能性があります。Feature Group を作成すると、AWS Glue データベースが自動的に作成されます。SageMaker を使用して作成されたすべての Feature Group は、この 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 バケットポリシー
「AccessDenied」エラーは、Amazon S3 バケットポリシーによってバケットへのアクセスが禁止されているために発生することもあります。S3 バケットポリシーを確認し、Feature Group の作成に使用された実行ロールにバケットに対するアクセス権が付与されているかどうかを確認します。
関連情報
アカウントと共有されたデータベースまたはテーブルに対する許可の付与
リソースリンク許可の付与
バケットポリシーの使用