Tutorial: Estrai da un archivio di pacchetti - Amazon CodeCatalyst

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

Tutorial: Estrai da un archivio di pacchetti

In questo tutorial, imparerai come creare un flusso di lavoro che esegua un'applicazione le cui dipendenze vengono estratte da un archivio di pacchetti. CodeCatalyst L'applicazione è una semplice app Node.js che stampa un messaggio «Hello World» nei log. CodeCatalyst L'applicazione ha un'unica dipendenza: il pacchetto lodash npm. Il lodash pacchetto viene utilizzato per trasformare una hello-world stringa in. Hello World Utilizzerai la versione 4.17.20 di questo pacchetto.

Dopo aver configurato l'applicazione e il flusso di lavoro, configurate CodeCatalyst per bloccare l'importazione di lodash versioni aggiuntive nel repository dei CodeCatalyst pacchetti dal registro pubblico esterno (npmjs.com). Quindi verificate che le versioni aggiuntive di siano bloccate correttamente. lodash

Alla fine di questo tutorial, dovresti avere una buona comprensione di come un flusso di lavoro interagisce con gli archivi di pacchetti, sia interni che esterni CodeCatalyst, per recuperare i pacchetti. Dovresti anche comprendere le behind-the-scenes interazioni che avvengono tra npm, il tuo repository di pacchetti, il tuo flusso di lavoro e il file dell'applicazione. package.json

Prerequisiti

Prima di iniziare:

  • Hai bisogno di uno spazio CodeCatalyst . Per ulteriori informazioni, consulta Creare uno spazio.

  • Nel tuo CodeCatalyst spazio, hai bisogno di un progetto vuoto chiamato:

    codecatalyst-package-project

    Usa l'opzione Inizia da zero per creare questo progetto.

    Per ulteriori informazioni, consulta Creare un progetto vuoto in Amazon CodeCatalyst.

Fase 1: Creare un archivio di sorgenti

In questo passaggio, creerai un repository di origine in. CodeCatalyst Questo repository memorizza i file sorgente del tutorial, come i file index.js andpackage.json.

Per ulteriori informazioni sui repository dei sorgenti, consulta. Creazione di un repository di sorgenti

Per creare un archivio di sorgenti
  1. Apri la CodeCatalyst console all'indirizzo https://codecatalyst.aws/.

  2. Vai al tuo progetto,codecatalyst-package-project.

  3. Nel riquadro di navigazione, scegli Codice, quindi scegli Archivi di origine.

  4. Scegli Aggiungi repository, quindi scegli Crea repository.

  5. Nel nome del repository, inserisci:

    hello-world-app
  6. Scegli Crea.

Fase 2: Creare gli archivi dei pacchetti CodeCatalyst e del gateway

In questo passaggio, crei un repository di pacchetti nel tuo CodeCatalyst progetto e lo connetti a un repository gateway, anch'esso presente nel tuo progetto. CodeCatalyst Successivamente importi la dipendenza del tutorial da npmjs.com in lodash entrambi i repository.

Il repository gateway è il «collante» che collega l'archivio dei pacchetti al npmjs.com pubblico. CodeCatalyst

Per ulteriori informazioni sugli archivi dei pacchetti, consulta. Pubblica e condividi pacchetti software in CodeCatalyst

Nota

Questo tutorial utilizza i termini repository di CodeCatalyst pacchetti e repository gateway per fare riferimento ai due repository creati CodeCatalyst nella procedura seguente.

Per creare repository di CodeCatalyst pacchetti e gateway
  1. Nel riquadro di navigazione scegliere Pacchetti.

  2. Scegli Crea archivio di pacchetti.

  3. Nel nome del repository, inserisci:

    codecatalyst-package-repository
  4. Scegli + Seleziona i repository upstream.

  5. Scegli i repository Gateway.

  6. Nella npm-public-registry-gatewaycasella, scegli Crea.

  7. Scegli Seleziona.

  8. Scegli Crea.

    CodeCatalyst crea un repository di pacchetti chiamato codecatalyst-package-repository che è collegato a un repository gateway. Il repository del gateway è connesso al registro npmjs.com.

Passaggio 3: creare l'applicazione «Hello World»

In questo passaggio, crei un'applicazione Node.js «Hello World'» e ne importi la dipendenza (lodash) nel gateway e nei repository di pacchetti. CodeCatalyst

Per creare l'applicazione, è necessario un computer di sviluppo su cui siano installati Node.js e il client associato. npm

