

Amazon non CodeCatalyst è più aperta a nuovi clienti. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [Come migrare da CodeCatalyst](migration.md).

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

# Configurazione delle immagini di calcolo e di runtime
<a name="workflows-working-compute"></a>

In un CodeCatalyst flusso di lavoro, puoi specificare l'immagine dell'ambiente di calcolo e di runtime da CodeCatalyst utilizzare per eseguire le azioni del flusso di lavoro.

*Compute* si riferisce al motore di elaborazione (CPU, memoria e sistema operativo) gestito e mantenuto da CodeCatalyst per eseguire le azioni del flusso di lavoro.

**Nota**  
Se il calcolo è definito come una proprietà del flusso di lavoro, non può essere definito come una proprietà di alcuna azione in quel flusso di lavoro. Allo stesso modo, se il calcolo è definito come una proprietà di qualsiasi azione, non può essere definito nel flusso di lavoro.

Un'*immagine di ambiente di runtime* è un contenitore Docker all'interno del quale vengono CodeCatalyst eseguite le azioni del flusso di lavoro. Il contenitore Docker viene eseguito sulla piattaforma di elaborazione prescelta e include un sistema operativo e strumenti aggiuntivi di cui potrebbe aver bisogno un'azione di workflow, come Node.js AWS CLI e.tar.

