

Avviso di fine del supporto: il 7 ottobre 2026, AWS terminerà il supporto per AWS Proton. Dopo il 7 ottobre 2026, non potrai più accedere alla AWS Proton console o AWS Proton alle risorse. L'infrastruttura implementata rimarrà intatta. Per ulteriori informazioni, consulta [AWS Proton Service Deprecation](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html) and Migration Guide.

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

# AWS Proton componenti
<a name="ag-components"></a>

I componenti sono un tipo di risorsa. AWS Proton Aggiungono flessibilità ai modelli di servizio. I componenti forniscono ai team della piattaforma un meccanismo per estendere i modelli di infrastruttura di base e definire misure di protezione che consentono agli sviluppatori di gestire aspetti della loro infrastruttura applicativa.

In, AWS Proton gli amministratori definiscono l'infrastruttura standard da utilizzare tra i team di sviluppo e le applicazioni. Tuttavia, i team di sviluppo potrebbero dover includere risorse aggiuntive per i loro casi d'uso specifici, come le code di Amazon Simple Queue Service (Amazon SQS) o le tabelle Amazon DynamoDB. Queste risorse specifiche dell'applicazione potrebbero cambiare frequentemente, in particolare durante lo sviluppo iniziale delle applicazioni. Mantenere queste frequenti modifiche nei modelli creati dagli amministratori potrebbe essere difficile da gestire e scalare: gli amministratori avrebbero bisogno di mantenere molti più modelli senza un reale valore aggiunto da parte degli amministratori. Anche l'alternativa, che consente agli sviluppatori di applicazioni di creare modelli per le proprie applicazioni, non è ideale, perché impedisce agli amministratori di standardizzare i principali componenti dell'architettura, come le attività. AWS Fargate È qui che entrano in gioco i componenti.

Con un componente, uno sviluppatore può aggiungere risorse supplementari alla propria applicazione, oltre a quanto definito dagli amministratori nei modelli di ambiente e servizio. Lo sviluppatore collega quindi il componente a un'istanza del servizio. AWS Proton fornisce le risorse dell'infrastruttura definite dal componente proprio come fornisce le risorse per ambienti e istanze di servizio.

Un componente può leggere gli input dell'istanza di servizio e fornire output all'istanza di servizio, per un'esperienza completamente integrata. Ad esempio, se il componente aggiunge un bucket Amazon Simple Storage Service (Amazon S3) per l'utilizzo da parte di un'istanza di servizio, il modello del componente può tenere conto dei nomi delle istanze dell'ambiente e del servizio per denominare il bucket. Quando AWS Proton esegue il rendering del modello di servizio per fornire un'istanza di servizio, l'istanza del servizio può fare riferimento al bucket e utilizzarlo.

I componenti AWS Proton attualmente supportati sono componenti *definiti direttamente*. Il file Infrastructure as Code (IaC) che definisce l'infrastruttura del componente viene passato direttamente all' AWS Proton API o alla console. È diverso da un ambiente o un servizio, in cui si definisce IaC in un pacchetto modello e si registra il pacchetto come risorsa modello, quindi si utilizza una risorsa modello per creare l'ambiente o il servizio.

**Nota**  
I componenti definiti direttamente consentono agli sviluppatori di definire un'infrastruttura aggiuntiva e di eseguirne il provisioning. AWS Proton esegue il provisioning di tutti i componenti definiti direttamente in esecuzione nello stesso ambiente utilizzando lo stesso ruolo AWS Identity and Access Management (IAM).

