

Questa è la AWS CDK v2 Developer Guide. Il vecchio CDK v1 è entrato in manutenzione il 1° giugno 2022 e ha terminato il supporto il 1° giugno 2023.

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

# Avvia il tuo ambiente per utilizzarlo con il CDK AWS
<a name="bootstrapping-env"></a>

Avvia il tuo AWS ambiente per prepararlo per le implementazioni dello stack AWS Cloud Development Kit (AWS CDK).
+ [Per un'introduzione agli ambienti, consulta Environments for the CDK. AWS](environments.md)
+ [Per un'introduzione al bootstrap, vedete AWS CDK bootstrapping.](bootstrapping.md)

## Come avviare il proprio ambiente
<a name="bootstrapping-howto"></a>

Puoi utilizzare l'interfaccia a riga di comando AWS CDK (AWS CDK CLI) o il tuo strumento di AWS CloudFormation distribuzione preferito per avviare il tuo ambiente.<a name="bootstrapping-howto-cli"></a>

 **Usa la CLI CDK**   
Puoi usare il comando CDK `cdk bootstrap` CLI per avviare il tuo ambiente. Questo è il metodo che consigliamo se non hai bisogno di modifiche significative al bootstrap.    
 **Bootstrap da qualsiasi directory di lavoro**   
Per eseguire il bootstrap da qualsiasi directory di lavoro, fornisci l'ambiente a bootstrap come argomento della riga di comando. Di seguito è riportato un esempio:  

```
$ cdk bootstrap <aws://123456789012/us-east-1>
```
Se non disponi del numero di AWS account, puoi ottenerlo dalla Console di AWS gestione. Puoi anche utilizzare il seguente comando AWS CLI per visualizzare le informazioni sull'account predefinito, incluso il numero di account:  

```
$ aws sts get-caller-identity
```
Se nei tuoi `credentials` file AWS `config` and sono presenti profili denominati, utilizza l'`--profile`opzione per recuperare le informazioni sull'account per un profilo specifico. Di seguito è riportato un esempio:  

```
$ aws sts get-caller-identity --profile <prod>
```
Per visualizzare la regione predefinita, usa il `aws configure get` comando:  

```
$ aws configure get region
$ aws configure get region --profile <prod>
```
Quando si fornisce un argomento, il `aws://` prefisso è facoltativo. Quanto segue è valido:  

```
$ cdk bootstrap <123456789012/us-east-1>
```
Per avviare più ambienti contemporaneamente, fornisci più argomenti:  

```
$ cdk bootstrap <aws://123456789012/us-east-1> <aws://123456789012/us-east-2>
```  
 **Bootstrap dalla directory principale di un progetto CDK**   
È possibile eseguire `cdk bootstrap` dalla directory principale di un progetto CDK contenente un file. `cdk.json` Se non fornite un ambiente come argomento, la CLI CDK otterrà informazioni sull'ambiente da fonti predefinite, come `config` i file `credentials` and o qualsiasi informazione di ambiente specificata per lo stack CDK.  
Quando si esegue il bootstrap dalla directory principale di un progetto CDK, gli ambienti forniti dagli argomenti della riga di comando hanno la precedenza sulle altre fonti.  
Per avviare un ambiente specificato nei `credentials` file `config` and, utilizzate l'opzione: `--profile`  

```
$ cdk bootstrap --profile <prod>
```
Per ulteriori informazioni sul `cdk bootstrap` comando e sulle opzioni supportate, vedete [cdk bootstrap](ref-cli-cmd-bootstrap.md).<a name="bootstrapping-howto-cfn"></a>

 **Usa qualsiasi strumento AWS CloudFormation **   
È possibile copiare il [modello di bootstrap](https://github.com/aws/aws-cdk-cli/blob/main/packages/aws-cdk/lib/api/bootstrap/bootstrap-template.yaml) dal *aws-cdk-cli GitHub repository* o ottenere il modello con il `cdk bootstrap --show-template` comando. Quindi, usa qualsiasi AWS CloudFormation strumento per distribuire il modello nel tuo ambiente.  
Con questo metodo, puoi usare AWS CloudFormation StackSets il nostro AWS Control Tower. È inoltre possibile utilizzare la AWS CloudFormation console o l'interfaccia a riga di AWS comando (AWS CLI). È possibile apportare modifiche al modello prima di distribuirlo. Questo metodo può essere più flessibile e adatto per implementazioni su larga scala.  
Di seguito è riportato un esempio di utilizzo dell'`--show-template`opzione per recuperare e salvare il modello di bootstrap sul computer locale:  

**Example**  

```
$ cdk bootstrap --show-template > bootstrap-template.yaml
```
In Windows, PowerShell deve essere utilizzato per preservare la codifica del modello.  

```
powershell "cdk bootstrap --show-template | Out-File -encoding utf8 bootstrap-template.yaml"
```
Se nell'output del AWS CloudFormation modello compaiono avvisi CDK, fornisci l'`--no-notices`opzione con il comando.
Per distribuire questo modello utilizzando la CLI CDK, puoi eseguire quanto segue:  

```
$ cdk bootstrap --template <bootstrap-template.yaml>
```
Di seguito è riportato un esempio di utilizzo della AWS CLI per distribuire il modello:  

**Example**  

```
aws cloudformation create-stack \
  --stack-name CDKToolkit \
  --template-body file://<path/to/>bootstrap-template.yaml \
  --capabilities CAPABILITY_NAMED_IAM \
  --region <us-west-1>
```

```
aws cloudformation create-stack ^
  --stack-name CDKToolkit ^
  --template-body file://<path/to/>bootstrap-template.yaml ^
  --capabilities CAPABILITY_NAMED_IAM ^
  --region <us-west-1>
```
*Per informazioni sull'utilizzo CloudFormation StackSets per avviare più ambienti, consulta [Bootstrap di più AWS account per l'utilizzo di AWS CDK CloudFormation StackSets](https://aws.amazon.com/blogs/mt/bootstrapping-multiple-aws-accounts-for-aws-cdk-using-cloudformation-stacksets/) nel blog Cloud Operations & Migrations. AWS *

## Quando avviare il proprio ambiente
<a name="bootstrapping-env-when"></a>

È necessario avviare ogni AWS ambiente prima di distribuirlo nell'ambiente. Ti consigliamo di avviare in modo proattivo ogni ambiente che intendi utilizzare. Puoi farlo prima di pianificare l'effettiva distribuzione delle app CDK nell'ambiente. Avviando in modo proattivo i tuoi ambienti, previeni potenziali problemi futuri, come i conflitti tra i nomi dei bucket Amazon S3 o la distribuzione di app CDK in ambienti che non sono stati avviati.

È possibile avviare un ambiente più di una volta. Se un ambiente è già stato avviato, lo stack di bootstrap verrà aggiornato se necessario. Altrimenti non succederà nulla.

Se tenti di implementare uno stack CDK in un ambiente che non è stato avviato, vedrai un errore simile al seguente:

```
$ cdk deploy

✨  Synthesis time: 2.02s

 ❌ Deployment failed: Error: BootstrapExampleStack: SSM parameter /cdk-bootstrap/hnb659fds/version not found. Has the environment been bootstrapped? Please run 'cdk bootstrap' (see https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html)
```<a name="bootstrapping-env-when-update"></a>

 **Aggiorna il tuo stack di bootstrap**   
Periodicamente, il team CDK aggiornerà il modello di bootstrap a una nuova versione. Quando ciò accade, ti consigliamo di aggiornare lo stack di bootstrap. Se non hai personalizzato il processo di bootstrap, puoi aggiornare lo stack di bootstrap seguendo gli stessi passaggi utilizzati originariamente per avviare il tuo ambiente. [Per ulteriori informazioni, consulta la cronologia delle versioni del modello Bootstrap.](#bootstrap-template-history)

## Risorse predefinite create durante il bootstrap
<a name="bootstrapping-env-default"></a><a name="bootstrapping-env-roles"></a>

 **Ruoli IAM creati durante il bootstrap**   
Per impostazione predefinita, il bootstrap prevede i seguenti ruoli di AWS Identity and Access Management (IAM) nell'ambiente:  
+  `CloudFormationExecutionRole` 
+  `DeploymentActionRole` 
+  `FilePublishingRole` 
+  `ImagePublishingRole` 
+  `LookupRole` <a name="bootstrapping-env-roles-cfn"></a>  
 `CloudFormationExecutionRole`   
Questo ruolo IAM è un ruolo di CloudFormation servizio che concede l' CloudFormation autorizzazione a eseguire distribuzioni di stack per tuo conto. Questo ruolo consente di eseguire CloudFormation chiamate AWS API nel tuo account, inclusa la distribuzione degli stack.  
Utilizzando un ruolo di servizio, le autorizzazioni fornite per il ruolo di servizio determinano quali azioni possono essere eseguite sulle risorse. CloudFormation Senza questo ruolo di servizio, le credenziali di sicurezza fornite con la CLI CDK determinerebbero cosa CloudFormation è consentito fare.  
 `DeploymentActionRole`   
Questo ruolo IAM concede l'autorizzazione a eseguire distribuzioni nell'ambiente dell'utente. Viene assunto dalla CLI CDK durante le distribuzioni.  
Utilizzando un ruolo per le distribuzioni, è possibile eseguire distribuzioni tra account poiché il ruolo può essere assunto dalle identità di un account diverso. AWS   
 `FilePublishingRole`   
Questo ruolo IAM concede l'autorizzazione a eseguire azioni sul bucket Amazon Simple Storage Service (Amazon S3) avviato, incluso il caricamento e l'eliminazione di risorse. Viene assunto dalla CLI CDK durante le distribuzioni.  
 `ImagePublishingRole`   
Questo ruolo IAM concede l'autorizzazione a eseguire azioni sul repository Amazon Elastic Container Registry (Amazon ECR) avviato. Viene assunto dalla CLI CDK durante le distribuzioni.  
 `LookupRole`   
Questo ruolo IAM concede `readOnly` l'autorizzazione a cercare valori di [contesto](context.md) dall'ambiente. AWS Viene assunto dalla CLI CDK durante l'esecuzione di attività come la sintesi e le distribuzioni di modelli.<a name="bootstrapping-env-default-id"></a>

 **Risorsa creata durante il bootstrap IDs **   
Quando si distribuisce il modello di bootstrap predefinito, le risorse fisiche IDs per bootstrap vengono create utilizzando la seguente struttura:. `cdk-<qualifier>-<description>-<account-ID>-<Region>`  
+  **Qualificatore**: un valore di stringa univoco di nove caratteri di. `hnb659fds` Il valore effettivo non ha alcun significato.
+  **Descrizione**: una breve descrizione della risorsa. Ad esempio, `container-assets`.
+  **ID account**: l'ID dell' AWS account dell'ambiente.
+  **Regione**: la AWS regione dell'ambiente.
Di seguito è riportato un esempio di ID fisico del bucket di staging Amazon S3 creato durante il bootstrap:. `cdk-hnb659fds-assets-012345678910-us-west-1`

## Autorizzazioni da utilizzare durante il bootstrap del proprio ambiente
<a name="bootstrapping-env-permissions"></a>

Quando si avvia un AWS ambiente, l'identità IAM che esegue il bootstrap deve disporre almeno delle seguenti autorizzazioni:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:*",
                "ecr:*",
                "ssm:*",
                "s3:*",
                "iam:*"
            ],
            "Resource": "*"
        }
    ]
}
```

Nel tempo, lo stack di bootstrap, incluse le risorse create e le autorizzazioni necessarie, potrebbe cambiare. Con le modifiche future, potrebbe essere necessario modificare le autorizzazioni necessarie per avviare un ambiente.

## Personalizza il bootstrap
<a name="bootstrapping-env-customize"></a>

Se il modello di bootstrap predefinito non soddisfa le tue esigenze, puoi personalizzare l'avvio delle risorse nel tuo ambiente nei seguenti modi:
+ Usa le opzioni della riga di comando con il `cdk bootstrap` comando: questo metodo è ideale per apportare piccole modifiche specifiche supportate tramite le opzioni della riga di comando.
+ Modifica il modello di bootstrap predefinito e distribuiscilo: questo metodo è ideale per apportare modifiche complesse o se desideri il controllo completo sulla configurazione delle risorse fornite durante il bootstrap.

[Per ulteriori informazioni sulla personalizzazione del bootstrap, consulta Personalizzare il bootstrap CDK. AWS](bootstrapping-customizing.md)

## Avvio con CDK Pipelines
<a name="bootstrapping-env-pipelines"></a>

Se utilizzi CDK Pipelines per la distribuzione nell'ambiente di un altro account e ricevi un messaggio simile al seguente:

```
Policy contains a statement with one or more invalid principals
```

Questo messaggio di errore indica che i ruoli IAM appropriati non esistono nell'altro ambiente. La causa più probabile è che l'ambiente non è stato avviato. Avvia l'ambiente e riprova.<a name="bootstrapping-env-pipelines-protect"></a>

 **Proteggere lo stack di bootstrap dall'eliminazione**   
Se uno stack di bootstrap viene eliminato, verranno eliminate anche le AWS risorse originariamente fornite nell'ambiente per supportare le distribuzioni CDK. Ciò causerà l'interruzione del funzionamento della pipeline. Se ciò accade, non esiste una soluzione generale per il ripristino.  
Dopo aver avviato l'ambiente, non eliminate e ricreate lo stack di bootstrap dell'ambiente. Prova invece ad aggiornare lo stack di bootstrap a una nuova versione eseguendo nuovamente il comando. `cdk bootstrap`  
Per evitare l'eliminazione accidentale dello stack di bootstrap, ti consigliamo di fornire l'`--termination-protection`opzione con il `cdk bootstrap` comando per abilitare la protezione dalla terminazione. È possibile abilitare la protezione dalla terminazione su stack di bootstrap nuovi o esistenti. Per istruzioni su come abilitare la protezione dalla terminazione, consulta [Abilitare la protezione dalla terminazione per lo stack di bootstrap](bootstrapping-customizing.md#bootstrapping-customizing-cli-protection).

## Cronologia delle versioni del modello Bootstrap
<a name="bootstrap-template-history"></a>

Il modello bootstrap è dotato di versioni e si evolve nel tempo con il CDK stesso. AWS Se fornisci il tuo modello di bootstrap, tienilo aggiornato con il modello standard canonico. Vuoi assicurarti che il tuo modello continui a funzionare con tutte le funzionalità di CDK.

**Nota**  
Per impostazione predefinita, le versioni precedenti del modello bootstrap creavano una chiave AWS KMS in ogni ambiente di avvio. Per evitare addebiti per la chiave KMS, riavvia questi ambienti utilizzando. `--no-bootstrap-customer-key` L'impostazione predefinita attuale non prevede alcuna chiave KMS, il che aiuta a evitare questi addebiti.

Questa sezione contiene un elenco delle modifiche apportate in ciascuna versione.


| Versione del modello |  AWS Versione CDK | Modifiche | 
| --- | --- | --- | 
|   **1**   |  1.40.0  |  Versione iniziale del modello con Bucket, Key, Repository e Roles.  | 
|   **2**   |  1.45.0  |  Dividi il ruolo di pubblicazione delle risorse in ruoli separati per la pubblicazione di file e immagini.  | 
|   **3**   |  1.46.0  |  Aggiungi `FileAssetKeyArn` l'esportazione per poter aggiungere autorizzazioni di decrittografia ai consumatori di risorse.  | 
|   **4**   |  1.61.0  |   AWS Le autorizzazioni KMS sono ora implicite tramite Amazon S3 e non sono più necessarie. `FileAssetKeyArn` Aggiungi il parametro `CdkBootstrapVersion` SSM in modo che la versione dello stack di bootstrap possa essere verificata senza conoscere il nome dello stack.  | 
|   **5**   |  1.87.0  |  Il ruolo di distribuzione può leggere il parametro SSM.  | 
|   **6**   |  1.108.0  |  Aggiungi il ruolo di ricerca separato dal ruolo di distribuzione.  | 
|   **6**   |  1.109.0  |  Allega `aws-cdk:bootstrap-role` tag ai ruoli di distribuzione, pubblicazione di file e pubblicazione di immagini.  | 
|   **7**   |  1.110.0  |  Il ruolo di distribuzione non può più leggere direttamente i Bucket nell'account di destinazione. (Tuttavia, questo ruolo è effettivamente un amministratore e può sempre utilizzare le sue AWS CloudFormation autorizzazioni per rendere comunque leggibile il bucket).  | 
|   **8**   |  1.114.0  |  Il ruolo di ricerca dispone di autorizzazioni complete di sola lettura per l'ambiente di destinazione e dispone anche di un tag. `aws-cdk:bootstrap-role`  | 
|   **9**   |  2.1.0  |  Risolve il rifiuto dei caricamenti di risorse di Amazon S3 da parte della crittografia di riferimento comune SCP.  | 
|   **10**   |  2.4.0  |  Amazon ECR ScanOnPush è ora abilitato per impostazione predefinita.  | 
|   **11**   |  2.18.0  |  Aggiunge una politica che consente a Lambda di estrarre dai repository Amazon ECR in modo che sopravviva al riavvio.  | 
|   **12**   |  2.20.0  |  Aggiunge il supporto per la sperimentazione`cdk import`.  | 
|   **13**   |  2.25.0  |  Rende immutabili le immagini dei contenitori nei repository Amazon ECR creati con bootstrap.  | 
|   **14**   |  2.34.0  |  Per impostazione predefinita, disattiva la scansione delle immagini di Amazon ECR a livello di repository per consentire l'avvio delle regioni che non supportano la scansione delle immagini.  | 
|   **15**   |  2,60,0  |  Le chiavi KMS non possono essere etichettate.  | 
|   **16**   |  2,69,0  |  Indirizza Security Hub trovando [KMS.2.](https://docs.aws.amazon.com/securityhub/latest/userguide/kms-controls.html#kms-2)  | 
|   **17**   |  2,72,0  |  Indirizza Security Hub trovando [ECR.3.](https://docs.aws.amazon.com/securityhub/latest/userguide/ecr-controls.html#ecr-3)  | 
|   **18**   |  2,80,0  |  Sono state annullate le modifiche apportate alla versione 16 in quanto non funzionano in tutte le partizioni e non sono consigliate.  | 
|   **19.**   |  2106,1  |  Sono state annullate le modifiche apportate alla versione 18 in cui la AccessControl proprietà è stata rimossa dal modello. ([\$127964](https://github.com/aws/aws-cdk/issues/27964))  | 
|   **20**   |  2,119,0  |  Aggiungi `ssm:GetParameters` un'azione al ruolo AWS CloudFormation Deploy IAM. Per ulteriori informazioni, consulta [\$128336](https://github.com/aws/aws-cdk/pull/28336/files#diff-4fdac38426c4747aa17d515b01af4994d3d2f12c34f7b6655f24328259beb7bf).  | 
|   **21**   |  2,149,0  |  Aggiungi una condizione al ruolo di pubblicazione dei file.  | 
|   **22**   |  2,160,0  |  Aggiungi `sts:TagSession` le autorizzazioni alla politica di fiducia dei ruoli IAM di bootstrap.  | 
|   **23**   |  2,1161,0  |  Aggiungi `cloudformation:RollbackStack` e `cloudformation:ContinueUpdateRollback` autorizzazioni alla policy di fiducia del ruolo Deploy IAM. Ciò fornisce le autorizzazioni per il comando. `cdk rollback`  | 
|   **24**   |  2.165.0  |  Modifica la durata dei giorni in cui verranno conservati gli oggetti non correnti nel bucket bootstrap, da 365 a 30 giorni. Poiché il nuovo `cdk gc` comando introduce la possibilità di eliminare oggetti nel bucket bootstrap, questo nuovo comportamento garantisce che gli oggetti eliminati rimangano nel bucket bootstrap per 30 giorni anziché 365 giorni. [Per ulteriori informazioni su questa modifica, vedere PR \$131949. `aws-cdk`](https://github.com/aws/aws-cdk/pull/31949)  | 
|   **25**   |  2,165,0  |  Aggiungi il supporto al bucket bootstrap per la rimozione di caricamenti multiparte incompleti. I caricamenti multiparte incompleti verranno eliminati dopo 1 giorno. [Per ulteriori informazioni su questa modifica, vedi `aws-cdk` PR \$131956.](https://github.com/aws/aws-cdk/pull/31956)  | 
|   **26**   |  2,1002,0  |  Aggiungi due politiche relative all'eliminazione (`UpdateReplacePolicy`e `DeletionPolicy` alla) risorsa. `FileAssetsBucketEncryptionKey` Queste politiche assicurano che la vecchia risorsa chiave AWS KMS venga eliminata correttamente quando lo stack di bootstrap viene aggiornato o eliminato. [Per ulteriori informazioni su questa modifica, vedere `aws-cdk-cli` PR \$1100.](https://github.com/aws/aws-cdk-cli/pull/100)  | 
|   **27**   |  2,1003,0  |  Aggiungi una nuova policy sulle risorse di Amazon ECR per concedere ad Amazon EMR Serverless autorizzazioni specifiche per il recupero delle immagini dei container. [Per ulteriori informazioni su questa modifica, consulta PR \$1112. `aws-cdk-cli`](https://github.com/aws/aws-cdk-cli/pull/112)  | 
|   **28**   |  2,1015,0  |  Aggiungi le autorizzazioni per eseguire azioni di Stack Refactoring al ruolo di distribuzione e le autorizzazioni a tutti i ruoli. TagSession [Per ulteriori informazioni su questa modifica, vedere PR \$1471. `aws-cdk-cli`](https://github.com/aws/aws-cdk-cli/pull/471)  | 
|   **29**   |  2,1026,0  |  Tutte le AssumeRole chiamate che forniscono un ExternalId verranno rifiutate per impostazione predefinita, a meno che non siano disattivate. Per ulteriori informazioni su questa modifica, vedere `aws-cdk-cli` PR [\$1811](https://github.com/aws/aws-cdk-cli/pull/811).  | 
|   **30**   |  2.1034,0  |  Aggiungi le autorizzazioni per descrivere gli eventi dello stack al ruolo di distribuzione, per poter mostrare CloudFormation con precisione gli errori di convalida anticipata. [Per ulteriori informazioni su questa modifica, vedere `aws-cdk-cli` PR \$1970.](https://github.com/aws/aws-cdk-cli/pull/970)  | 

## Esegui l'aggiornamento dal modello bootstrap precedente a quello moderno
<a name="bootstrapping-template"></a>

Il AWS CDK v1 supportava due modelli di bootstrap, legacy e moderni. CDK v2 supporta solo il modello moderno. A titolo di riferimento, ecco le differenze di alto livello tra questi due modelli.


| Funzionalità | Legacy (solo v1) | Moderno (v1 e v2) | 
| --- | --- | --- | 
|   **Implementazioni tra account**   |  Non consentito  |  Consentito  | 
|   ** AWS CloudFormation Autorizzazioni**   |  Esegue la distribuzione utilizzando le autorizzazioni dell'utente corrente (determinate dal AWS profilo, dalle variabili di ambiente, ecc.)  |  Esegue la distribuzione utilizzando le autorizzazioni specificate al momento del provisioning dello stack di bootstrap (ad esempio, utilizzando) `--trust`  | 
|   **Funzione Versioni multiple**   |  È disponibile solo una versione dello stack di bootstrap  |  Lo stack Bootstrap ha una versione; nuove risorse possono essere aggiunte nelle versioni future e le app AWS CDK possono richiedere una versione minima  | 
|   **Risorse\$1**   |  Bucket Amazon S3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/cdk/v2/guide/bootstrapping-env.html)  | 
|   ** AWS Chiave KMS**   |  Ruoli IAM  |  Repository Amazon ECR  | 
|   **Denominazione delle risorse**   |  Generato automaticamente  |  Deterministico  | 
|   **Crittografia Bucket**   |  Chiave predefinita  |   AWS chiave gestita per impostazione predefinita. È possibile personalizzare per utilizzare una chiave gestita dal cliente.  | 
+  *Se necessario, aggiungeremo risorse aggiuntive al modello di bootstrap.* 

Un ambiente che è stato avviato utilizzando il modello precedente deve essere aggiornato per utilizzare il modello moderno per CDK v2 mediante riavvio. Ridistribuite tutte le applicazioni AWS CDK nell'ambiente almeno una volta prima di eliminare il bucket legacy.

## Indirizza i risultati del Security Hub
<a name="bootstrapping-securityhub"></a>

Se utilizzi AWS Security Hub, potresti vedere i risultati riportati su alcune delle risorse create dal processo di bootstrap AWS CDK. I risultati del Security Hub ti aiutano a trovare le configurazioni delle risorse che dovresti ricontrollare per verificarne l'accuratezza e la sicurezza. Abbiamo esaminato queste configurazioni specifiche delle risorse con AWS Security e siamo certi che non costituiscano un problema di sicurezza.<a name="bootstrapping-securityhub-kms2"></a>

 **[KMS.2] I responsabili IAM non dovrebbero disporre di policy IAM in linea che consentano azioni di decrittografia su tutte le chiavi KMS**   
Il *deploy role* (`DeploymentActionRole`) concede l'autorizzazione a leggere i dati crittografati, necessaria per le distribuzioni tra account con CDK Pipelines. Le politiche in questo ruolo non concedono l'autorizzazione a tutti i dati. Concede l'autorizzazione a leggere i dati crittografati da Amazon S3 AWS e KMS solo quando tali risorse lo consentono tramite la politica del bucket o della chiave.  
Di seguito è riportato un frammento di queste due istruzioni nel ruolo di *deployment* tratte dal modello bootstrap:  

```
DeploymentActionRole:
    Type: AWS::IAM::Role
    Properties:
      ...
      Policies:
        - PolicyDocument:
            Statement:
              ...
              - Sid: PipelineCrossAccountArtifactsBucket
                Effect: Allow
                Action:
                  - s3:GetObject*
                  - s3:GetBucket*
                  - s3:List*
                  - s3:Abort*
                  - s3:DeleteObject*
                  - s3:PutObject*
                Resource: "*"
                Condition:
                  StringNotEquals:
                    s3:ResourceAccount:
                      Ref: AWS::AccountId
              - Sid: PipelineCrossAccountArtifactsKey
                Effect: Allow
                Action:
                  - kms:Decrypt
                  - kms:DescribeKey
                  - kms:Encrypt
                  - kms:ReEncrypt*
                  - kms:GenerateDataKey*
                Resource: "*"
                Condition:
                  StringEquals:
                    kms:ViaService:
                      Fn::Sub: s3.${AWS::Region}.amazonaws.com
              ...
