Lavorare con i tipi di azione - AWS CodePipeline

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

Lavorare con i tipi di azione

I tipi di azione sono azioni preconfigurate che il fornitore crea per i clienti utilizzando uno dei modelli di integrazione supportati in AWS CodePipeline.

È possibile richiedere, visualizzare e aggiornare i tipi di azione. Se il tipo di azione è stato creato per il tuo account come proprietario, puoi utilizzarlo AWS CLI per visualizzare o aggiornare le proprietà e la struttura del tipo di azione. Se sei il fornitore o il proprietario del tipo di azione, i tuoi clienti possono scegliere l'azione e aggiungerla alle loro pipeline dopo che sarà disponibile in CodePipeline.

Nota

Puoi creare azioni sul custom owner campo da eseguire con un job worker. Non le crei con un modello di integrazione. Per informazioni sulle azioni personalizzate, vedereCreare e aggiungere un'azione personalizzata in CodePipeline.

Componenti del tipo di azione

I seguenti componenti costituiscono un tipo di azione.

  • ID del tipo di azione: l'ID è composto dalla categoria, dal proprietario, dal provider e dalla versione. L'esempio seguente mostra un ID di tipo di azione con un proprietarioThirdParty, una categoria diTest, un provider denominato TestProvider e una versione di1.

    { "Category": "Test", "Owner": "ThirdParty", "Provider": "TestProvider", "Version": "1" },
  • Configurazione dell'esecutore: il modello di integrazione, o motore di azione, specificato al momento della creazione dell'azione. Quando si specifica l'esecutore per un tipo di azione, si sceglie uno dei due tipi:

    • Lambda: il proprietario del tipo di azione scrive l'integrazione come una funzione Lambda, che viene richiamata da CodePipeline ogni volta che è disponibile un lavoro per l'azione.

    • JobWorker: Il proprietario del tipo di azione scrive l'integrazione come job worker che analizza i lavori disponibili nelle pipeline dei clienti. Il job worker esegue quindi il lavoro e invia i risultati del lavoro CodePipeline utilizzando le API. CodePipeline

      Nota

      Il modello di integrazione dei lavoratori non è il modello di integrazione preferito.

  • Elementi di input e output: limiti per gli artefatti che il proprietario del tipo di azione designa per i clienti dell'azione.

  • Autorizzazioni: la strategia di autorizzazione che designa i clienti che possono accedere al tipo di azione di terze parti. Le strategie di autorizzazione disponibili dipendono dal modello di integrazione scelto per il tipo di azione.

  • URL: collegamenti diretti a risorse con cui il cliente può interagire, come la pagina di configurazione del proprietario del tipo di azione.

Richiedi un tipo di azione

Quando viene richiesto un nuovo tipo di CodePipeline azione da un provider di terze parti, il tipo di azione viene creato per il proprietario del tipo di azione in CodePipeline e il proprietario può gestire e visualizzare il tipo di azione.

Un tipo di azione può essere un'azione privata o pubblica. Quando viene creato, il tipo di azione è privato. Per richiedere la modifica di un tipo di azione in un'azione pubblica, contatta il team CodePipeline di assistenza.

Prima di creare il file di definizione dell'azione, le risorse per l'esecutore e la richiesta del tipo di azione per il CodePipeline team, devi scegliere un modello di integrazione.

Fase 1: Scegli il tuo modello di integrazione

Scegli il tuo modello di integrazione e poi crea la configurazione per quel modello. Dopo aver scelto il modello di integrazione, è necessario configurare le risorse di integrazione.

  • Per il modello di integrazione Lambda, si crea una funzione Lambda e si aggiungono le autorizzazioni. Aggiungi le autorizzazioni alla funzione Lambda del tuo integratore per fornire al servizio CodePipeline le autorizzazioni per richiamarlo utilizzando il service principal:. CodePipeline codepipeline.amazonaws.com Le autorizzazioni possono essere aggiunte utilizzando o la riga di comando. AWS CloudFormation

    • Esempio di aggiunta di autorizzazioni utilizzando: AWS CloudFormation

      CodePipelineLambdaBasedActionPermission: Type: 'AWS::Lambda::Permission' Properties: Action: 'lambda:invokeFunction' FunctionName: {"Fn::Sub": "arn:${AWS::Partition}:lambda:${AWS::Region}:${AWS::AccountId}:function:function-name"} Principal: codepipeline.amazonaws.com
    • Documentazione per la riga di comando

  • Per il modello di integrazione dei job worker, crei un'integrazione con un elenco di account consentiti in cui il job worker effettua sondaggi per le offerte di lavoro con le CodePipeline API.

Fase 2: Creare un file di definizione del tipo di azione

