

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

# Guida alla personalizzazione cFCT
<a name="cfct-customizations-dev-guide"></a>

 La guida *Customizations for AWS Control Tower* (cFCT) è rivolta ad amministratori, DevOps professionisti, fornitori di software indipendenti, architetti di infrastrutture IT e integratori di sistemi che desiderano personalizzare ed estendere i propri ambienti AWS Control Tower per la propria azienda e i propri clienti. Fornisce informazioni sulla personalizzazione e l'estensione dell'ambiente AWS Control Tower con il pacchetto di personalizzazione cFCT. 

**Nota**  
 Per distribuire e configurare (cFCT), è necessario distribuire ed elaborare un pacchetto di configurazione tramite. AWS CodePipeline Le seguenti sezioni descrivono il processo in dettaglio. 

# Panoramica della pipeline del codice
<a name="cfct-codepipeline-overview"></a>

Il pacchetto di configurazione richiede Amazon Simple Storage Service (Amazon S3) e. AWS CodePipeline Il pacchetto di configurazione contiene questi elementi:
+ Un file manifesto
+ Un set di modelli di accompagnamento
+ Altri file JSON per descrivere e implementare le personalizzazioni dell'ambiente AWS Control Tower

Per impostazione predefinita, il pacchetto di `_custom-control-tower-configuration.zip` configurazione viene caricato in un bucket Amazon S3 con la seguente convenzione di denominazione:

`custom-control-tower-configuration-accountID-region`.

**Nota**  
 Per impostazione predefinita, cFct crea un bucket Amazon S3 per archiviare l'origine della pipeline. La maggior parte dei clienti utilizza questa impostazione predefinita. Se disponi di un AWS CodeCommit repository esistente, puoi cambiarne la posizione di origine. AWS CodeCommit *Per ulteriori informazioni, consulta [Modificare una pipeline CodePipeline nella Guida](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-edit.html) per l'AWS CodePipeline utente.*