```<a name="bootstrapping-securityhub-kms2-why"></a>  
 **Perché Security Hub lo segnala?**   
Le politiche contengono una clausola `Resource: *` combinata con una `Condition` clausola. Security Hub contrassegna il carattere `*` jolly. Questo wildcard viene utilizzato perché al momento dell'avvio dell'account, la chiave AWS KMS creata da CDK Pipelines per il bucket CodePipeline artifact non esiste ancora e, pertanto, non può essere referenziata sul modello di bootstrap da ARN. Inoltre, Security Hub non prende in considerazione la `Condition` clausola quando alza questa bandiera. Ciò `Condition` si limita `Resource: *` alle richieste effettuate dallo stesso AWS account della chiave AWS KMS. Queste richieste devono provenire da Amazon S3 nella stessa AWS regione della chiave AWS KMS.  
 **Devo correggere questo risultato?**   
Finché non hai modificato la chiave AWS KMS sul tuo modello di bootstrap per renderla eccessivamente permissiva, il *ruolo deploy* non consente più accessi del necessario. Pertanto, non è necessario correggere questo risultato.  
 **E se volessi correggere questo risultato?**   
Il modo in cui risolvi questo problema dipende dal fatto che utilizzerai o meno CDK Pipelines per le distribuzioni tra account.    
 **Per correggere la ricerca del Security Hub e utilizzare CDK Pipelines per le distribuzioni tra account**   

1. Se non l'hai fatto, distribuisci lo stack di bootstrap CDK usando il comando. `cdk bootstrap`

1. Se non l'hai ancora fatto, crea e distribuisci il tuo CDK. Pipeline Per istruzioni, consulta [Integrazione e distribuzione continue (CI/CD) utilizzando CDK Pipelines](cdk-pipeline.md).

1. Ottieni l'ARN della chiave AWS KMS del bucket di CodePipeline artefatti. Questa risorsa viene creata durante la creazione della pipeline.

1. Procurati una copia del modello di bootstrap CDK per modificarlo. Di seguito è riportato un esempio, utilizzando la CLI AWS CDK:

   ```
   $ cdk bootstrap --show-template > bootstrap-template.yaml
   ```

1. Modifica il modello sostituendo `Resource: *` l'`PipelineCrossAccountArtifactsKey`istruzione con il tuo valore ARN.

1. Implementa il modello per aggiornare lo stack di bootstrap. Di seguito è riportato un esempio, utilizzando la CLI CDK:

   ```
   $ cdk bootstrap aws://<account-id>/<region> --template bootstrap-template.yaml
   ```  
 **Per correggere il problema relativo al Security Hub se non si utilizza CDK Pipelines per le distribuzioni tra account**   

1. Procurati una copia del modello di bootstrap CDK per modificarlo. Di seguito è riportato un esempio, utilizzando la CLI CDK:

   ```
   $ cdk bootstrap --show-template > bootstrap-template.yaml
   ```

1. Eliminate le `PipelineCrossAccountArtifactsKey` istruzioni `PipelineCrossAccountArtifactsBucket` and dal modello.

1. Implementa il modello per aggiornare lo stack di bootstrap. Di seguito è riportato un esempio, utilizzando la CLI CDK:

   ```
   $ cdk bootstrap aws://<account-id>/<region> --template bootstrap-template.yaml
   ```

## Considerazioni
<a name="bootstrapping-env-considerations"></a>

Poiché l'avvio prevede il provisioning delle risorse nell'ambiente in uso, è possibile che vengano AWS addebitati costi quando tali risorse vengono utilizzate con il CDK. AWS 

# Personalizza il AWS bootstrap CDK
<a name="bootstrapping-customizing"></a>

È possibile personalizzare il bootstrap del AWS Cloud Development Kit (AWS CDK) utilizzando l'interfaccia a riga di comando AWS CDK (CDK AWS CLI) o modificando e distribuendo il modello bootstrap. AWS CloudFormation 

[Per un'introduzione al bootstrap, consulta CDK bootstrapping.AWS](bootstrapping.md)

## Usa la CLI CDK per personalizzare il bootstrap
<a name="bootstrapping-customizing-cli"></a>

Di seguito sono riportati alcuni esempi di come personalizzare il bootstrap utilizzando la CLI CDK. [Per un elenco di tutte le `cdk bootstrap` opzioni, consulta cdk bootstrap.](ref-cli-cmd-bootstrap.md)<a name="bootstrapping-customizing-cli-s3-name"></a>

 **Sostituisci il nome del bucket Amazon S3**   
Utilizza l'`--bootstrap-bucket-name`opzione per sovrascrivere il nome predefinito del bucket Amazon S3. Ciò potrebbe richiedere la modifica della sintesi del modello. Per ulteriori informazioni, consulta [Personalizzare la sintesi dello stack CDK](configure-synth.md#bootstrapping-custom-synth).<a name="bootstrapping-customizing-keys"></a>

 **Modifica le chiavi di crittografia lato server per il bucket Amazon S3**   
Per impostazione predefinita, il bucket Amazon S3 nello stack di bootstrap è configurato per utilizzare chiavi AWS gestite per la crittografia lato server. Per utilizzare una chiave gestita dal cliente esistente, utilizza l'`--bootstrap-kms-key-id`opzione e fornisci un valore da utilizzare per la AWS chiave Key Management Service (AWS KMS). Se desideri un maggiore controllo sulla chiave di crittografia, fornisci di `--bootstrap-customer-key` utilizzare una chiave gestita dal cliente.<a name="bootstrapping-customizing-cli-deploy-role"></a>

 **Associa le politiche gestite al ruolo di implementazione assunto da AWS CloudFormation**   
Per impostazione predefinita, gli stack vengono distribuiti con autorizzazioni di amministratore complete utilizzando la policy. `AdministratorAccess` Per utilizzare le tue politiche gestite, utilizza l'`--cloudformation-execution-policies`opzione e fornisci le ARNs politiche gestite da allegare al ruolo di distribuzione.  
Per fornire più policy, passa loro una singola stringa, separata da virgole:  

```
$ cdk bootstrap --cloudformation-execution-policies "arn:aws:iam::aws:policy/AWSLambda_FullAccess,arn:aws:iam::aws:policy/AWSCodeDeployFullAccess"
```
Per evitare errori di distribuzione, assicurati che le politiche specificate siano sufficienti per tutte le distribuzioni che eseguirai nell'ambiente da avviare.

 **Cambia il qualificatore che viene aggiunto ai nomi delle risorse nello stack di bootstrap**   
Per impostazione predefinita, il `hnb659fds` qualificatore viene aggiunto all'ID fisico delle risorse nello stack di bootstrap. Per modificare questo valore, usa l'opzione. `--qualifier`  
Questa modifica è utile quando si effettua il provisioning di più stack di bootstrap nello stesso ambiente per evitare conflitti di nomi.  
La modifica del qualificatore ha lo scopo di isolare i nomi tra i test automatici del CDK stesso. A meno che non sia possibile definire in modo molto preciso le autorizzazioni IAM assegnate al ruolo di CloudFormation esecuzione, non vi sono vantaggi in termini di isolamento delle autorizzazioni nell'avere due diversi stack di bootstrap in un unico account. Pertanto, in genere non è necessario modificare questo valore.  
Quando modificate il qualificatore, l'app CDK deve passare il valore modificato al sintetizzatore stack. [Per ulteriori informazioni, consulta Personalizzare la sintesi dello stack CDK.](configure-synth.md#bootstrapping-custom-synth)

 **Aggiungi tag allo stack di bootstrap**   
Usa l'`--tags`opzione nel formato di `KEY=VALUE` per aggiungere CloudFormation tag allo stack di bootstrap.

 **Specificate AWS account aggiuntivi che possono essere implementati nell'ambiente da avviare**   
Utilizzate l'`--trust`opzione per fornire AWS account aggiuntivi che possono essere implementati nell'ambiente di avvio. Per impostazione predefinita, l'account che esegue il bootstrap sarà sempre considerato attendibile.  
Questa opzione è utile quando si avvia un ambiente che è un CDK Pipeline da un altro ambiente verrà distribuito in.  
Quando si utilizza questa opzione, è necessario fornire `--cloudformation-execution-policies` anche.  
Per aggiungere account attendibili a uno stack di bootstrap esistente, devi specificare tutti gli account da considerare attendibili, inclusi quelli che potresti aver fornito in precedenza. Se fornisci solo nuovi account da considerare attendibili, gli account precedentemente attendibili verranno rimossi.  
Di seguito è riportato un esempio in cui vengono considerati attendibili due account:  

```
$ cdk bootstrap aws://123456789012/us-west-2 --trust 234567890123 --trust 987654321098 --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess
 ⏳  Bootstrapping environment aws://123456789012/us-west-2...