Si definisce un tipo di azione in un file di definizione del tipo di azione utilizzando JSON. Nel file, includi la categoria di azione, il modello di integrazione utilizzato per gestire il tipo di azione e le proprietà di configurazione.

Nota

Dopo aver creato un'azione pubblica, non puoi modificare la proprietà del tipo di azione in properties da optional arequired. Inoltre, non puoi modificare ilowner.

Per ulteriori informazioni sui parametri del file di definizione del tipo di azione, consulta ActionTypeDeclaratione UpdateActionTypenell'CodePipeline API Reference.

Il file di definizione del tipo di azione contiene otto sezioni:

  • description: la descrizione del tipo di azione da aggiornare.

  • executor: Informazioni sull'esecutore per un tipo di azione creato con un modello di integrazione supportato, Lambda oppurejob worker. È possibile fornire solo uno dei due jobWorkerExecutorConfiguration olambdaExecutorConfiguration, in base al tipo di esecutore.

    • configuration: Risorse per la configurazione del tipo di azione, in base al modello di integrazione scelto. Per il modello di integrazione Lambda, usa la funzione Lambda ARN. Per il modello di integrazione del job worker, utilizza l'account o l'elenco di account da cui esegue il job worker.

    • jobTimeout: Il timeout in secondi per il lavoro. L'esecuzione di un'azione può consistere in più processi. Questo è il timeout per un singolo processo e non per l'intera esecuzione dell'azione.

      Nota

      Per il modello di integrazione Lambda, il timeout massimo è di 15 minuti.

    • policyStatementsTemplate: La dichiarazione politica che specifica le autorizzazioni nell'account del CodePipeline cliente necessarie per eseguire correttamente l'esecuzione di un'azione.

    • type: il modello di integrazione utilizzato per creare e aggiornare il tipo di azione, oppureLambda. JobWorker

  • id: La categoria, il proprietario, il provider e l'ID di versione per il tipo di azione:

    • category: Il tipo di azione può essere intrapreso nella fase: Source, Build, Deploy, Test, Invoke o Approval.

    • provider: Il fornitore del tipo di azione chiamato, ad esempio la società del fornitore o il nome del prodotto. Il nome del provider viene fornito al momento della creazione del tipo di azione.

    • owner: Il creatore del tipo di azione chiamato: AWS oThirdParty.

    • version: Una stringa utilizzata per la versione del tipo di azione. Per la prima versione, imposta il numero di versione su 1.

  • inputArtifactDetails: Il numero di artefatti da aspettarsi dalla fase precedente della pipeline.

  • outputArtifactDetails: Il numero di artefatti da aspettarsi dal risultato della fase relativa al tipo di azione.

  • permissions: dettagli che identificano gli account autorizzati a utilizzare il tipo di azione.

  • properties: i parametri necessari per il completamento delle attività del progetto.

    • description: La descrizione della proprietà che viene visualizzata agli utenti.

    • optional: Se la proprietà di configurazione è facoltativa.

    • noEcho: Se il valore del campo inserito dal cliente viene omesso dal registro. Setrue, allora il valore viene oscurato quando viene restituito con una richiesta GetPipeline API.

    • key: Se la proprietà di configurazione è una chiave.

    • queryable: Se la proprietà viene utilizzata con il polling. Un tipo di azione può avere fino a una proprietà interrogabile. Se una è presente, la proprietà deve essere obbligatoria e non segreta.

    • name: il nome della proprietà che viene visualizzato agli utenti.

  • urls: CodePipeline viene visualizzato un elenco degli URL per gli utenti.

    • entityUrlTemplate: URL alle risorse esterne per il tipo di azione, ad esempio una pagina di configurazione.

    • executionUrlTemplate: URL ai dettagli dell'ultima esecuzione dell'azione.

    • revisionUrlTemplate: URL visualizzato nella CodePipeline console alla pagina in cui i clienti possono aggiornare o modificare la configurazione dell'azione esterna.

    • thirdPartyConfigurationUrl: URL di una pagina in cui gli utenti possono iscriversi a un servizio esterno ed eseguire la configurazione iniziale dell'azione fornita da tale servizio.

Il codice seguente mostra un esempio di file di definizione del tipo di azione.

{ "actionType": { "description": "string", "executor": { "configuration": { "jobWorkerExecutorConfiguration": { "pollingAccounts": [ "string" ], "pollingServicePrincipals": [ "string" ] }, "lambdaExecutorConfiguration": { "lambdaFunctionArn": "string" } }, "jobTimeout": number, "policyStatementsTemplate": "string", "type": "string" }, "id": { "category": "string", "owner": "string", "provider": "string", "version": "string" }, "inputArtifactDetails": { "maximumCount": number, "minimumCount": number }, "outputArtifactDetails": { "maximumCount": number, "minimumCount": number }, "permissions": { "allowedAccounts": [ "string" ] }, "properties": [ { "description": "string", "key": boolean, "name": "string", "noEcho": boolean, "optional": boolean, "queryable": boolean } ], "urls": { "configurationUrl": "string", "entityUrlTemplate": "string", "executionUrlTemplate": "string", "revisionUrlTemplate": "string" } } }

