Associare un AWS CodeCommit repository in un AWS account con SageMaker Studio in un altro account - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Associare un AWS CodeCommit repository in un AWS account con SageMaker Studio in un altro account

Creato da Laurens van der Maas () e Aubrey Oosthuizen () AWS AWS

Ambiente: produzione

Tecnologie: apprendimento automatico e intelligenza artificiale DevOps; Sicurezza, identità, conformità; CloudNative

AWSservizi: AWS CodeCommit; Amazon SageMaker; AWS Identity and Access Management

Riepilogo

Questo modello fornisce istruzioni e codice su come associare un AWS CodeCommit repository in un AWS account (Account A) con Amazon SageMaker Studio in un altro AWS account (Account B). Per configurare l'associazione, è necessario creare una politica e un ruolo di AWS Identity and Access Management (IAM) nell'Account A e una politica IAM in linea nell'Account B. Quindi, si utilizza uno script di shell per clonare il CodeCommit repository dall'Account A a SageMaker Studio nell'Account B.

Prerequisiti e limitazioni

Prerequisiti

  • Due AWSaccount, uno contenente il CodeCommit repository e l'altro contenente un SageMaker dominio con un utente

  • SageMaker Dominio e utente assegnati, con accesso a Internet o accesso a CodeCommit e AWS Security Token Service (AWSSTS) tramite endpoint di rete privata virtuale (VPC)

  • Una conoscenza di base di IAM

  • Una conoscenza di base di SageMaker Studio

  • Una conoscenza di base di Git e CodeCommit

Limitazioni

Questo modello si applica solo a SageMaker Studio, non ad RStudio Amazon SageMaker.

Architettura

Stack tecnologico

  • Amazon SageMaker

  • Amazon SageMaker Studio

  • AWS CodeCommit

  • AWSIdentity and Access Management (IAM)

  • Git

Architettura Target

Il diagramma seguente mostra un'architettura che associa un CodeCommit repository dall'Account A a SageMaker Studio nell'Account B.

Diagramma di architettura per l'associazione tra account

Il diagramma mostra il flusso di lavoro seguente:

  1. Un utente assume il MyCrossAccountRepositoryContributorRole ruolo nell'Account A attraverso il sts:AssumeRole ruolo, mentre utilizza il ruolo di SageMaker esecuzione in SageMaker Studio nell'Account B. Il ruolo assunto include le CodeCommit autorizzazioni per clonare e interagire con il repository specificato.

  2. L'utente esegue i comandi Git dal terminale di sistema in SageMaker Studio.

Automazione e scalabilità

Questo modello è costituito da passaggi manuali che possono essere automatizzati utilizzando AWSCloud Development Kit (AWSCDK) o Terraform. AWS CloudFormation

Strumenti

AWSstrumenti

  • Amazon SageMaker è un servizio di machine learning (ML) gestito che ti aiuta a creare e addestrare modelli di machine learning per poi distribuirli in un ambiente ospitato pronto per la produzione.

  • Amazon SageMaker Studio è un ambiente di sviluppo integrato basato sul Web (IDE) per l'apprendimento automatico che ti consente di creare, addestrare, eseguire il debug, distribuire e monitorare i tuoi modelli di machine learning.

  • AWS CodeCommitè un servizio di controllo delle versioni che consente di archiviare e gestire in modo privato gli archivi Git, senza dover gestire il proprio sistema di controllo del codice sorgente.

  • AWSIdentity and Access Management (IAM) consente di gestire in modo sicuro l'accesso alle AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.

Altri strumenti

  • Git è un sistema distribuito di controllo delle versioni per tenere traccia delle modifiche nel codice sorgente durante lo sviluppo del software.

Epiche

AttivitàDescrizioneCompetenze richieste

Crea una IAM politica per l'accesso al repository nell'Account A.

  1. Accedi alla console di AWS gestione e apri la IAMconsole.

  2. Nel riquadro di navigazione, seleziona Policy e quindi Crea policy.

  3. Scegli la JSONscheda.

  4. Copia la dichiarazione politica da IAMExample policy nella sezione Informazioni aggiuntive di questo modello, quindi incolla la dichiarazione nell'JSONeditor. Assicurati di sostituire tutti i valori segnaposto nella politica.

  5. Scegli Avanti:Tag, quindi scegli Avanti:Revisione.

  6. In Name (Nome), immettere un nome per la policy. Nota: in questo modello, la IAM politica viene chiamataCrossAccountAccessForMySharedDemoRepo, ma puoi scegliere il nome della politica che preferisci.

  7. Scegli Create Policy (Crea policy).

