

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

# Associa un AWS CodeCommit repository in uno Account AWS ad Amazon SageMaker AI Studio Classic in un altro account
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account"></a>

*Laurens van der Maas e Aubrey Oosthuizen, Amazon Web Services*

## Riepilogo
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-summary"></a>

Questo modello fornisce istruzioni e codice su come associare un AWS CodeCommit repository in uno Account AWS (Account A) con Amazon SageMaker AI Studio Classic in un altro Account AWS (Account B). Per configurare l'associazione, devi creare una policy e un ruolo AWS Identity and Access Management (IAM) nell'Account A e una policy IAM in linea nell'Account B. Quindi, usi uno script di shell per clonare il CodeCommit repository dall'Account A ad Amazon SageMaker AI Classic nell'Account B.

## Prerequisiti e limitazioni
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-prereqs"></a>

**Prerequisiti**
+ Due [Account AWS](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/), uno contenente il CodeCommit repository e l'altro contenente un dominio SageMaker AI con un utente
+ [Dominio e utente SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-studio-onboard.html) forniti, con accesso a Internet o accesso a CodeCommit e Servizio di token di sicurezza AWS (AWS STS) tramite endpoint di rete privata virtuale (VPC)
+ [Una conoscenza di base di IAM](https://docs.aws.amazon.com/iam/?id=docs_gateway)
+ Una conoscenza di base di [SageMaker AI Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html)
+ Una conoscenza di base di [Git](https://git-scm.com/) e [CodeCommit ](https://docs.aws.amazon.com/codecommit/index.html)

**Limitazioni**

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

## Architecture
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-architecture"></a>

**Stack tecnologico**
+ Amazon SageMaker AI
+ Amazon SageMaker AI Studio Classic
+ AWS CodeCommit
+ AWS Identity and Access Management (IAM) 
+ Git

**Architettura Target**

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

![Diagramma di architettura per l'associazione tra account](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/d40df9eb-6ee2-4cb8-8257-051fa624e52a/images/abb89a66-fc8f-4e72-8f45-f0f44c2ec6ce.png)


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 esecuzione SageMaker AI in SageMaker AI Studio Classic nell'Account B. Il ruolo assunto include le CodeCommit autorizzazioni per clonare e interagire con il repository specificato.

1. L'utente esegue i comandi Git dal terminale di sistema in SageMaker AI Studio Classic.

**Automazione e scalabilità**

Questo modello è costituito da passaggi manuali che possono essere automatizzati utilizzando [AWS Cloud Development Kit (AWS CDK)[AWS CloudFormation](https://docs.aws.amazon.com/cloudformation/?id=docs_gateway)](https://docs.aws.amazon.com/cdk/?id=docs_gateway), o [Terraform](https://www.terraform.io/).

## Tools (Strumenti)
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-tools"></a>

**Strumenti AWS**
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) è 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 AI Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) è un ambiente di sviluppo integrato (IDE) basato sul Web per l'apprendimento automatico che ti consente di creare, addestrare, eseguire il debug, distribuire e monitorare i tuoi modelli di apprendimento automatico.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)è 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.

  **Avviso**: non AWS CodeCommit è più disponibile per i nuovi clienti. I clienti esistenti di AWS CodeCommit possono continuare a utilizzare il servizio normalmente. [Ulteriori informazioni](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider/)
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.

**Altri strumenti**
+ [Git](https://git-scm.com/) è un sistema distribuito di controllo delle versioni per tenere traccia delle modifiche nel codice sorgente durante lo sviluppo del software.

## Epiche
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-epics"></a>

### Crea una policy IAM e un ruolo IAM nell'Account A
<a name="create-an-iam-policy-and-iam-role-in-account-a"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea una policy IAM per l'accesso al repository nell'Account A. | 1. Accedi Console di gestione AWS e apri la [console IAM](https://console.aws.amazon.com/iam/).<br />2. Nel pannello di navigazione, scegliere **Policies (Policy)** e **Create Policy (Crea policy)**.<br />3. Scegli la scheda **JSON**.<br />4. Copia la dichiarazione di policy da *Example IAM policy* nella sezione [Informazioni aggiuntive](#associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-additional) di questo pattern, quindi incolla la dichiarazione nell'editor JSON. Assicurati di sostituire tutti i valori segnaposto nella policy.<br />5. **Scegli **Avanti:Tag, quindi scegli Avanti:Revisione**.**<br />6. In **Name (Nome)**, immettere un nome per la policy. **Nota**: in questo modello, la policy IAM viene chiamata`CrossAccountAccessForMySharedDemoRepo`, ma puoi scegliere il nome della policy che preferisci.<br />7. Scegli **Crea policy**.È buona prassi limitare l'ambito delle policy IAM alle autorizzazioni minime richieste per il tuo caso d'uso. | AWS DevOps | 
| Crea un ruolo IAM per l'accesso al repository nell'Account A. | 1. Nel pannello di navigazione della console [IAM](https://console.aws.amazon.com/iam/), scegli **Ruoli** e poi **Crea ruolo**.<br />2. Per il **tipo di entità affidabile**, seleziona **Account AWS**.<br />3. Nella sezione **Account AWS**, seleziona **Un altro account AWS**.<br />4. Per **Account ID**, inserisci l'ID account per Account B.<br />5. Nella pagina **Aggiungi autorizzazioni**, cerca e scegli la `CrossAccountAccessForMySharedDemoRepo` politica che hai creato in precedenza.<br />6. Scegli **Next (Successivo)**.<br />7. In **Role name (Nome ruolo)**, immettere un nome. **Nota**: in questo modello, il nome del ruolo IAM viene chiamato`MyCrossAccountRepositoryContributorRole`, ma puoi scegliere il nome del ruolo che preferisci.<br />8. Scegli **Crea ruolo**, quindi copia l'Amazon Resource Name (ARN) del nuovo ruolo. | AWS DevOps | 

### Crea una policy IAM in linea nell'Account B
<a name="create-an-iam-inline-policy-in-account-b"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Allega una policy in linea al ruolo di esecuzione associato al tuo utente di SageMaker dominio nell'Account B. | 1. Nel pannello di navigazione della console [IAM](https://console.aws.amazon.com/iam/), scegli **Ruoli**.<br />2. Cerca e scegli il ruolo di esecuzione associato all'utente del tuo dominio SageMaker AI nell'Account B.<br />3. Scegli **Aggiungi autorizzazioni**, quindi seleziona **Crea policy in linea**.<br />4. Scegli la scheda **JSON**.<br />5. Copia la seguente dichiarazione sulla politica e incollala nell'editor JSON.<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Sid": "VisualEditor0",<br />            "Effect": "Allow",<br />            "Action": "sts:AssumeRole",<br />            "Resource": "arn:aws:iam::<Account_A_ID>:role/<Account_A_Role_Name>"<br />        }<br />    ]<br />}</pre><br />6. Sostituisci `<Account_A_ID>` con l'ID dell'account A. Sostituisci `<Account_A_Role_Name>` con il nome del ruolo IAM creato in precedenza.<br />7. Scegliere **Esamina policy**.<br />8. In **Nome**, inserisci un nome per la tua politica in linea.<br />9. Scegli **Crea policy**. | AWS DevOps | 

### Clona il repository in SageMaker AI Studio Classic per l'account B
<a name="clone-the-repository-in-sm-studio-classic-for-account-b"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea lo script di shell in SageMaker AI Studio Classic nell'Account B. | 1. Nel pannello di navigazione della [SageMaker console](https://console.aws.amazon.com/sagemaker/), scegli **Studio**.<br />2. Seleziona il tuo profilo utente, quindi scegli **Open Studio**.<br />3. Nella sezione **Home**, scegli **Open Launcher**.<br />4. Nella sezione **Utilità e file**, scegli File di **testo**.<br />5. Copia lo script da * SageMaker Example shell script* nella sezione [Informazioni aggiuntive](#associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-additional) di questo modello, quindi incolla l'istruzione nel nuovo file. Assicurati di sostituire tutti i valori segnaposto nello script.<br />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 | 
| Richiama lo script di shell dal terminale di sistema. | 1. Nella sezione **Home** della [SageMaker console](https://console.aws.amazon.com/sagemaker/), scegli **Open Launcher**.<br />2. Nella sezione **Utilità e file**, scegli Terminale di **sistema**.<br />3. Nel terminale, esegui il seguente comando:<pre>chmod u+x ./cross_account_git_clone.sh && ./cross_account_git_clone.sh</pre>Hai clonato il tuo CodeCommit repository in un account multiplo di SageMaker AI Studio. Ora puoi eseguire tutti i comandi Git dal terminale di sistema. | AWS DevOps | 

## Informazioni aggiuntive
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-additional"></a>

**Policy IAM di esempio**

Se utilizzi questa politica di esempio, procedi come segue:
+ Sostituisci `<CodeCommit_Repository_Region>` con Regione AWS for the 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 shell SageMaker AI**

Se usi questo script di esempio, procedi come segue:
+ Sostituisci `<Account_A_ID>` con l'ID dell'account A.
+ Sostituiscilo `<Account_A_Role_Name>` con il nome del ruolo IAM che hai creato in precedenza.
+ Sostituiscilo `<CodeCommit_Repository_Region>` con Regione AWS for the 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>
```