Fase 3: Registra la tua integrazione con CodePipeline

Per registrare il tipo di azione CodePipeline, contatta il team CodePipeline di assistenza con la tua richiesta.

Il team CodePipeline di assistenza registra la nuova integrazione del tipo di azione apportando modifiche alla codebase del servizio. CodePipeline registra due nuove azioni: un'azione pubblica e un'azione privata. Utilizzi l'azione privata per i test e, quando sei pronto, attivi l'azione pubblica per servire il traffico dei clienti.

Per registrare una richiesta di integrazione con Lambda
  • Invia una richiesta al team CodePipeline di assistenza utilizzando il seguente modulo.

    This issue will track the onboarding of [Name] in CodePipeline. [Contact engineer] will be the primary point of contact for this integration. Name of the action type as you want it to appear to customers: Example.com Testing Initial onboard checklist: 1. Attach an action type definition file in JSON format. This includes the schema for the action type 2. A list of test accounts for the allowlist which can access the new action type [{account, account_name}] 3. The Lambda function ARN 4. List of Regioni AWS where your action will be available 5. Will this be available as a public action?
Per registrare una richiesta di integrazione tra lavoratori e lavoratori
  • Invia una richiesta al team CodePipeline di assistenza utilizzando il seguente modulo.

    This issue will track the onboarding of [Name] in CodePipeline. [Contact engineer] will be the primary point of contact for this integration. Name of the action type as you want it to appear to customers: Example.com Testing Initial onboard checklist: 1. Attach an action type definition file in JSON format. This includes the schema for the action type. 2. A list of test accounts for the allowlist which can access the new action type [{account, account_name}] 3. URL information: Website URL: https://www.example.com/%TestThirdPartyName%/%TestVersionNumber% Example URL pattern where customers will be able to review their configuration information for the action: https://www.example.com/%TestThirdPartyName%/%customer-ID%/%CustomerActionConfiguration% Example runtime URL pattern: https://www.example.com/%TestThirdPartyName%/%customer-ID%/%TestRunId% 4. List of Regioni AWS where your action will be available 5. Will this be available as a public action?

Fase 4: Attiva la tua nuova integrazione

Contatta il team CodePipeline di assistenza quando sei pronto per utilizzare pubblicamente la nuova integrazione.

Aggiungi un tipo di azione disponibile a una pipeline (console)

Aggiungi il tuo tipo di azione a una pipeline in modo da poterlo testare. Puoi farlo creando una nuova pipeline o modificandone una esistente.

Nota

Se il tipo di azione è un'azione di categoria di origine, creazione o distribuzione, è possibile aggiungerla creando una pipeline. Se il tipo di azione è nella categoria di test, devi aggiungerlo modificando una pipeline esistente.

Per aggiungere il tipo di azione a una pipeline esistente dalla console CodePipeline
  1. Accedi AWS Management Console e apri la CodePipeline console all'indirizzo http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. Nell'elenco delle pipeline, scegli la pipeline in cui desideri aggiungere il tipo di azione.

  3. Nella pagina di visualizzazione di riepilogo della pipeline, scegli Modifica.

  4. Scegliete di modificare la fase. Nella fase in cui desideri aggiungere il tipo di azione, scegli Aggiungi gruppo di azioni. Viene visualizzata la pagina Modifica azione.

  5. Nella pagina Modifica azione, in Nome azione, inserisci un nome per l'azione. Questo è il nome visualizzato per la fase della pipeline.

  6. In Action provider, scegli il tipo di azione dall'elenco.

    Nota che il valore nell'elenco si basa su quello provider specificato nel file di definizione del tipo di azione.

  7. In Input artifacts, inserite il nome dell'artefatto in questo formato:

    Artifactname::FileName

    Si noti che le quantità minime e massime consentite sono definite in base a inputArtifactDetails quanto specificato nel file di definizione del tipo di azione.

  8. Scegli Connect a<Action_Name>.

    Si apre una finestra del browser che si collega al sito Web creato per il tipo di azione.

  9. Accedi al tuo sito web come cliente e completa i passaggi che un cliente esegue per utilizzare il tuo tipo di azione. I passaggi variano a seconda della categoria di azione, del sito Web e della configurazione, ma in genere includono un'azione di completamento che riporta il cliente alla pagina Modifica azione.

  10. Nella pagina CodePipeline Modifica azione, vengono visualizzati i campi di configurazione aggiuntivi per l'azione. I campi visualizzati sono le proprietà di configurazione specificate nel file di definizione dell'azione. Immettete le informazioni nei campi personalizzati per il tipo di azione.

    Ad esempio, se il file di definizione dell'azione specifica una proprietà denominataHost, nella pagina Modifica azione viene visualizzato un campo con l'etichetta Host relativa all'azione.

  11. In Output artifacts, inserite il nome dell'artefatto in questo formato:

    Artifactname::FileName

    Notate che le quantità minime e massime consentite sono definite in base a outputArtifactDetails quanto specificato nel file di definizione del tipo di azione.

  12. Scegliete Fine per tornare alla pagina dei dettagli della pipeline.

    Nota

    I tuoi clienti possono opzionalmente utilizzare la CLI per aggiungere il tipo di azione alla loro pipeline.

  13. Per testare la tua azione, esegui una modifica all'origine specificata nella fase di origine della pipeline o segui i passaggi in Avvio manuale di una pipeline.