Un amministratore può controllare ciò che gli sviluppatori possono fare con i componenti in due modi:
+ *Fonti di componenti supportate*: un amministratore può consentire il collegamento di componenti alle istanze di servizio in base a una proprietà delle versioni dei modelli di AWS Proton servizio. Per impostazione predefinita, gli sviluppatori non possono collegare componenti alle istanze del servizio.

  Per ulteriori informazioni su questa proprietà, consulta il [supportedComponentSources](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateServiceTemplateVersion.html#proton-CreateServiceTemplateVersion-request-supportedComponentSources)parametro dell'azione [CreateServiceTemplateVersion](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateServiceTemplateVersion.html)API nell'*AWS Proton API Reference*.
**Nota**  
Quando si utilizza la sincronizzazione dei modelli di servizio, AWS Proton crea le versioni dei modelli di servizio in modo implicito quando si eseguono modifiche a un pacchetto di modelli di servizio in un repository. In questo caso, anziché specificare le origini dei componenti supportate durante la creazione della versione del modello di servizio, si specifica questa proprietà in un file associato a ogni versione principale del modello di servizio. Per ulteriori informazioni, consulta [Modelli di servizio di sincronizzazione](create-template-sync.md#create-template-sync-service-templates).
+ *Ruoli dei componenti*: un amministratore può assegnare un ruolo componente a un ambiente. AWS Proton assume questo ruolo quando effettua il provisioning dell'infrastruttura definita da un componente definito direttamente nell'ambiente. Pertanto, il ruolo del componente delimita l'infrastruttura che gli sviluppatori possono aggiungere utilizzando componenti definiti direttamente nell'ambiente. In assenza del ruolo del componente, gli sviluppatori non possono creare componenti definiti direttamente nell'ambiente.

  Per ulteriori informazioni sull'assegnazione del ruolo di un componente, consulta il [componentRoleArn](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateEnvironment.html#proton-CreateEnvironment-request-componentRoleArn)parametro dell'azione [CreateEnvironment](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateEnvironment.html)API nell'*AWS Proton API Reference*.
**Nota**  
I ruoli dei componenti non vengono utilizzati negli [Provisioning autogestito](ag-works-prov-methods.md#ag-works-prov-methods-self) ambienti.

**Topics**
+ [Come si confrontano i componenti con altre AWS Proton risorse?](#ag-components.compare)
+ [Componenti nella console AWS Proton](#ag-components.console)
+ [Componenti nell' AWS Proton API e AWS CLI](#ag-components.api)
+ [Domande frequenti sui componenti](#ag-components.faq)
+ [Stati dei componenti](ag-components-states.md)
+ [Infrastruttura dei componenti come file di codice](ag-components-iac.md)
+ [CloudFormation Esempio di componente](ag-components-example-cfn.md)

## Come si confrontano i componenti con altre AWS Proton risorse?
<a name="ag-components.compare"></a>

Per molti aspetti, i componenti sono simili ad altre AWS Proton risorse. La loro infrastruttura è definita in un [file modello IAc](ag-components-iac.md), creato in formato CloudFormation YAML o Terraform HCL. AWS Proton [[può fornire l'infrastruttura dei componenti utilizzando il provisioning gestito o AWS il provisioning autogestito.](ag-works-prov-methods.md#ag-works-prov-methods-self)](ag-works-prov-methods.md#ag-works-prov-methods-direct)

I componenti sono tuttavia diversi dalle altre AWS Proton risorse per alcuni aspetti:
+ *Stato distaccato*: i componenti sono progettati per essere collegati alle istanze di servizio e per estenderne l'infrastruttura, ma possono anche trovarsi in uno stato *distaccato*, in cui non sono collegati a nessuna istanza di servizio. Per ulteriori informazioni sugli stati dei componenti, vedere. [Stati dei componenti](ag-components-states.md)
+ *Nessuno schema*: i componenti non hanno uno schema associato come i [pacchetti di modelli](ag-template-authoring.md#ag-template-bundles). Gli input dei componenti sono definiti da un servizio. Un componente può consumare input quando è collegato a un'istanza di servizio.
+ *Nessun componente gestito dal cliente: fornisce AWS Proton sempre l'infrastruttura dei componenti* per te. Non esiste una versione dei *componenti basata sull'utilizzo delle risorse proprie*. Per ulteriori informazioni sugli ambienti gestiti dai clienti, consulta. [Creazione di un ambiente](ag-create-env.md)
+ *Nessuna risorsa modello*: ai componenti definiti direttamente non è associata una risorsa modello simile ai modelli di ambiente e servizio. Fornisci un file modello IAc direttamente al componente. Analogamente, fornite direttamente un manifesto che definisce il linguaggio dei modelli e il motore di rendering per il provisioning dell'infrastruttura del componente. La creazione del file modello e del manifesto è simile alla creazione di un pacchetto di [modelli](ag-template-authoring.md#ag-template-bundles). Tuttavia, con i componenti definiti direttamente, non è necessario archiviare i file IAc come pacchetti in posizioni particolari e non si crea una risorsa modello all'interno AWS Proton di file IaC esterni.
+ *Nessun provisioning CodeBuild basato**: non è possibile effettuare il provisioning di componenti definiti direttamente utilizzando uno script di provisioning personalizzato, noto come provisioning basato. CodeBuild* Per ulteriori informazioni, consulta [Come funziona il CodeBuild provisioning](ag-works-prov-methods.md#ag-works-prov-methods-codebuild).

## Componenti nella console AWS Proton
<a name="ag-components.console"></a>

Usa la AWS Proton console per creare, aggiornare, visualizzare e utilizzare AWS Proton i componenti.

Le seguenti pagine della console sono relative ai componenti. Includiamo collegamenti diretti alle pagine di console di primo livello.
+ [Componenti](https://console.aws.amazon.com//proton/#/components): visualizza l'elenco dei componenti del tuo AWS account. È possibile creare nuovi componenti e aggiornare o eliminare i componenti esistenti. Scegliete il nome di un componente dall'elenco per visualizzarne la pagina dei dettagli.

  Elenchi simili sono disponibili anche nelle pagine dei **dettagli dell'ambiente** e dei **dettagli dell'istanza del servizio**. Questi elenchi mostrano solo i componenti associati alla risorsa che viene visualizzata. Quando si crea un componente da uno di questi elenchi, AWS Proton preseleziona l'ambiente associato nella pagina **Crea componente**.
+ **Dettagli del componente**: per visualizzare la pagina dei dettagli del componente, scegliete il nome di un componente nell'elenco [Componenti](https://console.aws.amazon.com//proton/#/components).

  Nella pagina dei dettagli, visualizza i dettagli e lo stato del componente e aggiorna o elimina il componente. Visualizza e gestisci gli elenchi di output (ad esempio, risorse assegnate ARNs), CloudFormation stack assegnati e tag assegnati.
+ [Crea componente: crea un componente](https://console.aws.amazon.com//proton/#/components/create). Immettete il nome e la descrizione del componente, scegliete le risorse associate, specificate il file IAc di origine del componente e assegnate i tag.
+ **Aggiorna componente**: per aggiornare un componente, selezionalo nell'elenco [Componenti](https://console.aws.amazon.com//proton/#/components) e quindi, nel menu **Azioni**, scegli **Aggiorna** componente. In alternativa, nelle pagine dei **dettagli del componente**, scegli **Aggiorna**.

  Puoi aggiornare la maggior parte dei dettagli del componente. Non è possibile aggiornare il nome del componente. E puoi scegliere se ridistribuire o meno il componente dopo un aggiornamento riuscito.
+ **Configurazione dell'ambiente**: quando si crea o si aggiorna un ambiente, è possibile specificare il ruolo **del componente**. Questo ruolo controlla la capacità di eseguire componenti definiti direttamente nell'ambiente e fornisce le autorizzazioni per il loro provisioning.
+ **Crea una nuova versione del modello di servizio**: quando si crea una versione del modello di servizio, è possibile specificare le **origini dei componenti supportate** per la versione del modello. Ciò controlla la capacità di collegare componenti alle istanze di servizio dei servizi basati su questa versione del modello.

## Componenti nell' AWS Proton API e AWS CLI
<a name="ag-components.api"></a>

Utilizza l' AWS Proton API o il AWS CLI per creare, aggiornare, visualizzare e utilizzare AWS Proton i componenti.

Le seguenti azioni API gestiscono direttamente le risorse AWS Proton dei componenti.
+ [CreateComponent](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateComponent.html)— Creare un AWS Proton componente.
+ [DeleteComponent](https://docs.aws.amazon.com/proton/latest/APIReference/API_DeleteComponent.html)— Eliminare un AWS Proton componente.
+ [GetComponent](https://docs.aws.amazon.com/proton/latest/APIReference/API_GetComponent.html)— Ottieni dati dettagliati per un componente.
+ [ListComponentOutputs](https://docs.aws.amazon.com/proton/latest/APIReference/API_ListComponentOutputs.html)— Ottieni un elenco degli output di Infrastructure as Code (IaC) dei componenti.
+ [ListComponentProvisionedResources](https://docs.aws.amazon.com/proton/latest/APIReference/API_ListComponentProvisionedResources.html)— Elenca le risorse fornite per un componente con dettagli.
+ [ListComponents](https://docs.aws.amazon.com/proton/latest/APIReference/API_ListComponents.html)— Elenca i componenti con dati di riepilogo. È possibile filtrare l'elenco dei risultati per ambiente, servizio o una singola istanza del servizio.

Le seguenti azioni API di altre AWS Proton risorse hanno alcune funzionalità relative ai componenti.
+ [CreateEnvironment](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateEnvironment.html), [UpdateEnvironment](https://docs.aws.amazon.com/proton/latest/APIReference/API_UpdateEnvironment.html)— `componentRoleArn` Da utilizzare per specificare l'Amazon Resource Name (ARN) del ruolo del servizio IAM AWS Proton utilizzato per il provisioning di componenti definiti direttamente in questo ambiente. Determina l'ambito dell'infrastruttura che un componente definito direttamente può fornire.
+ [CreateServiceTemplateVersion](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateServiceTemplateVersion.html)— `supportedComponentSources` Da utilizzare per specificare le sorgenti dei componenti supportate. I componenti con fonti supportate possono essere collegati alle istanze di servizio in base a questa versione del modello di servizio.

## Domande frequenti sui componenti
<a name="ag-components.faq"></a>

**Qual è il ciclo di vita di un componente?**

I componenti possono trovarsi in uno stato *collegato* o *distaccato*. Sono progettati per essere collegati a un'istanza di servizio e migliorarne l'infrastruttura per la maggior parte del tempo. I componenti scollegati si trovano in uno stato transitorio che consente di eliminare un componente o collegarlo a un'altra istanza del servizio in modo controllato e sicuro. Per ulteriori informazioni, consulta [Stati dei componenti](ag-components-states.md).

**Perché non posso eliminare i componenti allegati?**

*Soluzione:* per eliminare un componente allegato, aggiorna il componente per scollegarlo dall'istanza del servizio, convalida la stabilità dell'istanza del servizio e quindi elimina il componente.

*Perché è necessario?* I componenti collegati forniscono l'infrastruttura aggiuntiva di cui l'applicazione ha bisogno per eseguire le sue funzioni di runtime. L'istanza del servizio potrebbe utilizzare gli output dei componenti per rilevare e utilizzare le risorse di questa infrastruttura. L'eliminazione del componente, con conseguente rimozione delle relative risorse infrastrutturali, potrebbe causare interruzioni dell'istanza di servizio collegata.

Come misura di sicurezza aggiuntiva, AWS Proton richiede l'aggiornamento del componente e lo scollegamento dalla relativa istanza di servizio prima di poterlo eliminare. È quindi possibile convalidare l'istanza del servizio per assicurarsi che continui a essere distribuita e a funzionare correttamente. Se rilevi un problema, puoi ricollegare rapidamente il componente all'istanza del servizio, quindi lavorare per risolvere il problema. Quando sei sicuro che la tua istanza di servizio sia libera da qualsiasi dipendenza dal componente, puoi eliminare il componente in tutta sicurezza.

**Perché non posso modificare direttamente l'istanza del servizio collegata a un componente?**

*Soluzione:* per modificare l'allegato, aggiorna il componente per scollegarlo dall'istanza del servizio, convalida la stabilità del componente e dell'istanza del servizio, quindi collega il componente alla nuova istanza di servizio.

*Perché è necessario?* Un componente è progettato per essere collegato a un'istanza di servizio. Il componente potrebbe utilizzare gli input dell'istanza di servizio per la denominazione e la configurazione delle risorse dell'infrastruttura. La modifica dell'istanza del servizio collegata potrebbe causare interruzioni per il componente (oltre alla possibile interruzione dell'istanza del servizio), come descritto nelle domande frequenti precedenti, [Perché non posso eliminare i](#ag-components.faq.delete) componenti allegati? ). Ad esempio, potrebbe causare la ridenominazione e possibilmente anche la sostituzione delle risorse definite nel modello IaC del componente.

Come misura di sicurezza aggiuntiva, AWS Proton richiede l'aggiornamento del componente e lo scollegamento dalla relativa istanza di servizio prima di poterlo collegare a un'altra istanza del servizio. È quindi possibile convalidare la stabilità sia del componente che dell'istanza del servizio prima di collegare il componente alla nuova istanza di servizio.

# Stati dei componenti
<a name="ag-components-states"></a>

AWS Proton i componenti possono trovarsi in due stati fondamentalmente diversi:
+ *Allegato*: il componente è collegato a un'istanza del servizio. Definisce l'infrastruttura che supporta la funzionalità di runtime dell'istanza di servizio. Il componente estende l'infrastruttura definita nei modelli di ambiente e servizio con un'infrastruttura definita dallo sviluppatore.

  Un componente tipico rimane nello stato collegato per la maggior parte della parte utile del suo ciclo di vita.
+ *Distaccato*: il componente è associato a un AWS Proton ambiente e non è collegato a nessuna istanza di servizio nell'ambiente.

  Si tratta di uno stato transitorio per estendere la durata di un componente oltre una singola istanza di servizio.

La tabella seguente fornisce un confronto di primo livello tra i diversi stati dei componenti.


|  | Collegato | Distaccato | 
| --- | --- | --- | 
|  **Scopo principale dello Stato**  |  Estendere l'infrastruttura di un'istanza di servizio.  |  Per mantenere l'infrastruttura del componente tra gli allegati delle istanze di servizio.  | 
|  **Associato a**  |  Un'istanza di servizio e un ambiente  |  Un ambiente   | 
|  **Proprietà specifiche chiave**  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/proton/latest/userguide/ag-components-states.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/proton/latest/userguide/ag-components-states.html)  | 
|  **Può essere eliminato**  |   ![\[No\]](http://docs.aws.amazon.com/it_it/proton/latest/userguide/images/icon-no.png) No  |   ![\[Yes\]](http://docs.aws.amazon.com/it_it/proton/latest/userguide/images/icon-yes.png) Sì  | 
|  **Può essere aggiornato a un'altra istanza del servizio**  |   ![\[No\]](http://docs.aws.amazon.com/it_it/proton/latest/userguide/images/icon-no.png) No  |   ![\[Yes\]](http://docs.aws.amazon.com/it_it/proton/latest/userguide/images/icon-yes.png) Sì  | 
|  **Può leggere gli input**  |   ![\[Yes\]](http://docs.aws.amazon.com/it_it/proton/latest/userguide/images/icon-yes.png) Sì  |   ![\[No\]](http://docs.aws.amazon.com/it_it/proton/latest/userguide/images/icon-no.png) No  | 

Lo scopo principale di un componente è quello di essere collegato a un'istanza di servizio ed estenderne l'infrastruttura con risorse aggiuntive. Un componente collegato può leggere gli input dall'istanza del servizio in base alle specifiche. Non è possibile eliminare direttamente il componente o collegarlo a un'altra istanza del servizio. Non puoi nemmeno eliminare la relativa istanza di servizio o il servizio e l'ambiente correlati. Per eseguire una di queste operazioni, aggiorna prima il componente per scollegarlo dalla sua istanza di servizio.

Per mantenere l'infrastruttura del componente oltre la durata di una singola istanza di servizio, è necessario aggiornare il componente e scollegarlo dalla relativa istanza di servizio rimuovendo i nomi del servizio e delle istanze di servizio. Questo stato distaccato è uno stato transitorio. Il componente non ha ingressi. La sua infrastruttura rimane predisposta e puoi aggiornarla. È possibile eliminare le risorse a cui il componente era associato al momento del collegamento (istanza di servizio, servizio). È possibile eliminare il componente o aggiornarlo per collegarlo nuovamente a un'istanza del servizio.

# Infrastruttura dei componenti come file di codice
<a name="ag-components-iac"></a>

I file IAc (Component Infrastructure as Code) sono simili a quelli di altre AWS Proton risorse. Scopri qui alcuni dettagli specifici dei componenti. Per informazioni complete sulla creazione di file IAc per AWS Proton, vedere. [Creazione di modelli e creazione di pacchetti per AWS Proton](ag-template-authoring.md)

## Utilizzo dei parametri con i componenti
<a name="ag-components-iac.namespace"></a>

Lo spazio AWS Proton dei nomi dei parametri include alcuni parametri a cui un file IAc di servizio può fare riferimento per ottenere il nome e gli output di un componente associato. Lo spazio dei nomi include anche parametri a cui un file IAc del componente può fare riferimento per ottenere input, output e valori delle risorse dall'ambiente, dal servizio e dall'istanza del servizio a cui il componente è associato.

Un componente non dispone di input propri, ma riceve gli input dall'istanza di servizio a cui è collegato. Un componente può anche leggere gli output dell'ambiente.

Per ulteriori informazioni sull'utilizzo dei parametri nei file IAc del componente e del servizio associato, vedere. [Dettagli ed esempi dei parametri del file CloudFormation IAc del componente](comp-parameters.md) Per informazioni generali sui AWS Proton parametri e un riferimento completo allo spazio dei nomi dei parametri, vedere. [AWS Proton parametri](parameters.md)

## Creazione di file IAc robusti
<a name="ag-components-iac.robust"></a>

In qualità di amministratore, quando create una versione del modello di servizio, potete decidere se consentire alle istanze di servizio create a partire dalla versione del modello di avere componenti allegati. Vedi il [supportedComponentSources](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateServiceTemplateVersion.html#proton-CreateServiceTemplateVersion-request-supportedComponentSources)parametro dell'azione [CreateServiceTemplateVersion](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateServiceTemplateVersion.html)API nell'*AWS Proton API Reference.* Tuttavia, per tutte le future istanze di servizio, la persona che crea l'istanza decide se allegarvi o meno un componente e (nel caso di componenti definiti direttamente) l'autore del componente IaC è in genere una persona diversa, uno sviluppatore che utilizza il modello di servizio. Pertanto, non è possibile garantire che un componente venga collegato a un'istanza di servizio. Inoltre, non è possibile garantire l'esistenza di nomi di output di componenti specifici o la validità e la sicurezza dei valori di questi output.

AWS Proton e la sintassi Jinja vi aiutano a risolvere questi problemi e a creare solidi modelli di servizio che eseguono il rendering senza errori nei seguenti modi:
+ *AWS Proton filtri parametrici*: quando si fa riferimento alle proprietà di output dei componenti, è possibile utilizzare *filtri parametrici*, ossia modificatori che convalidano, filtrano e formattano i valori dei parametri. Per maggiori informazioni ed esempi, consulta [filtri parametrici per CloudFormation file IAc](parameter-filters.md).
+ *Proprietà singola predefinita*: quando si fa riferimento a una singola risorsa o proprietà di output di un componente, è possibile garantire che il rendering del modello di servizio non abbia esito negativo utilizzando il `default` filtro, con o senza un valore predefinito. Se il componente o uno specifico parametro di output a cui ti riferisci non esiste, viene invece renderizzato il valore predefinito (o una stringa vuota, se non hai specificato un valore predefinito) e il rendering ha esito positivo. Per ulteriori informazioni, consulta [Fornite valori predefiniti per riferimenti inesistenti](parameter-filters.md#parameter-filters.proton.default).

  Esempi:
  + `{{ service_instance.components.default.name | default("") }}`
  + `{{ service_instance.components.default.outputs.my-output | default("17") }}`
**Nota**  
Non confondete la `.default` parte dello spazio dei nomi, che designa i componenti definiti direttamente, con il `default` filtro, che fornisce un valore predefinito quando la proprietà referenziata non esiste.
+ *Riferimento all'intero oggetto*: quando si fa riferimento all'intero componente o alla raccolta degli output di un componente, AWS Proton restituisce un oggetto vuoto e quindi garantisce che il rendering del `{}` modello di servizio non abbia esito negativo. Non è necessario utilizzare alcun filtro. Assicurati di inserire il riferimento in un contesto che può accettare un oggetto vuoto o usa una `{{ if .. }}` condizione per verificare la presenza di un oggetto vuoto.

  Esempi:
  + `{{ service_instance.components.default }}`
  + `{{ service_instance.components.default.outputs }}`

# CloudFormation Esempio di componente
<a name="ag-components-example-cfn"></a>

Ecco un esempio completo di un componente definito AWS Proton direttamente e di come utilizzarlo in un AWS Proton servizio. Il componente fornisce un bucket Amazon Simple Storage Service (Amazon S3) e la relativa politica di accesso. L'istanza del servizio può fare riferimento a questo bucket e utilizzarlo. Il nome del bucket si basa sui nomi dell'ambiente, del servizio, dell'istanza del servizio e del componente, il che significa che il bucket è associato a un'istanza specifica del modello di componente che estende un'istanza di servizio specifica. Gli sviluppatori possono creare più componenti basati su questo modello di componenti, per fornire bucket Amazon S3 per diverse istanze di servizio ed esigenze funzionali.

L'esempio riguarda la creazione dei vari file Required CloudFormation Infrastructure as Code (IAc) e la creazione di un ruolo richiesto AWS Identity and Access Management (IAM). L'esempio raggruppa i passaggi in base ai ruoli delle persone proprietarie.

## Passaggi per amministratori
<a name="ag-components-example-cfn.admin"></a>

**Per consentire agli sviluppatori di utilizzare i componenti con un servizio**

1. Crea un ruolo AWS Identity and Access Management (IAM) che limiti le risorse che possono essere fornite dai componenti definiti direttamente in esecuzione nel tuo ambiente. AWS Proton assume questo ruolo in un secondo momento per fornire componenti definiti direttamente nell'ambiente.

   Per questo esempio, utilizza la seguente politica:  
**Example ruolo del componente definito direttamente**  

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "cloudformation:CancelUpdateStack",
           "cloudformation:CreateChangeSet",
           "cloudformation:DeleteChangeSet",
           "cloudformation:DescribeStacks",
           "cloudformation:ContinueUpdateRollback",
           "cloudformation:DetectStackResourceDrift",
           "cloudformation:DescribeStackResourceDrifts",
           "cloudformation:DescribeStackEvents",
           "cloudformation:CreateStack",
           "cloudformation:DeleteStack",
           "cloudformation:UpdateStack",
           "cloudformation:DescribeChangeSet",
           "cloudformation:ExecuteChangeSet",
           "cloudformation:ListChangeSets",
           "cloudformation:ListStackResources"
         ],
         "Resource": "arn:aws:cloudformation:*:123456789012:stack/AWSProton-*"
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:CreateBucket",
           "s3:DeleteBucket",
           "s3:GetBucket*",
           "iam:CreatePolicy",
           "iam:DeletePolicy",
           "iam:GetPolicy",
           "iam:ListPolicyVersions",
           "iam:DeletePolicyVersion"
         ],
         "Resource": "*",
         "Condition": {
           "ForAnyValue:StringEquals": {
             "aws:CalledVia": "cloudformation.amazonaws.com"
           }
         }
       }
     ]
   }
   ```

------

1. Fornisci il ruolo creato nel passaggio precedente quando crei o aggiorni l'ambiente. Nella AWS Proton console, specifica un **ruolo Componente nella** pagina **Configura ambiente**. Se stai utilizzando l' AWS Proton API o AWS CLI, specifica le azioni `componentRoleArn` delle [CreateEnvironment](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateEnvironment.html)o dell'[UpdateEnvironment](https://docs.aws.amazon.com/proton/latest/APIReference/API_UpdateEnvironment.html)API.

1. Crea un modello di servizio che faccia riferimento a un componente definito direttamente collegato all'istanza del servizio.

   L'esempio mostra come scrivere un modello di servizio affidabile che non si interrompa se un componente non è collegato all'istanza del servizio.  
**Example file CloudFormation IAc di servizio che utilizza un componente**  

   ```
   # service/instance_infrastructure/cloudformation.yaml
   
   Resources: 
     TaskDefinition:
       Type: AWS::ECS::TaskDefinition
       Properties:
         TaskRoleArn: !Ref TaskRole
         ContainerDefinitions:
           - Name: '{{service_instance.name}}'
             # ...
             {% if service_instance.components.default.outputs | length > 0 %}
             Environment:
               {{ service_instance.components.default.outputs |
                   proton_cfn_ecs_task_definition_formatted_env_vars }}
             {% endif %}
   
     # ...
   
     TaskRole:
       Type: AWS::IAM::Role
       Properties:
         # ...
         ManagedPolicyArns:
           - !Ref BaseTaskRoleManagedPolicy
           {{ service_instance.components.default.outputs
               | proton_cfn_iam_policy_arns }}
   
     # Basic permissions for the task
     BaseTaskRoleManagedPolicy:
       Type: AWS::IAM::ManagedPolicy
       Properties:
         # ...
   ```

1. Crea una nuova versione secondaria del modello di servizio che dichiari come supportati i componenti definiti direttamente.
   + **Pacchetto di modelli in Amazon** S3: nella console, quando AWS Proton crei una versione del modello di servizio, **per Origini di componenti supportate**, **scegli** Definito direttamente. Se utilizzi l' AWS Proton API o AWS CLI, specifica `DIRECTLY_DEFINED` nel `supportedComponentSources` parametro [CreateServiceTemplateVersion](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateServiceTemplateVersion.html)o nelle azioni [UpdateServiceTemplateVersion](https://docs.aws.amazon.com/proton/latest/APIReference/API_UpdateServiceTemplateVersion.html)API.
   + **Sincronizzazione dei modelli**: esegui una modifica `supported_component_sources:` nell'archivio dei pacchetti di modelli di servizio, dove specifichi `DIRECTLY_DEFINED` come elemento del `.template-registration.yaml` file nella directory delle versioni principali. Per ulteriori informazioni su questo file, consulta [Modelli di servizio di sincronizzazione](create-template-sync.md#create-template-sync-service-templates).

1. Pubblica la nuova versione secondaria del modello di servizio. Per ulteriori informazioni, consulta [Registra e pubblica modelli](template-create.md).

1. Assicurati di consentire il `proton:CreateComponent` ruolo IAM degli sviluppatori che utilizzano questo modello di servizio.

## Passaggi per gli sviluppatori
<a name="ag-components-example-cfn.dev"></a>

**Per utilizzare un componente definito direttamente con un'istanza di servizio**

1. Crea un servizio che utilizzi la versione del modello di servizio creata dall'amministratore con il supporto dei componenti. In alternativa, aggiorna una delle istanze del servizio esistenti per utilizzare la versione più recente del modello.

1. Scrivi un file modello IAc componente che fornisce un bucket Amazon S3 e una politica di accesso correlata ed espone queste risorse come output.  
**Example file IAc componente CloudFormation**  

   ```
   # cloudformation.yaml
   
   # A component that defines an S3 bucket and a policy for accessing the bucket.
   Resources:
     S3Bucket:
       Type: AWS::S3::Bucket
       Properties:
         BucketName: '{{environment.name}}-{{service.name}}-{{service_instance.name}}-{{component.name}}'
     S3BucketAccessPolicy:
       Type: AWS::IAM::ManagedPolicy
       Properties:
         PolicyDocument:
           Version: "2012-10-17"		 	 	 
           Statement:
             - Effect: Allow
               Action:
                 - 's3:Get*'
                 - 's3:List*'
                 - 's3:PutObject'
               Resource: !GetAtt S3Bucket.Arn
   Outputs:
     BucketName:
       Description: "Bucket to access"
       Value: !GetAtt S3Bucket.Arn
     BucketAccessPolicyArn:
       Value: !Ref S3BucketAccessPolicy
   ```

1. Se stai usando l' AWS Proton API o AWS CLI, scrivi un file manifest per il componente.  
**Example manifesto del componente definito direttamente**  

   ```
   infrastructure:
     templates:
       - file: "cloudformation.yaml"
         rendering_engine: jinja
         template_language: cloudformation
   ```

1. Crea un componente definito direttamente. AWS Proton assume il ruolo del componente definito dall'amministratore per il provisioning del componente.

   Nella AWS Proton console, nella pagina [Componenti](https://console.aws.amazon.com//proton/#/components), scegli **Crea componente**. Per **le impostazioni dei componenti**, inserisci un **nome del componente** e una **descrizione opzionale del componente**. Per **Collegamento del componente**, scegli **Collega il componente a un'istanza del servizio.** Seleziona l'ambiente, il servizio e l'istanza del servizio. Per **Component source**, scegliete **CloudFormation**, quindi scegliete il file IAc del componente.
**Nota**  
Non è necessario fornire un manifesto: la console ne crea uno automaticamente.

   Se stai utilizzando l' AWS Proton API oppure AWS CLI, utilizza l'azione [CreateComponent](https://docs.aws.amazon.com/proton/latest/APIReference/API_CreateComponent.html)API. Imposta un componente `name` e facoltativo`description`. Set `environmentName``serviceName`, e`serviceInstanceName`. Imposta `templateSource` e `manifest` accedi ai percorsi dei file che hai creato.
**Nota**  
La specificazione di un nome di ambiente è facoltativa quando si specificano i nomi del servizio e delle istanze del servizio. La combinazione di questi due elementi è univoca nell' AWS account e AWS Proton può determinare l'ambiente a partire dall'istanza del servizio.

1. Aggiorna l'istanza del servizio per ridistribuirla. AWS Proton utilizza gli output del componente nel modello di istanza del servizio reso, per consentire all'applicazione di utilizzare il bucket Amazon S3 fornito dal componente.