Associação de um repositório do AWS CodeCommit em uma Conta da AWS com o Amazon SageMaker AI Studio Classic em outra conta - Recomendações da AWS

Associação de um repositório do AWS CodeCommit em uma Conta da AWS com o Amazon SageMaker AI Studio Classic em outra conta

Laurens van der Maas e Aubrey Oosthuizen, Amazon Web Services

Resumo

Aviso: o AWS CodeCommit não está mais disponível para novos clientes. Os clientes atuais do AWS CodeCommit podem continuar usando o serviço normalmente. Saiba mais

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

Pré-requisitos e limitações

Pré-requisitos

Limitações

Este padrão é válido apenas para o SageMaker AI Studio Classic e não para o RStudio no Amazon SageMaker AI.

Arquitetura

Pilha de tecnologia

  • Amazon SageMaker AI

  • Amazon SageMaker AI Studio Classic

  • AWS CodeCommit

  • AWS Identity and Access Management (IAM)

  • Git

Arquitetura de destino

O diagrama apresentado a seguir ilustra uma arquitetura que associa um repositório do CodeCommit da Conta A ao SageMaker AI Studio Classic na Conta B.

Diagrama de arquitetura para associação entre contas

O diagrama mostra o seguinte fluxo de trabalho:

  1. Um usuário assume o perfil MyCrossAccountRepositoryContributorRole na Conta A por meio do perfil sts:AssumeRole, enquanto usa o perfil de execução do SageMaker AI no SageMaker AI Studio Classic na Conta B. O perfil assumido inclui permissões do CodeCommit para clonar e interagir com o repositório especificado.

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

Automação e escala

Este padrão consiste em etapas manuais que podem ser automatizadas usando o AWS Cloud Development Kit (AWS CDK), o AWS CloudFormation ou o Terraform.

Ferramentas

Ferramentas da AWS

  • O Amazon SageMaker AI é um serviço gerenciado de machine learning (ML) que ajuda no desenvolvimento e no treinamento de modelos de ML e, em seguida, na implantação desses modelos em um ambiente hospedado pronto para produção.

  • O Amazon SageMaker AI Studio Classic é um ambiente de desenvolvimento integrado (IDE) baseado na web para machine learning, que possibilita a criação, o treinamento, a depuração, a implantação e o monitoramento dos modelos de machine learning.

  • O AWS CodeCommit é um serviço de controle de versão que ajuda no armazenamento e no gerenciamento de repositórios Git de forma privada, sem a necessidade de administrar o próprio sistema de controle de origem.

    Aviso: o AWS CodeCommit não está mais disponível para novos clientes. Os clientes atuais do AWS CodeCommit podem continuar usando o serviço normalmente. Saiba mais

  • OAWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus recursos AWS 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

Criar uma política do IAM para acesso ao repositório na conta A.

  1. Faça login no Console de gerenciamento da AWS e abra o console do IAM.

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

  3. Selecione a guia JSON.

  4. Copie a instrução da política de Exemplo de política do IAM na seção Informações adicionais desse padrão e cole-a no editor JSON. 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 política do IAM é chamada de CrossAccountAccessForMySharedDemoRepo, mas você pode escolher o nome de política que preferir.

  7. Escolha Criar política.

dica

É uma prática recomendada restringir o escopo das políticas do IAM às permissões mínimas necessárias para o seu caso de uso.

AWS DevOps

Criar um perfil do IAM para acesso ao repositório na conta A.

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

  2. Em Tipo de entidade confiável, selecione Conta da AWS.

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

  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. Observação: nesse padrão, o perfil do IAM é chamado de MyCrossAccountRepositoryContributorRole, mas você pode escolher o nome de perfil que preferir.

  8. Escolha Criar perfil e, em seguida, copie o nome do recurso da Amazon (ARN) do novo perfil.

AWS DevOps
TarefaDescriçãoHabilidades necessárias

Anexe uma política em linha ao perfil de execução vinculado ao seu usuário do domínio SageMaker na Conta B.

  1. No painel de navegação do console do IAM, escolha Perfis.

  2. Pesquise e escolha o perfil de execução vinculado ao usuário do seu domínio do SageMaker AI na Conta B.

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

  4. Selecione a guia JSON.

  5. Copie a seguinte declaração de política e, em seguida, cole-o no editor JSON.

    { "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. Substitua <Account_A_ID> pelo ID da conta A. Substitua <Account_A_Role_Name> pelo nome do perfil do IAM que você criou anteriormente.

  7. Selecione 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 AI Studio Classic da Conta B.

  1. No painel de navegação do console do SageMaker, 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 shell do SageMaker na seção Informações adicionais desse padrão e, em seguida, 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 Console do SageMaker, escolha Abrir assistente de execução.

  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 o repositório do CodeCommit em um SageMaker AI Studio entre contas. Agora você pode executar todos os comandos do Git no terminal do sistema.

AWS DevOps

Mais informações

Exemplo de política do IAM

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

  • Substitua <CodeCommit_Repository_Region> pela Região da AWS correspondente ao repositório.

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

  • Substitua <CodeCommit_Repository_Name> pelo nome do seu repositório do CodeCommit 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 shell para o SageMaker AI

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

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

  • Substitua <Account_A_Role_Name> pelo nome do perfil do IAM que você criou anteriormente.

  • Substitua <CodeCommit_Repository_Region> pela Região da AWS correspondente ao repositório.

  • Substitua <CodeCommit_Repository_Name> pelo nome do seu repositório do CodeCommit 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>