Trusted accounts for deployment: 234567890123, 987654321098
Trusted accounts for lookup: (none)
Execution policies: arn:aws:iam::aws:policy/AdministratorAccess
CDKToolkit: creating CloudFormation changeset...
 ✅  Environment aws://123456789012/us-west-2 bootstrapped.
```<a name="bootstrapping-customizing-cli-accounts-lookup"></a>

 **Specificate AWS account aggiuntivi in grado di cercare informazioni nell'ambiente da avviare**   
Utilizzate l'`--trust-for-lookup`opzione per specificare AWS gli account autorizzati a cercare informazioni di contesto dall'ambiente in fase di avvio. Questa opzione è utile per concedere agli account il permesso di sintetizzare gli stack che verranno distribuiti nell'ambiente, senza concedere loro effettivamente il permesso di distribuire direttamente tali stack.<a name="bootstrapping-customizing-cli-protection"></a>

 **Abilita la protezione dalla terminazione per lo stack di bootstrap**   
Se uno stack di bootstrap viene eliminato, verranno eliminate anche le AWS risorse originariamente fornite nell'ambiente. Dopo aver avviato l'ambiente, si consiglia di non eliminare e ricreare lo stack di bootstrap dell'ambiente, a meno che non lo si stia facendo intenzionalmente. Prova invece ad aggiornare lo stack di bootstrap a una nuova versione eseguendo nuovamente il comando. `cdk bootstrap`  
Usa l'`--termination-protection`opzione per gestire le impostazioni di protezione dalla terminazione per lo stack di bootstrap. Abilitando la protezione dalla terminazione, si evita che lo stack di bootstrap e le relative risorse vengano eliminati accidentalmente. Ciò è particolarmente importante se si utilizza CDK Pipelines poiché non esiste un'opzione di ripristino generale se si elimina accidentalmente lo stack di bootstrap.  
Dopo aver abilitato la protezione dalla terminazione, puoi utilizzare la AWS CLI AWS CloudFormation o la console per la verifica.    
 **Per abilitare la protezione dalla terminazione**   

1. Esegui il comando seguente per abilitare la protezione dalla terminazione su uno stack di bootstrap nuovo o esistente:

   ```
   $ cdk bootstrap --termination-protection
   ```

1. Utilizza la AWS CLI o la CloudFormation console per verificare. Di seguito è riportato un esempio di utilizzo della AWS CLI. Se hai modificato il nome dello stack di bootstrap, sostituiscilo `CDKToolkit` con il nome dello stack:

   ```
   $ aws cloudformation describe-stacks --stack-name <CDKToolkit> --query "Stacks[0].EnableTerminationProtection"
   true
   ```

## Modifica il modello di bootstrap predefinito
<a name="bootstrapping-customizing-template"></a>

Quando hai bisogno di una maggiore personalizzazione di quella che può fornire la CLI CDK, puoi modificare il modello di bootstrap secondo necessità. Quindi, distribuisci il modello per avviare il tuo ambiente.

 **Per modificare e distribuire il modello di bootstrap predefinito**   

1. Ottieni il modello di bootstrap predefinito utilizzando l'opzione. `--show-template` Per impostazione predefinita, la CLI CDK mostrerà il modello nella finestra del terminale. È possibile modificare il comando CDK CLI per salvare il modello sul computer locale. Di seguito è riportato un esempio:

   ```
   $ cdk bootstrap --show-template > <my-bootstrap-template.yaml>
   ```

1. Modificate il modello di bootstrap secondo necessità. Qualsiasi modifica apportata deve rispettare il contratto del modello di bootstrap. [Per ulteriori informazioni sul contratto modello di bootstrap, consulta Follow the bootstrap contract.](#bootstrapping-contract)

   Per evitare che le personalizzazioni vengano sovrascritte accidentalmente in un secondo momento da qualcuno che `cdk bootstrap` utilizza il modello predefinito, modifica il valore predefinito del parametro template. `BootstrapVariant` La CLI CDK consentirà di sovrascrivere lo stack di bootstrap solo con modelli che hanno la `BootstrapVariant` stessa versione e una versione uguale o superiore a quella del modello attualmente distribuito.

1. Implementa il modello modificato utilizzando il metodo di distribuzione preferito. AWS CloudFormation Di seguito è riportato un esempio che utilizza la CLI CDK:

   ```
   $ cdk bootstrap --template <my-bootstrap-template.yaml>
   ```

## Segui il contratto bootstrap
<a name="bootstrapping-contract"></a>

Affinché le app CDK vengano distribuite correttamente, i CloudFormation modelli prodotti durante la sintesi devono specificare correttamente le risorse create durante il bootstrap. *Queste risorse vengono comunemente chiamate risorse bootstrap.* Il bootstrap crea risorse nell' AWS ambiente che vengono utilizzate dal AWS CDK per eseguire distribuzioni e gestire gli asset delle applicazioni. Synthesis produce CloudFormation modelli da ogni stack CDK dell'applicazione. Questi modelli non si limitano a definire le AWS risorse che verranno fornite dall'applicazione. Specificano inoltre le risorse di bootstrap da utilizzare durante la distribuzione.

Durante la sintesi, la CLI CDK non sa esattamente come è stato avviato AWS l'ambiente. Invece, la CLI CDK CloudFormation produce modelli basati sul sintetizzatore configurato. Pertanto, quando si personalizza il bootstrap, potrebbe essere necessario personalizzare la sintesi. Per istruzioni sulla personalizzazione della sintesi, consulta [Personalizzare la sintesi dello stack CDK](configure-synth.md#bootstrapping-custom-synth). Lo scopo è garantire che i CloudFormation modelli sintetizzati siano compatibili con il vostro ambiente bootstrap. *Questa compatibilità è denominata contratto bootstrap.*

Il metodo più semplice per personalizzare la sintesi dello stack consiste nel modificare la `DefaultStackSynthesizer` classe nell'istanza. `Stack` Se avete bisogno di una personalizzazione che vada oltre a ciò che questa classe può offrire, potete scrivere il vostro sintetizzatore come classe che ` [IStackSynthesizer](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.IStackSynthesizer.html) ` implementa (magari derivando da). `DefaultStackSynthesizer`

Quando personalizzi il bootstrap, segui il contratto del modello bootstrap per rimanere compatibile con. `DefaultStackSynthesizer` Se modifichi il bootstrap oltre il contratto del modello bootstrap, dovrai scrivere il tuo sintetizzatore.

### Controllo delle versioni
<a name="bootstrapping-contract-versioning"></a>

Il modello di bootstrap deve contenere una risorsa per creare un parametro Amazon EC2 Systems Manager (SSM) con un nome noto e un output che rifletta la versione del modello:

```
Resources:
  CdkBootstrapVersion:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Name:
        Fn::Sub: '/cdk-bootstrap/${Qualifier}/version'
      Value: 4
