

Amazon CodeCatalyst ist nicht mehr offen für Neukunden. Bestandskunden können den Service weiterhin wie gewohnt nutzen. Weitere Informationen finden Sie unter [Wie migriert man von CodeCatalyst](migration.md).

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.

# Paket-Repositorys mit Workflows verbinden
<a name="workflows-packages"></a>

Ein *Paket* ist ein Paket, das sowohl Software als auch die Metadaten enthält, die für die Installation der Software und die Auflösung aller Abhängigkeiten erforderlich sind. CodeCatalyst unterstützt das npm-Paketformat.

Ein Paket besteht aus:
+ Ein Name (`webpack`ist zum Beispiel der Name eines beliebten npm-Pakets)
+ Ein optionaler [Namespace](packages-concepts.md#packages-concepts-package-namespaces) (zum Beispiel in) `@types` `@types/node`
+ Eine Reihe von [Versionen](packages-concepts.md#packages-concepts-package-versions) (zum Beispiel, `1.0.0``1.0.1`,`1.0.2`)
+ Metadaten auf Paketebene (z. B. npm dist-Tags)

In CodeCatalyst können Sie Pakete in Paket-Repositorys veröffentlichen und Pakete aus CodeCatalyst Paket-Repositorys in Ihren Workflows verwenden. Sie können eine Build- oder Testaktion mit einem CodeCatalyst Paket-Repository konfigurieren, um den npm-Client einer Aktion automatisch so zu konfigurieren, dass Pakete aus dem angegebenen Repository gesendet und abgerufen werden.

Weitere Informationen zu Paketen finden Sie unter[Veröffentlichen und teilen Sie Softwarepakete in CodeCatalyst](packages.md).

**Anmerkung**  
Derzeit unterstützen Build- und Testaktionen CodeCatalyst Paket-Repositorys.

**Topics**
+ [Tutorial: Aus einem Paket-Repository abrufen](packages-tutorial.md)
+ [CodeCatalyst Paket-Repositorys in Workflows angeben](workflows-package-specify-action.md)
+ [Verwenden von Autorisierungstoken in Workflow-Aktionen](workflows-package-export-token.md)
+ [Beispiele: Paket-Repositorys in Workflows](workflows-working-packages-ex.md)

# Tutorial: Aus einem Paket-Repository abrufen
<a name="packages-tutorial"></a>

In diesem Tutorial erfahren Sie, wie Sie einen Workflow erstellen, der eine Anwendung ausführt, deren Abhängigkeiten aus einem [CodeCatalyst Paket-Repository](packages-concepts.md#packages-concepts-repository) abgerufen werden. Bei der Anwendung handelt es sich um eine einfache Node.js App, die eine „Hello World“ -Meldung in die CodeCatalyst Protokolle druckt. Die Anwendung hat eine einzige Abhängigkeit: das [Lodash](https://www.npmjs.com/package/lodash) npm-Paket. Das `lodash` Paket wird verwendet, um eine `hello-world` Zeichenfolge in umzuwandeln. `Hello World` Sie werden Version 4.17.20 dieses Pakets verwenden.

Nachdem Sie Ihre Anwendung und Ihren Workflow eingerichtet haben, konfigurieren Sie so CodeCatalyst , dass zusätzliche Versionen von nicht `lodash` aus der öffentlichen externen Registrierung ([npmjs.com](https://www.npmjs.com/)) in das CodeCatalyst Paket-Repository importiert werden. Anschließend testen Sie, ob weitere Versionen von erfolgreich blockiert `lodash` wurden.

Am Ende dieses Tutorials sollten Sie ein gutes Verständnis dafür haben, wie ein Workflow mit Paket-Repositorys interagiert, sowohl innerhalb als auch außerhalb CodeCatalyst, um Pakete abzurufen. Sie sollten auch die behind-the-scenes Interaktionen verstehen, die zwischen npm, Ihrem Paket-Repository, Ihrem Workflow und der Datei Ihrer Anwendung auftreten. `package.json` 

**Topics**
+ [Voraussetzungen](#packages-tutorial-prereqs)
+ [Schritt 1: Erstellen Sie ein Quell-Repository](#packages-tutorial-source-repo)
+ [Schritt 2: Erstellen Sie die CodeCatalyst Paket-Repositorys und das Gateway](#packages-tutorial-package-repo)
+ [Schritt 3: Erstellen Sie die Anwendung „Hello World“](#packages-tutorial-create-app)
+ [Schritt 4: Erstellen Sie einen Workflow, der „Hello World“ ausführt](#packages-tutorial-create-workflow)
+ [Schritt 5: Überprüfen Sie den Workflow](#packages-tutorial-verify)
+ [Schritt 6: Blockieren Sie Importe von npmjs.com](#packages-tutorial-block)
+ [Schritt 7: Testen Sie die Blockierungsfunktion](#packages-tutorial-test-block)
+ [Bereinigen](#packages-tutorial-cleanup)

## Voraussetzungen
<a name="packages-tutorial-prereqs"></a>

Bevor Sie beginnen:
+ Sie benötigen ein CodeCatalyst **Leerzeichen.** Weitere Informationen finden Sie unter [Erstellen einer Umgebung](spaces-create.md).
+ In deinem CodeCatalyst Space benötigst du ein leeres Projekt mit dem Namen:

  ```
  codecatalyst-package-project
  ```

  Verwenden Sie die Option **Von vorne beginnen**, um dieses Projekt zu erstellen.

  Weitere Informationen finden Sie unter [Ein leeres Projekt in Amazon erstellen CodeCatalyst](projects-create.md#projects-create-empty).

## Schritt 1: Erstellen Sie ein Quell-Repository
<a name="packages-tutorial-source-repo"></a>

In diesem Schritt erstellen Sie ein Quell-Repository in CodeCatalyst. In diesem Repository werden die Quelldateien des Tutorials gespeichert, z. B. die `package.json` Dateien `index.js` und.

Weitere Hinweise zu Quell-Repositorys finden Sie unter[Erstellen eines Quell-Repositorys](source-repositories-create.md).

**Um ein Quell-Repository zu erstellen**

1. Öffnen Sie die CodeCatalyst Konsole unter [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Navigieren Sie zu Ihrem Projekt,`codecatalyst-package-project`.

1. Wählen Sie im Navigationsbereich **Code** und dann **Quell-Repositories** aus. 

1. Wählen **Sie Repository hinzufügen** und anschließend **Repository erstellen** aus.

1. Geben Sie im Feld **Repository-Name** Folgendes ein:

   ```
   hello-world-app
   ```

1. Wählen Sie **Erstellen** aus.

## Schritt 2: Erstellen Sie die CodeCatalyst Paket-Repositorys und das Gateway
<a name="packages-tutorial-package-repo"></a>

In diesem Schritt erstellen Sie ein Paket-Repository in Ihrem CodeCatalyst Projekt und verbinden es mit einem Gateway-Repository, ebenfalls in Ihrem CodeCatalyst Projekt. Später importieren Sie die Abhängigkeit des Tutorials von npmjs.com in beide Repositorys. `lodash`

Das Gateway-Repository ist der „Klebstoff“, der dein Paket-Repository mit dem öffentlichen npmjs.com CodeCatalyst verbindet.

Weitere Informationen zu Paket-Repositorys finden Sie unter. [Veröffentlichen und teilen Sie Softwarepakete in CodeCatalyst](packages.md)

**Anmerkung**  
In dieser praktischen Einführung werden die Begriffe *CodeCatalyst Paket-Repository* und *Gateway-Repository* verwendet, um sich auf die beiden Repositorys zu beziehen, die Sie CodeCatalyst im folgenden Verfahren erstellen.

**Um CodeCatalyst Paket- und Gateway-Repositorys zu erstellen**

1. Wählen Sie im Navigationsbereich **Packages (Pakete)** aus. 

1. Wählen Sie **Paket-Repository erstellen**.

1. Geben Sie im Feld **Repository-Name** Folgendes ein:

   ```
   codecatalyst-package-repository
   ```

1. Wählen Sie **\$1 Upstream-Repositorys auswählen**.

1. Wählen Sie **Gateway-Repositorys**.

1. Wählen Sie in dem **npm-public-registry-gateway**Feld **Create** aus.

1. Wählen Sie **Select (Auswählen)**.

1. Wählen Sie **Erstellen** aus.

   CodeCatalyst erstellt ein Paket-Repository namens`codecatalyst-package-repository`, das mit einem Gateway-Repository verbunden ist. Das Gateway-Repository ist mit der Registrierung npmjs.com verbunden.

## Schritt 3: Erstellen Sie die Anwendung „Hello World“
<a name="packages-tutorial-create-app"></a>

In diesem Schritt erstellen Sie eine „Hello World“ -Anwendung Node.js und importieren deren Abhängigkeit (`lodash`) in Ihre Gateway- und Paket-Repositorys. CodeCatalyst 

Um die Anwendung zu erstellen, benötigen Sie einen Entwicklungscomputer, auf dem Node.js und der zugehörige `npm` Client installiert sind.

In diesem Tutorial wird davon ausgegangen, dass Sie eine CodeCatalyst Entwicklungsumgebung als Entwicklungsmaschine verwenden. Sie müssen zwar keine CodeCatalyst Entwicklungsumgebung verwenden, aber sie wird empfohlen, da sie eine saubere Arbeitsumgebung bietet, Node.js enthält und `npm` vorinstalliert ist und leicht zu löschen ist, wenn Sie das Tutorial abgeschlossen haben. Weitere Informationen zu CodeCatalyst Entwicklungsumgebungen finden Sie unter[Erstellen einer Entwicklungsumgebung](devenvironment-create.md).

Gehen Sie wie folgt vor, um eine CodeCatalyst Entwicklungsumgebung zu starten und damit die Anwendung „Hello World“ zu erstellen.

**Um eine Entwicklungsumgebung zu starten CodeCatalyst**

1. Wählen Sie im Navigationsbereich **Code** und dann **Dev Environments** aus. 

1. Wählen Sie oben **Create Dev Environment** und dann **AWS Cloud9 (im Browser)** aus.

1. Vergewissern Sie sich, dass **Repository** auf `hello-world-app` und **Existing Branch** auf eingestellt ist`main`. Wählen Sie **Erstellen** aus.

   Ihre Entwicklungsumgebung wird in einem neuen Browser-Tab gestartet, in den Ihr Repository (`hello-world-app`) geklont wird.

1. Lassen Sie beide CodeCatalyst Browser-Tabs geöffnet und fahren Sie mit dem nächsten Verfahren fort.

**Um die Anwendung „Hello World“ Node.js zu erstellen**

1. Gehen Sie zu Ihrer Entwicklungsumgebung.

1. Wechseln Sie an der Terminal-Eingabeaufforderung zum Stammverzeichnis des `hello-world-app` Quell-Repositorys:

   ```
   cd hello-world-app
   ```

1. Initialisieren Sie ein Node.js -Projekt:

   ```
   npm init -y
   ```

   Die Initialisierung erstellt eine `package.json` Datei im Stammverzeichnis von. `hello-world-app`

1. Connect den npm-Client in Ihrer Entwicklungsumgebung mit Ihrem CodeCatalyst Paket-Repository:

   1. Wechseln Sie zur CodeCatalyst Konsole.

   1. Wählen Sie im Navigationsbereich **Packages (Pakete)** aus.

   1. Wählen Sie `codecatalyst-package-repository`.

   1. Wählen Sie **Mit Repository verbinden**.

   1. Wählen Sie „**Token erstellen**“. Ein Personal Access Token (PAT) wird für Sie erstellt.

   1. Wählen Sie **Kopieren**, um die Befehle zu kopieren.

   1. Wechseln Sie zu Ihrer Entwicklungsumgebung.

   1. Stellen Sie sicher, dass Sie sich im `hello-world-app` Verzeichnis befinden.

   1. Fügen Sie die Befehle ein. Sie sehen etwa wie folgt aus:

      ```
      npm set registry=https://packages.us-west-2.codecatalyst.aws/npm/ExampleCompany/codecatalyst-package-project/codecatalyst-package-repository/ --location project
      npm set //packages.us-west-2.codecatalyst.aws/npm/ExampleCompany/codecatalyst-package-project/hello-world-app/:_authToken=username:token-secret
      ```

1. `lodash`Version 4.17.20 importieren:

   ```
   npm install lodash@v4.17.20 --save --save-exact
   ```

   npm sucht an den folgenden Orten in der folgenden Reihenfolge nach `lodash` Version 4.17.20:
   + In der Entwicklungsumgebung. Es kann es hier nicht finden.
   + Im CodeCatalyst Paket-Repository. Es kann es hier nicht finden.
   + Im Gateway-Repository. Es kann es hier nicht finden.
   + Auf npmjs.com. Es findet es hier.

   npm `lodash` importiert in das Gateway-Repository, das CodeCatalyst Paket-Repository und die Entwicklungsumgebung.
**Anmerkung**  
Wenn Sie den npm-Client in Schritt 4 nicht mit Ihrem CodeCatalyst Paket-Repository verbunden hätten, hätte npm `lodash` direkt von npmjs.com abgerufen und das Paket in keines der Repositorys importiert.

   npm aktualisiert Ihre `package.json` Datei auch mit der `lodash` Abhängigkeit und erstellt ein `node_modules` Verzeichnis, das all seine Abhängigkeiten enthält. `lodash`

1. Testen Sie, der erfolgreich in Ihre Entwicklungsumgebung importiert `lodash` wurde. Geben Sie ein:

   ```
   npm list
   ```

   Die folgende Meldung weist auf einen erfolgreichen Import hin:

   ```
   `-- lodash@4.17.20
   ```

1. (Optional) Öffnen Sie `hello-world-app/package.json` und überprüfen Sie, ob die Zeilen in hinzugefügt ***red bold***wurden:

   ```
   {
     "name": "hello-world-app",
     "version": "1.0.0",
     "description": "",
     "main": "index.js",
     "scripts": {
       "test": "echo \"Error: no test specified\" && exit 1"
     },
     "keywords": [],
     "author": "",
     "license": "ISC",
     dependencies": {
       "lodash": "4.17.20"
     }
   }
   ```

1. Erstellen Sie in `/hello-world-app` eine Datei namens `index.js` mit dem folgenden Inhalt:
**Tipp**  
Sie können die Seitennavigation in Ihrer Entwicklungsumgebung verwenden, um diese Datei zu erstellen.

   ```
   // Importing lodash library
   const _ = require('lodash');
   
   // Input string
   const inputString = 'hello-world';
   
   // Transforming the string using lodash
   const transformedString = _.startCase(inputString.replace('-', ' '));
   
   // Outputting the transformed string to the console
   console.log(transformedString);
   ```

**Um zu testen, ob 'lodash' in Ihre Gateway- und CodeCatalyst Paket-Repositorys importiert wurde**

1. Wechseln Sie zur Konsole. CodeCatalyst 

1. Wählen Sie im Navigationsbereich **Packages (Pakete)** aus.

1. Wählen Sie **npm-public-registry-gateway**.

1. Stellen Sie sicher, dass angezeigt `lodash` wird. In der Spalte **Letzte Version** wird Folgendes angezeigt`4.17.20`.

1. Wiederholen Sie diesen Vorgang für die`codecatalyst-package-repository`. Möglicherweise müssen Sie das Browserfenster aktualisieren, um das importierte Paket zu sehen.

**Um „Hello World“ in Ihrer Entwicklungsumgebung zu testen**

1. Wechseln Sie zu Ihrer Entwicklungsumgebung.

1. Stellen Sie sicher, dass Sie sich immer noch im `hello-world-app` Verzeichnis befinden, und führen Sie dann die Anwendung aus:

   ```
   node index.js
   ```

   Eine `Hello World` Meldung wird angezeigt. Node.js hat die Anwendung mit dem `lodash` Paket ausgeführt, das Sie in einem vorherigen Schritt in Ihre Entwicklungsumgebung heruntergeladen haben.

**Um das Verzeichnis 'node\$1modules' zu ignorieren und 'Hello World' zu übertragen**

1. Ignoriere das Verzeichnis. `node_modules` Geben Sie ein:

   ```
   echo "node_modules/" >> .gitignore
   ```

   Es hat sich bewährt, zu vermeiden, dass dieses Verzeichnis festgeschrieben wird. Außerdem beeinträchtigt die Übertragung dieses Verzeichnisses die späteren Schritte in diesem Tutorial.

1. Hinzufügen, Festschreiben und Push:

   ```
   git add .
   git commit -m "add the Hello World application"
   git push
   ```

   Die Anwendung und die Projektdateien von „Hello World“ werden Ihrem Quell-Repository hinzugefügt.

## Schritt 4: Erstellen Sie einen Workflow, der „Hello World“ ausführt
<a name="packages-tutorial-create-workflow"></a>

In diesem Schritt erstellen Sie einen Workflow, der die Anwendung „Hello World“ unter Verwendung der Abhängigkeit ausführt. `lodash` Der Workflow umfasst eine einzelne *Aktion* oder Aufgabe, die aufgerufen wird. `RunHelloWorldApp` Die `RunHelloWorldApp` Aktion umfasst die folgenden wichtigen Befehle und Abschnitte:
+ **`Packages`**

  Dieser Abschnitt gibt den Namen des CodeCatalyst Paket-Repositorys an, zu dem die Aktion beim Ausführen `npm install` eine Verbindung herstellen muss.
+ **`- Run: npm install`** 

  Dieser Befehl weist npm an, die in der `package.json` Datei angegebenen Abhängigkeiten zu installieren. Die einzige in der `package.json` Datei angegebene Abhängigkeit ist`lodash`. npm sucht an den folgenden `lodash` Orten nach:
  + Im Docker-Image, in dem die Aktion ausgeführt wird. Es kann es hier nicht finden.
  + Im CodeCatalyst Paket-Repository. Es findet es hier.

  Nachdem npm es gefunden hat`lodash`, importiert es es in das Docker-Image, auf dem die Aktion ausgeführt wird.
+ **`- Run: npm list`**

  Dieser Befehl gibt aus, welche Version von auf das Docker-Image heruntergeladen `lodash` wurde, auf dem die Aktion ausgeführt wird.
+ **`- Run: node index.js`**

  Mit diesem Befehl wird die Anwendung „Hello World“ unter Verwendung der in der Datei angegebenen Abhängigkeit ausgeführt. `package.json`

Beachten Sie, dass es sich bei der `RunHelloWorldApp` Aktion um eine Build-Aktion handelt, wie durch die `aws/build@v1` Kennung oben im Workflow angezeigt wird. Weitere Informationen zur Build-Aktion finden Sie unter[Bauen mit Workflows](build-workflow-actions.md).

Verwenden Sie die folgenden Anweisungen, um einen Workflow zu erstellen, der die `lodash` Abhängigkeit aus Ihrem CodeCatalyst Paket-Repository abruft und dann Ihre Anwendung „Hello World“ ausführt.

**So erstellen Sie ein Workflow**

1. Wechseln Sie zur Konsole. CodeCatalyst 

1. **Wählen Sie im Navigationsbereich **CI/CD** und dann Workflows aus.**

1. Wählen Sie Workflow **erstellen** aus.

1. Wählen Sie für **Quell-Repository** die Option`hello-world-app`.

1. Wählen Sie für **Branch** die Option`main`.

   Die Workflow-Definitionsdatei wird im ausgewählten Quell-Repository und Branch erstellt.

1. Wählen Sie **Erstellen** aus.

1. Wählen Sie oben **YAML** aus.

1. Löschen Sie den YAML-Beispielcode.

1. Fügen Sie den folgenden YAML-Code hinzu:

   ```
   Name: codecatalyst-package-workflow
   SchemaVersion: "1.0"
   
   # Required - Define action configurations.
   Actions:
     RunHelloWorldApp:
       # Identifies the action. Do not modify this value.
       Identifier: aws/build@v1
       Compute:
         Type: Lambda
       Inputs:
         Sources:
           - WorkflowSource # This specifies your source repository. 
       Configuration:
         Steps:
           - Run: npm install
           - Run: npm list
           - Run: node index.js
         Container: # This specifies the Docker image that runs the action.
           Registry: CODECATALYST
           Image: CodeCatalystLinuxLambda_x86_64:2024_03
       Packages:
         NpmConfiguration:
           PackageRegistries:
             - PackagesRepository: codecatalyst-package-repository
   ```

   Ersetzen Sie ihn im vorherigen Code *codecatalyst-package-repository* durch den Namen des CodeCatalyst Paket-Repositorys, in [Schritt 2: Erstellen Sie die CodeCatalyst Paket-Repositorys und das Gateway](#packages-tutorial-package-repo) dem Sie es erstellt haben.

   Informationen zu den Eigenschaften in dieser Datei finden Sie unter[Aktionen erstellen und testen YAML](build-action-ref.md).

1. (Optional) Wählen Sie „**Validieren**“, um sicherzustellen, dass der YAML-Code gültig ist, bevor Sie ihn festschreiben.

1. Wählen Sie **Commit** (Übergeben).

1. Geben Sie im **Dialogfeld „Workflow bestätigen**“ Folgendes ein:

   1. Behalten Sie als **Workflow-Dateiname** die Standardeinstellung bei`codecatalyst-package-workflow`.

   1. Geben Sie für **Commit-Nachricht** Folgendes ein:

      ```
      add initial workflow file
      ```

   1. Wählen Sie für **Repository **hello-world-app****.

   1. Wählen Sie als **Branch-Name** die Option **main** aus.

   1. Wählen Sie **Commit** (Übergeben).

   Sie haben jetzt einen Workflow erstellt.

**Um den Workflow auszuführen**

1. Wählen Sie neben dem Workflow, den Sie gerade erstellt haben (`codecatalyst-package-workflow`), **Aktionen** und dann **Ausführen** aus.

   Eine Workflow-Ausführung wird gestartet.

1. Wählen Sie in der grünen Benachrichtigung oben rechts den Link zum Lauf aus. Der Link sieht ähnlich aus wie`View Run-1234`.

   Es wird ein Workflow-Diagramm angezeigt, das zeigt, wer den Lauf und die **RunHelloWorldApp**Aktion gestartet hat.

1. Wählen Sie das **RunHelloWorldApp**Aktionsfeld aus, um den Fortschritt der Aktion zu verfolgen. 

1. Wenn der Lauf beendet ist, gehe zu[Schritt 5: Überprüfen Sie den Workflow](#packages-tutorial-verify).

## Schritt 5: Überprüfen Sie den Workflow
<a name="packages-tutorial-verify"></a>

In diesem Schritt überprüfen Sie, ob der Workflow die Anwendung „Hello World“ mit ihrer `lodash` Abhängigkeit erfolgreich ausgeführt hat.

**Um zu überprüfen, ob die Anwendung „Hello World“ unter Verwendung ihrer Abhängigkeit ausgeführt wurde**

1. Wählen Sie im Workflow-Diagramm das **RunHelloWorldApp**Feld aus.

   Eine Liste mit Protokollmeldungen wird angezeigt.

1. Erweitern Sie die `node index.js` Protokollnachricht.

   Die folgende Meldung wird angezeigt:

   ```
   [Container] 2024/04/24 21:15:41.545650 Running command node index.js
   Hello World
   ```

   Das Erscheinen von `Hello Word` (anstelle von`hello-world`) weist darauf hin, dass die `lodash` Abhängigkeit erfolgreich verwendet wurde.

1. Erweitern Sie das `npm list` Protokoll.

   Eine Meldung ähnlich der folgenden wird angezeigt:

   ```
   └── lodash@4.17.20
   ```

   Diese Meldung weist darauf hin, dass `lodash` Version 4.17.20 auf das Docker-Image heruntergeladen wurde, auf dem die Workflow-Aktion ausgeführt wird.

## Schritt 6: Blockieren Sie Importe von npmjs.com
<a name="packages-tutorial-block"></a>

 Jetzt, da `lodash` Version 4.17.20 in Ihrem Gateway und Ihren CodeCatalyst Paket-Repositorys vorhanden ist, können Sie Importe anderer Versionen blockieren. Durch das Blockieren wird verhindert, dass Sie versehentlich neuere (oder frühere) Versionen von importieren`lodash`, die möglicherweise bösartigen Code enthalten. Weitere Informationen erhalten Sie unter [Steuerelemente für den Paketursprung bearbeiten](package-origin-controls.md) und [Angriffe durch Substitution von Abhängigkeiten](package-origin-controls.md#dependency-substitution-attacks).

Verwenden Sie die folgenden Anweisungen, um Importe von `lodash` in Ihr Gateway-Repository zu blockieren. Wenn Sie Pakete am Gateway blockieren, werden sie auch an nachgelagerten Standorten blockiert.

**Um Importe in Ihr Gateway-Repository zu blockieren**

1. Wählen Sie im Navigationsbereich **Packages (Pakete)** aus.

1. Wählen Sie **npm-publish-registry-gateway**.

1. Wählen Sie `lodash`.

1. Wähle ganz oben **Origin Controls** aus.

1. Wähle unter **Upstream** die Option **Blockieren** aus.

1. Wählen Sie **Speichern**.

   Sie haben jetzt Importe von npmjs.com in Ihr Gateway-Repository (und Downstream-Repositorys und Computer) blockiert.

## Schritt 7: Testen Sie die Blockierungsfunktion
<a name="packages-tutorial-test-block"></a>

In diesem Abschnitt überprüfen Sie, ob die Blockierung, die Sie eingerichtet haben, funktioniert. [Schritt 6: Blockieren Sie Importe von npmjs.com](#packages-tutorial-block) **Zunächst konfigurieren Sie „Hello World“ so, dass Version 4.17.2 **1** von `lodash` anstelle der in Ihrem Gateway-Repository verfügbaren Version 4.17.2 0 angefordert wird.** Anschließend überprüfen Sie, ob die Anwendung Version 4.17.21 nicht von nmpjs.com abrufen kann, was auf eine erfolgreiche Blockierung hinweist. Als letzten Test entsperren Sie Importe in Ihr Gateway-Repository und überprüfen, ob die Anwendung Version 4.17.21 von erfolgreich abrufen kann. `lodash`

Verwenden Sie die folgenden Verfahren, um die Blockierungsfunktion zu testen.

**Bevor Sie beginnen**

1. Wechseln Sie zu Ihrer Entwicklungsumgebung.

1. Rufen Sie die `codecatalyst-package-workflow.yaml` Datei ab, die Sie zuvor mit der CodeCatalyst Konsole erstellt haben:

   ```
   git pull
   ```

**Um 'Hello World' so zu konfigurieren, dass Version 4.17.21 von 'lodash' angefordert wird**

1. Öffnen Sie `/hello-world-app/package.json`.

1. Ändern Sie die `lodash` Version auf 4.17.21, wie in: ***red bold***

   ```
   {
     "name": "hello-world-app",
     "version": "1.0.0",
     "description": "",
     "main": "index.js",
     "scripts": {
       "test": "echo \"Error: no test specified\" && exit 1"
     },
     "keywords": [],
     "author": "",
     "license": "ISC",
     "dependencies": {
       "lodash": "4.17.21"
     }
   }
   ```

   Es besteht jetzt eine Diskrepanz zwischen der Version in der `package.json` Datei (4.17.21) und der Version in den Gateway- und CodeCatalyst Paket-Repositorys (4.17.20).

1. Hinzufügen, Festschreiben und Push:

   ```
   git add .
   git commit -m "update package.json to use lodash 4.17.21"
   git push
   ```

**Um zu testen, dass 'Hello World' die Version 4.17.21 von 'lodash' nicht abrufen kann**

1. Führen Sie den Workflow mit dem Versionskonflikt aus:

   1. Wechseln Sie zur CodeCatalyst Konsole.

   1. **Wählen Sie im Navigationsbereich **CI/CD** und dann Workflows aus.**

   1. **Wählen Sie `codecatalyst-package-workflow` als Nächstes **Aktionen** und anschließend Ausführen aus.**

      npm sucht nach Abhängigkeiten und `package.json` stellt fest, dass Version 4.17.21 von für 'Hello World' `lodash` erforderlich ist. npm sucht an den folgenden Speicherorten in der folgenden Reihenfolge nach der Abhängigkeit:
      + Im Docker-Image, in dem die Aktion ausgeführt wird. Es kann es hier nicht finden.
      + Im CodeCatalyst Paket-Repository. Es kann es hier nicht finden.
      + Im Gateway-Repository. Es kann es hier nicht finden.
      + Auf npmjs.com. Es findet es hier.

      Nachdem npm Version 4.17.21 auf npmjs.com gefunden hat, versucht es, sie in das Gateway-Repository zu importieren. Da Sie das Gateway jedoch so eingerichtet haben, dass Importe von blockiert werden`lodash`, findet der Import nicht statt.

      Da der Import nicht stattfindet, schlägt der Workflow fehl.

1. Stellen Sie sicher, dass der Workflow fehlgeschlagen ist:

   1. Wählen Sie in der grünen Benachrichtigung oben rechts den Link zum Lauf aus. Der Link sieht ähnlich aus wie`View Run-2345`.

   1. Wählen Sie im Workflow-Diagramm das **RunHelloWorldApp**Feld aus.

   1. Erweitern Sie die `npm install` Protokollnachricht.

      Die folgende Meldung wird angezeigt:

      ```
      [Container] 2024/04/25 17:20:34.995591 Running command npm install
      npm ERR! code ETARGET
      npm ERR! notarget No matching version found for lodash@4.17.21.
      npm ERR! notarget In most cases you or one of your dependencies are requesting
      npm ERR! notarget a package version that doesn't exist.
      
      npm ERR! A complete log of this run can be found in: /tmp/.npm/_logs/2024-05-08T22_03_26_493Z-debug-0.log
      ```

      Der Fehler weist darauf hin, dass Version 4.17.21 nicht gefunden werden konnte. Dies wird erwartet, da Sie es blockiert haben.

**Um Importe von npmjs.com zu entsperren**

1. Wählen Sie im Navigationsbereich **Packages (Pakete)** aus.

1. Wählen Sie **npm-publish-registry-gateway**.

1. Wählen Sie `lodash`.

1. **Wähle ganz oben Origin Controls aus.**

1. Wähle unter **Upstream** die Option **Zulassen** aus.

1. Wählen Sie **Speichern**.

   Sie haben jetzt Importe von `lodash` entsperrt.

   Ihr Workflow kann jetzt Version 4.17.21 von importieren. `lodash`

**Um zu testen, ob Importe von npmjs.com entsperrt sind**

1. Führen Sie Ihren Workflow erneut aus. Diesmal sollte der Workflow erfolgreich sein, da der Import von 4.17.21 jetzt funktionieren sollte. Um den Workflow erneut auszuführen:

   1. **Wählen Sie **CI/CD** und dann Workflows.**

   1. **Wählen Sie `codecatalyst-package-workflow` als Nächstes **Aktionen** und dann Ausführen aus.**

   1. Wählen Sie in der grünen Benachrichtigung oben rechts den Link zum Lauf aus. Der Link sieht ähnlich aus wie`View Run-3456`.

      Es wird ein Workflow-Diagramm angezeigt, das zeigt, wer den Lauf und die **RunHelloWorldApp**Aktion gestartet hat.

   1. Wählen Sie das **RunHelloWorldApp**Aktionsfeld aus, um den Fortschritt der Aktion zu verfolgen. 

   1. Erweitern Sie die `npm list` Protokollnachricht und stellen Sie sicher, dass eine Meldung ähnlich der folgenden angezeigt wird:

      ```
      └── lodash@4.17.21
      ```

      Diese Meldung weist darauf hin, dass `lodash` Version 4.17.21 heruntergeladen wurde.

1. Stellen Sie sicher, dass Version 4.17.21 in Ihre und Ihre CodeCatalyst Gateway-Repositorys importiert wurde:

   1. Wählen Sie im Navigationsbereich **Packages (Pakete)** aus.

   1. Wählen Sie **npm-public-registry-gateway**.

   1. Suchen Sie nach der `lodash` Version und stellen Sie sicher, dass dies der Fall ist. `4.17.21`
**Anmerkung**  
Obwohl Version 4.17.20 nicht auf dieser Seite aufgeführt ist, können Sie sie finden, indem Sie oben **Versionen** auswählen `lodash` und dann auswählen.

   1. Wiederholen Sie diese Schritte, um zu überprüfen, ob Version 4.17.21 importiert wurde. `codecatalyst-package-repository`

## Bereinigen
<a name="packages-tutorial-cleanup"></a>

Bereinigen Sie die in diesem Tutorial verwendeten Dateien und Dienste, um zu vermeiden, dass dafür Gebühren anfallen.

**Anleitung zum Aufräumen der Pakete**

1. Löschen Sie das`codecatalyst-package-project`:

   1. Navigieren Sie in der CodeCatalyst Konsole zu dem `codecatalyst-package-project` Projekt, falls Sie noch nicht dort sind.

   1. Wählen Sie im Navigationsbereich die Option **Projekteinstellungen** aus.

   1. Wählen Sie **Projekt löschen****delete**, geben Sie ein und wählen Sie **Projekt löschen**.

      CodeCatalyst löscht alle Projektressourcen, einschließlich der Quell-, Gateway- und CodeCatalyst Paket-Repositorys. Die Entwicklungsumgebung wird ebenfalls gelöscht.

1. Löschen Sie das PAT-Token:

   1. Wählen Sie rechts Ihren Benutzernamen und dann **Meine Einstellungen** aus.

   1. Wählen Sie unter **Persönliche Zugriffstoken** das Token aus, das Sie in diesem Tutorial erstellt haben, und wählen Sie **Löschen** aus.

In diesem Tutorial haben Sie gelernt, wie Sie einen Workflow erstellen, der eine Anwendung ausführt, deren Abhängigkeiten aus einem CodeCatalyst Paket-Repository abgerufen werden. Sie haben auch gelernt, wie Sie Pakete blockieren und entsperren können, damit sie nicht in Ihr Gateway und Ihre CodeCatalyst Paket-Repositorys gelangen.

# CodeCatalyst Paket-Repositorys in Workflows angeben
<a name="workflows-package-specify-action"></a>

 CodeCatalystIn können Sie Ihren Build- und Testaktionen in Ihrem Workflow ein CodeCatalyst Paket-Repository hinzufügen. Ihr Paket-Repository muss mit einem Paketformat wie npm konfiguriert sein. Sie können sich auch dafür entscheiden, eine Abfolge von Bereichen für Ihr ausgewähltes Paket-Repository einzubeziehen.

Verwenden Sie die folgenden Anweisungen, um eine Paketkonfiguration anzugeben, die mit einer Workflow-Aktion verwendet werden soll.

------
#### [ Visual ]

**So geben Sie die Paketkonfiguration an, die eine Aktion verwenden soll (visueller Editor)**

1. Öffnen Sie die CodeCatalyst Konsole unter [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Wählen Sie Ihr Projekt.

1. **Wählen Sie im Navigationsbereich **CI/CD** und dann Workflows aus.**

1. Wählen Sie den Namen Ihres Workflows. Sie können nach dem Quell-Repository oder dem Branch-Namen filtern, in dem der Workflow definiert ist, oder nach Workflow-Namen oder -Status filtern.

1. Wählen Sie **Bearbeiten** aus.

1. Wählen Sie **Visual**.

1. Wählen Sie im Workflow-Diagramm die Aktion **Build** oder **Test** aus, mit der Sie ein Paket-Repository konfigurieren möchten.

1. Wählen Sie **Pakete** aus.

1. Wählen **Sie im Dropdownmenü Konfiguration hinzufügen** die Paketkonfiguration aus, die Sie für Ihre Workflow-Aktionen verwenden möchten.

1. Wählen Sie **Paket-Repository hinzufügen** aus.

1. Geben Sie im Dropdownmenü **Paket-Repository** den Namen Ihres CodeCatalyst *Paket-Repositorys* an, das die Aktion verwenden soll.

   Weitere Hinweise zu Paket-Repositorys finden Sie unter. [Paket-Repositorys](packages-concepts.md#packages-concepts-repository)

1. (Optional) Geben Sie im **Feld Bereiche — optional** eine Abfolge von *Bereichen* an, die Sie in Ihrer Paketregistrierung definieren möchten.

   Bei der Definition von Bereichen wird das angegebene Paket-Repository als Registrierung für alle aufgelisteten Bereiche konfiguriert. Wenn ein Paket mit dem Bereich über den npm-Client angefordert wird, verwendet es dieses Repository anstelle des Standard-Repositorys. Jedem Bereichsnamen muss ein „@“ vorangestellt werden.

   Wenn dieser `Scopes` Wert weggelassen wird, wird das angegebene Paket-Repository als Standardregistrierung für alle von der Aktion verwendeten Pakete konfiguriert.

   Weitere Informationen zu Bereichen finden Sie unter [Paket-Namespaces](packages-concepts.md#packages-concepts-package-namespaces) und Pakete mit [Geltungsbereich](https://docs.npmjs.com/cli/v10/using-npm/scope).

1. Wählen Sie **Hinzufügen** aus.

1. (Optional) Wählen Sie „**Validieren**“, um den YAML-Code des Workflows vor dem Commit zu überprüfen.

1. Wählen Sie **Commit**, geben Sie eine Commit-Nachricht ein und wählen Sie erneut **Commit**.

------
#### [ YAML ]

**Um die Paketkonfiguration anzugeben, die eine Aktion verwenden soll (YAML-Editor)**

1. Öffnen Sie die CodeCatalyst Konsole unter [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Wählen Sie Ihr Projekt.

1. **Wählen Sie im Navigationsbereich **CI/CD** und dann Workflows aus.**

1. Wählen Sie den Namen Ihres Workflows. Sie können nach dem Quell-Repository oder dem Branch-Namen filtern, in dem der Workflow definiert ist, oder nach Workflow-Namen oder -Status filtern.

1. Wählen Sie **Bearbeiten** aus.

1. Wählen Sie **YAML.**

1. Fügen Sie in einer **Build** - oder **Test-Aktion** Code hinzu, der dem folgenden ähnelt:

   ```
   action-name:
    Configuration:
       Packages:
           NpmConfiguration:
             PackageRegistries:
               - PackagesRepository: package-repository
                 Scopes:
                   - "@scope"
   ```

   Weitere Informationen finden Sie in der Beschreibung der `Packages` Eigenschaft unter [Aktionen erstellen und testen YAML](build-action-ref.md) Für Ihre Aktion.

1. (Optional) Wählen Sie „**Validieren**“, um den YAML-Code des Workflows vor dem Commit zu überprüfen.

1. Wählen Sie **Commit**, geben Sie eine Commit-Nachricht ein und wählen Sie erneut **Commit**.

------

# Verwenden von Autorisierungstoken in Workflow-Aktionen
<a name="workflows-package-export-token"></a>

Sie können ein von der Workflow-Aktion bereitgestelltes Token verwenden, um einen Paketmanager manuell für die Authentifizierung bei CodeCatalyst Paket-Repositorys zu konfigurieren. CodeCatalyst stellt dieses Token als Umgebungsvariable zur Verfügung, auf die Sie bei Ihren Aktionen verweisen können.


| Umgebungsvariable | Wert | 
| --- | --- | 
|  CATALYST\$1MACHINE\$1RESOURCE\$1NAME  |  Die Benutzeridentität des Autorisierungstokens.  | 
|  CATALYST\$1PACKAGES\$1AUTHORIZATION\$1TOKEN  |  Der Wert eines Autorisierungstokens.  | 

**Anmerkung**  
Beachten Sie, dass diese Umgebungsvariablen nur aufgefüllt werden, wenn Sie Ihre Aktion für den Export des Autorisierungstokens konfiguriert haben.

Verwenden Sie die folgenden Anweisungen, um ein Autorisierungstoken mit einer Workflow-Aktion zu verwenden.

------
#### [ Visual ]

**Um ein exportiertes Autorisierungstoken mit einer Aktion zu verwenden (visueller Editor)**

1. Öffnen Sie die CodeCatalyst Konsole unter [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Wählen Sie Ihr Projekt.

1. **Wählen Sie im Navigationsbereich **CI/CD** und dann Workflows aus.**

1. Wählen Sie den Namen Ihres Workflows. Sie können nach dem Quell-Repository oder dem Branch-Namen filtern, in dem der Workflow definiert ist, oder nach Workflow-Namen oder -Status filtern.

1. Wählen Sie **Bearbeiten** aus.

1. Wählen Sie **Visual**.

1. Wählen Sie im Workflow-Diagramm die Aktion **Build** oder **Test** aus, mit der Sie ein Paket-Repository konfigurieren möchten.

1. Wählen Sie **Pakete** aus.

1. Aktivieren Sie die Option **Autorisierungstoken exportieren**.

------
#### [ YAML ]

**Um ein exportiertes Autorisierungstoken mit einer Aktion zu verwenden (YAML-Editor)**

1. Öffnen Sie die CodeCatalyst Konsole unter [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Wählen Sie Ihr Projekt.

1. **Wählen Sie im Navigationsbereich **CI/CD** und dann Workflows aus.**

1. Wählen Sie den Namen Ihres Workflows. Sie können nach dem Quell-Repository oder dem Branch-Namen filtern, in dem der Workflow definiert ist, oder nach Workflow-Namen oder -Status filtern.

1. Wählen Sie **Bearbeiten** aus.

1. Wählen Sie **YAML.**

1. Fügen Sie in einer **Build** - oder **Test-Aktion** Code hinzu, der dem folgenden ähnelt:

   ```
   Actions:
     action-name:
       Packages:
         ExportAuthorizationToken: true
   ```

   Sie können im `Steps` Abschnitt Ihrer YAML auf die Variablen `$CATALYST_MACHINE_RESOURCE_NAME` und die `$CATALYST_PACKAGES_AUTHORIZATION_TOKEN` Umgebungsvariablen verweisen. Weitere Informationen finden Sie unter [Beispiel: Manuelle Konfiguration für `pip` die Authentifizierung mit CodeCatalyst](workflows-working-packages-ex.md#workflows-working-packages-pypi-token).

1. (Optional) Wählen Sie „**Validieren**“, um den YAML-Code des Workflows vor dem Commit zu überprüfen.

1. Wählen Sie **Commit**, geben Sie eine Commit-Nachricht ein und wählen Sie erneut **Commit**.

------

# Beispiele: Paket-Repositorys in Workflows
<a name="workflows-working-packages-ex"></a>

Die folgenden Beispiele zeigen, wie in der Workflow-Definitionsdatei auf Pakete verwiesen wird.

**Topics**
+ [Beispiel: Pakete definieren mit `NpmConfiguration`](#workflows-working-packages-ex-basic)
+ [Beispiel: Überschreiben der Standardregistrierung](#workflows-working-packages-ex-overriding-registry)
+ [Beispiel: Bereiche in Ihrer Paketregistrierung überschreiben](#workflows-working-packages-ex-overriding-scopes)
+ [Beispiel: Manuelle Konfiguration für `pip` die Authentifizierung mit CodeCatalyst](#workflows-working-packages-pypi-token)

## Beispiel: Pakete definieren mit `NpmConfiguration`
<a name="workflows-working-packages-ex-basic"></a>

Das folgende Beispiel zeigt, wie Sie ein Paket mit `NpmConfiguration` in Ihrer Workflow-Definitionsdatei definieren.

```
Actions:
  Build:
  Identifier: aws/build-beta@v1
  Configuration:
    Packages:
        NpmConfiguration:
          PackageRegistries:
            - PackagesRepository: main-repo
            - PackagesRepository: scoped-repo
              Scopes:
                - "@scope1"
```

In diesem Beispiel wird der npm-Client wie folgt konfiguriert:

```
default: main-repo
@scope1: scoped-repo
```

In diesem Beispiel sind zwei Repositorys definiert. Die Standardregistrierung ist so festgelegt, `main-repo` wie sie ohne Bereich definiert ist. Der Bereich `@scope1` ist in `PackageRegistries` für konfiguriert`scoped-repo`.

## Beispiel: Überschreiben der Standardregistrierung
<a name="workflows-working-packages-ex-overriding-registry"></a>

Das folgende Beispiel zeigt Ihnen, wie Sie die Standardregistrierung überschreiben können.

```
NpmConfiguration:
  PackageRegistries:
    - PackagesRepository: my-repo-1
    - PackagesRepository: my-repo-2
    - PackagesRepository: my-repo-3
```

In diesem Beispiel wird der npm-Client wie folgt konfiguriert:

```
default: my-repo-3
```

Wenn Sie mehrere Standard-Repositorys angeben, hat das letzte Repository Priorität. In diesem Beispiel ist das zuletzt aufgeführte Repository`my-repo-3`, was bedeutet, dass npm eine Verbindung herstellen wird. `my-repo-3` Dies überschreibt die `my-repo-1` Repositorien und. `my-repo-2`

## Beispiel: Bereiche in Ihrer Paketregistrierung überschreiben
<a name="workflows-working-packages-ex-overriding-scopes"></a>

Das folgende Beispiel zeigt Ihnen, wie Sie einen Bereich in Ihrer Paketregistrierung überschreiben können.

```
NpmConfiguration:
  PackageRegistries:
    - PackagesRepository: my-default-repo
    - PackagesRepository: my-repo-1
      Scopes:
        - "@scope1"
        - "@scope2"
    - PackagesRepository: my-repo-2
      Scopes:
        - "@scope2"
```

In diesem Beispiel wird der npm-Client wie folgt konfiguriert:

```
default: my-default-repo
@scope1: my-repo-1
@scope2: my-repo-2
```

Wenn Sie übergeordnete Bereiche einbeziehen, hat das letzte Repository Priorität. In diesem Beispiel wurde dieser Bereich `@scope2` zum letzten Mal für konfiguriert. `PackageRegistries` `my-repo-2` Dadurch wird der für `@scope2` `my-repo-1` konfigurierte Bereich außer Kraft gesetzt.

## Beispiel: Manuelle Konfiguration für `pip` die Authentifizierung mit CodeCatalyst
<a name="workflows-working-packages-pypi-token"></a>

Das folgende Beispiel zeigt Ihnen, wie Sie in einer Build-Aktion auf CodeCatalyst Autorisierungsumgebungsvariablen verweisen.

```
Actions:
  Build:
    Identifier: aws/build@v1.0.0
    Configuration:
      Steps:
        - Run: pip config set global.index-url https://$CATALYST_MACHINE_RESOURCE_NAME:$CATALYST_PACKAGES_AUTHORIZATION_TOKEN@codecatalyst.aws/pypi/my-space/my-project/my-repo/simple/
    Packages:
      ExportAuthorizationToken: true
```