Associar um AWS CodeCommit repositório em uma AWS conta ao SageMaker Studio em outra conta - Recomendações da AWS

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á.

Associar um AWS CodeCommit repositório em uma AWS conta ao SageMaker Studio em outra conta

Criado por Laurens van der Maas (AWS) e Aubrey Oosthuizen () AWS

Ambiente: produção

Tecnologias: aprendizado de máquina e IA DevOps; Segurança, identidade, conformidade; CloudNative

AWSserviços: AWS CodeCommit; Amazon SageMaker; AWS Identity and Access Management

Resumo

Esse padrão fornece instruções e código sobre como associar um AWS CodeCommit repositório em uma AWS conta (Conta A) com o Amazon SageMaker Studio em outra AWS conta (Conta B). Para configurar a associação, você deve criar uma política e uma função de AWS Identity and Access Management (IAM) na Conta A e uma política IAM embutida na Conta B. Em seguida, use um script de shell para clonar o CodeCommit repositório da Conta A para o SageMaker Studio na Conta B.

Pré-requisitos e limitações

Pré-requisitos

  • Duas AWScontas, uma contendo o CodeCommit repositório e a outra contendo um SageMaker domínio com um usuário

  • SageMaker Domínio e usuário provisionados, com acesso à Internet ou acesso ao CodeCommit AWS Security Token Service (AWSSTS) por meio de endpoints de rede privada virtual (VPC)

  • Uma compreensão básica de IAM

  • Uma compreensão básica do SageMaker Studio

  • Uma compreensão básica do Git e CodeCommit

Limitações

Esse padrão se aplica somente ao SageMaker Studio, não RStudio à Amazon SageMaker.

Arquitetura

Pilha de tecnologia

  • Amazon SageMaker

  • SageMaker Estúdio Amazon

  • AWS CodeCommit

  • AWSIdentity and Access Management (IAM)

  • Git

Arquitetura de destino

O diagrama a seguir mostra uma arquitetura que associa um CodeCommit repositório da Conta A ao SageMaker Studio na Conta B.

Diagrama de arquitetura para associação entre contas

O diagrama mostra o seguinte fluxo de trabalho:

  1. Um usuário assume a MyCrossAccountRepositoryContributorRole função na Conta A por meio da sts:AssumeRole função, enquanto usa a função de SageMaker execução no SageMaker Studio na Conta B. A função assumida inclui as CodeCommit permissões para clonar e interagir com o repositório especificado.

  2. O usuário executa comandos Git a partir do terminal do sistema no SageMaker Studio.

Automação e escala

Esse padrão consiste em etapas manuais que podem ser automatizadas usando o AWSCloud Development Kit (AWSCDK) ou o Terraform. AWS CloudFormation

Ferramentas

AWSferramentas

  • SageMakerA Amazon é um serviço gerenciado de aprendizado de máquina (ML) que ajuda você a criar e treinar modelos de ML e depois implantá-los em um ambiente hospedado pronto para produção.

  • O Amazon SageMaker Studio é um ambiente de desenvolvimento integrado (IDE) baseado na web para aprendizado de máquina que permite criar, treinar, depurar, implantar e monitorar seus modelos de aprendizado de máquina.

  • AWS CodeCommité um serviço de controle de versão que ajuda você a armazenar e gerenciar repositórios Git de forma privada, sem precisar gerenciar seu próprio sistema de controle de origem.

  • AWSO Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.

Outras ferramentas

  • O Git é um sistema distribuído de controle de versões para rastrear alterações no código-fonte durante o desenvolvimento do software.

Épicos

TarefaDescriçãoHabilidades necessárias

Crie uma IAM política para acesso ao repositório na Conta A.

  1. Faça login no AWS Management Console e abra o IAMconsole.

  2. No painel de navegação, selecione Políticas e, em seguida, Criar política.

  3. Escolha a JSONguia.

  4. Copie a declaração de IAMpolítica de Exemplo de política na seção Informações adicionais desse padrão e cole a declaração no JSON editor. Certifique-se de substituir todos os valores de espaço reservado na política.

  5. Selecione Próximo: Tags e, em seguida,Próximo: Análise.

  6. Em Nome, insira um nome para a política. Observação: nesse padrão, a IAM política é chamada deCrossAccountAccessForMySharedDemoRepo, mas você pode escolher o nome de política que preferir.

  7. Escolha Criar política.

Dica: é uma prática recomendada restringir o escopo de suas IAM políticas às permissões mínimas necessárias para seu caso de uso.

AWS DevOps