Per creare una pipeline con il tuo tipo di azione, segui i passaggi indicati Creare una pipeline in CodePipeline e scegli il tipo di azione tra tutte le fasi che testerai.

Visualizza un tipo di azione

Puoi utilizzare la CLI per visualizzare il tipo di azione. Utilizzate il get-action-type comando per visualizzare i tipi di azione che sono stati creati utilizzando un modello di integrazione.

Per visualizzare un tipo di azione
  1. Crea un file JSON di input e assegna un nome al filefile.json. Aggiungi l'ID del tipo di azione in formato JSON come mostrato nell'esempio seguente.

    { "category": "Test", "owner": "ThirdParty", "provider": "TestProvider", "version": "1" }
  2. In una finestra di terminale o nella riga di comando, esegui il get-action-type comando.

    aws codepipeline get-action-type --cli-input-json file://file.json

    Questo comando restituisce l'output della definizione dell'azione per un tipo di azione. Questo esempio mostra un tipo di azione creato con il modello di integrazione Lambda.

    { "actionType": { "executor": { "configuration": { "lambdaExecutorConfiguration": { "lambdaFunctionArn": "arn:aws:lambda:us-west-2:<account-id>:function:my-function" } }, "type": "Lambda" }, "id": { "category": "Test", "owner": "ThirdParty", "provider": "TestProvider", "version": "1" }, "inputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "outputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "permissions": { "allowedAccounts": [ "<account-id>" ] }, "properties": [] } }

Aggiornare un tipo di azione

È possibile utilizzare la CLI per modificare i tipi di azioni creati con un modello di integrazione.

Per un tipo di azione pubblica, non puoi aggiornare il proprietario, non puoi modificare le proprietà opzionali in obbligatorie e puoi solo aggiungere nuove proprietà opzionali.

  1. Usa il get-action-type comando per ottenere la struttura per il tuo tipo di azione. Copia la struttura.

  2. Crea un file JSON di input e assegnagli un nome. action.json Incolla al suo interno la struttura del tipo di azione che hai copiato nel passaggio precedente. Aggiorna tutti i parametri che desideri modificare. Puoi anche aggiungere parametri opzionali.

    Per ulteriori informazioni sui parametri per il file di input, vedere la descrizione del file di definizione dell'azione inFase 2: Creare un file di definizione del tipo di azione.

    L'esempio seguente mostra come aggiornare un tipo di azione di esempio creato con il modello di integrazione Lambda. Questo esempio apporta le seguenti modifiche:

    • Cambia il provider nome inTestProvider1.

    • Aggiunge un limite di timeout del lavoro di 900 secondi.

    • Aggiunge una proprietà di configurazione dell'azione denominata Host che viene visualizzata al cliente che utilizza l'azione.

      { "actionType": { "executor": { "configuration": { "lambdaExecutorConfiguration": { "lambdaFunctionArn": "arn:aws:lambda:us-west-2:<account-id>:function:my-function" } }, "type": "Lambda", "jobTimeout": 900 }, "id": { "category": "Test", "owner": "ThirdParty", "provider": "TestProvider1", "version": "1" }, "inputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "outputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "permissions": { "allowedAccounts": [ "account-id" ] }, "properties": { "description": "Owned build action parameter description", "optional": true, "noEcho": false, "key": true, "queryable": false, "name": "Host" } } }
  3. Nel terminale o nella riga di comando, esegui il update-action-type comando

    aws codepipeline update-action-type --cli-input-json file://action.json

    Questo comando restituisce l'output del tipo di azione in modo che corrisponda ai parametri aggiornati.