Il *file manifest* è un file di testo che descrive le AWS risorse che puoi utilizzare per personalizzare la tua landing zone. CodePipeline svolge queste attività: 
+ estrae il file manifest, il relativo set di modelli e altri file JSON
+ esegue convalide di manifesti e modelli
+ [richiama sezioni nel file manifest cFCT per eseguire fasi specifiche della pipeline.](#code-pipeline-stages)

Quando si aggiorna il pacchetto di configurazione personalizzando il file manifest e rimuovendo il carattere di sottolineatura (\$1) dal nome del file del pacchetto di configurazione, il pacchetto viene avviato automaticamente. AWS CodePipeline

**Ricorda il carattere di sottolineatura**  
Il nome del file del pacchetto di configurazione di esempio inizia con un carattere di sottolineatura (\$1) in modo che non AWS CodePipeline venga attivato automaticamente. Una volta completata la personalizzazione del pacchetto di configurazione, carica il file `custom-control-tower-configuration.zip` senza il carattere di sottolineatura (\$1) per attivare la distribuzione. AWS CodePipeline

## AWS CodePipeline fasi
<a name="code-pipeline-stages"></a>

La pipeline cFCT richiede diverse AWS CodePipeline fasi per implementare e aggiornare l'ambiente AWS Control Tower.

1. **Fase di origine**

   La fase di origine è la fase iniziale. Il pacchetto di configurazione personalizzato avvia questa fase della pipeline. L'origine di AWS CodePipeline può essere un bucket Amazon S3 o un AWS CodeCommit repository, in cui è possibile ospitare il pacchetto di configurazione.

1. **Fase di costruzione**

   La fase di compilazione richiede AWS CodeBuild la convalida del contenuto del pacchetto di configurazione. Questi controlli includono il test della sintassi e dello schema del `manifest.yaml` file, insieme a tutti i CloudFormation modelli inclusi nel pacchetto o ospitati in remoto, utilizzando and. CloudFormation `validate-template` `cfn_nag` Se il file manifesto e i CloudFormation modelli superano i test, la pipeline passa alla fase successiva. Se i test falliscono, puoi esaminare CodeBuild i log per identificare il problema e modificare il file sorgente di configurazione secondo necessità.

1. **Fase di approvazione manuale (opzionale)**

   La fase di approvazione manuale è facoltativa. Se abiliti questa fase, fornisce un controllo aggiuntivo sulla pipeline di configurazione. Sospende la pipeline durante la distribuzione, fino a quando non viene fornita un'approvazione. Puoi attivare l'approvazione manuale modificando il parametro **Pipeline Approval Stage** su **Sì** all'avvio dello stack.

1. **Fase politica**

   La fase della politica richiama la macchina a stati della policy di controllo dei servizi (SCP) o della politica di controllo delle risorse (RCP) per chiamare AWS Organizations APIs quella macchina a stati create o. SCPs RCPs

1. **CloudFormation fase delle risorse**

   La fase CloudFormation delle risorse richiama lo stack set state machine per distribuire le risorse specificate nell'elenco degli account o delle unità organizzative (OUs), fornito nel file manifest. La macchina a stati crea le CloudFormation risorse nell'ordine in cui sono specificate nel file manifest. Per specificare una dipendenza dalle risorse, organizzate l'ordine in cui le risorse sono specificate nel file manifest. L'ordine delle risorse all'interno del file manifesto è l'unico modo per specificare una dipendenza.

# Definire una configurazione personalizzata
<a name="cfct-custom-configuration"></a>

Definirai la tua configurazione AWS Control Tower personalizzata con il file manifest cFCT, il set di modelli di accompagnamento e altri file JSON. Impacchetterai questi file in una struttura di cartelle e li inserirai nel bucket Amazon S3 come `.zip` file, come mostrato nel seguente esempio di codice.

**Struttura delle cartelle di configurazione personalizzata**

```
- manifest.yaml
- policies/                                                [optional]
   - service control policies files (*.json)
- templates/                                               [optional]
   - template files for AWS CloudFormation Resources (*.template)
```

L'esempio precedente illustra la struttura di una cartella di configurazione personalizzata. La struttura delle cartelle rimane invariata indipendentemente dal fatto che tu scelga Amazon S3 o un AWS CodeCommit repository come posizione di storage di origine. Se scegli Amazon S3 come storage di origine, comprimi tutte le cartelle e i file in un file e carica solo il `custom-control-tower-configuration.zip` `.zip` file nel bucket Amazon S3 designato.

**Nota**  
Se lo utilizzi AWS CodeCommit, inserisci i file nel repository senza comprimerli.

# Il file manifest cFCT
<a name="the-manifest-file"></a>

Il file cFCT è un `manifest.yaml` file di testo che descrive le tue AWS risorse. L'esempio seguente mostra la struttura del file manifest cFCT.

```
---
region: String
version: 2021-03-15

resources:
  #set of CloudFormation resources, SCP policies, or RCP policies
...
```

Come mostrato nell'esempio di codice precedente, le prime due righe del file manifest specificano i valori della **regione** e le parole chiave della **versione**. Di seguito sono riportate le definizioni di tali parole chiave.

**region**: una stringa di testo per la regione predefinita di AWS Control Tower. Questo valore deve essere un nome di AWS regione valido (ad esempio `us-east-1``eu-west-1`, o`ap-southeast-1`). La regione principale di AWS Control Tower è l'impostazione predefinita quando si creano risorse AWS Control Tower personalizzate (ad esempio CloudFormation StackSets), a meno che non venga specificata una regione più specifica per le risorse.

```
region:your-home-region
```

**version** — Il numero di versione dello schema manifesto. L'ultima versione supportata è il 15/03/2021.

```
version: 2021-03-15
```

**Nota**  
Ti consigliamo vivamente di utilizzare la versione più recente. Per aggiornare le proprietà del manifesto nella versione più recente, fare riferimento a[Aggiornamenti di versione per il manifesto cFct](cfct-compatibility.md).

La parola chiave successiva mostrata nell'esempio precedente è la parola chiave **resources**. La sezione **delle risorse** del file manifesto è altamente strutturata. Contiene un elenco dettagliato di AWS risorse, che verranno distribuite automaticamente dalla pipeline cFCT. Queste descrizioni delle risorse e dei relativi parametri disponibili sono fornite nella sezione successiva.

# La sezione delle risorse del file manifest cFCT
<a name="cfct-manifest-file-resources-section"></a>

 Questo argomento descrive la sezione **risorse** del file manifesto cFCT, in cui definirete le risorse necessarie per le personalizzazioni. Questa sezione del file manifest cFct inizia con **le parole chiave resources** e continua fino alla fine del file. 

 La sezione **resources** del file manifest specifica l' CloudFormation StackSetsor AWS Organizations SCPs and RCPs che cFCT distribuisce automaticamente tramite la pipeline del codice. È possibile elencare OUs, account e regioni per distribuire istanze stack. 

 Le istanze dello stack vengono distribuite a livello di account anziché a livello di unità organizzativa. SCPs e RCPs vengono distribuite a livello di unità organizzativa. Per ulteriori informazioni, consulta [Crea le tue personalizzazioni.](https://docs.aws.amazon.com/controltower/latest/userguide/cfcn-byo-customizations.html) 

 Il modello di esempio seguente descrive le possibili voci disponibili per la sezione **delle risorse** del file manifest. 

```
resources: # List of resources
  - name: [String]
    resource_file: [String] [Local File Path, S3 URI, S3 URL] 
    deployment_targets: # account and/or organizational unit names
      accounts: # array of strings, [0-9]{12}
        - 012345678912
        - AccountName1
      organizational_units: #array of strings
        - OuName1
        - OuName2 
    deploy_method: scp | stack_set | rcp
    parameters: # List of parameters [SSM, Alfred, Values]
      - parameter_key: [String]
        parameter_value: [String]  
    export_outputs: # list of ssm parameters to store output values
      - name: /org/member/test-ssm/app-id
        value: $[output_ApplicationId]    
    regions: #list of strings
    - [String]
```

**Il resto di questo argomento fornisce definizioni dettagliate per le parole chiave mostrate nell'esempio di codice precedente.**

**nome**: il nome associato a. CloudFormation StackSets La stringa fornita assegna un nome più intuitivo per un set di stack.
+  ▬**Tipo:** stringa
+ **Obbligatorio:** sì
+ **Valori validi:** a-z, A-Z, 0-9 e un trattino (-). Il nome deve iniziare con un carattere alfabetico.

**descrizione**: la descrizione della risorsa.
+ ▬**Tipo:** stringa
+ **Obbligatorio:** no

 **resource\$1file**: questo file può essere specificato come posizione relativa al file manifest, un URI o URL di Amazon S3 che punta a un CloudFormation modello o a una politica di controllo del AWS Organizations servizio in JSON per la creazione di risorse, oppure. CloudFormation SCPs RCPs 
+ ▬**Tipo:** stringa
+ **Obbligatorio:** sì 

1. L'esempio seguente mostra la`resource_file`, fornita come posizione relativa al file di risorse all'interno del pacchetto di configurazione.

   ```
   resources:
     - name: SecurityRoles
       resource_file: templates/custom-security.template
   ```

1. L'esempio seguente mostra il file di risorse fornito come URI Amazon S3 

   ```
   resources:
     - name: SecurityRoles
       resource_file: s3://amzn-s3-demo-bucket/[key-name]
   ```

1. L'esempio seguente mostra il file di risorse fornito come URL HTTPS di Amazon S3 

   ```
   resources:
     - name: SecurityRoles
       resource_file: https://bucket-name.s3.Region.amazonaws.com/key-name
   ```
**Nota**  
Se fornisci un URL Amazon S3, verifica che la bucket policy consenta l'accesso in lettura per l'account di gestione AWS Control Tower da cui stai distribuendo cFCT. Se fornisci un URL HTTPS Amazon S3, verifica che il percorso utilizzi la notazione a punti. Ad esempio, `S3.us-west-1`. cFct non supporta endpoint che contengono un trattino tra S3 e la regione, ad esempio. `S3‐us-west-2`

1. L'esempio seguente mostra una policy per i bucket di Amazon S3 e un ARN in cui vengono archiviate le risorse.

   ```
   {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
          {
           "Effect": "Allow",
           "Principal": {"AWS": "arn:aws:iam::AccountId:root"},
           "Action": "s3:GetObject",
           "Resource": "arn:aws:s3:::my-bucket/*”
          }
      ]
   }  
   ```

   Sostituirai la *AccountId* variabile mostrata nell'esempio con l'ID dell' AWS account di gestione che sta implementando cFCT. Per ulteriori esempi, consulta gli [esempi di policy di Bucket](https://docs.aws.amazon.com//AmazonS3/latest/userguide/example-bucket-policies.html) nella Guida per l'utente di Amazon Simple Storage Service.

**parametri**: specifica il nome e il valore dei parametri. CloudFormation 
+ **Type** MapList:
+ **Obbligatorio:** no

La sezione dei parametri contiene coppie di key/value parametri. **Il seguente pseudo modello descrive la sezione dei parametri.**

```
parameters:
  - parameter_key: [String]
    parameter_value: [String]
```
+ **parameter\$1key — La chiave associata** al parametro.
  +  ▬**Tipo:** stringa
  + **Obbligatorio:** Sì (nella proprietà parameters)
  + **Valori validi:** a-z, A-Z e 0-9 
+ **parameter\$1value — Il valore** di input associato al parametro.
  + ▬**Tipo:** stringa 
  +  **Obbligatorio:** Sì (nella proprietà parameters) 

**deploy\$1method** — Il metodo di distribuzione per distribuire le risorse nell'account. Attualmente, **deploy\$1method** supporta la distribuzione di risorse utilizzando l'`stack_set`opzione per la distribuzione delle risorse tramite CloudFormation StackSets, l'opzione se si sta distribuendo o l'`scp`opzione se si sta distribuendo SCPs. `rcp` RCPs
+ ▬**Tipo:** stringa 
+ **Valori validi**: `stack_set` \$1 `scp` \$1 `rcp`
+ **Obbligatorio:** sì

**deployment\$1targets** ****— Elenco di account o unità organizzative (OUs), in cui cFct distribuirà le risorse, specificate come account o organizational\$1units. CloudFormation ****

**Nota**  
 Se si desidera implementare un SCP o RCP, la destinazione deve essere un'unità organizzativa, non un account. 
+ **Digitare:** Elenco di stringhe `account name` o `account number` per indicare che questa risorsa verrà distribuita nell'elenco di account specificato o `OU names` per indicare che questa risorsa verrà distribuita nell'elenco di unità organizzative specificato.
+ **Obbligatorio:** **almeno uno degli **account** o organizational\$1units**
  + **conti:**

    **Digitare:** Elenco di stringhe `account name` o `account number` per indicare che questa risorsa verrà distribuita nell'elenco di account specificato.
  + **unità\$1organizzative:**

    **Tipo:** elenco di stringhe `OU names` per indicare che questa risorsa verrà distribuita in un determinato elenco di unità organizzative. Se si fornisce un'unità organizzativa che non contiene account e la proprietà **accounts** non viene aggiunta, cFct crea solo il set di stack.
**Nota**  
L'ID dell'account di gestione dell'organizzazione non è un valore consentito. Per impostazione predefinita, cFCT non supporta la distribuzione di istanze stack nell'account di gestione dell'organizzazione. [Se hai un caso d'uso speciale, vedi Root OU.](https://docs.aws.amazon.com//controltower/latest/userguide/cfct-root-ou.html)

**export\$1outputs** — Elenco di name/value coppie che denotano le chiavi dei parametri SSM. Queste chiavi dei parametri SSM consentono di memorizzare gli output dei modelli nell'archivio dei parametri SSM. L'output è destinato ad essere utilizzato come riferimento da altre risorse, definite in precedenza nel file manifest.

```
export_outputs: # List of SSM parameters
  - name: [String]
    value: [String]
```
+ **Tipo:** Elenco di coppie di chiavi con **nome** e **valore**. Il **nome** contiene la `name` stringa di una chiave di archiviazione dei parametri SSM e il **valore** contiene la `value` stringa del parametro.
+ **Valori validi:** qualsiasi stringa o `$[output_CfnOutput-Logical-ID]` variabile in cui *CfnOutput-Logical-ID* corrisponde alla variabile di output del modello. Per ulteriori informazioni sulla sezione Output di un CloudFormation modello, consulta [https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/outputs-section-structure.html](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/outputs-section-structure.html) per l'*CloudFormation utente*.
+ **Obbligatorio:** no 

Ad esempio, il seguente frammento di codice memorizza la variabile di `VPCID` output del modello nella chiave del parametro SSM denominata. `/org/member/audit/vpc_id`

```
export_outputs: # List of SSM parameters
  - name: /org/member/audit/VPC-ID
    value: $[output_VPCID]
```

**Nota**  
Il nome della chiave **export\$1outputs** può contenere un valore diverso da. `output` Ad esempio, se il **nome** è`/org/environment-name`, il **valore** può essere. `production`

**regioni**: Elenco delle regioni in cui cFCT distribuirà le istanze dello CloudFormation stack. 
+ **Tipo:** Qualsiasi elenco di nomi di regioni AWS commerciali, per indicare che questa risorsa verrà distribuita nell'elenco delle regioni specificato. Se questa parola chiave non esiste nel file manifesto, le risorse vengono distribuite solo nella regione di origine.
+ **Obbligatorio:** no 

# Unità organizzativa root
<a name="cfct-root-ou"></a>

 CFct supporta **Root** come valore per un'unità organizzativa (OU) `organizational_units` nella **versione manifest V2** (2021-03-15). 
+ Se scegli il metodo di distribuzione `scp` o`rcp`, quando aggiungi Root under`organizational_units`, AWS Control Tower applica le policy a tutti gli elementi OUs sotto Root. Se scegli il metodo di distribuzione`stack_set`, quando aggiungi Root under`organizational_units`, cFCT distribuisce gli stack set in tutti gli account sotto Root registrati in AWS Control Tower, ad eccezione dell'account di gestione.
+ Secondo le best practice di AWS Control Tower, l'account di gestione è destinato esclusivamente alla gestione degli account dei membri e ai fini della fatturazione. Non eseguire carichi di lavoro di produzione nell'account di gestione AWS Control Tower.

  In conformità alle linee guida sulle best practice, la distribuzione di AWS Control Tower colloca l'account di gestione nell'unità organizzativa principale, in modo che abbia accesso completo e non utilizzi risorse aggiuntive. Per questo motivo, il **AWSControlTowerExecution**ruolo non viene distribuito all'account di gestione.
+ Ti consigliamo di seguire queste best practice per l'account di gestione. Se hai un caso d'uso specifico che richiede la distribuzione di stackset nell'account di gestione, includi **gli account** come destinazione di distribuzione e specifica l'account di gestione. Altrimenti, non includere **gli account come obiettivo** di distribuzione. È necessario creare le risorse mancanti, inclusi i ruoli IAM richiesti, nell'account di gestione.

Per distribuire gli stackset nell'account di gestione, includi `accounts` come obiettivo di distribuzione e specifica l'account di gestione. Altrimenti, non includere gli account come obiettivo di distribuzione.

```
---
region: your-home-region
version: 2021-03-15

resources:

  …truncated…

    deployment_targets:
      organizational_units:
        - Root
```

**Nota**  
La funzionalità Root OU è supportata solo nella versione V2 del file manifest (15/03/2021). Se aggiungi **Root** come unità organizzativa in`organizational_units`, non aggiungerne nessun'altra. OUs

# OU annidata
<a name="cfct-nested-ou"></a>

cFct supporta l'elenco di uno o più annidati OUs sotto la `organizational_units` parola chiave nella versione manifest V2 (2021-03-15). 

È necessario un percorso completo (escluso Root) per l'unità organizzativa annidata, utilizzando i due punti come separatore tra le due. OUs Per il metodo di distribuzione `scp` o`rcp`, AWS Control Tower distribuisce l'unità organizzativa SCPs o RCPs l'ultima unità organizzativa nel percorso dell'unità organizzativa annidata. Per quanto riguarda il metodo di distribuzione`stack_set`, AWS Control Tower distribuisce i set di stack su tutti gli account dell'ultima unità organizzativa nel percorso dell'unità organizzativa annidata.

Ad esempio, considera il percorso. `OUName1:OUName2:OUName3` L'ultima unità organizzativa del percorso è`OUName3`. cFct distribuisce i set SCPs or RCPs to `OUName3` e stack solo su tutti gli account `OUName3` direttamente da,.

```
---
region: your-home-region
version: 2021-03-15

resources:

  …truncated…

    deployment_targets:
      organizational_units:
        - OuName1:OUName2:OUName3
```

**Nota**  
La funzionalità di unità organizzativa annidata è supportata solo nella versione V2 del file manifest (15/03/2021).

# Crea le tue personalizzazioni
<a name="cfcn-byo-customizations"></a>

Per creare personalizzazioni personalizzate, è possibile modificare il `manifest.yaml` file cfCT aggiungendo o aggiornando le politiche di controllo del servizio (SCPs), le politiche di controllo delle risorse (RCPs) e le risorse. CloudFormation Per le risorse che devono essere distribuite, è possibile aggiungere o rimuovere account e. OUs È possibile aggiungere o modificare i modelli nelle cartelle del pacchetto, creare cartelle personalizzate e fare riferimento ai modelli o alle cartelle del `manifest.yaml` file.

Questa sezione spiega le due parti principali della creazione di personalizzazioni personalizzate:
+ come impostare il proprio pacchetto di configurazione per le politiche di controllo dei servizi
+ come configurare il proprio pacchetto di configurazione per i set di AWS CloudFormation stack

# Imposta un pacchetto di configurazione per SCPs o RCPs
<a name="cfcn-set-up-custom-scps"></a>

Questa sezione spiega come creare un pacchetto di configurazione per le politiche di controllo dei servizi (SCPs) o le politiche di controllo delle risorse (RCPs). Le due parti principali di questo processo sono (1) preparare il file manifest cFCT e (2) preparare la struttura delle cartelle.

## Passaggio 1: modifica il file manifest.yaml
<a name="cfct-byo-scp-step-1"></a>

Usa il `manifest.yaml` file di esempio come punto di partenza. Immettete tutte le configurazioni necessarie. Aggiungi i `deployment_targets` dettagli `resource_file` e.

Il seguente frammento mostra il file manifesto predefinito.

```
---
region: us-east-1
version: 2021-03-15

resources: []
```

Il valore di `region` viene aggiunto automaticamente durante la distribuzione. Deve corrispondere alla regione in cui è stato distribuito cFCT. Questa regione deve essere la stessa della regione AWS Control Tower.

Per aggiungere un SCP o RCP personalizzato `example-configuration` nella cartella del pacchetto zip archiviato nel bucket Amazon S3, apri `example-manifest.yaml` il file e inizia a modificarlo.

```
---
region: your-home-region
version: 2021-03-15

resources:
  - name: test-preventive-controls
    description: To prevent from deleting or disabling resources in member accounts
    resource_file: policies/preventive-controls.json
    deploy_method: scp | rcp
    #Apply to the following OU(s)
    deployment_targets:
      organizational_units: #array of strings
        - OUName1
        - OUName2 

…truncated…
```

Il seguente frammento mostra un esempio di file manifest personalizzato. È possibile aggiungere più di una politica in una singola modifica.

```
---
region: us-east-1
version: 2021-03-15

resources:
  - name: block-s3-public-access
    description: To S3 buckets to have public access
    resource_file: policies/block-s3-public.json
    deploy_method: scp | rcp
    #Apply to the following OU(s)
    deployment_targets:
      organizational_units: #array of strings
        - OUName1
        - OUName2
```

## Fase 2: Creare una struttura di cartelle
<a name="cfct-byo-scp-step-2"></a>

Puoi saltare questo passaggio se utilizzi un URL Amazon S3 per il file di risorse e **utilizzi parametri key/value con coppie**.

È necessario includere una policy SCP o una policy RCP in formato JSON per supportare il manifest, poiché il file manifest fa riferimento al file JSON. Assicuratevi che i percorsi dei file corrispondano alle informazioni sul percorso fornite nel file manifest. 
+ Un file JSON di *policy* contiene SCPs o RCPs su cui distribuire. OUs

Il seguente frammento mostra la struttura delle cartelle per il file manifest di esempio.

```
- manifest.yaml
- policies/
   - block-s3-public.json
```

Il seguente frammento è un esempio di file di policy. `block-s3-public.json`

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"GuardPutAccountPublicAccessBlock",
         "Effect":"Deny",
         "Action":"s3:PutAccountPublicAccessBlock",
         "Resource":"arn:aws:s3:::*"
      }
   ]
}
```

------

# Configurare un pacchetto di configurazione per CloudFormation StackSets
<a name="cfcn-byo-cfn-stacksets"></a>

Questa sezione spiega come impostare un pacchetto di configurazione per CloudFormation StackSets. Le due parti principali di questo processo sono: (1) preparare il file manifesto e (2) aggiornare la struttura delle cartelle.

## Fase 1: Modificare il file manifesto esistente
<a name="cfcn-byo-cfn-stacksets-step-1"></a>

Aggiungi le nuove CloudFormation StackSets informazioni al file manifesto che hai modificato in precedenza.

Solo a titolo di revisione, il seguente frammento contiene lo stesso file manifesto personalizzato mostrato in precedenza per impostare un pacchetto di configurazione per SCPs o. RCPs Ora puoi modificare ulteriormente questo file, per includere i dettagli sulle tue risorse.

```
---
region: us-east-1
version: 2021-03-15