Questo tutorial presuppone che utilizzerai un ambiente di CodeCatalyst sviluppo come macchina di sviluppo. Sebbene non sia necessario utilizzare un ambiente di CodeCatalyst sviluppo, è consigliato perché fornisce un ambiente di lavoro pulito, ha Node.js ed è npm preinstallato ed è facile da eliminare una volta terminato il tutorial. Per ulteriori informazioni sugli ambienti di CodeCatalyst sviluppo, vedereCreazione di un ambiente di sviluppo.

Usa le seguenti istruzioni per avviare un ambiente di CodeCatalyst sviluppo e utilizzarlo per creare l'applicazione 'Hello World'.

Per avviare un ambiente di sviluppo CodeCatalyst
  1. Nel pannello di navigazione, scegli Codice, quindi scegli Dev Environments.

  2. Nella parte superiore scegli Crea ambiente di sviluppo, quindi scegli AWS Cloud9 (nel browser).

  3. Assicurati che Repository sia impostato su hello-world-app e Existing branch sia impostato main su. Scegli Crea.

    Il tuo ambiente di sviluppo viene avviato in una nuova scheda del browser e il tuo repository (hello-world-app) viene clonato al suo interno.

  4. Lasciate aperte entrambe le schede CodeCatalyst del browser e passate alla procedura successiva.

