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: Utilizzo delle variabili con le azioni di richiamo Lambda
Un'azione di richiamo Lambda può utilizzare le variabili di un'altra azione come parte del suo input e restituire nuove variabili insieme al relativo output. Per informazioni sulle variabili per le azioni in CodePipeline, vedi. Riferimento alle variabili
Importante
Come parte della creazione di una pipeline, per gli artefatti verrà utilizzato un bucket di artefatti S3 fornito dal cliente. CodePipeline (Questo è diverso dal bucket utilizzato per un'azione sorgente S3.) Se il bucket di artefatti S3 si trova in un account diverso da quello della pipeline, assicurati che il bucket di artefatti S3 sia di proprietà di utenti sicuri e affidabili. Account AWS
Alla fine di questo tutorial, avrai:
-
Un'azione di richiamo Lambda che:
-
Consuma la
CommitId
variabile da un'azione di origine CodeCommit -
Restituisce tre nuove variabili:
dateTime
,testRunId
, eregion
-
-
Un'azione di approvazione manuale che utilizza le nuove variabili dell'azione di invocazione Lambda per fornire un URL test e un ID di esecuzione del test
-
Una pipeline aggiornata con le nuove operazioni
Argomenti
Prerequisiti
Prima di iniziare, devi disporre di quanto segue:
-
È possibile creare o utilizzare la pipeline con il codice sorgente inserito. CodeCommit Tutorial: crea una pipeline semplice (CodeCommitrepository)
-
Modifica la pipeline esistente in modo che l'azione di CodeCommit origine abbia un namespace. Assegna all'operazione le
SourceVariables
dello spazio dei nomi.
Fase 1: Creazione di una funzione Lambda
Utilizza i seguenti passaggi per creare una funzione Lambda e un ruolo di esecuzione Lambda. L'azione Lambda viene aggiunta alla pipeline dopo aver creato la funzione Lambda.
Per creare una funzione Lambda e un ruolo di esecuzione
Accedi a AWS Management Console e apri la AWS Lambda console all'indirizzo https://console.aws.amazon.com/lambda/
. -
Scegli Crea funzione. Lasciare selezionato Author from scratch (Crea da zero).
-
In Function name (Nome funzione), immettere il nome della funzione, ad esempio
myInvokeFunction
. In Runtime, lasciare selezionata l'opzione predefinita. -
Espandere Choose or create an execution role (Scegli o crea un ruolo di esecuzione). Scegliere Create a new role with basic Lambda permissions (Crea un nuovo ruolo con le autorizzazioni Lambda di base).
-
Scegli Crea funzione.
-
Per utilizzare una variabile da un'altra operazione, deve essere passata ai
UserParameters
nella configurazione dell'operazione di invocazione Lambda. Configuri l'operazione nella pipeline più avanti in questo tutorial, ma aggiungi il codice presumendo che la variabile venga passata.const commitId = event["CodePipeline.job"].data.actionConfiguration.configuration.UserParameters;
Per produrre nuove variabili, imposta una proprietà denominata
outputVariables
sull'input diputJobSuccessResult
. Tieni presente che non è possibile produrre variabili come parte di un fileputJobFailureResult
.const successInput = { jobId: jobId, outputVariables: { testRunId: Math.floor(Math.random() * 1000).toString(), dateTime: Date(Date.now()).toString(), region: lambdaRegion } };
Nella nuova funzione, lasciare selezionato Edit code inline (Modifica codice inline) e incollare il seguente codice di esempio in
index.js
.import { CodePipeline } from '@aws-sdk/client-codepipeline'; export const handler = async (event, context) => { const codepipeline = new CodePipeline({}); // Retrieve the Job ID from the Lambda action const jobId = event["CodePipeline.job"].id; // Retrieve UserParameters const params = event["CodePipeline.job"].data.actionConfiguration.configuration.UserParameters; // The region from where the lambda function is being executed const lambdaRegion = process.env.AWS_REGION; // Notify CodePipeline of a successful job const putJobSuccess = async (message) => { const params = { jobId: jobId, outputVariables: { testRunId: Math.floor(Math.random() * 1000).toString(), dateTime: Date(Date.now()).toString(), region: lambdaRegion } }; try { await codepipeline.putJobSuccessResult(params); return message; } catch (err) { throw err; } }; // Notify CodePipeline of a failed job const putJobFailure = async (message) => { const params = { jobId: jobId, failureDetails: { message: JSON.stringify(message), type: 'JobFailed', externalExecutionId: context.invokeid } }; try { await codepipeline.putJobFailureResult(params); throw message; } catch (err) { throw err; } }; try { console.log("Testing commit - " + params); // Your tests here // Succeed the job return await putJobSuccess("Tests passed."); } catch (ex) { // If any of the assertions failed then fail the job return await putJobFailure(ex); } };
-
Seleziona Salva.
-
Copia Amazon Resource Name (ARN) nella parte superiore dello schermo.
-
Come ultimo passaggio, apri la console AWS Identity and Access Management (IAM) all'indirizzo https://console.aws.amazon.com/iam/
. Modifica il ruolo di esecuzione Lambda per aggiungere la seguente politica:. AWSCodePipelineCustomActionAccess Per le fasi della creazione di un ruolo di esecuzione Lambda o della modifica della policy di ruolo, consulta Fase 2: Creare la funzione Lambda .
Fase 2: aggiungi un'azione di richiamo Lambda e un'azione di approvazione manuale alla tua pipeline
In questo passaggio, aggiungi un'azione di richiamo Lambda alla tua pipeline. È possibile aggiungere l'operazione come parte di una fase denominata Test. Il tipo di operazione è un'operazione di richiamo. È quindi possibile aggiungere un'operazione di approvazione manuale dopo l'operazione di richiamo.
Per aggiungere un'azione Lambda e un'azione di approvazione manuale alla pipeline
-
Apri la CodePipeline console all'indirizzo. https://console.aws.amazon.com/codepipeline/
Vengono visualizzati i nomi di tutte le pipeline associate al tuo AWS account. Scegliere la pipeline in cui si desidera aggiungere l'operazione.
-
Aggiungi l'azione di test Lambda alla tua pipeline.
-
Per modificare la pipeline, scegliere Edit (Modifica). Aggiungere una fase dopo l'operazione di origine nella pipeline esistente. Immettere un nome per la fase, ad esempio
Test
. -
Nella nuova fase, scegliere l'icona per aggiungere un'operazione. In Action name (Nome operazione), immettere il nome dell'operazione di richiamo, ad esempio
Test_Commit
. -
In Action provider, scegli. AWS Lambda
-
In Input artifacts (Artefatti di input), scegliere il nome dell'artefatto di output dell'operazione di origine, ad esempio
SourceArtifact
. -
In Nome funzione, scegli il nome della funzione Lambda che hai creato.
-
In Parametri utente, inserisci la sintassi della variabile per l'ID di CodeCommit commit. Questa operazione crea la variabile di output che si risolve nel commit da esaminare e approvare ogni volta che viene eseguita la pipeline.
#{SourceVariables.CommitId}
-
In Variable namespace (Spazio dei nomi delle variabili) aggiungere il nome dello spazio dei nomi, ad esempio
TestVariables
. -
Seleziona Fatto.
-
-
Aggiungere l'operazione di approvazione manuale alla pipeline.
-
Con la pipeline ancora in modalità di modifica, aggiungere una fase dopo l'operazione di richiamo. Immettere un nome per la fase, ad esempio
Approval
. -
Nella nuova fase, scegliere l'icona per aggiungere un'operazione. In Action name (Nome operazione), immettere il nome dell'operazione di approvazione, ad esempio
Change_Approval
. -
In Action provider (Provider operazione), scegliere Manual approval (Approvazione manuale).
-
In URLrevisione, costruisci URL aggiungendo la sintassi della variabile per la variabile e la
region
variabile.CommitId
Assicurarsi di utilizzare gli spazi dei nomi assegnati alle operazioni che forniscono le variabili di output.Per questo esempio, la sintassi URL with the variabile for a CodeCommit action ha lo spazio dei nomi predefinito.
SourceVariables
La variabile di output della regione Lambda ha lo spazio dei nomiTestVariables
. L'URLaspetto è il seguente.https://#{TestVariables.region}.console.aws.amazon.com/codesuite/codecommit/repositories/MyDemoRepo/commit/#{SourceVariables.CommitId}
In Comments (Commenti), costruire il testo del messaggio di approvazione aggiungendo la sintassi della variabile per la variabile
testRunId
. Per questo esempio, la sintassi URL with the variable per la variabile di outputtestRunId
Lambda haTestVariables
lo spazio dei nomi. Inserire il seguente messaggio.Make sure to review the code before approving this action. Test Run ID: #{TestVariables.testRunId}
-
-
Scegliere Done (Fatto) per chiudere la schermata di modifica per l'operazione, quindi scegliere Done (Fatto) per chiudere la schermata di modifica per la fase. Per salvare la pipeline, scegliere Done (Fatto). La pipeline completata ora contiene una struttura con fasi di origine, test, approvazione e distribuzione.
Scegliere Release change (Rilascia modifica) per eseguire l'ultima modifica nella struttura della pipeline.
-
Quando la pipeline raggiunge la fase di approvazione manuale, scegliere Review (Revisione). Le variabili risolte vengono visualizzate come ID URL di commit. L'approvatore può scegliere di URL visualizzare il commit.
-
Dopo che la pipeline è stata eseguita correttamente, è anche possibile visualizzare i valori delle variabili nella pagina della cronologia dell'esecuzione delle operazioni.