Outputs:
  BootstrapVersion:
    Value:
      Fn::GetAtt: [CdkBootstrapVersion, Value]
```

### Roles
<a name="bootstrapping-contract-roles"></a>

`DefaultStackSynthesizer`Richiede cinque ruoli IAM per cinque scopi diversi. Se non utilizzi i ruoli predefiniti, devi specificare il tuo ruolo IAM ARNs all'interno `DefaultStackSynthesizer` dell'oggetto. I ruoli sono i seguenti:
+ Il *ruolo di distribuzione* viene assunto dalla CLI CDK e AWS CodePipeline dalla distribuzione in un ambiente. `AssumeRolePolicy`Controlla chi può effettuare l'implementazione nell'ambiente. Nel modello, puoi vedere le autorizzazioni necessarie per questo ruolo.
+ Il *ruolo di ricerca* viene assunto dalla CLI CDK per eseguire ricerche contestuali in un ambiente. `AssumeRolePolicy`Controlla chi può eseguire l'implementazione nell'ambiente. Le autorizzazioni necessarie per questo ruolo possono essere visualizzate nel modello.
+ Il *ruolo di pubblicazione dei file* e il *ruolo di pubblicazione delle immagini* sono assunti dalla CLI CDK e AWS CodeBuild dai progetti di pubblicazione delle risorse in un ambiente. Vengono utilizzati per scrivere rispettivamente nel bucket Amazon S3 e nel repository Amazon ECR. Questi ruoli richiedono l'accesso in scrittura a queste risorse.
+  *Il ruolo di AWS CloudFormation esecuzione* viene passato AWS CloudFormation a eseguire la distribuzione effettiva. Le relative autorizzazioni sono le autorizzazioni in base alle quali verrà eseguita la distribuzione. Le autorizzazioni vengono passate allo stack come parametro che elenca la politica gestita. ARNs

### Output
<a name="bootstrapping-contract-outputs"></a>

La CLI CDK richiede che nello stack di bootstrap siano presenti i CloudFormation seguenti output:
+  `BucketName`— Il nome del file asset bucket.
+  `BucketDomainName`— Il bucket di risorse di file nel formato del nome di dominio.
+  `BootstrapVersion`— La versione attuale dello stack bootstrap.

### Cronologia dei modelli
<a name="bootstrapping-contract-history"></a>

Il modello di bootstrap viene modificato e si evolve nel tempo con il AWS CDK stesso. Se fornisci il tuo modello di bootstrap, tienilo aggiornato con il modello standard canonico. Vuoi assicurarti che il tuo modello continui a funzionare con tutte le funzionalità di CDK. Per ulteriori informazioni, consulta la cronologia delle [versioni del modello Bootstrap](bootstrapping-env.md#bootstrap-template-history).

# Crea e applica i limiti delle autorizzazioni per il CDK AWS
<a name="customize-permissions-boundaries"></a>

Un *limite di autorizzazioni* è una funzionalità avanzata di AWS Identity and Access Management (IAM) che puoi utilizzare per impostare le autorizzazioni massime che un'entità IAM, come un utente o un ruolo, può avere. Puoi utilizzare i limiti delle autorizzazioni per limitare le azioni che le entità IAM possono eseguire quando utilizzano il AWS Cloud Development Kit (AWS CDK).

*Per ulteriori informazioni sui limiti delle autorizzazioni, consulta Limiti delle [autorizzazioni per le entità IAM nella Guida per](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) l'utente IAM.*

## Quando utilizzare i limiti delle autorizzazioni con il CDK AWS
<a name="customize-permissions-boundaries-when"></a>

Prendi in considerazione l'applicazione dei limiti delle autorizzazioni quando devi impedire agli sviluppatori della tua organizzazione di eseguire determinate azioni con il CDK. AWS Ad esempio, se nel tuo AWS ambiente sono presenti risorse specifiche che non desideri che gli sviluppatori modifichino, puoi creare e applicare un limite di autorizzazioni.

## Come applicare i limiti delle autorizzazioni con il CDK AWS
<a name="customize-permissions-boundaries-how"></a>

### Crea il limite delle autorizzazioni
<a name="customize-permissions-boundaries-how-create"></a>

Innanzitutto, crei il limite delle autorizzazioni, utilizzando una policy gestita o una policy AWS gestita dal cliente per impostare il limite per un'entità IAM (utente o ruolo). Questa policy limita le autorizzazioni massime per l'utente o il ruolo. Per istruzioni sulla creazione dei limiti delle autorizzazioni, consulta Limiti [delle autorizzazioni per le entità IAM nella Guida per](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) l'utente *IAM*.

I limiti delle autorizzazioni stabiliscono le autorizzazioni massime che un'entità IAM può avere, ma non concedono le autorizzazioni da sole. È necessario utilizzare i limiti delle autorizzazioni con le policy IAM per limitare e concedere in modo efficace le autorizzazioni appropriate per la propria organizzazione. Devi anche impedire alle entità IAM di sfuggire ai limiti che hai impostato. Per un esempio, consulta [Delegare la responsabilità ad altri utilizzando i limiti delle autorizzazioni nella Guida](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html#access_policies_boundaries-delegate) per l'*utente IAM*.

### Applica il limite delle autorizzazioni durante il bootstrap
<a name="customize-permissions-boundaries-how-apply"></a>

Dopo aver creato il limite delle autorizzazioni, puoi applicarlo al CDK applicandolo durante il AWS bootstrap.

Utilizzate l'[`--custom-permissions-boundary`](ref-cli-cmd-bootstrap.md#ref-cli-cmd-bootstrap-options-custom-permissions-boundary)opzione e specificate il nome del limite di autorizzazioni da applicare. Di seguito è riportato un esempio che applica un limite di autorizzazioni denominato: `cdk-permissions-boundary`

```
$ cdk bootstrap --custom-permissions-boundary <cdk-permissions-boundary>
```

Per impostazione predefinita, il CDK utilizza il ruolo `CloudFormationExecutionRole` IAM, definito nel modello di bootstrap, per ricevere le autorizzazioni per eseguire le distribuzioni. Applicando il limite delle autorizzazioni personalizzato durante il bootstrap, il limite delle autorizzazioni viene associato a questo ruolo. Il limite delle autorizzazioni imposterà quindi le autorizzazioni massime che possono essere eseguite dagli sviluppatori dell'organizzazione quando utilizzano il CDK. AWS Per ulteriori informazioni su questo ruolo, consulta [Ruoli IAM](bootstrapping-env.md#bootstrapping-env-roles) creati durante il bootstrap.

Quando applichi i limiti delle autorizzazioni in questo modo, questi vengono applicati all'ambiente specifico che esegui il bootstrap. Per utilizzare lo stesso limite di autorizzazioni in più ambienti, è necessario applicare il limite delle autorizzazioni per ogni ambiente durante il bootstrap. È inoltre possibile applicare limiti di autorizzazione diversi per ambienti diversi.

## Ulteriori informazioni
<a name="customize-permissions-boundaries-learn"></a>

*Per ulteriori informazioni sui limiti delle autorizzazioni, consulta [Quando e dove utilizzare i limiti delle autorizzazioni IAM](https://aws.amazon.com/blogs/security/when-and-where-to-use-iam-permissions-boundaries/) nel Security Blog. AWS *

# Risolvi i problemi di bootstrap AWS CDK
<a name="bootstrapping-troubleshoot"></a>

Risolvi i problemi più comuni durante l'avvio del tuo ambiente con il AWS Cloud Development Kit (CDK).AWS 
+ [Per un'introduzione al bootstrap, consulta CDK bootstrapping.AWS](bootstrapping.md)
+ Per istruzioni sul bootstrap, consulta Bootstrap your environment for use with the [CDK. AWS](bootstrapping-env.md)

## Quando si esegue il bootstrap utilizzando il modello predefinito, viene visualizzato un errore «CREATE\$1FAILED» per il bucket Amazon S3
<a name="bootstrapping-troubleshoot-s3-bucket-name"></a>

Quando si esegue l'avvio utilizzando il comando AWS CDK Command Line Interface (CDK CLI) con il modello di bootstrap predefinito, viene visualizzato il `cdk bootstrap` seguente errore:

```
CREATE_FAILED | AWS::S3::Bucket | <BucketName> already exists
```

Prima della risoluzione dei problemi, assicurati di utilizzare la versione più recente della CLI CDK.
+ Per verificare la tua versione, esegui. `cdk --version`
+ Per installare la versione più recente, esegui`npm install -g aws-cdk`.

Dopo aver installato la versione più recente, prova a riavviare il tuo ambiente. Se continui a ricevere lo stesso errore, continua con la risoluzione dei problemi.

### Cause comuni
<a name="bootstrapping-troubleshoot-s3-bucket-name-causes"></a>

Quando avviate il vostro ambiente, il AWS CDK genera dati fisici IDs per le risorse di bootstrap. Per ulteriori informazioni, consulta [Resource IDs created](bootstrapping-env.md#bootstrapping-env-default-id) during bootstrap.

A differenza delle altre risorse di bootstrap, i nomi dei bucket Amazon S3 sono globali. Ciò significa che ogni nome di bucket deve essere univoco per tutti gli AWS account in tutte le AWS regioni all'interno di una partizione. Per ulteriori informazioni, consulta la [panoramica dei bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) nella *Amazon S3* User Guide. Pertanto, la causa più comune di questo errore è che l'ID fisico generato come nome del bucket esiste già da qualche parte all'interno della partizione. Potrebbe essere all'interno del tuo account o di un altro account.

Quello che segue è un esempio di nome del bucket:`cdk-hnb659fds-assets-012345678910-us-west-1`. Sebbene improbabile, poiché il qualificatore e l'ID account fanno parte del nome, è possibile che questo nome per un bucket Amazon S3 venga utilizzato da un altro account. AWS Poiché i nomi dei bucket hanno un ambito globale, non possono essere utilizzati dall'utente se vengono utilizzati da un account diverso nella stessa partizione. Molto probabilmente, un bucket con lo stesso nome esiste da qualche parte nel tuo account. Potrebbe trovarsi nella regione che stai tentando di avviare o in un'altra regione.

In genere, la soluzione è individuare questo bucket nell'account e determinare cosa farne, oppure personalizzare il bootstrap per creare risorse bootstrap con un nome diverso.

### Risoluzione
<a name="bootstrapping-troubleshoot-s3-bucket-name-resolution"></a>

Innanzitutto, stabilisci se nel tuo account esiste un bucket con lo stesso nome. AWS Utilizzando un' AWS identità con autorizzazioni valide per cercare i bucket Amazon S3 nel tuo account, puoi farlo nei seguenti modi:
+ Usa il AWS comando AWS CLI (Command Line Interface) `aws s3 ls` per visualizzare un elenco di tutti i tuoi bucket.
+ Cerca i nomi dei bucket per ogni regione del tuo account utilizzando la console [Amazon S3](https://console.aws.amazon.com/s3).

Se esiste un bucket con lo stesso nome, determina se viene utilizzato. Se non viene utilizzato, valuta la possibilità di eliminare il bucket e tentare di riavviare il tuo ambiente.

Se esiste un bucket con lo stesso nome e non desideri eliminarlo, stabilisci se è già associato a uno stack di bootstrap nel tuo account. Potrebbe essere necessario controllare più regioni. La regione nel nome del bucket Amazon S3 non significa necessariamente che il bucket si trovi in quella regione. Per verificare se è associato allo stack di `CDKToolkit` bootstrap, puoi eseguire una delle seguenti operazioni per ciascuna regione:
+ Usa il `aws cloudformation describe-stack-resources --stack-name <CDKToolkit> --region <Region>` comando AWS CLI per visualizzare le risorse nel tuo stack di bootstrap e verificare se il bucket è elencato.
+ Nella [AWS CloudFormation console, individua lo stack](https://console.aws.amazon.com/cloudformation). `CDKToolkit` Quindi, nella scheda **Risorse**, controlla se il bucket esiste.

Se il bucket è associato a uno stack di bootstrap, determina se lo stack di bootstrap si trova nella stessa regione in cui stai tentando di avviare. In tal caso, il tuo ambiente è già avviato e dovresti essere in grado di iniziare a utilizzare il CDK per distribuire le applicazioni nel tuo ambiente. Se il bucket Amazon S3 è associato a uno stack di bootstrap in una regione diversa, dovrai determinare cosa fare. Le possibili soluzioni includono la ridenominazione del bucket Amazon S3 esistente, l'eliminazione del bucket Amazon S3 corrente se non viene utilizzato o l'utilizzo di un nuovo nome per il bucket Amazon S3 che stai tentando di creare.

Se non riesci a individuare un bucket Amazon S3 con lo stesso nome nel tuo account, potrebbe esistere in un altro account. Per risolvere questo problema, dovrai personalizzare il bootstrap per creare nuovi nomi per tutte le tue risorse di bootstrap o solo per il tuo bucket Amazon S3. Per creare nuovi nomi per tutte le risorse di bootstrap, puoi modificare il qualificatore. Per creare un nuovo nome solo per il tuo bucket Amazon S3, puoi fornire un nuovo nome per il bucket.

Per personalizzare il bootstrap, puoi utilizzare le opzioni con il comando CDK `cdk bootstrap` CLI o modificando il modello bootstrap. [Per istruzioni, consulta Personalizzare il bootstrap CDK. AWS](bootstrapping-customizing.md)

Se personalizzi il bootstrap, dovrai applicare le stesse modifiche alla sintesi prima di poter distribuire correttamente un'applicazione. Per istruzioni, consulta [Personalizzare la sintesi dello stack CDK](configure-synth.md#bootstrapping-custom-synth).

Ad esempio, puoi fornire un nuovo qualificatore con: `cdk bootstrap`

```
$ cdk bootstrap --qualifier <abcde0123>
```

Di seguito è riportato un esempio di nome del bucket Amazon S3 che verrà creato con questa modifica:. `cdk-abcde0123-assets-012345678910-us-west-1` Tutte le risorse bootstrap create durante il bootstrap utilizzeranno questo qualificatore.

Durante lo sviluppo dell'app CDK, è necessario specificare il qualificatore personalizzato nel sintetizzatore. Questo aiuta il CDK a identificare le risorse bootstrap durante la sintesi e la distribuzione. Di seguito è riportato un esempio di personalizzazione del sintetizzatore predefinito per l'istanza stack:

**Example**  

```
new MyStack(this, 'MyStack', {
  synthesizer: new DefaultStackSynthesizer({
    qualifier: 'abcde0123',
  }),
});
```

```
new MyStack(this, 'MyStack', {
  synthesizer: new DefaultStackSynthesizer({
    qualifier: 'abcde0123',
  }),
})
```

```
MyStack(self, "MyStack",
    synthesizer=DefaultStackSynthesizer(
        qualifier="abcde0123"
))
```

```
new MyStack(app, "MyStack", StackProps.builder()
  .synthesizer(DefaultStackSynthesizer.Builder.create()
    .qualifier("abcde0123")
    .build())
  .build();
)
```

```
new MyStack(app, "MyStack", new StackProps
{
    Synthesizer = new DefaultStackSynthesizer(new DefaultStackSynthesizerProps
    {
        Qualifier = "abcde0123"
    })
});
```

```
func NewMyStack(scope constructs.Construct, id string, props *MyStackProps) awscdk.Stack {
	var sprops awscdk.StackProps
	if props != nil {
		sprops = props.StackProps
	}
	stack := awscdk.NewStack(scope, &id, &sprops)

	synth := awscdk.NewDefaultStackSynthesizer(&awscdk.DefaultStackSynthesizerProps{
		Qualifier: jsii.String("abcde0123"),
	})

	stack.SetSynthesizer(synth)

	return stack
}
```
Puoi anche specificare il nuovo qualificatore nel file del tuo progetto CDK: `cdk.json`  

```
{
  "app": "...",
  "context": {
    "@aws-cdk/core:bootstrapQualifier": "abcde0123"
  }
}
```
Per modificare solo il nome del bucket Amazon S3, puoi utilizzare l'opzione. ` --bootstrap-bucket-name ` Di seguito è riportato un esempio:  

```
$ cdk bootstrap --bootstrap-bucket-name '<my-new-bucket-name>'
```

Quando sviluppi l'app CDK, devi specificare il nuovo nome del bucket nel sintetizzatore. Di seguito è riportato un esempio di personalizzazione del sintetizzatore predefinito per l'istanza stack:

**Example**  

```
new MyStack(this, 'MyStack', {
  synthesizer: new DefaultStackSynthesizer({
    fileAssetsBucketName: 'my-new-bucket-name',
  }),
});
```

```
new MyStack(this, 'MyStack', {
  synthesizer: new DefaultStackSynthesizer({
    fileAssetsBucketName: 'my-new-bucket-name',
  }),
})
```

```
MyStack(self, "MyStack",
    synthesizer=DefaultStackSynthesizer(
        file_assets_bucket_name='my-new-bucket-name'
))
```

```
new MyStack(app, "MyStack", StackProps.builder()
  .synthesizer(DefaultStackSynthesizer.Builder.create()
    .fileAssetsBucketName("my-new-bucket-name")
    .build())
  .build();
)
```

```
new MyStack(app, "MyStack", new StackProps
{
    Synthesizer = new DefaultStackSynthesizer(new DefaultStackSynthesizerProps
    {
        FileAssetsBucketName = "my-new-bucket-name"
    })
});
```

```
func NewMyStack(scope constructs.Construct, id string, props *MyStackProps) awscdk.Stack {
	var sprops awscdk.StackProps
	if props != nil {
		sprops = props.StackProps
	}
	stack := awscdk.NewStack(scope, &id, &sprops)

	synth := awscdk.NewDefaultStackSynthesizer(&awscdk.DefaultStackSynthesizerProps{
		FileAssetsBucketName: jsii.String("my-new-bucket-name"),
	})

	stack.SetSynthesizer(synth)

	return stack
}
```

### Prevenzione
<a name="bootstrapping-troubleshoot-s3-bucket-name-prevention"></a>

Ti consigliamo di avviare in modo proattivo ogni AWS ambiente che intendi utilizzare. Per ulteriori informazioni, consulta [Quando avviare il proprio ambiente.](bootstrapping-env.md#bootstrapping-env-when) In particolare, per il problema di denominazione dei bucket Amazon S3, ciò creerà bucket Amazon S3 in ogni AWS ambiente e impedirà ad altri di utilizzare il nome del bucket Amazon S3.