Amazon SageMaker 모델을 다른 AWS 계정에 배포하려면 어떻게 해야 합니까?
최종 업데이트 날짜: 2020년 7월 14일
한 AWS 계정에서 Amazon SageMaker 모델을 훈련하고 있습니다. 이 모델을 다른 AWS 계정의 엔드포인트에 배포하려면 어떻게 해야 합니까?
해결 방법
계정 A(샌드박스 계정)
1. AWS Key Management Service(AWS KMS) CMK(고객 마스터 키)를 생성합니다. [키 사용 권한 정의] 페이지의 [다른 AWS 계정] 섹션에서 [다른 AWS 계정 추가]를 선택합니다. 그런 다음 계정 B(모델을 배포하려는 계정)의 AWS 계정 번호를 입력합니다.
이 CMK는 Amazon SageMaker 훈련 작업에 사용됩니다. 훈련 작업에 CMK를 지정하지 않으면 Amazon SageMaker가 기본적으로 Amazon Simple Storage Service(Amazon S3) 서버 측 암호화 키를 사용합니다. 기본 Amazon S3 서버 측 암호화 키는 다른 AWS 계정과 공유하거나 사용할 수 없습니다.
2. 아직 생성하지 않은 경우 훈련 작업을 생성합니다. [예측기 클래스]에서 이전 단계에서 생성한 CMK를 추가합니다. 예:
linear = sagemaker.estimator.Estimator(
…
output_kms_key='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
…
)
계정 B(배포 계정)
1. 다음과 유사한 두 개의 AWS Identity and Access Management(IAM) 정책을 생성합니다. 이러한 정책은 IAM 자격 증명(사용자, 그룹 또는 역할)에 포함되는 인라인 정책입니다.
인라인 정책 1: 역할이 모델 아티팩트를 포함하는 계정 A의 Amazon S3 리소스에 액세스하는 것을 허용합니다. awsdoc-example-bucket을 훈련 작업 출력이 저장되는 S3 버킷 이름으로 바꿉니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::awsdoc-example-bucket/sagemaker/linear-learner/output/model.tar.gz"
}
]
}
인라인 정책 2: 나중에 생성할 역할이 계정 A의 CMK를 사용하는 것을 허용합니다. [리소스]에서 계정 A의 ID 및 CMK ID를 지정합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUseOfTheKey",
"Effect": "Allow",
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": [
"arn:aws:kms:us-east-1:AccountA:key/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
]
}
]
}
2. Amazon SageMaker의 IAM 역할을 생성합니다. 이 역할에는 AmazonSageMakerFullAccess 정책이 연결되어 있습니다.
3. 1단계에서 생성한 두 인라인 정책을 2단계에서 생성한 역할에 연결합니다. 역할에는 AmazonSageMakerFullAccess 정책과 인라인 정책 2개를 포함한 정책 3개가 있어야 합니다.
계정 A(샌드박스 계정)
훈련 작업 출력이 저장되는 버킷에 대한 S3 버킷 정책을 생성합니다. 이 버킷 정책은 이전 섹션에서 생성한 역할이 모델 아티팩트에 액세스하는 것을 허용합니다. 다음 예제에서 아래와 같은 값을 대체합니다.
AccountB: 배포 계정의 AWS 계정 ID
AmazonSageMaker: 배포 계정에서 생성한 역할의 이름
awsdoc-example-bucket: 훈련 작업 출력이 저장되는 S3 버킷
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountB:root"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::awsdoc-example-bucket/sagemaker/linear-learner/output/model.tar.gz"
"Condition": {
"StringEquals": {
"aws:PrincipalArn": "arn:aws:iam::AccountB:role/AmazonSageMaker"
}
}
}
]
}
계정 B(배포 계정)
배포 모델을 생성합니다.
1. Amazon SageMaker 콘솔을 엽니다.
2. 탐색 창의 [추론]에서 [모델]을 선택합니다.
3. [모델 생성]을 선택한 후 다음을 입력합니다.
IAM 역할: [사용자 지정 IAM 역할 ARN]을 선택합니다. [YourAccountID]에 계정 B의 ID를 입력합니다. [YourRole]에 계정 B에서 생성한 IAM 역할의 이름을 입력합니다.
추론 코드 이미지의 위치: 추론 코드 이미지가 저장되는 Amazon Elastic Container Registry(Amazon ECR)의 레지스트리 경로를 제공합니다.
모델 아티팩트 위치: 모델 아티팩트가 저장되는 Amazon S3의 URL을 제공합니다.
4. 페이지 하단에서 [모델 생성]을 선택합니다. 모델 생성에 대한 자세한 내용은 파이프라인 모델 생성을 참조하십시오.
엔드포인트 구성을 생성합니다.
1. Amazon SageMaker 콘솔을 엽니다.
2. 탐색 창의 [추론]에서 [엔드포인트 구성]을 선택합니다.
3. [엔드포인트 구성 생성]을 선택합니다. 그런 다음 [프로덕션 변형]에서 이전 섹션에서 생성한 모델을 추가합니다.
4. [엔드포인트 구성 생성]을 선택합니다.
엔드포인트 생성:
1. Amazon SageMaker 콘솔을 엽니다.
2. 탐색 창의 [추론]에서 [엔드포인트]를 선택합니다.
3. [엔드포인트 생성]을 선택한 후 이전 섹션에서 생성한 엔드포인트 구성을 선택합니다.
4. [엔드포인트 생성]을 선택합니다.
이제 계정 A에서 계정 B로 모델을 배포할 준비가 되었습니다.