**Topics**
+ [Tipi di calcolo](#compute.types)
+ [Flotte di calcolo](#compute.fleets)
+ [Proprietà del parco istanze on demand](#compute.on-demand)
+ [Proprietà del parco istanze con provisioning](#compute.provisioned-fleets)
+ [Creazione di una flotta predisposta](projects-create-compute-resource.md)
+ [Modifica di una flotta predisposta](edit-compute-resource.md)
+ [Eliminazione di una flotta fornita](delete-compute-resource.md)
+ [Assegnazione di una flotta o di un calcolo a un'azione](workflows-assign-compute-resource.md)
+ [Condivisione dell'elaborazione tra le azioni](compute-sharing.md)
+ [Specificazione delle immagini dell'ambiente di runtime](build-images.md)

## Tipi di calcolo
<a name="compute.types"></a>

CodeCatalyst offre i seguenti tipi di elaborazione:
+ Amazon EC2
+ AWS Lambda

Amazon EC2 offre una flessibilità ottimizzata durante le operazioni in azione e Lambda offre velocità di avvio ottimizzate. Lambda supporta esecuzioni più rapide del flusso di lavoro grazie a una minore latenza di avvio. Lambda consente di eseguire flussi di lavoro di base in grado di creare, testare e distribuire applicazioni serverless con runtime comuni. Questi runtime includono Node.js, Python, Java, .NET e Go. Tuttavia, ci sono alcuni casi d'uso che Lambda non supporta e, se hanno un impatto su di te, usa il tipo di calcolo Amazon EC2:
+ Lambda non supporta immagini di ambiente di runtime da un registro specifico.
+ Lambda non supporta strumenti che richiedono i permessi di root. Per strumenti come `yum` or`rpm`, usa il tipo di calcolo Amazon EC2 o altri strumenti che non richiedono autorizzazioni di root.
+ Lambda non supporta le build o le esecuzioni di Docker. Le seguenti azioni che utilizzano immagini Docker non sono supportate: Deploy AWS CloudFormation stack, Deploy to Amazon ECS, Amazon S3 AWS CDK publish, AWS CDK bootstrap, deploy, invoke e Actions. AWS Lambda GitHub Inoltre, GitHub le azioni basate su Docker eseguite all'interno dell'azione CodeCatalyst GitHub Actions non sono supportate con Lambda Compute. Puoi usare alternative che non richiedono i permessi di root, come Podman.
+ Lambda non supporta la scrittura su file esterni. `/tmp` Quando configuri le azioni del flusso di lavoro, puoi riconfigurare gli strumenti su cui installare o scrivere. `/tmp` Se hai un'azione di compilazione che si installa`npm`, assicurati di configurarla per l'installazione su. `/tmp`
+ Lambda non supporta tempi di esecuzione superiori a 15 minuti.

## Flotte di calcolo
<a name="compute.fleets"></a>

CodeCatalyst offre le seguenti flotte di elaborazione:
+ Parco istanze on demand
+ Provisioning di parchi istanze

Con le flotte on-demand, quando inizia un'azione del flusso di lavoro, il flusso di lavoro fornisce le risorse di cui ha bisogno. Le macchine vengono distrutte al termine dell'azione. Paghi solo per il numero di minuti in cui esegui le tue azioni. Le flotte on-demand sono completamente gestite e includono funzionalità di scalabilità automatica per gestire i picchi di domanda.

CodeCatalyst offre anche flotte predisposte che contengono macchine alimentate da Amazon EC2 e gestite da. CodeCatalyst Con le flotte assegnate, puoi configurare un set di macchine dedicate per eseguire le azioni del flusso di lavoro. Queste macchine rimangono inattive, pronte a elaborare immediatamente le azioni. Con le flotte predisposte, le macchine sono sempre in funzione e, per tutta la durata del loro approvvigionamento, comportano dei costi.

**Per creare, aggiornare o eliminare una flotta, è necessario disporre del ruolo di **amministratore dello spazio o del ruolo di amministratore** del progetto.**

## Proprietà del parco istanze on demand
<a name="compute.on-demand"></a>

CodeCatalyst fornisce le seguenti flotte on-demand:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/codecatalyst/latest/userguide/workflows-working-compute.html)

**Nota**  
Le specifiche per le flotte on-demand variano a seconda del livello di fatturazione. Per ulteriori informazioni, consultare [Prezzi](https://codecatalyst.aws/explore/pricing).

Se non è selezionata alcuna flotta, utilizza. CodeCatalyst `Linux.x86-64.Large`

## Proprietà del parco istanze con provisioning
<a name="compute.provisioned-fleets"></a>

Una flotta predisposta contiene le seguenti proprietà: 

**Sistema operativo**  
Il sistema operativo Sono disponibili i seguenti sistemi operativi:  
+ Amazon Linux 2
+ Windows Server 2022
**Nota**  
Le flotte Windows sono supportate solo nell'azione di compilazione. Al momento, le altre azioni non supportano Windows.

**Architecture**  
L'architettura del processore. Sono disponibili le seguenti architetture:  
+ x86\$164
+ Arm64

**Tipo di macchina**  
Il tipo di macchina per ogni istanza. Sono disponibili i seguenti tipi di macchine:      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/codecatalyst/latest/userguide/workflows-working-compute.html)

**Capacity**  
Il numero iniziale di macchine assegnate alla flotta, che definisce il numero di azioni che possono essere eseguite in parallelo.

**Modalità di ridimensionamento**  
Definisce il comportamento quando il numero di azioni supera la capacità della flotta.    
**Fornisci capacità aggiuntiva su richiesta**  
Su richiesta vengono configurate macchine aggiuntive che si ridimensionano automaticamente in risposta alle nuove azioni in esecuzione e quindi si riducono alla capacità di base al termine delle azioni. Ciò può comportare costi aggiuntivi, poiché si paga al minuto per ogni macchina in funzione.  
**Attendi che sia disponibile una capacità aggiuntiva del parco veicoli**  
Le azioni eseguite vengono messe in coda fino a quando non è disponibile una macchina. Ciò limita i costi aggiuntivi perché non vengono allocate macchine aggiuntive.

# Creazione di una flotta predisposta
<a name="projects-create-compute-resource"></a>

Utilizza le seguenti istruzioni per creare una flotta predisposta.

**Nota**  
Le flotte fornite verranno disattivate dopo 2 settimane di inattività. Se riutilizzate, verranno riattivate automaticamente, ma questa riattivazione potrebbe causare una latenza.

**Per creare una flotta predisposta**

1. **Nel pannello di navigazione, scegli **CI/CD**, quindi scegli Compute.**

1. Scegli **Crea** flotta previsionata.

1. Nel campo di testo **Provisioned fleet name**, inserisci un nome per la tua flotta.

1. Dal menu a discesa **Sistema operativo**, scegli il sistema operativo.

1. Dal menu a discesa **Tipo di macchina**, scegli il tipo di macchina per la tua macchina.

1. Nel campo **di testo Capacità**, inserisci il numero massimo di macchine del parco macchine.

1. Dal menu a discesa della **modalità Scaling**, scegliete il comportamento di overflow desiderato. Per ulteriori informazioni sui campi, consulta [Proprietà del parco istanze con provisioning](workflows-working-compute.md#compute.provisioned-fleets).

1. Scegli **Create** (Crea).

Dopo aver creato la flotta assegnata, sei pronto per assegnarla a un'azione. Per ulteriori informazioni, consulta [Assegnazione di una flotta o di un calcolo a un'azione](workflows-assign-compute-resource.md).

# Modifica di una flotta predisposta
<a name="edit-compute-resource"></a>

Utilizza le seguenti istruzioni per modificare una flotta predisposta.

**Nota**  
Le flotte fornite verranno disattivate dopo 2 settimane di inattività. Se riutilizzate, verranno riattivate automaticamente, ma questa riattivazione potrebbe causare una latenza.

**Per modificare una flotta predisposta**

1. **Nel pannello di navigazione, scegli **CI/CD**, quindi scegli Compute.**

1. Nell'elenco **Provisioned fleet**, scegli il parco veicoli che desideri modificare.

1. Scegli **Modifica**.

1. Nel campo **di testo Capacità**, inserisci il numero massimo di macchine del parco macchine.

1. Dal menu a discesa della **modalità Scaling**, scegliete il comportamento di overflow desiderato. Per ulteriori informazioni sui campi, consulta [Proprietà del parco istanze con provisioning](workflows-working-compute.md#compute.provisioned-fleets).

1. Scegli **Save** (Salva).

# Eliminazione di una flotta fornita
<a name="delete-compute-resource"></a>

Utilizza le seguenti istruzioni per eliminare una flotta predisposta.

**Per eliminare una flotta predisposta**
**avvertimento**  
Prima di eliminare una flotta assegnata, rimuovila da tutte le azioni eliminando la `Fleet` proprietà dal codice YAML dell'azione. Qualsiasi azione che continui a fare riferimento a una flotta predisposta dopo la sua eliminazione avrà esito negativo alla successiva esecuzione dell'azione.

1. **Nel pannello di navigazione, scegli **CI/CD**, quindi scegli Compute.**

1. Nell'elenco **Provisioned fleet**, scegli il parco veicoli che desideri eliminare.

1. Scegli **Elimina**.

1. Inserisci **delete** per confermare l'eliminazione.

1. Scegli **Delete** (Elimina).

# Assegnazione di una flotta o di un calcolo a un'azione
<a name="workflows-assign-compute-resource"></a>

Per impostazione predefinita, le azioni del flusso di lavoro utilizzano la flotta `Linux.x86-64.Large` on-demand con un tipo di calcolo Amazon EC2. Per utilizzare invece una flotta predisposta o per utilizzare una flotta on-demand diversa, ad esempio, utilizza le seguenti istruzioni`Linux.x86-64.2XLarge`.

------
#### [ Visual ]

**Prima di iniziare**
+ Se desideri assegnare una flotta predisposta, devi prima creare la flotta predisposta. Per ulteriori informazioni, consulta [Creazione di una flotta predisposta](projects-create-compute-resource.md).

**Per assegnare una flotta predisposta o un tipo di flotta diverso a un'azione**

1. [Apri la CodeCatalyst console all'indirizzo https://codecatalyst.aws/.](https://codecatalyst.aws/)

1. Scegliere il progetto.

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

1. Scegli il nome del tuo flusso di lavoro. Puoi filtrare in base al nome del repository o del ramo di origine in cui è definito il flusso di lavoro oppure filtrare in base al nome o allo stato del flusso di lavoro.

1. Scegli **Modifica**.

1. Scegli **Visual**.

1. Nel diagramma del flusso di lavoro, scegli l'azione a cui vuoi assegnare la flotta assegnata o il nuovo tipo di flotta.

1. Scegli la scheda **Configurazione**.

1. In **Compute fleet**, procedi come segue:

   Specificate la macchina o il parco macchine che eseguiranno il flusso di lavoro o le azioni del flusso di lavoro. Con le flotte on-demand, all'avvio di un'azione, il flusso di lavoro fornisce le risorse necessarie e le macchine vengono distrutte al termine dell'azione. Esempi di flotte on-demand:,. `Linux.x86-64.Large` `Linux.x86-64.XLarge` Per ulteriori informazioni sulle flotte on-demand, vedere. [Proprietà del parco istanze on demand](workflows-working-compute.md#compute.on-demand)

   Con le flotte assegnate, puoi configurare una serie di macchine dedicate per eseguire le azioni del flusso di lavoro. Queste macchine rimangono inattive, pronte a elaborare immediatamente le azioni. Per ulteriori informazioni sulle flotte rifornite, vedere. [Proprietà del parco istanze con provisioning](workflows-working-compute.md#compute.provisioned-fleets)

   Se `Fleet` viene omesso, l'impostazione predefinita è. `Linux.x86-64.Large`

1. (Facoltativo) Scegliete **Convalida per convalidare** il codice YAML del flusso di lavoro prima di eseguire il commit.

1. **Scegliete **Commit**, inserite un messaggio di commit e scegliete nuovamente Commit.**

------
#### [ YAML ]

**Prima di iniziare**
+ Se desideri assegnare una flotta predisposta, devi prima creare la flotta predisposta. Per ulteriori informazioni, consulta [Creazione di una flotta predisposta](projects-create-compute-resource.md).

**Per assegnare una flotta predisposta o un tipo di flotta diverso a un'azione**

1. [Apri la CodeCatalyst console all'indirizzo https://codecatalyst.aws/.](https://codecatalyst.aws/)

1. Scegliere il progetto.

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

1. Scegli il nome del tuo flusso di lavoro. Puoi filtrare in base al nome del repository o del ramo di origine in cui è definito il flusso di lavoro oppure filtrare in base al nome o allo stato del flusso di lavoro.

1. Scegli **Modifica**.

1. Scegli **YAML**.

1. Trova l'azione a cui vuoi assegnare la tua flotta accantonata o il nuovo tipo di flotta.

1. Nell'azione, aggiungi una `Compute` proprietà e imposta `Fleet` il nome della tua flotta o il tipo di flotta su richiesta. Per ulteriori informazioni, consulta la descrizione della `Fleet` proprietà nella sezione [Crea e testa azioni YAML](build-action-ref.md) dedicata all'azione.

1. (Facoltativo) Scegliete **Convalida per convalidare** il codice YAML del flusso di lavoro prima di eseguire il commit.

1. **Scegliete **Commit**, inserite un messaggio di commit e scegliete nuovamente Commit.**

------

# Condivisione dell'elaborazione tra le azioni
<a name="compute-sharing"></a>

Per impostazione predefinita, le azioni in un flusso di lavoro vengono eseguite su istanze separate in un parco veicoli[.](workflows-working-compute.md#compute.fleets) Questo comportamento fornisce azioni con isolamento e prevedibilità sullo stato degli input. Il comportamento predefinito richiede una configurazione esplicita per condividere il contesto, ad esempio file e variabili, tra le azioni. 

La condivisione del calcolo è una funzionalità che consente di eseguire tutte le azioni in un flusso di lavoro sulla stessa istanza. L'utilizzo della condivisione del calcolo può fornire tempi di esecuzione del flusso di lavoro più rapidi perché viene dedicato meno tempo al provisioning delle istanze. È inoltre possibile condividere file (artefatti) tra azioni senza ulteriori configurazioni del flusso di lavoro.

Quando un flusso di lavoro viene eseguito utilizzando la condivisione del calcolo, un'istanza del parco dati predefinito o specificato è riservata per la durata di tutte le azioni in quel flusso di lavoro. Al termine dell'esecuzione del flusso di lavoro, la prenotazione dell'istanza viene rilasciata.

**Topics**
+ [Esecuzione di più azioni su elaborazione condivisa](#how-to-compute-share)
+ [Considerazioni sulla condivisione del calcolo](#compare-compute-sharing)
+ [Attivazione della condivisione del calcolo](#compute-sharing-steps)
+ [Esempi](#compute-sharing-examples)

## Esecuzione di più azioni su elaborazione condivisa
<a name="how-to-compute-share"></a>

È possibile utilizzare l'`Compute`attributo nella definizione YAML a livello di flusso di lavoro per specificare sia la flotta che le proprietà di condivisione del calcolo delle azioni. Puoi anche configurare le proprietà di calcolo utilizzando l'editor visivo in. CodeCatalyst Per specificare una flotta, imposta il nome di una flotta esistente, imposta il tipo di elaborazione su e attiva la **EC2**condivisione delle risorse di calcolo.

**Nota**  
La condivisione del calcolo è supportata solo se il tipo di calcolo è impostato su e non è supportata per il sistema operativo Windows Server 2022. **EC2** Per ulteriori informazioni sulle flotte di elaborazione, i tipi di calcolo e le proprietà, consulta. [Configurazione delle immagini di calcolo e di runtime](workflows-working-compute.md)

**Nota**  
Se utilizzi il livello Free e specifichi manualmente il `Linux.x86-64.XLarge` o `Linux.x86-64.2XLarge` fleet nella definizione del flusso di lavoro YAML, l'azione verrà comunque eseguita sulla flotta predefinita (). `Linux.x86-64.Large` Per ulteriori informazioni sulla disponibilità e sui prezzi di elaborazione, consulta la [tabella delle opzioni relative ai livelli](https://codecatalyst.aws/explore/pricing). 

Quando la condivisione dell'elaborazione è attivata, la cartella contenente l'origine del flusso di lavoro viene copiata automaticamente tra le azioni. Non è necessario configurare gli artefatti di output e farvi riferimento come artefatti di input in una definizione del flusso di lavoro (file YAML). In qualità di autore di flussi di lavoro, devi collegare le variabili di ambiente utilizzando input e output, proprio come faresti senza utilizzare la condivisione del calcolo. Se desideri condividere cartelle tra azioni esterne all'origine del flusso di lavoro, prendi in considerazione la memorizzazione nella cache dei file. Per ulteriori informazioni, consulta [Condivisione di artefatti e file tra azioni](workflows-working-artifacts.md) e [Memorizzazione nella cache dei file tra le esecuzioni del workflow](workflows-caching.md).

L'archivio di origine in cui si trova il file di definizione del flusso di lavoro è identificato dall'etichetta. `WorkflowSource` Durante l'utilizzo della condivisione di calcolo, l'origine del flusso di lavoro viene scaricata nella prima azione che vi fa riferimento e resa automaticamente disponibile per le azioni successive del flusso di lavoro da utilizzare. Qualsiasi modifica apportata alla cartella contenente l'origine del flusso di lavoro mediante un'azione, come l'aggiunta, la modifica o la rimozione di file, è visibile anche nelle azioni successive del flusso di lavoro. Puoi fare riferimento ai file che si trovano nella cartella di origine del flusso di lavoro in qualsiasi azione del flusso di lavoro, proprio come puoi fare senza utilizzare la condivisione del calcolo. Per ulteriori informazioni, consulta [Riferimento ai file del repository di origine](workflows-sources-reference-files.md).

**Nota**  
I flussi di lavoro di condivisione del calcolo devono specificare una sequenza rigorosa di azioni, quindi non è possibile impostare azioni parallele. Sebbene gli artefatti di output possano essere configurati in qualsiasi azione della sequenza, gli artefatti di input non sono supportati.

## Considerazioni sulla condivisione del calcolo
<a name="compare-compute-sharing"></a>

Puoi eseguire flussi di lavoro con condivisione dell'elaborazione per accelerare l'esecuzione del flusso di lavoro e condividere il contesto tra le azioni in un flusso di lavoro che utilizzano la stessa istanza. Considera quanto segue per determinare se l'utilizzo della condivisione del calcolo è appropriato per il tuo scenario:


|   | Condivisione del calcolo | Senza condivisione del calcolo | 
| --- | --- | --- | 
|  Tipo di calcolo  |  Amazon EC2  |  Amazon EC2, AWS Lambda  | 
|  Fornitura di istanze  |  Le azioni vengono eseguite sulla stessa istanza  |  Le azioni vengono eseguite su istanze separate  | 
|  Sistema operativo  |  Amazon Linux 2  |  Amazon Linux 2, Windows Server 2022 (solo azioni di compilazione)  | 
|  File di riferimento  |  `$CATALYST_SOURCE_DIR_WorkflowSource`, `/sources/WorkflowSource/`  |  `$CATALYST_SOURCE_DIR_WorkflowSource`, `/sources/WorkflowSource/`  | 
|  Struttura flusso di lavoro  |  Le azioni possono essere eseguite solo in sequenza  |  Le azioni possono essere eseguite in parallelo  | 
|  Accesso ai dati attraverso le azioni del flusso di lavoro  |  Accedi alla fonte del flusso di lavoro memorizzata nella cache () `WorkflowSource`  |  Accedi agli output degli artefatti condivisi (richiede una configurazione aggiuntiva)  | 

## Attivazione della condivisione del calcolo
<a name="compute-sharing-steps"></a>

Utilizza le seguenti istruzioni per attivare la condivisione del calcolo per un flusso di lavoro.

------
#### [ Visual ]

**Per attivare la condivisione del calcolo utilizzando l'editor visivo**

1. Apri la CodeCatalyst console all'indirizzo [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Scegliere il progetto.

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

1. Scegli il nome del tuo flusso di lavoro.

1. Scegli **Modifica**.

1. Scegli **Visual**.

1. Scegli le **proprietà del flusso** di lavoro.

1. Dal menu a discesa **Tipo di calcolo**, scegli. **EC2**

1. (Facoltativo) Dal menu a discesa **Compute fleet, opzionale**, scegli una flotta che desideri utilizzare per eseguire le azioni del flusso di lavoro. Puoi scegliere una flotta on-demand o creare e scegliere una flotta predisposta. Per ulteriori informazioni, consulta [Creazione di una flotta predisposta](projects-create-compute-resource.md) e [Assegnazione di una flotta o di un calcolo a un'azione](workflows-assign-compute-resource.md). 

1. Attiva l'interruttore per attivare la condivisione del calcolo e far sì che le azioni nel flusso di lavoro vengano eseguite sullo stesso parco macchine.

1. (Facoltativo) Scegli la modalità di esecuzione per il flusso di lavoro. Per ulteriori informazioni, consulta [Configurazione del comportamento di accodamento delle esecuzioni](workflows-configure-runs.md).

1. Scegliete **Commit**, inserite un messaggio di commit e scegliete nuovamente **Commit**.

------
#### [ YAML ]

**Per attivare la condivisione del calcolo utilizzando l'editor YAML**

1. [Apri la CodeCatalyst console all'indirizzo https://codecatalyst.aws/.](https://codecatalyst.aws/)

1. Scegliere il progetto.

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

1. Scegli il nome del tuo flusso di lavoro.

1. Scegli **Modifica**.

1. Scegli **YAML**.

1. Attiva la condivisione del calcolo impostando il `SharedInstance` campo su e su`TRUE`. `Type` `EC2` Imposta `Fleet` una flotta di elaborazione che desideri utilizzare per eseguire azioni sul flusso di lavoro. Puoi scegliere una flotta su richiesta o creare e scegliere una flotta predisposta. Per ulteriori informazioni, consulta [Creazione di una flotta predisposta](projects-create-compute-resource.md) e [Assegnazione di una flotta o di un calcolo a un'azione](workflows-assign-compute-resource.md).

   In un flusso di lavoro YAML, aggiungi un codice simile al seguente:

   ```
     Name: MyWorkflow
     SchemaVersion: "1.0"
     Compute: # Define compute configuration.
       Type: EC2
       Fleet: MyFleet # Optionally, choose an on-demand or provisioned fleet.
       SharedInstance: true # Turn on compute sharing. Default is False.
     Actions:
       BuildFirst:
         Identifier: aws/build@v1
         Inputs:
           Sources:
             - WorkflowSource
         Configuration:
           Steps:
             - Run: ...
             ...
   ```

1. (Facoltativo) Scegliete **Convalida per convalidare** il codice YAML del flusso di lavoro prima di eseguire il commit.

1. **Scegliete **Commit**, inserite un messaggio di commit e scegliete nuovamente Commit.**

------

## Esempi
<a name="compute-sharing-examples"></a>

**Topics**
+ [Esempio: Amazon S3 Publish](#compute-share-s3)

### Esempio: Amazon S3 Publish
<a name="compute-share-s3"></a>

I seguenti esempi di flussi di lavoro mostrano come eseguire l'azione Amazon Amazon S3 Publish in due modi: prima utilizzando artefatti di input e poi utilizzando la condivisione di calcolo. Con la condivisione del calcolo, gli artefatti di input non sono necessari poiché puoi accedere alla cache. `WorkflowSource` Inoltre, l'artefatto di output nell'azione Crea non è più necessario. L'azione S3 Publish è configurata per utilizzare la `DependsOn` proprietà esplicita per mantenere azioni sequenziali; l'azione Build deve essere eseguita correttamente per poter eseguire l'azione S3 Publish.
+ Senza la condivisione del calcolo, è necessario utilizzare artefatti di input e condividere gli output con azioni successive:

  ```
  Name: S3PublishUsingInputArtifact
  SchemaVersion: "1.0"
  Actions:
    Build:
      Identifier: aws/build@v1
      Outputs:
        Artifacts:
          - Name: ArtifactToPublish
            Files: [output.zip]
      Inputs:
        Sources:
          - WorkflowSource
      Configuration:
        Steps:
          - Run: ./build.sh # Build script that generates output.zip
    PublishToS3:
      Identifier: aws/s3-publish@v1
      Inputs:
        Artifacts:
        - ArtifactToPublish
      Environment:
        Connections:
          - Role: codecatalyst-deployment-role
            Name: dev-deployment-role
        Name: dev-connection
      Configuration:
        SourcePath: output.zip
        DestinationBucketName: amzn-s3-demo-bucket
  ```
+ Quando si utilizza la condivisione del calcolo `SharedInstance` impostando su`TRUE`, è possibile eseguire più azioni sulla stessa istanza e condividere artefatti specificando un'unica origine del flusso di lavoro. Gli artefatti di input non sono obbligatori e non possono essere specificati:

  ```
  Name: S3PublishUsingComputeSharing
  SchemaVersion: "1.0"
  Compute: 
    Type: EC2
    Fleet: dev-fleet
    SharedInstance: TRUE
  Actions:
    Build:
      Identifier: aws/build@v1
      Inputs:
        Sources:
          - WorkflowSource
      Configuration:
        Steps:
          - Run: ./build.sh # Build script that generates output.zip
    PublishToS3:
      Identifier: aws/s3-publish@v1
      DependsOn: 
        - Build
      Environment:
        Connections:
          - Role: codecatalyst-deployment-role
            Name: dev-deployment-role
        Name: dev-connection
      Configuration:
        SourcePath: output.zip
        DestinationBucketName: amzn-s3-demo-bucket
  ```

# Specificazione delle immagini dell'ambiente di runtime
<a name="build-images"></a>

Un'*immagine di ambiente di runtime* è un contenitore Docker all'interno del quale vengono CodeCatalyst eseguite le azioni del flusso di lavoro. Il contenitore Docker viene eseguito sulla piattaforma di elaborazione prescelta e include un sistema operativo e strumenti aggiuntivi di cui potrebbe aver bisogno un'azione di workflow, come Node.js AWS CLI e.tar.

Per impostazione predefinita, le azioni del flusso di lavoro verranno eseguite su una delle [immagini attive](#build-curated-images) fornite e gestite da. CodeCatalyst Solo le azioni di compilazione e test supportano immagini personalizzate. Per ulteriori informazioni, consulta [Assegnazione di un'immagine Docker in un ambiente di runtime personalizzato a un'azione](#build-images-specify).

**Topics**
+ [Immagini attive](#build-curated-images)
+ [Cosa succede se un'immagine attiva non include gli strumenti di cui ho bisogno?](#build-images-more-tools)
+ [Assegnazione di un'immagine Docker in un ambiente di runtime personalizzato a un'azione](#build-images-specify)
+ [Esempi](#workflows-working-custom-image-ex)

## Immagini attive
<a name="build-curated-images"></a>

*Le immagini attive sono immagini* di ambiente di runtime che sono completamente supportate CodeCatalyst e includono strumenti preinstallati. Attualmente esistono due set di immagini attive: uno rilasciato a marzo 2024 e l'altro rilasciato a novembre 2022.

Il fatto che un'azione utilizzi un'immagine di marzo 2024 o novembre 2022 dipende dall'azione:
+ [Le azioni di creazione e test che vengono aggiunte a un flusso di lavoro a partire dal 26 marzo 2024 includeranno una `Container` sezione nella loro definizione YAML che specifica esplicitamente un'immagine di marzo 2024.](#build.default-image) [Facoltativamente, puoi rimuovere la `Container` sezione per tornare all'immagine di novembre 2022.](#build.previous-image)
+ [Le azioni di compilazione e test aggiunte a un flusso di lavoro prima del 26 marzo 2024 *non* includeranno una `Container` sezione nella loro definizione YAML e di conseguenza utilizzeranno un'immagine di novembre 2022.](#build.previous-image) Puoi conservare l'immagine di novembre 2022 o aggiornarla. Per aggiornare l'immagine, apri l'azione nell'editor visivo, scegli la scheda **Configurazione**, quindi seleziona l'immagine di marzo 2024 dall'elenco a discesa delle immagini **docker dell'ambiente Runtime**. Questa selezione aggiungerà una `Container` sezione alla definizione YAML dell'azione che viene compilata con l'immagine appropriata di marzo 2024.
+ [Tutte le altre azioni utilizzeranno un'immagine di [novembre 2022 o un'immagine](#build.previous-image) di marzo 2024.](#build.default-image) Per ulteriori informazioni, consulta la documentazione dell'azione. 

**Topics**
+ [Immagini di marzo 2024](#build.default-image)
+ [Immagini di novembre 2022](#build.previous-image)

### Immagini di marzo 2024
<a name="build.default-image"></a>

Le immagini di marzo 2024 sono le ultime immagini fornite da. CodeCatalyst Esiste un'immagine del marzo 2024 per combinazione di elaborazione type/fleet .

La tabella seguente mostra gli strumenti installati su ogni immagine di marzo 2024.


**strumenti di immagine di marzo 2024**  

| Strumento | CodeCatalyst Amazon EC2 per Linux x86\$164 - `CodeCatalystLinux_x86_64:2024_03` | CodeCatalyst Lambda per Linux x86\$164 - `CodeCatalystLinuxLambda_x86_64:2024_03` | CodeCatalyst Amazon EC2 per Linux Arm64 - `CodeCatalystLinux_Arm64:2024_03` | CodeCatalyst Lambda per Linux Arm64 - `CodeCatalystLinuxLambda_Arm64:2024_03` | 
| --- | --- | --- | --- | --- | 
| AWS CLI | 2.15.17 | 2,15,17 | 2,15,17 | 2,15,17 | 
| AWS CLI Copilot | 1.32.1 | 1,32,1 | 1,32,1 | 1,32,1 | 
| Docker | 24,9 | N/D | 24,9 | N/D | 
| Docker Compose | 2.23.3 | N/D | 2.23.3 | N/D | 
| Git | 2,43,0 | 2,43,0 | 2,43,0 | 2,43,0 | 
| Go | 1,21,5 | 1,21,5 | 1,21,5 | 1,21,5 | 
| Gradle | 8,5 | 8,5 | 8,5 | 8,5 | 
| Java | Corretto 17 | Corretto 17 | Corretto 17 | Corretto 17 | 
| Maven | 3.9.6 | 3,9,6 | 3,9,6 | 3,9,6 | 
| Node.js | 18,19,0 | 18,19,0 | 18,19,0 | 18,19,0 | 
| npm | 10,2,3 | 10,2,3 | 10,2,3 | 10,2,3 | 
| Python | 3,9,18 | 3,9,18 | 3,9,18 | 3,9,18 | 
| Python3 | 3,11,6 | 311,6 | 311,6 | 311,6 | 
| pip | 22,31 | 22,31 | 22,31 | 22,31 | 
| .NET | 8,0100 | 8,0100 | 8,0100 | 8,0100 | 

### Immagini di novembre 2022
<a name="build.previous-image"></a>

È disponibile un'immagine del novembre 2022 per type/fleet combinazione di elaborazione. È disponibile anche un'immagine Windows di novembre 2022 con l'azione di creazione se hai configurato una flotta [predisposta](workflows-working-compute.md#compute.fleets).

La tabella seguente mostra gli strumenti installati in ogni immagine di novembre 2022.


**strumenti di immagine di novembre 2022**  

| Strumento | CodeCatalyst Amazon EC2 per Linux x86\$164 - `CodeCatalystLinux_x86_64:2022_11` | CodeCatalyst Lambda per Linux x86\$164 - `CodeCatalystLinuxLambda_x86_64:2022_11` | CodeCatalyst Amazon EC2 per Linux Arm64 - `CodeCatalystLinux_Arm64:2022_11` | CodeCatalyst Lambda per Linux Arm64 - `CodeCatalystLinuxLambda_Arm64:2022_11` | CodeCatalyst Amazon EC2 per Windows x86\$164 - `CodeCatalystWindows_x86_64:2022_11` | 
| --- | --- | --- | --- | --- | --- | 
| AWS CLI | 2.15.17 | 2,15,17 | 2,15,17 | 2,15,17 | 2,13,19 | 
| AWS CLI Copilot | 0.6.0 | 0,6,0 | N/D | N/D | 1,30,1 | 
| Docker | 23,01 | N/D | 23,1 | N/D | N/D | 
| Docker Compose | 2.16.0 | N/D | 2.16.0 | N/D | N/D | 
| Git | 2.40.0 | 2.40.0 | 2,39,2 | 2,339,2 | 2,42,0 | 
| Go | 1.20.2 | 1.20.2 | 1,20.1 | 1,20.1 | 1,19 | 
| Gradle | 80,2 | 80,2 | 8.0.1 | 8.0.1 | 8.3 | 
| Java | Corretto 17 | Corretto 17 | Corretto 17 | Corretto 17 | Corretto 17 | 
| Maven | 3.9.4 | 3,9,4 | 3.9.0 | 3.9.0 | 3,9,4 | 
| Node.js | 16,20,2 | 16,20,2 | 16,19,1 | 16,14,2 | 16,20,0 | 
| npm | 8,19,4 | 8,19,4 | 8,19,3 | 8,5,0 | 8,19,4 | 
| Python | 3,9,15 | 2,7,18 | 3.11.2 | 2,7,18 | 3,9,13 | 
| Python3 | N/D | 3,9,15 | N/D | 3.11.2 | N/D | 
| pip | 222,2 | 222,2 | 23,1 | 23,1 | 22,4 | 
| .NET | 6,0,407 | 6,0,407 | 6,0,406 | 6,0,406 | 6,0,414 | 

## Cosa succede se un'immagine attiva non include gli strumenti di cui ho bisogno?
<a name="build-images-more-tools"></a>

Se nessuna delle [immagini attive](#build-curated-images) fornite da CodeCatalyst include gli strumenti necessari, hai un paio di opzioni:
+ Puoi fornire un'immagine Docker per un ambiente di runtime personalizzato che includa gli strumenti necessari. Per ulteriori informazioni, consulta [Assegnazione di un'immagine Docker in un ambiente di runtime personalizzato a un'azione](#build-images-specify).
**Nota**  
 Se vuoi fornire un'immagine Docker per un ambiente di runtime personalizzato, assicurati che nell'immagine personalizzata sia installato Git. 
+ Puoi fare in modo che l'azione di compilazione o test del tuo flusso di lavoro installi gli strumenti di cui hai bisogno.

  Ad esempio, puoi includere le seguenti istruzioni nella `Steps` sezione del codice YAML dell'azione di compilazione o test:

  ```
  Configuration:
    Steps:
      - Run: ./setup-script
  ```

  L'*setup-script*istruzione eseguirebbe quindi il seguente script per installare il gestore di pacchetti Node (npm):

  ```
  #!/usr/bin/env bash
  echo "Setting up environment"
  
  touch ~/.bashrc
  curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
  source ~/.bashrc 
  nvm install v16.1.0
  source ~/.bashrc
  ```

  Per ulteriori informazioni sull'azione di compilazione YAML, vedere. [Crea e testa azioni YAML](build-action-ref.md)

## Assegnazione di un'immagine Docker in un ambiente di runtime personalizzato a un'azione
<a name="build-images-specify"></a>

Se non desideri utilizzare un'[immagine Active fornita da CodeCatalyst, puoi fornire un'immagine](#build-curated-images) Docker per un ambiente di runtime personalizzato. Se vuoi fornire un'immagine personalizzata, assicurati che abbia Git installato al suo interno. L'immagine può risiedere in Docker Hub, Amazon Elastic Container Registry o in qualsiasi archivio pubblico.

Per sapere come creare un'immagine Docker personalizzata, consulta [Containerizzare un'](https://docs.docker.com/get-started/02_our_app/)applicazione nella documentazione Docker.

Usa le seguenti istruzioni per assegnare l'immagine Docker del tuo ambiente di runtime personalizzato a un'azione. Dopo aver specificato un'immagine, la CodeCatalyst distribuisce sulla tua piattaforma di elaborazione all'inizio dell'azione.

**Nota**  
**Le seguenti azioni non supportano immagini Docker in ambiente di runtime personalizzate: **Deploy CloudFormation stack, Deploy** **to ECS** e **GitHub Actions**. Inoltre, le immagini Docker dell'ambiente di runtime personalizzato non supportano il tipo di calcolo Lambda.**

------
#### [ Visual ]

**Per assegnare un'immagine Docker all'ambiente di runtime personalizzato utilizzando l'editor visivo**

1. [Apri la CodeCatalyst console all'indirizzo https://codecatalyst.aws/.](https://codecatalyst.aws/)

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

1. Scegli il nome del tuo flusso di lavoro. Puoi filtrare in base al nome del repository o del ramo di origine in cui è definito il flusso di lavoro oppure filtrare in base al nome o allo stato del flusso di lavoro.

1. Scegli **Modifica**.

1. Scegli **Visual**.

1. Nel diagramma del flusso di lavoro, scegli l'azione che utilizzerà l'immagine Docker del tuo ambiente di runtime personalizzato.

1. Scegli la scheda **Configurazione**.

1. Nella parte inferiore, compila i seguenti campi.

   **Immagine Docker in ambiente di runtime - opzionale**

   Specificate il registro in cui è archiviata l'immagine. I valori validi includono:
   + `CODECATALYST`(Editor YAML)

     L'immagine è memorizzata nel registro. CodeCatalyst 
   + **Docker Hub** (editor visivo) o `DockerHub` (editor YAML)

     L'immagine è memorizzata nel registro delle immagini di Docker Hub.
   + **Altro registro** (editor visivo) o `Other` (editor YAML)

     L'immagine viene memorizzata in un registro di immagini personalizzato. È possibile utilizzare qualsiasi registro disponibile pubblicamente.
   + **Amazon Elastic Container Registry** (editor visivo) o `ECR` (editor YAML)

     L'immagine è archiviata in un repository di immagini di Amazon Elastic Container Registry. Per utilizzare un'immagine in un repository Amazon ECR, questa azione richiede l'accesso ad Amazon ECR. Per abilitare questo accesso, devi creare un [ruolo IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) che includa le seguenti autorizzazioni e una politica di fiducia personalizzata. (Se lo desideri, puoi modificare un ruolo esistente per includere le autorizzazioni e la policy.)

     Il ruolo IAM deve includere le seguenti autorizzazioni nella sua politica del ruolo:
     + `ecr:BatchCheckLayerAvailability`
     + `ecr:BatchGetImage`
     + `ecr:GetAuthorizationToken`
     + `ecr:GetDownloadUrlForLayer`

     Il ruolo IAM deve includere la seguente politica di fiducia personalizzata:

     Per ulteriori informazioni sulla creazione di ruoli IAM, consulta [Creating a role using custom trust policies (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) nella *IAM User Guide*.

     Una volta creato il ruolo, è necessario assegnarlo all'azione tramite un ambiente. Per ulteriori informazioni, consulta [Associare un ambiente a un'azione](deploy-environments-add-app-to-environment.md).

   **URL dell'immagine ECR****, immagine **Docker Hub o URL dell'immagine****

   Specifica una delle seguenti proprietà:
   + Se utilizzi un `CODECATALYST` registro, imposta l'immagine su una delle seguenti immagini [attive](#build-curated-images):
     + `CodeCatalystLinux_x86_64:2024_03`
     + `CodeCatalystLinux_x86_64:2022_11`
     + `CodeCatalystLinux_Arm64:2024_03`
     + `CodeCatalystLinux_Arm64:2022_11`
     + `CodeCatalystLinuxLambda_x86_64:2024_03`
     + `CodeCatalystLinuxLambda_x86_64:2022_11`
     + `CodeCatalystLinuxLambda_Arm64:2024_03`
     + `CodeCatalystLinuxLambda_Arm64:2022_11`
     + `CodeCatalystWindows_x86_64:2022_11`
   + Se utilizzi un registro Docker Hub, imposta l'immagine sul nome dell'immagine Docker Hub e sul tag opzionale.

     Ad esempio: `postgres:latest`
   + Se utilizzi un registro Amazon ECR, imposta l'immagine sull'URI del registro Amazon ECR.

     Ad esempio: `111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-ecs-image-repo`
   + Se utilizzi un registro personalizzato, imposta l'immagine sul valore previsto dal registro personalizzato.

1. (Facoltativo) Scegliete **Convalida per convalidare** il codice YAML del flusso di lavoro prima di eseguire il commit.

1. **Scegliete **Commit**, inserite un messaggio di commit e scegliete nuovamente Commit.**

------
#### [ YAML ]

**Per assegnare un'immagine Docker all'ambiente di runtime personalizzato utilizzando l'editor YAML**

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

1. Scegli il nome del tuo flusso di lavoro. Puoi filtrare in base al nome del repository o del ramo di origine in cui è definito il flusso di lavoro oppure filtrare in base al nome o allo stato del flusso di lavoro.

1. Scegli **Modifica**.

1. Scegli **YAML**.

1. Trova l'azione a cui vuoi assegnare un'immagine Docker in un ambiente di runtime.

1. Nell'azione, aggiungi una `Container` sezione e le proprietà sottostanti`Registry`. `Image` Per ulteriori informazioni, consultate la `Container` descrizione `Registry` e `Image` le proprietà nella sezione [Azioni](workflow-reference.md#actions-reference) dedicata all'azione.

1. (Facoltativo) Scegliete **Convalida per convalidare** il codice YAML del flusso di lavoro prima di eseguire il commit.

1. **Scegliete **Commit**, inserite un messaggio di commit e scegliete nuovamente Commit.**

------

## Esempi
<a name="workflows-working-custom-image-ex"></a>

Gli esempi seguenti mostrano come assegnare un'immagine Docker di un ambiente di runtime personalizzato a un'azione nel file di definizione del flusso di lavoro.

**Topics**
+ [Esempio: utilizzo di un'immagine Docker in un ambiente di runtime personalizzato per aggiungere il supporto per Node.js 18 con Amazon ECR](#workflows-working-custom-image-ex-ecr-node18)
+ [Esempio: utilizzo di un'immagine Docker in un ambiente di runtime personalizzato per aggiungere il supporto per Node.js 18 con Docker Hub](#workflows-working-custom-image-ex-docker-node18)

### Esempio: utilizzo di un'immagine Docker in un ambiente di runtime personalizzato per aggiungere il supporto per Node.js 18 con Amazon ECR
<a name="workflows-working-custom-image-ex-ecr-node18"></a>

L'esempio seguente mostra come utilizzare un'immagine Docker in un ambiente di runtime personalizzato per aggiungere il supporto per Node.js 18 con [Amazon ECR](https://gallery.ecr.aws/amazonlinux/amazonlinux).

```
Configuration:
  Container:
    Registry: ECR
    Image: public.ecr.aws/amazonlinux/amazonlinux:2023
```

### Esempio: utilizzo di un'immagine Docker in un ambiente di runtime personalizzato per aggiungere il supporto per Node.js 18 con Docker Hub
<a name="workflows-working-custom-image-ex-docker-node18"></a>

[L'esempio seguente mostra come utilizzare un'immagine Docker in un ambiente di runtime personalizzato per aggiungere il supporto per Node.js 18 con Docker Hub.](https://hub.docker.com/_/node)

```
Configuration:
  Container:
    Registry: DockerHub
    Image: node:18.18.2
```