Amazon SageMaker 모델을 다른 AWS 계정에 배포하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 7월 14일

한 AWS 계정에서 Amazon SageMaker 모델을 훈련하고 있습니다. 이 모델을 다른 AWS 계정의 엔드포인트에 배포하려면 어떻게 해야 합니까?

해결 방법

계정 A(샌드박스 계정)

1. AWS Key Management Service(AWS KMS) AWS KMS 키(KMS 키)를 생성합니다. 키 사용 권한 정의 페이지의 다른 AWS 계정 섹션에서 다른 AWS 계정 추가를 선택합니다. 그런 다음 계정 B(모델을 배포하려는 계정)의 AWS 계정 번호를 입력합니다.

이 KMS 키는 Amazon SageMaker 훈련 작업에 사용됩니다. 훈련 작업에 KMS 키를 지정하지 않으면 Amazon SageMaker가 기본적으로 Amazon Simple Storage Service(Amazon S3) 서버 측 암호화 키를 사용합니다. 기본 Amazon S3 서버 측 암호화 키는 다른 AWS 계정에서 사용하거나 공유할 수 없습니다.

2. 아직 생성하지 않은 경우 훈련 작업을 생성합니다. 계산기 클래스에서 이전 단계에서 생성한 KMS 키를 추가합니다. 예:

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의 KMS 키를 사용하는 것을 허용합니다. [리소스(Resource)]에서 계정 A의 ID 및 KMS 키 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에 account B의 ID를 입력합니다. YourRole에 account B에서 생성한 IAM 역할의 이름을 입력합니다. 추론 코드 이미지의 위치: Amazon 탄력적 컨테이너 레지스트리 (Amazon ECR)에 저장된 추론 코드 이미지의 레지스트리 경로를 제공합니다. 모델 아티팩트 위치: 모델 아티팩트가 저장되는 Amazon S3의 URL을 제공합니다.

4. 페이지 하단에서 [모델 생성]을 선택합니다. 모델 생성에 대한 자세한 내용은 파이프라인 모델 생성을 참조하십시오.

엔드포인트 구성을 생성합니다.

1. Amazon SageMaker 콘솔을 엽니다.

2. 탐색 창의 추론에서 엔드포인트 구성을 선택합니다.

3. [엔드포인트 구성 생성]을 선택합니다. 그런 다음 [프로덕션 변형]에서 이전 섹션에서 생성한 모델을 추가합니다.

4. [엔드포인트 구성 생성]을 선택합니다.

엔드포인트 생성:

1. Amazon SageMaker 콘솔을 엽니다.

2. 탐색 창의 추론에서 엔드포인트를 선택합니다.

3. [엔드포인트 생성]을 선택한 후 이전 섹션에서 생성한 엔드포인트 구성을 선택합니다.

4. [엔드포인트 생성]을 선택합니다.

이제 계정 A에서 계정 B로 모델을 배포할 준비가 되었습니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?