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로 모델을 배포할 준비가 되었습니다.


이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?