resources:
  
  - name: block-s3-public-access
    description: To S3 buckets to have public access
    resource_file: policies/block-s3-public.json
    deploy_method: scp | rcp
    #Apply to the following OU(s)
    deployment_targets:
    organizational_units: #array of strings
    - OUName1
    - OUName2
```

Il frammento seguente mostra un file manifesto di esempio modificato che contiene i `resources` dettagli. L'ordine di `resources` determina l'ordine di esecuzione per la creazione `resources` delle dipendenze. È possibile modificare il seguente file manifesto di esempio in base ai requisiti aziendali.

```
---
region: your-home-region
version: 2021-03-15

…truncated…

resources:
  - name: stackset-1
    resource_file: templates/create-ssm-parameter-keys-1.template
    parameters:
      - parameter_key: parameter-1
        parameter_value: value-1
    deploy_method: stack_set
    deployment_targets:
      accounts: # array of strings, [0-9]{12}
        - account number or account name
        - 123456789123
      organizational_units: #array of strings, ou ids, ou-xxxx
        - OuName1
        - OUName2 
    export_outputs:
      - name: /org/member/test-ssm/app-id
        value: $[output_ApplicationId]
    regions:
      - region-name

  - name: stackset-2
    resource_file: s3://bucket-name/key-name
    parameters:
      - parameter_key: parameter-1
        parameter_value: value-1
    deploy_method: stack_set
    deployment_targets:
      accounts: # array of strings, [0-9]{12}
        - account number or account name
        - 123456789123
      organizational_units: #array of strings
        - OuName1
        - OUName2 