Crie uma IAM função para acesso ao repositório na Conta A.

  1. No painel de navegação do IAMconsole, escolha Funções e, em seguida, escolha Criar função.

  2. Para Tipo de entidade confiável, selecione AWSconta.

  3. Na seção AWSConta, selecione Outra AWS conta.

  4. Em ID da conta, insira o ID da conta para a conta B.

  5. Na página Adicionar permissões, procure e escolha a política CrossAccountAccessForMySharedDemoRepo que você criou anteriormente.

  6. Escolha Próximo.

  7. Em Nome do perfil, insira um nome. Nota: Nesse padrão, o nome da IAM função é chamado deMyCrossAccountRepositoryContributorRole, mas você pode escolher o nome da função que preferir.

  8. Escolha Create role e, em seguida, copie o Amazon Resource Name (ARN) da nova função.

AWS DevOps
TarefaDescriçãoHabilidades necessárias

Anexe uma política embutida à função de execução vinculada ao usuário do seu SageMaker domínio na Conta B.

  1. No painel de navegação do IAMconsole, escolha Funções.

  2. Pesquise e escolha a função de execução associada ao usuário do seu SageMaker domínio na Conta B.

  3. Escolha Adicionar permissões e, em seguida, Criar política em linha.

  4. Escolha a JSONguia.

  5. Copie a declaração de política a seguir e cole-a no JSON editor.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::<Account_A_ID>:role/<Account_A_Role_Name>" } ] }
  6. <Account_A_ID>Substitua pelo ID da conta A. <Account_A_Role_Name> Substitua pelo nome da IAM função que você criou anteriormente.

  7. Escolha Revisar política.

  8. Em Nome, digite um nome para sua política em linha.

  9. Escolha Criar política.

AWS DevOps
TarefaDescriçãoHabilidades necessárias

Crie o script de shell no SageMaker Studio na Conta B.

  1. No painel de navegação do SageMaker console, escolha Studio.

  2. Selecione seu perfil de usuário e, em seguida, escolha Abrir Studio.

  3. Na seção Início, escolha Abrir o assistente de execução.

  4. Na seção Utilitários e arquivos, escolha Arquivo de texto.

  5. Copie o script de Exemplo de script de SageMaker shell na seção Informações adicionais desse padrão e cole a instrução no novo arquivo. Certifique-se de substituir todos os valores de espaço reservado na política.

  6. Clique com o botão direito do mouse na guia untitled.txt do seu novo arquivo e escolha Renomear texto. Em Novo nome, digite cross_account_git_clone.sh e, em seguida, escolha Renomear.

AWS DevOps

Invocar o script de shell a partir do terminal do sistema.

  1. Na seção Início do SageMaker console, escolha Abrir o Launcher.

  2. Na seção Utilitários e arquivos, escolha Terminal do sistema.

  3. Na janela do terminal, execute o seguinte comando:

    chmod u+x ./cross_account_git_clone.sh && ./cross_account_git_clone.sh

Você clonou seu CodeCommit repositório em uma conta cruzada do SageMaker Studio. Agora você pode executar todos os comandos do Git no terminal do sistema.

AWS DevOps

Mais informações

Exemplo IAM de política

Para usar este exemplo, você precisa fazer o seguinte:

  • <CodeCommit_Repository_Region>Substitua pela AWS região do repositório.

  • Substitua <Account_A_ID> pelo ID da conta para a conta A.

  • <CodeCommit_Repository_Name>Substitua pelo nome do seu CodeCommit repositório na Conta A.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:BatchGet*", "codecommit:Create*", "codecommit:DeleteBranch", "codecommit:Get*", "codecommit:List*", "codecommit:Describe*", "codecommit:Put*", "codecommit:Post*", "codecommit:Merge*", "codecommit:Test*", "codecommit:Update*", "codecommit:GitPull", "codecommit:GitPush" ], "Resource": [ "arn:aws:codecommit:<CodeCommit_Repository_Region>:<Account_A_ID>:<CodeCommit_Repository_Name>" ] } ] }

Exemplo de script de SageMaker shell

Para usar este exemplo, você precisa fazer o seguinte:

  • Substitua <Account_A_ID> pelo ID da conta para conta A.

  • <Account_A_Role_Name>Substitua pelo nome da IAM função que você criou anteriormente.

  • <CodeCommit_Repository_Region>Substitua pela AWS região do repositório.

  • <CodeCommit_Repository_Name>Substitua pelo nome do seu CodeCommit repositório na Conta A.

#!/usr/bin/env bash #Launch from system terminal pip install --quiet git-remote-codecommit mkdir -p ~/.aws touch ~/.aws/config echo "[profile CrossAccountAccessProfile] region = <CodeCommit_Repository_Region> credential_source=EcsContainer role_arn = arn:aws:iam::<Account_A_ID>:role/<Account_A_Role_Name> output = json" > ~/.aws/config echo '[credential "https://git-codecommit.<CodeCommit_Repository_Region>.amazonaws.com"] helper = !aws codecommit credential-helper $@ --profile CrossAccountAccessProfile UseHttpPath = true' > ~/.gitconfig git clone codecommit::<CodeCommit_Repository_Region>://CrossAccountAccessProfile@<CodeCommit_Repository_Name>