Suggerimento: è consigliabile limitare l'ambito delle IAM politiche alle autorizzazioni minime richieste per il proprio caso d'uso.

AWS DevOps

Crea un IAM ruolo per l'accesso al repository nell'Account A.

  1. Nel riquadro di navigazione della IAMconsole, scegli Ruoli, quindi scegli Crea ruolo.

  2. Per il tipo di entità attendibile, seleziona AWSaccount.

  3. Nella sezione AWSAccount, seleziona Altro AWS account.

  4. Per ID account, inserisci l'ID account per l'account B.

  5. Nella pagina Aggiungi autorizzazioni, cerca e scegli la CrossAccountAccessForMySharedDemoRepo politica che hai creato in precedenza.

  6. Scegli Next (Successivo).

  7. In Role name (Nome ruolo), immettere un nome. Nota: in questo schema, il nome del IAM ruolo viene chiamatoMyCrossAccountRepositoryContributorRole, ma puoi scegliere il nome del ruolo che preferisci.

  8. Scegli Crea ruolo, quindi copia l'Amazon Resource Name (ARN) del nuovo ruolo.

AWS DevOps
AttivitàDescrizioneCompetenze richieste

Allega una policy in linea al ruolo di esecuzione associato al tuo utente di SageMaker dominio nell'Account B.

  1. Nel riquadro di navigazione della IAMconsole, scegli Ruoli.

  2. Cerca e scegli il ruolo di esecuzione associato al tuo utente di SageMaker dominio nell'Account B.

  3. Scegli Aggiungi autorizzazioni, quindi scegli Crea politica in linea.

  4. Scegli la scheda. JSON

  5. Copia la seguente dichiarazione politica e incollala nell'JSONeditor.

    { "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. Sostituiscilo <Account_A_ID> con l'ID dell'account A. Sostituiscilo <Account_A_Role_Name> con il nome del IAM ruolo che hai creato in precedenza.

  7. Scegli Verifica policy.

  8. In Nome, inserisci un nome per la tua politica in linea.

  9. Scegli Create Policy (Crea policy).

AWS DevOps
AttivitàDescrizioneCompetenze richieste

Crea lo script di shell in SageMaker Studio nell'account B.

  1. Nel pannello di navigazione della SageMaker console, scegli Studio.

  2. Seleziona il tuo profilo utente, quindi scegli Open Studio.

  3. Nella sezione Home, scegli Open Launcher.

  4. Nella sezione Utilità e file, scegli File di testo.

  5. Copia lo script da SageMaker Example shell script nella sezione Informazioni aggiuntive di questo modello, quindi incolla l'istruzione nel nuovo file. Assicurati di sostituire tutti i valori segnaposto nello script.

  6. Fate clic con il pulsante destro del mouse sulla scheda untitled.txt del nuovo file, quindi scegliete Rinomina testo. Per Nuovo nome, immettete cross_account_git_clone.sh, quindi scegliete Rinomina.

AWS DevOps

Richiamate lo script della shell dal terminale di sistema.

  1. Nella sezione Home della SageMaker console, scegli Open Launcher.

  2. Nella sezione Utilità e file, scegli Terminale di sistema.

  3. Nel terminale, esegui il seguente comando:

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

Hai clonato il tuo CodeCommit repository in un SageMaker account multiplo di Studio. Ora puoi eseguire tutti i comandi Git dal terminale di sistema.

AWS DevOps

Informazioni aggiuntive

IAMPolitica di esempio

Se utilizzi questa politica di esempio, procedi come segue:

  • Sostituisci <CodeCommit_Repository_Region> con la AWS regione per il repository.

  • Sostituisci <Account_A_ID> con l'ID dell'account A.

  • Sostituiscilo <CodeCommit_Repository_Name> con il nome del tuo CodeCommit repository nell'Account 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>" ] } ] }

Esempio di script di SageMaker shell

Se utilizzate questo script di esempio, effettuate le seguenti operazioni:

  • Sostituisci <Account_A_ID> con l'ID dell'account A.

  • Sostituiscilo <Account_A_Role_Name> con il nome del IAM ruolo che hai creato in precedenza.

  • Sostituisci <CodeCommit_Repository_Region> con la AWS regione per il repository.

  • <CodeCommit_Repository_Name>Sostituiscilo con il nome del tuo CodeCommit repository nell'Account 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>