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.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).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
Argomenti
- Prerequisiti
- Fase 1: Creare un archivio di sorgenti
- Fase 2: Creare gli archivi dei pacchetti CodeCatalyst e del gateway
- Passaggio 3: creare l'applicazione «Hello World»
- Passaggio 4: Creare un flusso di lavoro che esegua «Hello World»
- Fase 5: Verifica il flusso di lavoro
- Passaggio 6: Blocca le importazioni da npmjs.com
- Passaggio 7: testare la funzionalità di blocco
- Eliminazione
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
Apri la CodeCatalyst console all'indirizzo https://codecatalyst.aws/
. -
Vai al tuo progetto,
codecatalyst-package-project
. -
Nel riquadro di navigazione, scegli Codice, quindi scegli Archivi di origine.
-
Scegli Aggiungi repository, quindi scegli Crea repository.
-
Nel nome del repository, inserisci:
hello-world-app
-
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
-
Nel riquadro di navigazione scegliere Pacchetti.
-
Scegli Crea archivio di pacchetti.
-
Nel nome del repository, inserisci:
codecatalyst-package-repository
-
Scegli + Seleziona i repository upstream.
-
Scegli i repository Gateway.
-
Nella npm-public-registry-gatewaycasella, scegli Crea.
-
Scegli Seleziona.
-
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
-
Nel pannello di navigazione, scegli Codice, quindi scegli Dev Environments.
-
Nella parte superiore scegli Crea ambiente di sviluppo, quindi scegli AWS Cloud9 (nel browser).
-
Assicurati che Repository sia impostato su
hello-world-app
e Existing branch sia impostatomain
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. -
Lasciate aperte entrambe le schede CodeCatalyst del browser e passate alla procedura successiva.
Per creare l'applicazione Node.js 'Hello World'
-
Vai al tuo ambiente di sviluppo.
-
Al prompt del terminale, passa alla directory principale del repository di
hello-world-app
origine:cd hello-world-app
-
Inizializza un progetto Node.js:
npm init -y
L'inizializzazione crea un
package.json
file nella directory principale di.hello-world-app
-
Connetti il client npm nel tuo ambiente di sviluppo al tuo repository di CodeCatalyst pacchetti:
-
Passa alla console. CodeCatalyst
-
Nel riquadro di navigazione scegliere Pacchetti.
-
Scegli
codecatalyst-package-repository
. -
Scegli Connect to repository.
-
Scegli Crea token. Un token di accesso personale (PAT) viene creato per te.
-
Scegliete Copia per copiare i comandi.
-
Passa al tuo ambiente di sviluppo.
-
Assicurati di essere nella
hello-world-app
directory. -
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
-
-
lodash
Versione 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 lelodash
sue dipendenze.node_modules
lodash
-
-
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
-
(Facoltativo) Apri
hello-world-app/package.json
e verifica che le righe sianored bold
sono 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"
} } -
In
/hello-world-app
, crea un file chiamatoindex.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
-
Passa alla console. CodeCatalyst
-
Nel riquadro di navigazione scegliere Pacchetti.
-
Scegli npm-public-registry-gateway.
-
Assicurati che
lodash
sia visualizzato. La colonna Ultima versione indica4.17.20
. -
Ripetere questa procedura per
codecatalyst-package-repository
. Potrebbe essere necessario aggiornare la finestra del browser per visualizzare il pacchetto importato.
Per testare 'Hello World' nel tuo ambiente di sviluppo
-
Passa al tuo ambiente di sviluppo.
-
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 illodash
pacchetto scaricato nell'ambiente di sviluppo in un passaggio precedente.
Ignorare la directory 'node_modules' e confermare 'Hello World'
-
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.
-
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'RunHelloWorldApp
azione 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 nelpackage.json
file èlodash
. npm cercalodash
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 trova
lodash
, 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'RunHelloWorldApp
azione è un'azione di compilazione, come indicato dall'aws/build@v1
identificatore 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
-
Passa alla console. CodeCatalyst
-
Nel riquadro di navigazione, scegli CI/CD, quindi scegli Flussi di lavoro.
-
Scegli Crea flusso di lavoro.
-
Per Source repository, scegli
hello-world-app
. -
Per Branch, scegli
main
.Il file di definizione del flusso di lavoro verrà creato nel repository e nel ramo di origine scelti.
-
Scegli Crea.
-
Scegli YAMLvicino alla parte superiore.
-
Elimina il codice YAML di esempio.
-
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 gatewayPer informazioni sulle proprietà di questo file, vedere. Azioni di creazione e test YAML
-
(Facoltativo) Scegliete Convalida per assicurarvi che il YAML codice sia valido prima di eseguire il commit.
-
Scegli Applica.
-
Nella finestra di dialogo Conferma flusso di lavoro, inserisci quanto segue:
-
Per il nome del file Workflow, mantenete il valore predefinito,
codecatalyst-package-workflow
. -
Per il messaggio di conferma, inserisci:
add initial workflow file
-
Per Repository, scegli hello-world-app.
-
Per il nome del ramo, scegli principale.
-
Scegli Applica.
Ora hai creato un flusso di lavoro.
-
Per eseguire il flusso di lavoro
-
Accanto al flusso di lavoro appena creato (
codecatalyst-package-workflow
), scegli Azioni, quindi scegli Esegui.Viene avviata l'esecuzione di un flusso di lavoro.
-
Nella notifica verde in alto a destra, scegli il link all'esecuzione. Il link è simile a
View Run-1234
.Viene visualizzato un diagramma del flusso di lavoro che mostra chi ha avviato l'esecuzione e l'RunHelloWorldAppazione.
-
Scegli la casella di RunHelloWorldAppazione per vedere l'avanzamento dell'azione.
-
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
-
Nel diagramma del flusso di lavoro, seleziona la casella. RunHelloWorldApp
Viene visualizzato un elenco di messaggi di registro.
-
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 lalodash
dipendenza è stata utilizzata correttamente. -
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
-
Nel riquadro di navigazione scegliere Pacchetti.
-
Scegli npm-publish-registry-gateway.
-
Scegli
lodash
. -
Nella parte superiore, scegli i controlli Origin.
-
In Upstream, scegli Blocca.
-
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
-
Passa al tuo ambiente di sviluppo.
-
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'
-
Aprire
/hello-world-app/package.json
. -
Cambia la
lodash
versione alla 4.17.21 come mostrato inred 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). -
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'
-
Esegui il flusso di lavoro con la versione non corrispondente:
-
Passa alla CodeCatalyst console.
-
Nel riquadro di navigazione, scegli CI/CD, quindi scegli Flussi di lavoro.
-
Quindi
codecatalyst-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.
-
-
-
Verifica che il flusso di lavoro non sia riuscito:
-
Nella notifica verde in alto a destra, scegli il link alla corsa. Il link è simile a
View Run-2345
. -
Nel diagramma del flusso di lavoro, selezionate la RunHelloWorldAppcasella.
-
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
-
Nel riquadro di navigazione scegliere Pacchetti.
-
npm-publish-registry-gatewayScegli.
-
Scegli
lodash
. -
Nella parte superiore, scegli i controlli Origin.
-
In Upstream, scegli Consenti.
-
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
-
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:
-
Scegli CI/CD, quindi scegli Flussi di lavoro.
-
Successivamente
codecatalyst-package-workflow
, scegli Azioni e scegli Esegui. -
Nella notifica verde in alto, a destra, scegli il link alla corsa. Il link è simile a
View Run-3456
.Viene visualizzato un diagramma del flusso di lavoro che mostra chi ha avviato l'esecuzione e l'RunHelloWorldAppazione.
-
Scegli la casella di RunHelloWorldAppazione per vedere l'avanzamento dell'azione.
-
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.
-
-
Verifica che la versione 4.17.21 sia stata importata nei tuoi CodeCatalyst repository e in quelli del gateway:
-
Nel riquadro di navigazione scegliere Pacchetti.
-
Scegli. npm-public-registry-gateway
-
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. -
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)
-
Eliminare
codecatalyst-package-project
:-
Nella CodeCatalyst console, accedi al
codecatalyst-package-project
progetto se non ci sei già. -
Nel riquadro di navigazione, scegli Impostazioni del progetto.
-
Scegliete Elimina progetto
delete
, 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.
-
-
Elimina il PAT token:
-
Scegli il tuo nome utente sulla destra, quindi scegli Le mie impostazioni.
-
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