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à.
Riferimento al modello di integrazione
Esistono diverse integrazioni predefinite per servizi di terze parti che aiutano a integrare gli strumenti esistenti per i clienti nel processo di rilascio della pipeline. I partner, o fornitori di servizi di terze parti, utilizzano un modello di integrazione per implementare tipi di azione da utilizzare in. CodePipeline
Utilizza questo riferimento quando pianifichi o lavori con tipi di azione gestiti con un modello di integrazione supportato in CodePipeline.
Per certificare il tipo di azione di terze parti utilizzato come partner con CodePipeline, fai riferimento al AWS Partner Network (APN). Queste informazioni sono un supplemento al Reference. AWS CLI
Argomenti
Come funzionano i tipi di azioni di terze parti con l'integratore
Puoi aggiungere tipi di azioni di terze parti alle pipeline dei clienti per completare le attività sulle risorse dei clienti. L'integratore gestisce le richieste di lavoro ed esegue l'azione con. CodePipeline Il diagramma seguente mostra un tipo di azione di terze parti creato per essere utilizzato dai clienti nella loro pipeline. Dopo che il cliente ha configurato l'azione, l'azione viene eseguita e crea richieste di lavoro che vengono gestite dal motore di azione dell'integratore.
Il diagramma mostra i seguenti passaggi:
-
La definizione dell'azione viene registrata e resa disponibile in CodePipeline. L'azione di terze parti è disponibile per i clienti del fornitore terzo.
-
Il cliente del provider sceglie e configura l'azione in. CodePipeline
-
L'azione viene eseguita e i lavori vengono messi in coda. CodePipeline Quando il lavoro è pronto CodePipeline, invia una richiesta di lavoro.
-
L'integratore (il job worker per le API di polling di terze parti o la funzione Lambda) raccoglie la richiesta di lavoro, restituisce una conferma e lavora sugli artefatti per le azioni.
-
L'integratore restituisce l' success/failure output (l'operatore utilizza le success/failure API o la funzione Lambda invia l'output) con un success/failure risultato del lavoro e un token di continuazione.
Per informazioni sui passaggi che puoi utilizzare per richiedere, visualizzare e aggiornare un tipo di azione, consulta. Utilizzo dei tipi di azione
Concetti
Questa sezione utilizza i seguenti termini per i tipi di azione di terze parti:
- Tipo di operazione
-
Un processo ripetibile che può essere riutilizzato in pipeline che eseguono gli stessi carichi di lavoro di distribuzione continua. I tipi di azione sono identificati da
Owner,, eCategory.ProviderVersionAd esempio:{ "Category": "Deploy", "Owner": "AWS", "Provider": "CodeDeploy", "Version": "1" },Tutte le azioni dello stesso tipo condividono la stessa implementazione.
- Azione
-
Una singola istanza di un tipo di azione, uno dei processi discreti che avvengono all'interno di una fase di una pipeline. Ciò include in genere i valori utente specifici della pipeline in cui viene eseguita questa azione.
- Definizione dell'azione
-
Lo schema per un tipo di azione che definisce le proprietà necessarie per configurare l'azione e gli input/output artefatti.
- Esecuzione dell'operazione
-
Una raccolta di processi eseguiti per determinare se l'azione sulla pipeline del cliente ha avuto successo o meno.
- Motore di esecuzione delle azioni
-
Una proprietà della configurazione di esecuzione dell'azione che definisce il tipo di integrazione utilizzato da un tipo di azione. I valori validi sono
JobWorkereLambda. - Integrazione
-
Descrive un software eseguito da un integratore per implementare un tipo di azione. CodePipeline supporta due tipi di integrazione corrispondenti ai due motori di azione supportati
JobWorkereLambda. - Integratore
-
La persona proprietaria dell'implementazione di un tipo di azione.
- Processo
-
Un lavoro con la pipeline e il contesto del cliente per eseguire un'integrazione. L'esecuzione di un'azione è composta da uno o più lavori.
- Lavoratore subordinato
-
Il servizio che elabora l'input del cliente ed esegue un lavoro.
Modelli di integrazione supportati
CodePipeline ha due modelli di integrazione:
-
Modello di integrazione Lambda: questo modello di integrazione è il modo preferito per lavorare con i tipi di azione in CodePipeline. Il modello di integrazione Lambda utilizza una funzione Lambda per elaborare le richieste di lavoro durante l'esecuzione dell'azione.
-
Modello di integrazione dei job worker: il modello di integrazione dei job worker è il modello utilizzato in precedenza per le integrazioni di terze parti. Il modello di integrazione dei lavoratori di lavoro utilizza un lavoratore configurato per contattare le CodePipeline API per elaborare le richieste di lavoro quando viene eseguita l'azione.
Per fare un confronto, la tabella seguente descrive le caratteristiche dei due modelli:
| Modello di integrazione Lambda | Modello di integrazione dei lavoratori | |
|---|---|---|
| Descrizione | L'integratore scrive l'integrazione come una funzione Lambda, che viene richiamata CodePipeline ogni volta che c'è un lavoro disponibile per l'azione. La funzione Lambda non esegue il polling dei lavori disponibili, ma attende invece la ricezione della successiva richiesta di lavoro. | L'integratore scrive l'integrazione come un collaboratore che verifica costantemente i lavori disponibili nelle pipeline del cliente. L'operatore esegue quindi il lavoro e invia nuovamente il risultato del lavoro utilizzando le API. CodePipeline CodePipeline |
| Infrastruttura | AWS Lambda | Distribuisci il codice Job Worker nell'infrastruttura dell'integratore, ad esempio le istanze Amazon EC2. |
| Impegno di sviluppo | L'integrazione contiene solo la logica aziendale. | L'integrazione deve interagire con le CodePipeline API oltre a contenere la logica aziendale. |
| Impegno operativo | Minore impegno operativo poiché l'infrastruttura è costituita solo da AWS risorse. | Maggiore impegno operativo perché l'operatore ha bisogno di un hardware autonomo. |
| Tempo massimo di esecuzione del lavoro | Se l'integrazione deve essere eseguita attivamente per più di 15 minuti, questo modello non può essere utilizzato. Questa azione è destinata agli integratori che devono avviare un processo (ad esempio, avviare una compilazione sull'artefatto del codice del cliente) e restituire un risultato al termine. Non è consigliabile che l'integratore continui ad attendere il completamento della compilazione. Restituisci invece una continuazione. CodePipelinecrea un nuovo lavoro in altri 30 secondi se viene ricevuta una continuazione dal codice dell'integratore per controllare il lavoro fino al termine. | Con questo modello è possibile sostenere job (hours/days) con esecuzione molto lunga. |
Modello di integrazione Lambda
Il modello di integrazione Lambda supportato include la creazione della funzione Lambda e la definizione dell'output per il tipo di azione di terze parti.
Aggiorna la tua funzione Lambda per gestire l'input da CodePipeline
Puoi creare una nuova funzione Lambda. Puoi aggiungere una logica aziendale alla tua funzione Lambda che viene eseguita ogni volta che sulla pipeline è disponibile un job per il tuo tipo di azione. Ad esempio, dato il contesto del cliente e della pipeline, potresti voler avviare una build del tuo servizio per il cliente.
Usa i seguenti parametri per aggiornare la tua funzione Lambda da cui gestire l'input da. CodePipeline
Formato:
-
jobId:-
L'ID univoco del lavoro generato dal sistema.
-
Tipo: stringa
-
Schema: [0-9a-f] {8} - [0-9a-f] {4} - [0-9a-f] {4} - [0-9a-f] {4} - [0-9a-f] {12}
-
-
accountId:-
L'ID AWS dell'account del cliente da utilizzare durante l'esecuzione del lavoro.
-
Tipo: stringa
-
Schema: [0-9] {12}
-
-
data:-
Altre informazioni su un processo utilizzato da un'integrazione per completare il processo.
-
Contiene una mappa di quanto segue:
-
actionConfiguration:-
I dati di configurazione per l'azione. I campi di configurazione dell'azione sono una mappatura di coppie chiave-valore per consentire al cliente di immettere valori. Le chiavi sono determinate dai parametri chiave nel file di definizione del tipo di azione al momento dell'impostazione dell'azione. In questo esempio, i valori sono determinati dall'utente dell'azione che specifica le informazioni nei
PasswordcampiUsernamee. -
Tipo: mappa da stringa a stringa, disponibile opzionalmente
Esempio:
"configuration": { "Username": "MyUser", "Password": "MyPassword" },
-
-
encryptionKey:-
Rappresenta informazioni sulla chiave utilizzata per crittografare i dati nell'archivio degli artefatti, ad esempio una chiave. AWS KMS
-
Contenuto: tipo del tipo di dati, disponibile opzionalmente
encryptionKey
-
-
inputArtifacts:-
Elenco di informazioni su un artefatto su cui lavorare, ad esempio un artefatto di test o build.
-
Contenuto: Elenco del tipo di dati, disponibile opzionalmente
Artifact
-
-
outputArtifacts:-
Elenco di informazioni sull'output di un'azione.
-
Contenuto: Elenco del tipo di dati
Artifact, disponibile opzionalmente
-
-
actionCredentials:-
Rappresenta un oggetto credenziali di AWS sessione. Queste credenziali sono credenziali temporanee emesse da. AWS STS Possono essere utilizzate per accedere agli artefatti di input e output nel bucket S3 utilizzato per archiviare gli artefatti per la pipeline in. CodePipeline
Queste credenziali dispongono inoltre delle stesse autorizzazioni del modello di dichiarazioni politiche specificato nel file di definizione del tipo di azione.
-
Contenuto: tipo del tipo di dati
AWSSessionCredentials, disponibile opzionalmente
-
-
actionExecutionId:-
L'ID esterno dell'esecuzione dell'azione.
-
Tipo: stringa
-
-
continuationToken:-
Un token generato dal sistema, ad esempio un ID di distribuzione, richiesto da un processo per continuare il processo in modo asincrono.
-
Tipo: stringa, disponibile opzionalmente
-
-
-
Tipi di dati:
-
encryptionKey:-
id:-
ID utilizzato per identificare la chiave. Per una AWS KMS chiave, puoi utilizzare l'ID della chiave, l'ARN della chiave o l'alias ARN.
-
Tipo: stringa
-
-
type:-
Il tipo di chiave di crittografia, ad esempio una chiave. AWS KMS
-
Tipo: stringa
-
Valori validi:
KMS
-
-
-
Artifact:-
name:-
Il nome dell'artefatto.
-
Tipo: stringa, presente opzionalmente
-
-
revision:-
L'ID di revisione dell'artefatto. A seconda del tipo di oggetto, potrebbe essere un ID di commit (GitHub) o un ID di revisione (Amazon S3).
-
Tipo: stringa, disponibile opzionalmente
-
-
location:-
La posizione di un artefatto.
-
Contenuto: Tipo del tipo di dati
ArtifactLocation, disponibile opzionalmente
-
-
-
ArtifactLocation:-
type:-
Il tipo di artefatto presente nel luogo.
-
Tipo: stringa, disponibile opzionalmente
-
Valori validi:
S3
-
-
s3Location:-
La posizione del bucket S3 che contiene una revisione.
-
Contenuto: tipo di tipo di dati, disponibile opzionalmente
S3Location
-
-
-
S3Location:-
bucketName:-
Nome del bucket S3.
-
Tipo: stringa
-
-
objectKey:-
La chiave dell'oggetto nel bucket S3, che identifica in modo univoco l'oggetto nel bucket.
-
Tipo: stringa
-
-
-
AWSSessionCredentials:-
accessKeyId:-
La chiave di accesso per la sessione.
-
Tipo: stringa
-
-
secretAccessKey:-
La chiave di accesso segreta per la sessione.
-
Tipo: stringa
-
-
sessionToken:-
Il token per la sessione.
-
Tipo: stringa
-
-
Esempio:
{ "jobId": "01234567-abcd-abcd-abcd-012345678910", "accountId": "012345678910", "data": { "actionConfiguration": { "key1": "value1", "key2": "value2" }, "encryptionKey": { "id": "123-abc", "type": "KMS" }, "inputArtifacts": [ { "name": "input-art-name", "location": { "type": "S3", "s3Location": { "bucketName": "inputBucket", "objectKey": "inputKey" } } } ], "outputArtifacts": [ { "name": "output-art-name", "location": { "type": "S3", "s3Location": { "bucketName": "outputBucket", "objectKey": "outputKey" } } } ], "actionExecutionId": "actionExecutionId", "actionCredentials": { "accessKeyId": "access-id", "secretAccessKey": "secret-id", "sessionToken": "session-id" }, "continuationToken": "continueId-xxyyzz" } }
Restituisci i risultati della tua funzione Lambda a CodePipeline
La risorsa job worker dell'integratore deve restituire un payload valido in caso di successo, fallimento o continuazione.
Formato:
-
result: Il risultato del lavoro.-
Richiesto
-
Valori validi (senza differenza tra maiuscole e minuscole):
-
Success: indica che un processo è terminato e completato. -
Continue: indica che un job è andato a buon fine e deve continuare, ad esempio se il job worker viene richiamato nuovamente per l'esecuzione della stessa azione. -
Fail: indica che un lavoro non è riuscito ed è terminale.
-
-
-
failureType: un tipo di errore da associare a un processo fallito.La
failureTypecategoria per le azioni dei partner descrive il tipo di errore riscontrato durante l'esecuzione del job. Gli integratori impostano il tipo insieme al messaggio di errore quando restituiscono il risultato di un errore del lavoro a CodePipeline.-
Opzionale. Obbligatorio se il risultato è
Fail. -
Deve essere nullo se
resultèSuccessoContinue -
Valori validi:
-
ConfigurationError
-
JobFailed
-
PermissionsError
-
RevisionOutOfSync
-
RevisionUnavailable
-
SystemUnavailable
-
-
-
continuation: stato di continuazione da passare al processo successivo nell'esecuzione dell'azione corrente.-
Opzionale. Obbligatorio se il risultato è
Continue. -
Deve essere nullo se
resultèSuccessoFail. -
Proprietà:
-
State: un hash dello stato da passare.
-
-
-
status: Stato dell'esecuzione dell'azione.-
Opzionale.
-
Proprietà:
-
ExternalExecutionId: un ID di esecuzione esterno o un ID di commit opzionale da associare al job. -
Summary: un riepilogo opzionale di ciò che è accaduto. Negli scenari di errore, questo diventa il messaggio di errore visualizzato dall'utente.
-
-
-
outputVariables: un insieme di key/value coppie da passare alla successiva esecuzione dell'azione.-
Opzionale.
-
Deve essere nullo se
resultèContinueoFail.
-
Esempio:
{ "result":"success", "failureType": null, "continuation": null, "status": { "externalExecutionId":"my-commit-id-123", "summary":"everything is dandy"}, "outputVariables": { "FirstOne":"Nice", "SecondOne":"Nicest", ... } }
Usa i token di continuazione per attendere i risultati di un processo asincrono
Il continuation token fa parte del payload e del risultato della tua funzione Lambda. È un modo per trasmettere lo stato del lavoro CodePipeline e indicare che il lavoro deve essere continuato. Ad esempio, dopo che un integratore avvia una build per il cliente sulla sua risorsa, non attende il completamento della compilazione, ma indica CodePipeline che non ha un risultato terminale restituendo result as continue e restituendo l'ID univoco della build al continuation token CodePipeline as.
Nota
Le funzioni Lambda possono essere eseguite solo fino a 15 minuti. Se il lavoro deve durare più a lungo, puoi utilizzare i token di continuazione.
Il CodePipeline team richiama l'integratore dopo 30 secondi con lo stesso continuation token nel suo payload in modo che possa controllarne il completamento. Se la compilazione viene completata, l'integratore restituisce il risultato del terminale success/fail , altrimenti continua.
Fornisci CodePipeline le autorizzazioni per richiamare la funzione Lambda dell'integratore in fase di esecuzione
Aggiungete le autorizzazioni alla funzione Lambda dell'integratore per fornire al servizio le autorizzazioni per CodePipeline richiamarla utilizzando l'entità del servizio:. CodePipeline codepipeline.amazonaws.com Puoi aggiungere le autorizzazioni utilizzando o la riga di comando. CloudFormation Per un esempio, consulta Utilizzo dei tipi di azione.
Modello di integrazione dei lavoratori
Dopo aver progettato il flusso di lavoro di alto livello, puoi creare il tuo lavoratore. Sebbene le specifiche dell'azione di terze parti determinino ciò che è necessario per il lavoratore, la maggior parte dei lavoratori incaricati delle azioni di terze parti include le seguenti funzionalità:
-
Sondaggio dei lavori in base all'utilizzo. CodePipeline
PollForThirdPartyJobs -
Riconoscimento dei lavori e restituzione dei risultati CodePipeline utilizzando
AcknowledgeThirdPartyJob,PutThirdPartyJobSuccessResult, e.PutThirdPartyJobFailureResult -
Recupero degli artefatti dall' and/or inserimento degli artefatti nel bucket Amazon S3 per la pipeline. Per scaricare gli artefatti dal bucket Amazon S3, devi creare un client Amazon S3 che utilizzi la firma Signature Version 4 (Sig V4). Sig V4 è richiesto per. AWS KMS
Per caricare gli artefatti nel bucket Amazon S3, devi anche configurare la
PutObjectrichiesta Amazon S3 per utilizzare la crittografia tramite (). AWS Key Management Service AWS KMS AWS KMS usi. AWS KMS keys Per sapere se utilizzare la chiave gestita dal cliente Chiave gestita da AWS o una chiave gestita dal cliente per caricare gli artefatti, il lavoratore deve esaminare i dati del lavoro e verificare la proprietà della chiave di crittografia. Se la proprietà è impostata, è necessario utilizzare l'ID della chiave gestita dal cliente durante la configurazione. AWS KMS Se la proprietà della chiave è nulla, si utilizza il. Chiave gestita da AWS CodePipeline utilizza il Chiave gestita da AWS se non diversamente configurato.Per un esempio che mostra come creare i AWS KMS parametri in Java o .NET, consulta Specificare l'uso degli SDK AWS Key Management Service in Amazon S3. AWS Per ulteriori informazioni sul bucket Amazon S3 per, consulta. CodePipeline CodePipeline concetti
Scelta e configurazione di una strategia di gestione delle autorizzazioni per l'esecutore del processo
Per sviluppare un collaboratore per la tua attività di terze parti in CodePipeline, hai bisogno di una strategia per l'integrazione della gestione degli utenti e delle autorizzazioni.
La strategia più semplice consiste nell'aggiungere l'infrastruttura necessaria per il lavoratore creando istanze Amazon EC2 con un ruolo di istanza AWS Identity and Access Management (IAM), che consentano di scalare facilmente le risorse necessarie per l'integrazione. Puoi utilizzare l'integrazione integrata con AWS per semplificare l'interazione tra il tuo lavoratore e. CodePipeline
Scopri di più su Amazon EC2 e determina se è la scelta giusta per la tua integrazione. Per informazioni, consulta Amazon EC2 - Virtual Server Hosting.
Un'altra strategia da considerare è l'utilizzo della federazione delle identità con IAM per integrare il sistema e le risorse esistenti del provider di identità. Questa strategia è utile se disponi già di un provider di identità aziendale o se sei già configurato per supportare gli utenti che utilizzano provider di identità web. La federazione delle identità consente di concedere un accesso sicuro alle AWS risorse CodePipeline, anche senza dover creare o gestire utenti IAM. Puoi utilizzare le caratteristiche e le policy per requisiti di sicurezza delle password e rotazione delle credenziali. Puoi utilizzare applicazioni di esempio come modelli per il tuo progetto. Per informazioni, consulta Gestione della federazione
Per fornire l’accesso, aggiungi autorizzazioni agli utenti, gruppi o ruoli:
-
Utenti e gruppi in Centro identità AWS IAM:
Crea un set di autorizzazioni. Segui le istruzioni riportate nella pagina Create a permission set (Creazione di un set di autorizzazioni) nella Guida per l’utente di Centro identità AWS IAM .
-
Utenti gestiti in IAM tramite un provider di identità:
Crea un ruolo per la federazione delle identità. Segui le istruzioni riportate nella pagina Create a role for a third-party identity provider (federation) della Guida per l’utente IAM.
-
Utenti IAM:
-
Crea un ruolo che l’utente possa assumere. Segui le istruzioni riportate nella pagina Create a role for an IAM user della Guida per l’utente IAM.
-
(Non consigliato) Collega una policy direttamente a un utente o aggiungi un utente a un gruppo di utenti. Segui le istruzioni riportate nella pagina Aggiunta di autorizzazioni a un utente (console) nella Guida per l’utente IAM.
-
Di seguito è riportato un esempio di policy che potresti creare da utilizzare con il tuo lavoratore esterno. Questa policy è intesa solo come un esempio ed è fornita senza modifiche.