AmazonSageMakerFullAccess 정책을 실행 역할에 연결했는데도 AccessDenied 오류가 발생하여 Amazon SageMaker AI 훈련 작업에 실패했습니다. 이 문제를 해결하고 싶습니다.
간략한 설명
AWS Identity and Access Management(IAM) 정책이 다음과 같은 Amazon Simple Storage Service(Amazon S3) 작업을 허용하지 않는 경우 AccessDenied 오류가 발생할 수 있습니다.
- s3:ListBucket
- s3:GetObject
- s3:PutObject
SageMaker AI API 호출에 따라 필요한 권한이 달라집니다. 예를 들어 CreateModel API에는 s3:GetObject만 필요하지만 CreateTrainingJob API에는 s3:GetObject, s3:PutObject 및 s3:ListObject가 필요합니다.
해결 방법
AccessDenied 오류를 해결하려면 시나리오에 따라 다음 작업을 수행하십시오.
암호화된 입력 버킷
AWS Key Management Service(AWS KMS)를 사용하여 S3 버킷의 데이터를 암호화한 경우 권한을 확인하십시오. 실행 역할에 연결된 IAM 정책은 kms:encrypt 및 kms:decrypt 작업을 허용해야 합니다. AWS KMS 키 정책에서 실행 역할에 대한 액세스 권한을 부여하는지 확인하십시오.
작업의 리소스 구성에서 기계 학습(ML) 스토리지 볼륨에 대한 AWS KMS 키를 사용할 수 있습니다. AWS KMS 키를 사용하는 경우 IAM 정책에서 kms:CreateGrant 작업을 허용해야 합니다. 자세한 내용은 ](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)AWS KMS에서 권한 부여[를 참조하십시오.
참고: ML 스토리지 볼륨을 암호화하는 것이 좋습니다.
Python SDK를 사용하고 estimator.EstimatorBase 클래스의 추상화를 구현할 경우 kwargs 키워드 인수를 통해 output_kms_key 및 volume_kms_key 파라미터를 전달하십시오. 상속 클래스에 문서화된 output_kms_key 및 volume_kms_key 파라미터가 있는지 여부에 관계없이 이 작업을 수행하십시오. 자세한 내용은 Amazon SageMaker Python SDK 웹 사이트의 예측기를 참조하십시오.
권한 경계
실행 역할의 권한 경계를 정의하면 SageMaker AI는 IAM 정책과 권한 경계 모두에서 허용되는 작업만 실행합니다. IAM 정책과 권한 경계에서 필수 Amazon S3 작업을 허용하는지 확인하십시오.
버킷 정책
입력 버킷이 버킷 정책을 사용하는 경우 버킷 정책은 실행 역할에서 필수 Amazon S3 작업을 수행할 수 있도록 허용해야 합니다.
다음은 SageMaker AI 실행 역할에 대한 액세스를 거부하고 AccessDenied 오류를 발생시키는 버킷 정책의 예입니다.
{
"Version": "2012-10-17",
"Id": "ExamplePolicy01",
"Statement": [
{
"Sid": "ExampleStatement01",
"Effect": "Deny",
"Principal": {
"AWS": "arn:aws:iam::Account-ID:role/SageMakerExecutionRole"
},
"Action": [
"s3:GetObject",
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::awsdoc-example-bucket/*",
"arn:aws:s3:::awsdoc-example-bucket"
]
}
]
}
참고: 실행 역할에 대한 액세스를 허용하려면 Effect 값을 Deny에서 Allow로 바꾸십시오.
교차 AWS 계정 액세스
다른 AWS 계정이 Amazon S3 데이터를 소유하고 있는 경우 두 계정 모두 AWS KMS 키에 액세스할 수 있는지 확인하십시오. 훈련 작업에 대한 AWS KMS 키를 지정하지 않는 경우 SageMaker AI는 기본적으로 Amazon S3 서버 측 암호화 키를 사용합니다. 다른 계정에서는 기본 Amazon S3 서버 측 암호화 키를 공유하거나 사용할 수 없습니다.
SageMaker AI 실행 역할의 IAM 정책과 S3 버킷 정책에 계정 전체에 대한 권한이 있는지 확인하십시오.
자세한 내용은 Amazon SageMaker AI 모델을 다른 AWS 계정에 배포하려면 어떻게 해야 합니까?를 참조하십시오.
관련 정보
Amazon S3의 403 Access Denied 오류 문제를 해결하려면 어떻게 해야 합니까?
SageMaker AI 실행 역할을 사용하는 방법