

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

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