regions:
  - region-name
```

L'esempio seguente mostra che è possibile aggiungere più di una CloudFormation risorsa nel file manifest.

```
---
region: us-east-1
version: 2021-03-15

resources:
  - name: block-s3-public-access
    description: To S3 buckets to have public access
    resource_file: policies/block-s3-public.json
    deploy_method: scp | rcp
    #Apply to the following OU(s)
    deployment_targets:
      organizational_units: #array of strings
        - Custom
        - Sandbox

  - name: transit-network
    resource_file: templates/transit-gateway.template
    parameter_file: parameters/transit-gateway.json
    deploy_method: stack_set
    deployment_targets:
      accounts: # array of strings, [0-9]{12}
        - Prod
        - 123456789123 #Network
      organizational_units: #array of strings
        - Custom
    export_outputs:
      - name: /org/network/transit-gateway-id
        value: $[output_TransitGatewayID]
    regions:
      - us-east-1
```

## Passaggio 2: Aggiornare la struttura delle cartelle
<a name="cfct-byo-cfn-stacksets-step-2"></a>

Quando aggiorni la struttura delle cartelle, puoi includere tutti i file CloudFormation modello di supporto e i file di policy SCP o RCP presenti nel file manifest. Verificate che i percorsi dei file corrispondano a quelli forniti nel file manifesto. 
+ Un file *modello* contiene le AWS risorse da distribuire OUs e gli account.
+ Un file di *policy* contiene i parametri di input utilizzati nel file modello.

L'esempio seguente mostra la struttura delle cartelle per il file manifesto di esempio creato nel [passaggio 1](#cfcn-byo-cfn-stacksets-step-1).

```
- manifest.yaml
- policies/
   - block-s3-public.json
