As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
IAMGerenciamento de acesso
As seções a seguir descrevem os requisitos AWS Identity and Access Management (IAM) do Amazon SageMaker Pipelines. Para obter um exemplo de como você pode implementar essas permissões, consulte Pré-requisitos.
Tópicos
Permissões de perfil de pipeline
Seu pipeline exige uma função de execução de IAM pipeline que é passada para Pipelines quando você cria um pipeline. A função da SageMaker instância que está criando o pipeline deve ter a iam:PassRole
permissão para a função de execução do pipeline para poder transmiti-la. Para obter mais informações sobre IAM funções, consulte IAMFunções.
Seu perfil de execução de pipeline requer as seguintes permissões:
-
Para passar qualquer função para um SageMaker trabalho em um pipeline, a
iam:PassRole
permissão para a função que está sendo passada. -
Permissões
Create
eDescribe
para cada um dos tipos de trabalho no pipeline. -
Permissões do Amazon S3 para usar o perfil
JsonGet
. Você pode controlar o acesso aos recursos do Amazon S3 usando uma política baseada em identidade ou em recursos. Uma política baseada em recursos é aplicada ao seu bucket do Amazon S3 e concede aos Pipelines acesso ao bucket. Uma política baseada em identidade dá ao seu pipeline a capacidade de fazer chamadas para o Amazon S3 a partir da sua conta. Para obter mais informações sobre as políticas baseadas em identidades e em recursos, consulte Políticas baseadas em identidade e em recursos.{ "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::
<your-bucket-name>
/*", "Effect": "Allow" }
Permissões de etapa de pipeline
Os pipelines incluem etapas que executam SageMaker trabalhos. Para que as etapas do pipeline executem esses trabalhos, elas exigem uma IAM função em sua conta que forneça acesso ao recurso necessário. Essa função é passada para o responsável pelo SageMaker serviço pelo seu pipeline. Para obter mais informações sobre IAM funções, consulte IAMFunções.
Por padrão, cada etapa assume o perfil de execução do pipeline. Opcionalmente, você pode transmitir um perfil diferente para qualquer uma das etapas do seu pipeline. Isso garante que o código em cada etapa não tenha a capacidade de impactar os recursos usados em outras etapas, a menos que haja uma relação direta entre as duas etapas especificadas na definição do pipeline. Você transmite esses perfis ao definir o processador ou o estimador para sua etapa. Para ver exemplos de como incluir essas funções nessas definições, consulte a documentação do SageMakerPython SDK
Personalize o gerenciamento de acesso para trabalhos do Pipelines
Você pode personalizar ainda mais suas IAM políticas para que membros selecionados em sua organização possam executar qualquer uma ou todas as etapas do pipeline. Por exemplo, você pode dar permissão a determinados usuários para criar trabalhos de treinamento, a outro grupo de usuários permissão para criar trabalhos de processamento e a todos os seus usuários permissão para executar as etapas restantes. Para usar esse recurso, selecione uma string personalizada que prefixa o nome do seu trabalho. Seu administrador acrescenta o prefixo ao permitidoARNs, enquanto seu cientista de dados inclui esse prefixo nas instanciações do pipeline. Como a IAM política para usuários permitidos contém um trabalho ARN com o prefixo especificado, os trabalhos subsequentes da etapa do pipeline têm as permissões necessárias para continuar. O prefixo do trabalho está desativado por padrão: você deve ativar essa opção em sua classe Pipeline
para usá-la.
Para trabalhos com prefixo desativado, o nome do trabalho é formatado conforme mostrado e é uma concatenação de campos descritos na tabela a seguir:
pipelines-
<executionId>
-<stepNamePrefix>
-<entityToken>
-<failureCount>
Campo | Definição |
---|---|
pipelines |
Uma string estática sempre prefixada. Essa string identifica o serviço de orquestração do pipeline como a origem do trabalho. |
executionId |
Um buffer aleatório para a instância em execução do pipeline. |
stepNamePrefix |
O nome da etapa especificada pelo usuário (fornecido no argumento |
entityToken |
Um token aleatório para garantir a idempotência da entidade da etapa. |
failureCount |
O número atual de novas tentativas para concluir o trabalho. |
Nesse caso, nenhum prefixo personalizado é anexado ao nome do trabalho e a IAM política correspondente deve corresponder a essa string.
Para usuários que ativam o prefixo do trabalho, o nome do trabalho subjacente assume o seguinte formato, com o prefixo personalizado especificado como MyBaseJobName
:
<MyBaseJobName>
-<executionId>
-<entityToken>
-<failureCount>
O prefixo personalizado substitui a pipelines
string estática para ajudar você a restringir a seleção de usuários que podem executar o SageMaker trabalho como parte de um pipeline.
Restrições de comprimento de prefixo
Os nomes dos trabalhos têm restrições internas de comprimento específicas para etapas individuais do pipeline. Essa restrição também limita o comprimento do prefixo permitido. Os requisitos de comprimento do prefixo são os seguintes:
Etapa de pipeline | Comprimento do prefixo |
---|---|
|
38 |
6 |
Aplicar prefixos de trabalho a uma política IAM
Seu administrador cria IAM políticas que permitem que usuários de prefixos específicos criem trabalhos. O exemplo de política a seguir permite que cientistas de dados criem trabalhos de treinamento se usarem o prefixo MyBaseJobName
.
{ "Action": "sagemaker:CreateTrainingJob", "Effect": "Allow", "Resource": [ "arn:aws:sagemaker:
region
:account-id
:*/MyBaseJobName-*" ] }
Aplicar prefixos de trabalho às instanciações do pipeline
Especifique seu prefixo com o argumento *base_job_name
da classe da instância de trabalho.
nota
Transmita o prefixo do trabalho com o argumento *base_job_name
para a instância do trabalho antes de criar uma etapa do pipeline. Essa instância de trabalho contém as informações necessárias para que o trabalho seja executado como uma etapa em um pipeline. Esse argumento varia de acordo com a instância de trabalho usada. A lista a seguir mostra qual argumento usar para cada tipo de etapa do pipeline:
base_job_name
para as classesEstimator
(TrainingStep
),Processor
(ProcessingStep
) eAutoML
(AutoMLStep
)tuning_base_job_name
para a classeTuner
(TuningStep
)transform_base_job_name
para a classeTransformer
(TransformStep
)base_job_name
deCheckJobConfig
para as classesQualityCheckStep
(Quality Check) eClarifyCheckstep
(Clarify Check)Para a classe
Model
, o argumento usado depende de você executarcreate
ouregister
no seu modelo antes de transmitir o resultado paraModelStep
Se você chamar
create
, o prefixo personalizado virá do argumentoname
quando você construir seu modelo (ou seja,Model(name=)
)Se você chamar
register
, o prefixo personalizado virá do argumentomodel_package_name
da sua chamada pararegister
(ou seja,
)my_model
.register(model_package_name=)
O exemplo a seguir mostra como especificar um prefixo para uma nova instância do trabalho de treinamento.
# 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(...) } )
O prefixo do trabalho está desativado por padrão. Para optar por esse recurso, use a opção use_custom_job_prefix
de PipelineDefinitionConfig
conforme mostrado no trecho a seguir:
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 )
Criar e executar seu pipeline. O exemplo a seguir cria e executa um pipeline e também demonstra como você pode desativar o prefixo de trabalhos e executá-lo novamente.
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()
Da mesma forma, você pode ativar o recurso para pipelines existentes e iniciar uma nova execução que usa prefixos de trabalho.
definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True) pipeline.pipeline_definition_config = definition_config pipeline.update() execution = pipeline.start()
Por fim, você pode visualizar seu trabalho com prefixo personalizado chamando a execução do pipeline list_steps
.
steps = execution.list_steps() prefixed_training_job_name = steps['PipelineExecutionSteps'][0]['Metadata']['TrainingJob']['Arn']
Políticas de controle de serviço com pipelines
As políticas de controle de serviço (SCPs) são um tipo de política organizacional que você pode usar para gerenciar permissões em sua organização. SCPsofereça controle central sobre o máximo de permissões disponíveis para todas as contas em sua organização. Ao usar Pipelines em sua organização, você pode garantir que os cientistas de dados gerenciem suas execuções de pipeline sem precisar interagir com o AWS console.
Se você estiver usando um VPC com seu SCP que restringe o acesso ao Amazon S3, você precisa tomar medidas para permitir que seu pipeline acesse outros recursos do Amazon S3.
Para permitir que os Pipelines acessem o Amazon S3 fora de VPC você com JsonGet
a função, atualize a SCP da sua organização para garantir que a função usando Pipelines possa acessar o Amazon S3. Para fazer isso, crie uma exceção para funções que estão sendo usadas pelo executor do Pipelines por meio da função de execução do pipeline usando uma tag principal e uma chave de condição.
Para permitir que os Pipelines acessem o Amazon S3 fora do seu VPC
-
Crie uma tag exclusiva para sua função de execução do pipeline seguindo as etapas em Marcar IAM usuários e funções.
-
Conceda uma exceção ao SCP usar a chave de
Aws:PrincipalTag IAM
condição para a tag que você criou. Para obter mais informações, consulte Criar, atualizar e excluir políticas de controle de serviço.