Per creare l'applicazione Node.js 'Hello World'
  1. Vai al tuo ambiente di sviluppo.

  2. Al prompt del terminale, passa alla directory principale del repository di hello-world-app origine:

    cd hello-world-app
  3. Inizializza un progetto Node.js:

    npm init -y

    L'inizializzazione crea un package.json file nella directory principale di. hello-world-app

  4. Connetti il client npm nel tuo ambiente di sviluppo al tuo repository di CodeCatalyst pacchetti:

    1. Passa alla console. CodeCatalyst

    2. Nel riquadro di navigazione scegliere Pacchetti.

    3. Scegli codecatalyst-package-repository.

    4. Scegli Connect to repository.

    5. Scegli Crea token. Un token di accesso personale (PAT) viene creato per te.

    6. Scegliete Copia per copiare i comandi.

    7. Passa al tuo ambiente di sviluppo.

    8. Assicurati di essere nella hello-world-app directory.

    9. Incolla i comandi. Sono simili ai seguenti:

      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
  5. lodashVersione di importazione 4.17.20:

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

    npm cerca la lodash versione 4.17.20 nelle seguenti posizioni, nell'ordine seguente:

    • Nell'ambiente di sviluppo. Non può trovarlo qui.

    • Nel repository dei CodeCatalyst pacchetti. Non può trovarlo qui.

    • Nel repository del gateway. Non può trovarlo qui.

    • In npmjs.com. Lo trova qui.

    npm importa lodash nel repository gateway, nel repository dei CodeCatalyst pacchetti e nell'ambiente di sviluppo.

    Nota

    Se non avessi collegato il client npm al tuo repository di CodeCatalyst pacchetti nel passaggio 4, npm avrebbe estratto lodash direttamente da npmjs.com e non avrebbe importato il pacchetto in nessuno dei due repository.

    npm aggiorna anche il package.json file con la dipendenza e crea una directory contenente tutte le lodash sue dipendenze. node_modules lodash

  6. Verifica che sia lodash stato importato con successo nel tuo ambiente di sviluppo. Inserisci:

    npm list

    Viene visualizzato il seguente messaggio che indica che l'importazione è avvenuta correttamente:

    `-- lodash@4.17.20
  7. (Facoltativo) Apri hello-world-app/package.json e verifica che le righe siano red boldsono stati aggiunti:

    { "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" } }
  8. In/hello-world-app, crea un file chiamato index.js con il seguente contenuto:

    Suggerimento

    Puoi usare la navigazione laterale nel tuo ambiente di sviluppo per creare questo file.

    // 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);
Per verificare che 'lodash' sia stato importato nel gateway e negli archivi dei CodeCatalyst pacchetti
  1. Passa alla console. CodeCatalyst

  2. Nel riquadro di navigazione scegliere Pacchetti.

  3. Scegli npm-public-registry-gateway.

  4. Assicurati che lodash sia visualizzato. La colonna Ultima versione indica4.17.20.

  5. Ripetere questa procedura percodecatalyst-package-repository. Potrebbe essere necessario aggiornare la finestra del browser per visualizzare il pacchetto importato.

Per testare 'Hello World' nel tuo ambiente di sviluppo
  1. Passa al tuo ambiente di sviluppo.

  2. Assicurati di essere ancora nella hello-world-app directory, quindi esegui l'applicazione:

    node index.js

    Viene Hello World visualizzato un messaggio. Node.js ha eseguito l'applicazione utilizzando il lodash pacchetto scaricato nell'ambiente di sviluppo in un passaggio precedente.

Ignorare la directory 'node_modules' e confermare 'Hello World'
  1. Ignora node_modules la cartella. Inserisci:

    echo "node_modules/" >> .gitignore

    È consigliabile evitare di salvare questa directory. Inoltre, il salvataggio di questa directory interferirà con i passaggi successivi di questo tutorial.

  2. Aggiungi, esegui il commit e invia:

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

    I file dell'applicazione e del progetto 'Hello World' vengono aggiunti all'archivio dei sorgenti.

Passaggio 4: Creare un flusso di lavoro che esegua «Hello World»

In questo passaggio, crei un flusso di lavoro che esegue l'applicazione 'Hello World' utilizzando la dipendenza. lodash Il flusso di lavoro include una singola azione o attività chiamata. RunHelloWorldApp L'RunHelloWorldAppazione include i seguenti comandi e sezioni importanti:

  • Packages

    Questa sezione indica il nome dell'archivio dei CodeCatalyst pacchetti a cui l'azione deve connettersi durante l'esecuzione. npm install

  • - Run: npm install

    Questo comando dice a npm di installare le dipendenze specificate nel file. package.json L'unica dipendenza specificata nel package.json file èlodash. npm cerca lodash nelle seguenti posizioni:

    • Nell'immagine Docker in esecuzione dell'azione. Non riesce a trovarlo qui.

    • Nel repository dei CodeCatalyst pacchetti. Lo trova qui.

    Dopo che npm lo trovalodash, lo importa nell'immagine Docker eseguendo l'azione.

  • - Run: npm list

    Questo comando stampa quale versione di lodash è stata scaricata nell'immagine Docker che esegue l'azione.

  • - Run: node index.js

    Questo comando esegue l'applicazione 'Hello World' utilizzando la dipendenza specificata nel file. package.json

Notate che l'RunHelloWorldAppazione è un'azione di compilazione, come indicato dall'aws/build@v1identificatore nella parte superiore del flusso di lavoro. Per ulteriori informazioni sull'azione di compilazione, consultaCreazione con flussi di lavoro.

Usa le seguenti istruzioni per creare un flusso di lavoro che estragga la lodash dipendenza dal tuo repository di CodeCatalyst pacchetti e quindi esegua l'applicazione 'Hello World'.

Creazione di un flusso di lavoro
  1. Passa alla console. CodeCatalyst

  2. Nel riquadro di navigazione, scegli CI/CD, quindi scegli Flussi di lavoro.

  3. Scegli Crea flusso di lavoro.

  4. Per Source repository, sceglihello-world-app.

  5. Per Branch, sceglimain.

    Il file di definizione del flusso di lavoro verrà creato nel repository e nel ramo di origine scelti.

  6. Scegli Crea.

  7. Scegli YAMLvicino alla parte superiore.

  8. Elimina il codice YAML di esempio.

  9. Aggiungi il YAML codice seguente:

    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

    Nel codice precedente, sostituire codecatalyst-package-repository con il nome dell'archivio dei CodeCatalyst pacchetti in cui è stato creato. Fase 2: Creare gli archivi dei pacchetti CodeCatalyst e del gateway

    Per informazioni sulle proprietà di questo file, vedere. Azioni di creazione e test YAML

  10. (Facoltativo) Scegliete Convalida per assicurarvi che il YAML codice sia valido prima di eseguire il commit.

  11. Scegli Applica.

  12. Nella finestra di dialogo Conferma flusso di lavoro, inserisci quanto segue:

    1. Per il nome del file Workflow, mantenete il valore predefinito,codecatalyst-package-workflow.

    2. Per il messaggio di conferma, inserisci:

      add initial workflow file
    3. Per Repository, scegli hello-world-app.

    4. Per il nome del ramo, scegli principale.

    5. Scegli Applica.

    Ora hai creato un flusso di lavoro.

Per eseguire il flusso di lavoro
  1. Accanto al flusso di lavoro appena creato (codecatalyst-package-workflow), scegli Azioni, quindi scegli Esegui.

    Viene avviata l'esecuzione di un flusso di lavoro.

  2. Nella notifica verde in alto a destra, scegli il link all'esecuzione. Il link è simile aView Run-1234.

    Viene visualizzato un diagramma del flusso di lavoro che mostra chi ha avviato l'esecuzione e l'RunHelloWorldAppazione.

  3. Scegli la casella di RunHelloWorldAppazione per vedere l'avanzamento dell'azione.

  4. Al termine della corsa, vai aFase 5: Verifica il flusso di lavoro.

Fase 5: Verifica il flusso di lavoro

In questo passaggio, verifichi che il flusso di lavoro abbia eseguito correttamente l'applicazione «Hello World» con la relativa lodash dipendenza.

Per verificare che l'applicazione 'Hello World' sia stata eseguita utilizzando la sua dipendenza
  1. Nel diagramma del flusso di lavoro, seleziona la casella. RunHelloWorldApp

    Viene visualizzato un elenco di messaggi di registro.

  2. Espandi il messaggio di node index.js registro.

    Viene visualizzato il seguente messaggio:

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

    L'aspetto di Hello Word (anziché dihello-world) indica che la lodash dipendenza è stata utilizzata correttamente.

  3. Espandi il npm list registro.

    Viene visualizzato un messaggio simile al seguente:

    └── lodash@4.17.20

    Questo messaggio indica che la lodash versione 4.17.20 è stata scaricata nell'immagine Docker che esegue l'azione del flusso di lavoro.

Passaggio 6: Blocca le importazioni da npmjs.com

Ora che lodash la versione 4.17.20 è presente nel gateway e negli archivi dei CodeCatalyst pacchetti, puoi bloccare le importazioni di altre versioni. Il blocco impedisce l'importazione accidentale di versioni successive (o precedenti) dilodash, che potrebbero contenere codice dannoso. Per ulteriori informazioni, consulta Modifica dei controlli di origine dei pacchetti e Attacchi di sostituzione delle dipendenze.

Utilizza le seguenti istruzioni per bloccare le importazioni lodash nel tuo repository del gateway. Quando blocchi i pacchetti sul gateway, questi vengono bloccati anche nelle posizioni a valle.

Per bloccare le importazioni nell'archivio del gateway
  1. Nel riquadro di navigazione scegliere Pacchetti.

  2. Scegli npm-publish-registry-gateway.

  3. Scegli lodash.

  4. Nella parte superiore, scegli i controlli Origin.

  5. In Upstream, scegli Blocca.

  6. Selezionare Salva.

    Ora hai bloccato le importazioni nel tuo repository gateway (e negli archivi e computer downstream) da npmjs.com.

Passaggio 7: testare la funzionalità di blocco

In questa sezione, verifichi che il blocco che hai Passaggio 6: Blocca le importazioni da npmjs.com impostato funzioni. Iniziate configurando 'Hello World' per richiedere la versione 4.17.2 1 lodash anziché quella disponibile nel repository del gateway, che è la 4.17.2 0. Verificate quindi che l'applicazione non sia in grado di recuperare la versione 4.17.21 da nmpjs.com, il che indica che il blocco è avvenuto con successo. Come test finale, sbloccate le importazioni nel vostro repository gateway e verificate che l'applicazione sia in grado di estrarre correttamente la versione 4.17.21 di. lodash

Utilizzate il seguente set di procedure per testare la funzionalità di blocco.

Prima di iniziare
  1. Passa al tuo ambiente di sviluppo.

  2. Estrai il codecatalyst-package-workflow.yaml file che hai creato utilizzando la CodeCatalyst console in precedenza:

    git pull
Per configurare 'Hello World' per richiedere la versione 4.17.21 di 'lodash'
  1. Aprire /hello-world-app/package.json.

  2. Cambia la lodash versione alla 4.17.21 come mostrato 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" } }

    Ora c'è una mancata corrispondenza tra la versione nel package.json file (4.17.21) e la versione nei repository del gateway e dei CodeCatalyst pacchetti (4.17.20).

  3. Aggiungi, esegui il commit e invia:

    git add . git commit -m "update package.json to use lodash 4.17.21" git push
Per verificare che 'Hello World' non riesca a scaricare la versione 4.17.21 di 'lodash'
  1. Esegui il flusso di lavoro con la versione non corrispondente:

    1. Passa alla CodeCatalyst console.

    2. Nel riquadro di navigazione, scegli CI/CD, quindi scegli Flussi di lavoro.

    3. Quindicodecatalyst-package-workflow, scegli Azioni, quindi scegli Esegui.

      npm cerca le dipendenze e rileva che la versione 4.17.21 di lodash è richiesta da 'Hello World'. npm cerca la dipendenza nelle seguenti posizioni, nell'ordine seguente: package.json

      • Nell'immagine Docker in esecuzione dell'azione. Non riesce a trovarlo qui.

      • Nel repository dei CodeCatalyst pacchetti. Non può trovarlo qui.

      • Nel repository del gateway. Non può trovarlo qui.

      • In npmjs.com. Lo trova qui.

      Dopo che npm ha trovato la versione 4.17.21 in npmjs.com, tenta di importarla nel repository del gateway, ma poiché hai impostato il gateway per bloccare le importazioni di, l'importazione non avviene. lodash

      Poiché l'importazione non avviene, il flusso di lavoro fallisce.

  2. Verifica che il flusso di lavoro non sia riuscito:

    1. Nella notifica verde in alto a destra, scegli il link alla corsa. Il link è simile aView Run-2345.

    2. Nel diagramma del flusso di lavoro, selezionate la RunHelloWorldAppcasella.

    3. Espandi il messaggio di npm install registro.

      Viene visualizzato il seguente messaggio:

      [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

      L'errore indica che la versione 4.17.21 non è stata trovata. Questo è previsto perché l'hai bloccato.

Per sbloccare le importazioni da npmjs.com
  1. Nel riquadro di navigazione scegliere Pacchetti.

  2. npm-publish-registry-gatewayScegli.

  3. Scegli lodash.

  4. Nella parte superiore, scegli i controlli Origin.

  5. In Upstream, scegli Consenti.

  6. Selezionare Salva.

    Ora hai sbloccato le importazioni di. lodash

    Il tuo flusso di lavoro può ora importare la versione 4.17.21 di. lodash

Per verificare che le importazioni da npmjs.com siano sbloccate
  1. Esegui nuovamente il flusso di lavoro. Questa volta il flusso di lavoro dovrebbe avere successo perché l'importazione della versione 4.17.21 dovrebbe ora funzionare. Per eseguire nuovamente il flusso di lavoro:

    1. Scegli CI/CD, quindi scegli Flussi di lavoro.

    2. Successivamentecodecatalyst-package-workflow, scegli Azioni e scegli Esegui.

    3. Nella notifica verde in alto, a destra, scegli il link alla corsa. Il link è simile aView Run-3456.

      Viene visualizzato un diagramma del flusso di lavoro che mostra chi ha avviato l'esecuzione e l'RunHelloWorldAppazione.

    4. Scegli la casella di RunHelloWorldAppazione per vedere l'avanzamento dell'azione.

    5. Espandi il messaggio di npm list registro e verifica che venga visualizzato un messaggio simile al seguente:

      └── lodash@4.17.21

      Questo messaggio indica che è stata lodash scaricata la versione 4.17.21.

  2. Verifica che la versione 4.17.21 sia stata importata nei tuoi CodeCatalyst repository e in quelli del gateway:

    1. Nel riquadro di navigazione scegliere Pacchetti.

    2. Scegli. npm-public-registry-gateway

    3. Trova lodash e assicurati che la versione sia4.17.21.

      Nota

      Sebbene la versione 4.17.20 non sia elencata in questa pagina, puoi trovarla scegliendo lodash e quindi scegliendo Versioni nella parte superiore.

    4. Ripeti questi passaggi per verificare che la versione 4.17.21 sia stata importata in. codecatalyst-package-repository

Eliminazione

Pulisci i file e i servizi utilizzati in questo tutorial per evitare che ti vengano addebitati dei costi.

Per ripulire i pacchetti (tutorial)
  1. Eliminarecodecatalyst-package-project:

    1. Nella CodeCatalyst console, accedi al codecatalyst-package-project progetto se non ci sei già.

    2. Nel riquadro di navigazione, scegli Impostazioni del progetto.

    3. Scegliete Elimina progettodelete, immettete e scegliete Elimina progetto.

      CodeCatalyst elimina tutte le risorse del progetto, inclusi i repository di origine, gateway e CodeCatalyst pacchetti. Viene eliminato anche l'ambiente di sviluppo.

  2. Elimina il PAT token:

    1. Scegli il tuo nome utente sulla destra, quindi scegli Le mie impostazioni.

    2. In Token di accesso personali, scegli il token che hai creato in questo tutorial e scegli Elimina.

In questo tutorial, hai imparato a creare un flusso di lavoro che esegua un'applicazione che estrae le sue dipendenze da un CodeCatalyst archivio di pacchetti. Hai anche imparato a bloccare e sbloccare l'accesso ai pacchetti nel gateway e negli archivi dei pacchetti. CodeCatalyst