- templates/
   - transit-gateway.template
```

# L'helper 'alfred' e i file dei parametri CloudFormation
<a name="alfred-helper"></a>

 cFct fornisce un meccanismo noto come *alfred* helper per ottenere il valore di una chiave [SSM Parameter Store](https://docs.aws.amazon.com//systems-manager/latest/userguide/systems-manager-parameter-store.html) definita nel modello. CloudFormation Utilizzando l'helper *alfred*, è possibile utilizzare i valori archiviati nell'SSM Parameter Store e senza aggiornare il modello. CloudFormation Per ulteriori informazioni, consulta [Cos'è un modello? CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/gettingstarted.templatebasics.html#gettingstarted.templatebasics.what) nella *Guida CloudFormation per l'utente*. 

**Importante**  
 L'aiutante *alfred* ha due limitazioni. I parametri sono disponibili solo nella regione principale dell'account di gestione AWS Control Tower. Come best practice, prendi in considerazione l'utilizzo di valori che non cambiano da istanza stack a istanza stack. Quando l'helper 'alfred' recupera i parametri, sceglie un'istanza di stack casuale dal set di stack che esporta la variabile. 

## Esempio
<a name="w2aac28c41c15c13b7"></a>

 Supponiamo di avere due set di stack. CloudFormation *Lo stack set 1* ha un'istanza di stack e viene distribuito su un account in una regione. Crea un Amazon VPC e delle sottoreti in una zona di disponibilità `VPC ID` e `subnet ID` deve essere passato allo *stack set* 2 come valori dei parametri. *Prima di `subnet ID` poter passare l'`VPC ID`and allo *stack set 2*, `subnet ID` deve essere archiviato nello stack set 1 utilizzando. `VPC ID`* `AWS:::SSM::Parameter` Per ulteriori informazioni, consulta [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-parameter.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-parameter.html) nella *Guida per l'utente di CloudFormation *. 

**CloudFormation set di pila 1:**

 Nel seguente frammento, l'helper *alfred* può ottenere il valore per `VPC ID` e `subnet ID` dall'archivio dei parametri e passarlo come input alla macchina a stati. StackSet 

```
VpcIdParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Name: '/stack_1/vpc/id'
      Description: Contains the VPC id
      Type: String
      Value: !Ref MyVpc

SubnetIdParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Name: '/stack_1/subnet/id'
      Description: Contains the subnet id
      Type: String
      Value: !Ref MySubnet
```

**CloudFormation set di pila 2:**

 Lo snippet mostra i parametri specificati nel file CloudFormation stack 2. `manifest.yaml` 

```
parameters:
      - parameter_key: VpcId
        parameter_value: $[alfred_ssm_/stack_1/vpc/id]
      - parameter_key: SubnetId
        parameter_value: $[alfred_ssm_/stack_1/subnet/id]
```

**CloudFormation set di pila 2.1:**

 Lo snippet mostra che è possibile elencare `alfred_ssm` le proprietà per supportare parametri di tipo. *CommaDelimitedList* Per ulteriori informazioni, consulta [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html#parameters-section-structure-properties-type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html#parameters-section-structure-properties-type) nella *Guida per l'utente di CloudFormation *. 

```
parameters:
      - parameter_key: VpcId # Type: String
        parameter_value: $[alfred_ssm_/stack_1/vpc/id']
      - parameter_key: SubnetId # Type: String
        parameter_value: $[ alfred_ssm_/stack_1/subnet/id']
      - parameter_key: AvailablityZones # Type: CommaDelimitedList
        parameter_value:   - "$[alfred_ssm_/availability_zone_1]"  - "$[alfred_ssm_/availability_zone_2]"
```

**Schema JSON per il pacchetto di personalizzazione**  
[Lo schema JSON per il pacchetto di personalizzazione per cFct si trova nel repository del codice sorgente su. GitHub](https://github.com/aws-solutions/aws-control-tower-customizations) Puoi utilizzare lo schema con molti dei tuoi strumenti di sviluppo preferiti e potresti trovarlo utile per ridurre gli errori quando crei il tuo file cFCT. `manifest.yaml`

# Aggiornamenti di versione per il manifesto cFct
<a name="cfct-compatibility"></a>

Per informazioni sulla versione più recente di *Customizations for AWS Control Tower* (cFCT), consulta il [`CHANGELOG.md`file](https://github.com/aws-solutions/aws-control-tower-customizations/blob/master/CHANGELOG.md) nel repository. GitHub 

**avvertimento**  
La versione 2.2.0 di *Customizations for AWS Control Tower* (cFCT) ha introdotto uno schema manifest cFCT (versione *2021-03-15*) per allinearlo al servizio correlato. AWS APIs Lo schema manifest consente a un singolo file manifest.yaml di gestire le risorse supportate (modelli e) tramite flussi di lavoro disaccoppiati.CloudFormation SCPs RCPs DevOps   
**Ti consigliamo vivamente di aggiornare lo schema manifest cFCT dalla versione 2020-01-01 alla versione 2021-03-15 o successiva.**  
**cFct continua a supportare la versione 2021-03-15 e 2020-01-01 del file.** `manifest.yaml` Non sono necessarie modifiche alla configurazione esistente. **Tuttavia, la versione *2020-01-01* è alla fine del supporto.** *Non forniamo più aggiornamenti o aggiungiamo miglioramenti alla versione 2020-01-01.* *Le funzionalità Root OU e Nested OU non sono supportate nella versione 2020-01-01.* 

***Proprietà obsolete nella versione manifest cFCT 2021-03-15:***

```
organization_policies
policy_file
apply_to_accounts_in_ou

cloudformation_resources
template_file
deploy_to_account
deploy_to_ou
ssm_parameters
```

## Fasi obbligatorie di aggiornamento cFCT
<a name="mandatory-upgrade-steps"></a>

Quando si esegue l'aggiornamento alla versione dello schema manifesto cFCT *2021-03-15*, ecco le modifiche che è necessario apportare per aggiornare i file. Le sezioni successive descrivono le modifiche obbligatorie e consigliate per la transizione.

**Politiche di Organizations**

1. **Sposta la SCPs o RCPs in **organization\$1policies** nelle nuove risorse di proprietà.**

1. **Modificate la proprietà **policy\$1file nella nuova proprietà resource\$1file**.**

1. ****Modificate apply\$1to\$1accounts\$1in\$1ou nella nuova proprietà deployment\$1targets.**** **L'elenco delle unità organizzative deve essere definito nella sottoproprietà organizational\$1units.** La sottoproprietà **accounts** non è supportata per le politiche delle organizzazioni.

1. ****Aggiungi una nuova proprietà **deploy\$1method** con il valore scp o rcp.**** 

**CloudFormation risorse**

1. **Sposta le CloudFormation risorse in **cloudformation\$1resources in nuove risorse** di proprietà.**

1. **Cambia la proprietà **template\$1file nella nuova proprietà resource\$1file**.**

1. ****Cambia deploy\$1to\$1ou nella nuova proprietà deployment\$1targets.**** **L'elenco delle unità organizzative deve essere definito nella sottoproprietà organizational\$1units.**

1. **Cambia deploy\$1to\$1accounts nella nuova proprietà **deployment\$1targets**.** **L'elenco degli account deve essere definito negli account delle proprietà secondarie.**

1. **Modificate la proprietà **ssm\$1parameters nella nuova proprietà export\$1outputs**.**

## Passaggi di aggiornamento cFCT altamente consigliati
<a name="highly-recommended-upgrade-steps"></a>

**CloudFormation parametri**

1. **Modificate la proprietà **parameter\$1file con** nuovi parametri di proprietà.**

1. **Rimuove il percorso del file nel valore della proprietà parameter\$1file.**

1. **Copiate la chiave del parametro e il valore del parametro dal file JSON del parametro esistente nel nuovo formato per la proprietà parameters.** Questo ti aiuterà a gestirli nel file manifest.

**Nota**  
*La proprietà **parameter\$1file** è supportata nella versione manifest cFct 2021-03-15.*