

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Associer un AWS CodeCommit référentiel dans un compte Compte AWS à Amazon SageMaker AI Studio Classic dans un autre compte
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account"></a>

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

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

Ce modèle fournit des instructions et du code expliquant comment associer un AWS CodeCommit référentiel dans un compte Compte AWS (compte A) à Amazon SageMaker AI Studio Classic dans un autre Compte AWS (compte B). Pour configurer l'association, vous devez créer une politique et un rôle Gestion des identités et des accès AWS (IAM) dans le compte A et une politique IAM en ligne dans le compte B. Ensuite, vous devez utiliser un script shell pour cloner le CodeCommit référentiel du compte A vers Amazon SageMaker AI Classic dans le compte B.

## Conditions préalables et limitations
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-prereqs"></a>

**Prérequis**
+ Deux [Comptes AWS](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/), l'un contenant le CodeCommit référentiel et l'autre contenant un domaine SageMaker AI avec un utilisateur
+ [Domaine et utilisateur SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-studio-onboard.html) provisionnés, avec accès à Internet ou accès à CodeCommit et AWS Security Token Service (AWS STS) via des points de terminaison de réseau privé virtuel (VPC)
+ Compréhension de base de l'[IAM](https://docs.aws.amazon.com/iam/?id=docs_gateway)
+ Compréhension de base d'[SageMaker AI Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html)
+ Compréhension de base de [Git](https://git-scm.com/) et [CodeCommit ](https://docs.aws.amazon.com/codecommit/index.html)

**Limites**

Ce modèle s'applique uniquement à SageMaker AI Studio Classic, et non RStudio à Amazon SageMaker AI.

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

**Pile technologique**
+ Amazon SageMaker AI
+ Amazon SageMaker AI Studio classique
+ AWS CodeCommit
+ Gestion des identités et des accès AWS (JE SUIS) 
+ Git

**Architecture cible**

Le schéma suivant montre une architecture qui associe un CodeCommit référentiel du compte A à SageMaker AI Studio Classic dans le compte B.

![Schéma d'architecture pour l'association entre comptes](https://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/d40df9eb-6ee2-4cb8-8257-051fa624e52a/images/abb89a66-fc8f-4e72-8f45-f0f44c2ec6ce.png)


Le schéma suivant illustre le flux de travail suivant :

1. Un utilisateur assume le `MyCrossAccountRepositoryContributorRole` rôle dans le compte A par le biais du `sts:AssumeRole` rôle, tandis qu'il utilise le rôle d'exécution SageMaker SageMaker AI dans AI Studio Classic dans le compte B. Le rôle assumé inclut les CodeCommit autorisations de clonage et d'interaction avec le référentiel spécifié.

1. L'utilisateur exécute des commandes Git depuis le terminal système dans SageMaker AI Studio Classic.

**Automatisation et mise à l'échelle**

Ce modèle comprend des étapes manuelles qui peuvent être automatisées à l'aide de [Cloud Development Kit AWS (AWS CDK)[AWS CloudFormation](https://docs.aws.amazon.com/cloudformation/?id=docs_gateway)](https://docs.aws.amazon.com/cdk/?id=docs_gateway), ou [Terraform](https://www.terraform.io/).

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

**Outils AWS**
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) est un service géré d'apprentissage automatique (ML) qui vous aide à créer et à former des modèles de machine learning, puis à les déployer dans un environnement hébergé prêt pour la production.
+ [Amazon SageMaker AI Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) est un environnement de développement intégré (IDE) basé sur le Web pour l'apprentissage automatique qui vous permet de créer, de former, de déboguer, de déployer et de surveiller vos modèles d'apprentissage automatique.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)est un service de contrôle de version qui vous permet de stocker et de gérer de manière privée des référentiels Git, sans avoir à gérer votre propre système de contrôle de source.

  **Remarque** : n' AWS CodeCommit est plus disponible pour les nouveaux clients. Les clients existants de AWS CodeCommit peuvent continuer à utiliser le service normalement. [En savoir plus](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider/)
