

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Verknüpfen Sie ein AWS CodeCommit Repository in einem AWS-Konto mit Amazon SageMaker AI Studio Classic in einem anderen Konto
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account"></a>

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

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

Dieses Muster enthält Anweisungen und Code zur Verknüpfung eines AWS CodeCommit Repositorys in einem AWS-Konto (Konto A) mit Amazon SageMaker AI Studio Classic in einem anderen AWS-Konto (Konto B). Um die Zuordnung einzurichten, müssen Sie eine AWS Identity and Access Management (IAM-) Richtlinie und Rolle in Konto A und eine IAM-Inline-Richtlinie in Konto B erstellen. Anschließend verwenden Sie ein Shell-Skript, um das CodeCommit Repository von Konto A nach Amazon SageMaker AI Classic in Konto B zu klonen.

## Voraussetzungen und Einschränkungen
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-prereqs"></a>

**Voraussetzungen**
+ Zwei [AWS-Konten](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/), eine enthält das CodeCommit Repository und die andere enthält eine SageMaker AI-Domäne mit einem Benutzer
+ Bereitgestellte [SageMaker KI-Domäne und Benutzer](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-studio-onboard.html) mit Internetzugang oder Zugriff auf CodeCommit und AWS -Security-Token-Service (AWS STS) über virtuelle private Netzwerke (VPC) -Endpunkte
+ [Ein grundlegendes Verständnis von IAM](https://docs.aws.amazon.com/iam/?id=docs_gateway)
+ Ein grundlegendes Verständnis von [SageMaker AI Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html)
+ Ein grundlegendes Verständnis von [Git](https://git-scm.com/) und [CodeCommit ](https://docs.aws.amazon.com/codecommit/index.html)

**Einschränkungen**

Dieses Muster gilt nur für SageMaker AI Studio Classic, nicht für RStudio Amazon SageMaker AI.

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

**Technologie-Stack**
+ Amazon SageMaker KI
+ Amazon SageMaker AI Studio Klassisch
+ AWS CodeCommit
+ AWS Identity and Access Management (ICH BIN) 
+ Git

**Zielarchitektur**

Das folgende Diagramm zeigt eine Architektur, die ein CodeCommit Repository von Konto A mit SageMaker AI Studio Classic in Konto B verknüpft.

![Architekturdiagramm für die kontenübergreifende Zuordnung](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/d40df9eb-6ee2-4cb8-8257-051fa624e52a/images/abb89a66-fc8f-4e72-8f45-f0f44c2ec6ce.png)


Das Diagramm zeigt den folgenden Workflow:

1. Ein Benutzer übernimmt die `MyCrossAccountRepositoryContributorRole` Rolle in Konto A über die `sts:AssumeRole` Rolle, während er die AI-Ausführungsrolle in SageMaker SageMaker AI Studio Classic in Konto B verwendet. Die übernommene Rolle beinhaltet die CodeCommit Berechtigungen zum Klonen und Interagieren mit dem angegebenen Repository.

1. Der Benutzer führt Git-Befehle vom Systemterminal in SageMaker AI Studio Classic aus.

**Automatisierung und Skalierung**

Dieses Muster besteht aus manuellen Schritten, die mithilfe von [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), oder [Terraform](https://www.terraform.io/) automatisiert werden können.

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

**AWS-Tools**
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) ist ein verwalteter Service für maschinelles Lernen (ML), mit dem Sie ML-Modelle erstellen und trainieren und sie dann in einer produktionsbereiten, gehosteten Umgebung bereitstellen können.
+ [Amazon SageMaker AI Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) ist eine webbasierte, integrierte Entwicklungsumgebung (IDE) für maschinelles Lernen, mit der Sie Ihre Machine-Learning-Modelle erstellen, trainieren, debuggen, bereitstellen und überwachen können.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)ist ein Versionskontrolldienst, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.

  **Hinweis**: AWS CodeCommit ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS CodeCommit können den Service weiterhin wie gewohnt nutzen. [Weitere Informationen](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) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.

**Andere Tools**
+ [Git](https://git-scm.com/) ist ein verteiltes Versionskontrollsystem zur Nachverfolgung von Änderungen im Quellcode während der Softwareentwicklung.

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

### Erstellen Sie eine IAM-Richtlinie und eine IAM-Rolle in Konto A
<a name="create-an-iam-policy-and-iam-role-in-account-a"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine IAM-Richtlinie für den Repository-Zugriff in Konto A. | 1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die [IAM-Konsole](https://console.aws.amazon.com/iam/).<br />2. Wählen Sie im Navigationsbereich **Richtlinien** und dann **Richtlinie erstellen**.<br />3. Wählen Sie den Tab **JSON**.<br />4. Kopieren Sie die Richtlinienanweisung aus der *Beispiel-IAM-Richtlinie* im Abschnitt [Zusätzliche Informationen](#associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-additional) dieses Musters und fügen Sie die Anweisung dann in den JSON-Editor ein. Achten Sie darauf, alle Platzhalterwerte in der Richtlinie zu ersetzen.<br />5. **Wählen Sie **Weiter: Schlagworte** und dann Weiter: Überprüfen.**<br />6. Geben Sie unter **Name** einen Namen für die Richtlinie ein. **Hinweis**: In diesem Muster wird die IAM-Richtlinie als bezeichnet`CrossAccountAccessForMySharedDemoRepo`, aber Sie können einen beliebigen Richtliniennamen wählen.<br />7. Wählen Sie **Richtlinie erstellen** aus.Es hat sich bewährt, den Geltungsbereich Ihrer IAM-Richtlinien auf die für Ihren Anwendungsfall erforderlichen Mindestberechtigungen zu beschränken. | AWS DevOps | 
| Erstellen Sie eine IAM-Rolle für den Repository-Zugriff in Konto A. | 1. Klicken Sie im Navigationsbereich der [IAM](https://console.aws.amazon.com/iam/)-Konsole auf **Rollen** und wählen Sie dann **Rolle erstellen** aus.<br />2. Wählen Sie unter **Vertrauenswürdiger Entitätstyp** die Option **AWS-Konto** aus.<br />3. Wählen Sie im Abschnitt **AWS-Konto** die Option **Anderes AWS-Konto** aus.<br />4. Geben Sie als **Konto-ID** die Konto-ID für Konto B ein.<br />5. Suchen Sie auf der Seite „**Berechtigungen hinzufügen**“ nach der `CrossAccountAccessForMySharedDemoRepo` Richtlinie, die Sie zuvor erstellt haben, und wählen Sie sie aus.<br />6. Wählen Sie **Weiter** aus.<br />7. Geben Sie in **Role name (Name der Rolle)** einen Namen ein. **Hinweis**: In diesem Muster wird der IAM-Rollenname als bezeichnet`MyCrossAccountRepositoryContributorRole`, aber Sie können einen beliebigen Rollennamen wählen.<br />8. Wählen Sie **Rolle erstellen** und kopieren Sie dann den Amazon-Ressourcennamen (ARN) der neuen Rolle. | AWS DevOps | 

### Erstellen Sie eine IAM-Inline-Richtlinie in Konto B
<a name="create-an-iam-inline-policy-in-account-b"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Fügen Sie der Ausführungsrolle, die Ihrem SageMaker Domain-Benutzer in Konto B zugewiesen ist, eine Inline-Richtlinie hinzu. | 1. Wählen Sie im Navigationsbereich der [IAM](https://console.aws.amazon.com/iam/)-Konsole **Rollen** aus.<br />2. Suchen Sie nach der Ausführungsrolle, die Ihrem SageMaker AI-Domänenbenutzer in Konto B zugewiesen ist, und wählen Sie sie aus.<br />3. Wählen Sie **Add permissions** (Berechtigungen hinzufügen) und dann **Create inline policy** (Inline-Richtlinie erstellen) aus.<br />4. Wählen Sie den Tab **JSON**.<br />5. Kopieren Sie die folgende Richtlinienerklärung und fügen Sie sie dann in den JSON-Editor ein.<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. `<Account_A_ID>`Ersetzen Sie es durch die Konto-ID für Konto A. `<Account_A_Role_Name>` Ersetzen Sie es durch den Namen der IAM-Rolle, die Sie zuvor erstellt haben.<br />7. Wählen Sie **Richtlinie prüfen**.<br />8. Geben Sie **unter Name** einen Namen für Ihre Inline-Richtlinie ein.<br />9. Wählen Sie **Richtlinie erstellen** aus. | AWS DevOps | 

### Klonen Sie das Repository in SageMaker AI Studio Classic für Konto B
<a name="clone-the-repository-in-sm-studio-classic-for-account-b"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie das Shell-Skript in SageMaker AI Studio Classic in Konto B. | 1. Wählen Sie im Navigationsbereich der [SageMaker Konsole](https://console.aws.amazon.com/sagemaker/) **Studio** aus.<br />2. Wählen Sie Ihr Benutzerprofil und dann **Open Studio** aus.<br />3. Wählen Sie im **Home-Bereich** die Option **Launcher öffnen**.<br />4. Wählen Sie im Bereich „**Dienstprogramme und Dateien**“ die Option „**Textdatei**“.<br />5. Kopieren Sie das Skript aus dem * SageMaker Beispiel-Shell-Skript* im Abschnitt [Zusätzliche Informationen](#associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-additional) dieses Musters und fügen Sie die Anweisung dann in die neue Datei ein. Achten Sie darauf, alle Platzhalterwerte im Skript zu ersetzen.<br />6. Klicken Sie mit der rechten Maustaste auf die Registerkarte **untitled.txt** Ihrer neuen Datei und wählen Sie dann **Text umbenennen**. Geben Sie für **„Neuer Name**“ **cross\_account\_git\_clone.sh** ein, und wählen Sie dann „**Umbenennen“**. | AWS DevOps | 
| Rufen Sie das Shell-Skript vom Systemterminal aus auf. | 1. Wählen Sie im **Home-Bereich** der [SageMaker Konsole](https://console.aws.amazon.com/sagemaker/) die Option **Launcher öffnen**.<br />2. Wählen Sie im Bereich „**Dienstprogramme und Dateien**“ die Option „**Systemterminal**“.<br />3. Führen Sie im Terminal den folgenden Befehl aus:<pre>chmod u+x ./cross_account_git_clone.sh && ./cross_account_git_clone.sh</pre>Sie haben Ihr CodeCommit Repository in ein SageMaker AI Studio-Cross-Konto geklont. Sie können jetzt alle Git-Befehle vom Systemterminal aus ausführen. | AWS DevOps | 

## Zusätzliche Informationen
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-additional"></a>

**Beispiel für eine IAM-Richtlinie**

Wenn Sie diese Beispielrichtlinie verwenden, gehen Sie wie folgt vor:
+ `<CodeCommit_Repository_Region>`Ersetzen Sie es durch das AWS-Region für das Repository.
+ `<Account_A_ID>`Ersetzen Sie es durch die Konto-ID für Konto A.
+ `<CodeCommit_Repository_Name>`Ersetzen Sie es durch den Namen Ihres CodeCommit Repositorys in Konto 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>"
        ]
    }
]
}
```

**Beispiel für ein SageMaker AI-Shell-Skript**

Wenn Sie dieses Beispielskript verwenden, gehen Sie wie folgt vor:
+ `<Account_A_ID>`Ersetzen Sie es durch die Konto-ID für Konto A.
+ `<Account_A_Role_Name>`Ersetzen Sie durch den Namen der IAM-Rolle, die Sie zuvor erstellt haben.
+ Ersetzen Sie `<CodeCommit_Repository_Region>` durch den AWS-Region für das Repository.
+ `<CodeCommit_Repository_Name>`Ersetzen Sie es durch den Namen Ihres CodeCommit Repositorys in Konto 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>
```