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

최종 업데이트 날짜: 2023년 1월 26일

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(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: IAM 역할이 모델 아티팩트를 포함하는 계정 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: 향후 IAM 역할이 계정 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 버킷 정책을 생성합니다. 이 버킷 정책은 이전 섹션에서 생성한 역할이 모델 아티팩트에 액세스하는 것을 허용합니다.

{
    "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"
                }
            }
        }
    ]
}

참고: 이 예시에서는 AccountB를 배포 계정의 AWS 계정 ID로 바꿔야 합니다. AmazonSageMaker를 배포 계정에서 생성한 역할의 이름으로 바꿉니다. awsdoc-example-bucket을 학습 작업 출력이 저장되는 S3 버킷으로 바꿉니다.

계정 B(배포 계정)

배포 모델을 생성합니다.

1.    Amazon SageMaker 콘솔을 엽니다.

2.    탐색 창의 추론에서 모델을 선택합니다.

3.    Create model(모델 생성)을 선택한 다음 모델 이름을 입력합니다.

4.    IAM role(IAM 역할)에서 Enter a custom IAM role ARN(사용자 지정 IAM 역할 ARN 입력)을 선택합니다. 다음을 사용하여 사용자 지정 ARN을 완성하세요.

YourAccountID에 계정 B의 ID를 입력합니다.

YourRole에 계정 B에서 생성한 IAM 역할의 이름을 입력합니다.

5.   Location of inference code image(추론 코드 이미지 위치)에 추론 코드 이미지가 저장되는 레지스트리 경로를 입력합니다. 추론 이미지는 Amazon Elastic Container Registry(Amazon ECR) 또는 프라이빗 Docker 레지스트리에 저장됩니다.

6.    Location of model artifacts(모델 아티팩트 위치)에 모델 아티팩트가 저장되는 Amazon S3의 URL을 제공합니다.

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

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

1.    Amazon SageMaker 콘솔을 엽니다.

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

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

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

엔드포인트 생성:

1.    Amazon SageMaker 콘솔을 엽니다.

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

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

4.    Create endpoint(엔드포인트 생성)를 선택합니다.

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


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


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