AWS SageMkaerを利用する際にSageMkaer Studioをを立ち上げることがあるが、起動時にAccessDeniedExceptionが表示された際の対処方法を記載する。
事前に準備していたこと
事前にAmazonSageMakerFullAccessの権限をもつロール(ここではAmazonSageMakerFullAccess0201)を作成。
SageMaker Studioノートブックを暗号化したかったため事前にKMSでキーを作成(ここではキーの名称はkmsとした)。
何をしていたときに発生したか
notebookインスタンスの
AWS SageMkaerを新規で利用する際にドメインを作成するが、作成時に組織向けの設定を選択。
ぽちぽち画面を進めていき、SageMaker Studioノートブック設定時に作成しておいたキーを選択。
その後、ユーザーのロールを設定する際に作成しておいたロールを選択しドメインの作成を完了させる。
どのようなエラーだったか
ドメイン作成後、SageMaker Studioを起動しようとしたところ以下のエラーが表示され、起動出来ず。
If you continue to experience issues, please contact Customer Service.
Details: ConfigurationError: AccessDeniedException: User: arn:aws:sts::XXXXXX:assumed-role/AmazonSageMakerFullAccess0201/studio is not authorized to perform: kms:CreateGrant on resource: arn:aws:kms:us-east-1:XXXXXX:key/XXXX because no identity-based policy allows the kms:CreateGrant action
原因
"ロール名 (ここではAmazonSageMakerFullAccess0201)" というIAMユーザーが、指定されたAWS Key Management Service (KMS) リソース上で "kms:CreateGrant" アクションを実行するための必要な権限を持っていなかった。
要するにSageMaker Studioノートブックを暗号化する設定を行っていたため、AmazonSageMakerFullAccessの権限のみでは起動することが出来なかった。
対処方法
IAMを表示させ、"AmazonSageMakerFullAccess0201" というロールを見つけて選択。
許可ポリシーからインラインポリシーを作成を選択し、さらにJSONを選択。
すると以下のように表示される。
そこに以下のように記述して保存する。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": "(作成したキーの名前。ここではkms):CreateGrant",
"Resource": "arn:aws:(作成したキーの名前。ここではkms):(リージョン名): (AWSのアカウントID):key/XXXXXX"
}
]
}
その後改めてSageMkaer Studioを起動を試みると問題なく起動出来た。
最後に
SageMaker Studioノートブックを暗号化しなければこのような問題は発生しないが、暗号化したい場合はこのような対処が必要となると思われる。