+ [Gestion des identités et des accès AWS (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.

**Autres outils**
+ [Git](https://git-scm.com/) est un système de contrôle de version distribué permettant de suivre les modifications du code source pendant le développement de logiciels.

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

### Création d'une politique IAM et d'un rôle IAM dans le compte A
<a name="create-an-iam-policy-and-iam-role-in-account-a"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une politique IAM pour l'accès au référentiel dans le compte A. | 1. Connectez-vous à la [console IAM Console de gestion AWS](https://console.aws.amazon.com/iam/) et ouvrez-la.<br />2. Dans le volet de navigation, sélectionnez **Politiques**, puis **Créer une politique**.<br />3. Sélectionnez l'onglet **JSON**.<br />4. Copiez la déclaration de politique depuis *Example IAM policy* dans la section [Informations supplémentaires](#associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-additional) de ce modèle, puis collez l'instruction dans l'éditeur JSON. Assurez-vous de remplacer toutes les valeurs d'espace réservé dans la politique.<br />5. **Choisissez **Next:Tags**, puis Next:Review.**<br />6. Pour le **Name** (Nom), saisissez le nom de la politique. **Remarque** : Dans ce modèle, la stratégie IAM est appelée`CrossAccountAccessForMySharedDemoRepo`, mais vous pouvez choisir le nom de politique que vous préférez.<br />7. Choisissez **Create Policy** (Créer une politique).Il est recommandé de limiter la portée de vos politiques IAM aux autorisations minimales requises pour votre cas d'utilisation. | AWS DevOps | 
| Créez un rôle IAM pour accéder au référentiel dans le compte A. | 1. Dans le volet de navigation de la console [IAM](https://console.aws.amazon.com/iam/), choisissez **Rôles**, puis **Créer un rôle**.<br />2. Pour le **type d'entité de confiance**, sélectionnez un **compte AWS**.<br />3. Dans la section **Compte AWS**, sélectionnez **Un autre compte AWS**.<br />4. Pour **ID de compte**, entrez l'ID de compte pour le compte B.<br />5. Sur la page **Ajouter des autorisations**, recherchez et choisissez la `CrossAccountAccessForMySharedDemoRepo` politique que vous avez créée précédemment.<br />6. Choisissez **Suivant**.<br />7. Pour **Nom du rôle (Role name)**, saisissez un nom. **Remarque** : Dans ce modèle, le nom du rôle IAM est appelé`MyCrossAccountRepositoryContributorRole`, mais vous pouvez choisir le nom de rôle que vous préférez.<br />8. Choisissez **Create role**, puis copiez le Amazon Resource Name (ARN) du nouveau rôle. | AWS DevOps | 

### Créez une politique en ligne IAM dans le compte B
<a name="create-an-iam-inline-policy-in-account-b"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Associez une politique intégrée au rôle d'exécution associé à votre utilisateur de SageMaker domaine dans le compte B. | 1. Dans le volet de navigation de la console [IAM](https://console.aws.amazon.com/iam/), choisissez **Rôles**.<br />2. Recherchez et choisissez le rôle d'exécution associé à votre utilisateur de domaine SageMaker AI dans le compte B.<br />3. Sélectionnez **Ajouter des autorisations**, puis **Ajouter la politique**.<br />4. Choisissez l’onglet **JSON**.<br />5. Copiez la déclaration de politique suivante, puis collez-la dans l'éditeur 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. Remplacez `<Account_A_ID>` par l'ID de compte du compte A. Remplacez `<Account_A_Role_Name>` par le nom du rôle IAM que vous avez créé précédemment.<br />7. Choisissez **Examiner une politique**.<br />8. Dans **Nom**, entrez le nom de votre politique en ligne.<br />9. Choisissez **Create Policy** (Créer une politique). | AWS DevOps | 

### Cloner le référentiel dans SageMaker AI Studio Classic pour le compte B
<a name="clone-the-repository-in-sm-studio-classic-for-account-b"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez le script shell dans SageMaker AI Studio Classic dans le compte B. | 1. Dans le volet de navigation de la [SageMaker console](https://console.aws.amazon.com/sagemaker/), choisissez **Studio**.<br />2. Sélectionnez votre profil utilisateur, puis choisissez **Open Studio**.<br />3. Dans la section **Accueil**, choisissez **Open Launcher**.<br />4. Dans la section **Utilitaires et fichiers**, sélectionnez **Fichier texte**.<br />5. Copiez le script depuis * SageMaker Example shell script* dans la section [Informations supplémentaires](#associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-additional) de ce modèle, puis collez l'instruction dans le nouveau fichier. Assurez-vous de remplacer toutes les valeurs d'espace réservé dans le script.<br />6. Cliquez avec le bouton droit sur l'onglet **untitled.txt** de votre nouveau fichier, puis choisissez **Renommer le texte**. Pour **Nouveau nom**, entrez **cross\_account\_git\_clone.sh**, puis choisissez **Renommer**. | AWS DevOps | 
| Appelez le script shell depuis le terminal système. | 1. Dans la section **Accueil** de la [SageMaker console](https://console.aws.amazon.com/sagemaker/), choisissez **Open Launcher**.<br />2. Dans la section **Utilitaires et fichiers**, choisissez **Terminal système**.<br />3. Dans le terminal, exécutez la commande suivante :<pre>chmod u+x ./cross_account_git_clone.sh && ./cross_account_git_clone.sh</pre>Vous avez cloné votre CodeCommit dépôt dans un compte croisé SageMaker AI Studio. Vous pouvez désormais exécuter toutes les commandes Git depuis le terminal système. | AWS DevOps | 

## Informations supplémentaires
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-additional"></a>

**Exemple de politique IAM**

Si vous utilisez cet exemple de politique, procédez comme suit :
+ Remplacez `<CodeCommit_Repository_Region>` par le Région AWS pour le référentiel.
+ Remplacez `<Account_A_ID>` par le numéro de compte du compte A.
+ Remplacez `<CodeCommit_Repository_Name>` par le nom de votre CodeCommit dépôt dans le compte 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>"
        ]
    }
]
}
```

**Exemple de script shell SageMaker AI**

Si vous utilisez cet exemple de script, procédez comme suit :
+ Remplacez `<Account_A_ID>` par le numéro de compte du compte A.
+ `<Account_A_Role_Name>`Remplacez-le par le nom du rôle IAM que vous avez créé précédemment.
+ Remplacez `<CodeCommit_Repository_Region>` par le Région AWS pour le référentiel.
+ Remplacez `<CodeCommit_Repository_Name>` par le nom de votre CodeCommit dépôt dans le compte 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>
```