기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
IAM 액세스 관리
다음 섹션에서는 Amazon SageMaker 모델 구축 파이프라인의 AWS Identity and Access Management (IAM) 요구 사항을 설명합니다. 이러한 권한을 구현하는 방법에 대한 예제는 사전 조건 섹션을 참조하세요.
파이프라인 역할 권한
파이프라인에는 파이프라인을 생성할 때 파이프라인에 전달되는 IAM SageMaker 파이프라인 실행 역할이 필요합니다. 파이프라인을 생성하는 SageMaker 인스턴스의 역할에 파이프라인 실행 역할에 대한 iam:PassRole
권한이 있어야 이를 전달할 수 있습니다. IAM 역할에 대한 자세한 내용은 IAM 역할을 참조하십시오.
파이프라인 실행 역할에는 다음 권한이 필요합니다.
-
파이프라인 내 SageMaker 작업에 역할을 전달하려면 전달되는 역할에 대한
iam:PassRole
권한이 필요합니다. -
파이프라인의 각 작업 유형에 대한
Create
및Describe
권한. -
JsonGet
함수 사용에 대한 Amazon S3의 허용. 리소스 기반 정책 또는 자격 증명 기반 정책을 사용하여 Amazon S3 리소스에 대한 액세스를 제어할 수 있습니다. 리소스 기반 정책은 Amazon S3 버킷에 적용되며 SageMaker 파이프라인에 버킷에 대한 액세스 권한을 부여합니다. 자격 증명 기반 정책은 파이프라인에 계정에서 Amazon S3를 호출할 수 있는 기능을 제공합니다. 리소스 기반 정책 및 자격 증명 기반 정책에 대한 더 자세한 내용은 자격 증명 기반 정책 및 리소스 기반 정책 및 정책을 참조하세요.{ "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::
<your-bucket-name>
/*", "Effect": "Allow" }
파이프라인 단계 권한
SageMaker 파이프라인에는 작업을 실행하는 단계가 포함됩니다. SageMaker 파이프라인 단계에서 이러한 작업을 실행하려면 필요한 리소스에 대한 액세스를 제공하는 계정의 IAM 역할이 필요합니다. 이 역할은 파이프라인에 의해 SageMaker 서비스 주체에게 전달됩니다. IAM 역할에 대한 자세한 내용은 IAM 역할을 참조하세요.
기본적으로 각 단계는 파이프라인 실행 역할을 맡습니다. 선택적으로 파이프라인의 모든 단계에 다른 역할을 전달할 수 있습니다. 이렇게 하면 파이프라인 정의에 지정된 두 단계 간에 직접적인 관계가 없는 한, 각 단계의 코드가 다른 단계에서 사용되는 리소스에 영향을 주지 않습니다. 단계의 프로세서 또는 추정기를 정의할 때 이러한 역할을 전달합니다. 이러한 정의에 이러한 역할을 포함하는 방법에 대한 예는 SageMakerPython SDK 설명서를
SageMaker 파이프라인 작업에 대한 액세스 관리를 사용자 지정하세요.
IAM 정책을 추가로 사용자 지정하여 조직 내 선택된 구성원이 일부 또는 모든 파이프라인 단계를 실행할 수 있도록 할 수 있습니다. 예를 들어 특정 사용자에게는 훈련 작업을 생성할 권한을 부여하고, 다른 사용자 그룹에게는 처리 작업을 생성할 수 있는 권한을 부여하고, 모든 사용자에게 나머지 단계를 실행할 수 있는 권한을 부여할 수 있습니다. 이 기능을 사용하려면 작업 이름 앞에 접두사를 붙이는 사용자 지정 문자열을 선택합니다. 관리자는 허용된 ARN 앞에 접두사를 추가하는 반면, 데이터 사이언티스트는 파이프라인 인스턴스화에 이 접두사를 포함합니다. 허용된 사용자를 위한 IAM 정책에는 지정된 접두사가 있는 작업 ARN이 포함되어 있으므로 파이프라인 단계의 후속 작업을 진행하는 데 필요한 권한이 있어야 합니다. 작업 접두사는 기본적으로 꺼져 있습니다.이 옵션을 사용하려면 Pipeline
클래스에서 이 옵션을 켜야 합니다.
접두사가 해제된 작업의 경우 작업 이름은 다음과 같이 형식이 지정되며 다음 테이블에 설명된 필드가 연결되어 있습니다.
pipelines-
<executionId>
-<stepNamePrefix>
-<entityToken>
-<failureCount>
필드 | 정의 |
---|---|
파이프라인 |
항상 정적 문자열이 앞에 추가됩니다. 이 문자열은 파이프라인 오케스트레이션 서비스를 작업의 소스로 식별합니다. |
ExecutionId |
실행 중인 파이프라인 인스턴스를 위한 무작위 버퍼입니다. |
단계 NamePrefix |
사용자가 지정한 단계 이름(파이프라인 단계의 |
entityToken |
단계 개체의 멱등성을 보장하기 위한 무작위 토큰입니다. |
failureCount |
작업을 완료하기 위해 시도한 현재 재시도 횟수입니다. |
이 경우 작업 이름 앞에 사용자 지정 접두사가 추가되지 않으며 해당 IAM 정책이 이 문자열과 일치해야 합니다.
작업 접두사를 사용하는 사용자의 경우 기본 작업 이름은 다음과 같은 형식을 취하며 사용자 지정 접두사는 MyBaseJobName
으로 지정됩니다.
< MyBase JobName >
- <executionId>-
<entityToken>-
<failureCount>
사용자 지정 접두사는 정적 pipelines
문자열을 대체하므로 파이프라인의 일부로 SageMaker 작업을 실행할 수 있는 사용자 선택 범위를 좁힐 수 있습니다.
접두사 길이 제한
작업 이름에는 개별 파이프라인 단계에 따른 내부 길이 제약이 있습니다. 또한 이 제약 조건은 허용되는 접두사 길이를 제한합니다. 접두사 길이 요구 사항은 다음과 같습니다.
파이프라인 단계 | 접두사 길이 |
---|---|
|
38 |
6 |
IAM 정책에 작업 접두사 적용
관리자는 특정 접두사를 사용하는 사용자가 작업을 생성할 수 있도록 IAM 정책을 생성합니다. 다음 예제 정책은 데이터 사이언티스트가 MyBaseJobName
접두사를 사용하는 경우 훈련 작업을 생성할 수 있도록 허용합니다.
{ "Action": "sagemaker:CreateTrainingJob", "Effect": "Allow", "Resource": [ "arn:aws:sagemaker:
region
:account-id
:*/MyBaseJobName-*" ] }
파이프라인 인스턴스화에 작업 접두사를 적용합니다.
작업 인스턴스 클래스의 *base_job_name
인수를 사용하여 접두사를 지정합니다.
참고
파이프라인 단계를 생성하기 전에 *base_job_name
인수와 함께 작업 접두사를 작업 인스턴스에 전달합니다. 이 작업 인스턴스에는 작업을 파이프라인에서 한 단계로 실행하는 데 필요한 정보가 들어 있습니다. 이 인수는 사용된 작업 인스턴스에 따라 달라집니다. 다음 목록은 각 파이프라인 단계 유형에 사용할 인수를 보여줍니다.
Estimator
(TrainingStep
),Processor
(ProcessingStep
),AutoML
(AutoMLStep
) 클래스의 경우base_job_name
Tuner
클래스(TuningStep
)의 경우tuning_base_job_name
Transformer
클래스(TransformStep
)의 경우transform_base_job_name
QualityCheckStep
(품질 검사) 및ClarifyCheckstep
(명확화 검사) 클래스의 경우CheckJobConfig
의base_job_name
Model
클래스의 경우 사용되는 인수는ModelStep
에 결과를 전달하기 전에create
또는register
를 모델에 실행했는지에 따라 달라집니다.create
호출 시 사용자 지정 접두사는 모델을 생성할 때name
인수에서 가져옵니다(예:Model(name=)
).register
호출 시 사용자 지정 접두사는register
호출의model_package_name
인수에서 가져옵니다(예:
).my_model
.register(model_package_name=)
다음 예제에서는 새 훈련 작업 인스턴스에 접두사를 지정하는 방법을 보여줍니다.
# Create a job instance xgb_train = Estimator( image_uri=image_uri, instance_type="ml.m5.xlarge", instance_count=1, output_path=model_path, role=role, subnets=["subnet-0ab12c34567de89f0"], base_job_name="MyBaseJobName" security_group_ids=["sg-1a2bbcc3bd4444e55"], tags = [ ... ] encrypt_inter_container_traffic=True, ) # Attach your job instance to a pipeline step step_train = TrainingStep( name="TestTrainingJob", estimator=xgb_train, inputs={ "train": TrainingInput(...), "validation": TrainingInput(...) } )
작업 접두사는 기본적으로 해제되어 있습니다. 이 기능을 사용하려면 다음 스니펫에 표시된 PipelineDefinitionConfig
의 use_custom_job_prefix
옵션을 사용하세요.
from sagemaker.workflow.pipeline_definition_config import PipelineDefinitionConfig # Create a definition configuration and toggle on custom prefixing definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True); # Create a pipeline with a custom prefix pipeline = Pipeline( name="MyJobPrefixedPipeline", parameters=[...] steps=[...] pipeline_definition_config=definition_config )
파이프라인을 생성하고 실행합니다. 다음 예제는 파이프라인을 생성 및 실행하고, 작업 접두사를 끄고 파이프라인을 다시 실행하는 방법도 보여줍니다.
pipeline.create(role_arn=sagemaker.get_execution_role()) # Optionally, call definition() to confirm your prefixed job names are in the built JSON pipeline.definition() pipeline.start() # To run a pipeline without custom-prefixes, toggle off use_custom_job_prefix, update the pipeline # via upsert() or update(), and start a new run definition_config = PipelineDefinitionConfig(use_custom_job_prefix=False) pipeline.pipeline_definition_config = definition_config pipeline.update() execution = pipeline.start()
마찬가지로 기존 파이프라인에서도 이 기능을 켜고 작업 접두사를 사용하는 새 실행을 시작할 수 있습니다.
definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True) pipeline.pipeline_definition_config = definition_config pipeline.update() execution = pipeline.start()
마지막으로, 파이프라인 실행의 list_steps
을 호출하여 접두사가 지정된 사용자 지정 작업을 볼 수 있습니다.
steps = execution.list_steps() prefixed_training_job_name = steps['PipelineExecutionSteps'][0]['Metadata']['TrainingJob']['Arn']
파이프라인을 사용한 서비스 제어 정책
서비스 제어 정책(SCP)은 조직의 권한을 관리하는 데 사용할 수 있는 조직 정책 유형입니다. SCP는 조직의 모든 계정에 사용 가능한 최대 권한을 중앙에서 제어합니다. 조직 내에서 SageMaker 파이프라인을 사용하면 데이터 과학자가 콘솔을 사용하지 않고도 파이프라인 실행을 관리하도록 할 수 있습니다. AWS
Amazon S3에 대한 액세스를 제한하는 SCP와 함께 VPC를 사용하는 경우 파이프라인이 다른 Amazon S3 리소스에 액세스할 수 있도록 허용하는 조치를 취해야 합니다.
SageMaker 파이프라인이 함수를 SageMaker 사용하여 VPC 외부의 Amazon S3에 액세스할 수 있도록 하려면 파이프라인을 사용하는 역할이 Amazon S3에 액세스할 수 있도록 조직의 SCP를 업데이트하십시오. JsonGet
이렇게 하려면 주요 태그와 조건 키를 사용하여 파이프라인 실행 역할을 통해 SageMaker 파이프라인 실행자가 사용하는 역할에 대한 예외를 생성하십시오.
SageMaker 파이프라인이 VPC 외부에서 Amazon S3에 액세스할 수 있도록 허용하려면
-
IAM 사용자 및 역할 태그 지정의 단계에 따라 파이프라인 실행 역할에 고유한 태그를 생성하세요.
-
생성한 태그의
Aws:PrincipalTag IAM
조건 키를 사용하여 SCP에 예외를 허용하세요. SCP를 생성하는 방법에 대한 자세한 내용은 서비스 제어 정책 생성, 업데이트 및 삭제를 참조하세요.