

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

# Usa CloudFormation i parametri per ottenere un CloudFormation valore
<a name="get-cfn-param"></a>

Utilizza AWS CloudFormation i parametri all'interno delle applicazioni AWS Cloud Development Kit (AWS CDK) per inserire valori personalizzati nei CloudFormation modelli sintetizzati al momento dell'implementazione.

Per un'introduzione, consulta [Parametri e CDK](parameters.md). AWS 

## Definite i parametri nella vostra app CDK
<a name="parameters-define"></a>

Utilizzate la [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CfnParameter.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CfnParameter.html)classe per definire un parametro. Ti consigliamo di specificare almeno un tipo e una descrizione per la maggior parte dei parametri, sebbene entrambi siano tecnicamente opzionali. La descrizione viene visualizzata quando all'utente viene richiesto di immettere il valore del parametro nella AWS CloudFormation console. Per ulteriori informazioni sui tipi disponibili, vedere [Tipi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html#parameters-section-structure-properties-type).

**Nota**  
È possibile definire i parametri in qualsiasi ambito. Tuttavia, consigliamo di definire i parametri a livello di stack in modo che il loro ID logico non cambi quando rifattorizzate il codice.

**Example**  

```
const uploadBucketName = new CfnParameter(this, "uploadBucketName", {
  type: "String",
  description: "The name of the Amazon S3 bucket where uploaded files will be stored."});
```

```
const uploadBucketName = new CfnParameter(this, "uploadBucketName", {
  type: "String",
  description: "The name of the Amazon S3 bucket where uploaded files will be stored."});
```

```
upload_bucket_name = CfnParameter(self, "uploadBucketName", type="String",
    description="The name of the Amazon S3 bucket where uploaded files will be stored.")
```

```
CfnParameter uploadBucketName = CfnParameter.Builder.create(this, "uploadBucketName")
        .type("String")
        .description("The name of the Amazon S3 bucket where uploaded files will be stored")
        .build();
```

```
var uploadBucketName = new CfnParameter(this, "uploadBucketName", new CfnParameterProps
{
    Type = "String",
    Description = "The name of the Amazon S3 bucket where uploaded files will be stored"
});
```

## Usa i parametri
<a name="parameters-use"></a>

[Un'`CfnParameter`istanza espone il suo valore all'app CDK tramite un token.](tokens.md) Come tutti i token, il token del parametro viene risolto al momento della sintesi. Ma si risolve in un riferimento al parametro definito nel AWS CloudFormation modello (che verrà risolto al momento della distribuzione), piuttosto che a un valore concreto.

È possibile recuperare il token come istanza della `Token` classe o in una stringa, in un elenco di stringhe o in una codifica numerica. La scelta dipende dal tipo di valore richiesto dalla classe o dal metodo con cui si desidera utilizzare il parametro.

**Example**  


| Proprietà | tipo di valore | 
| --- | --- | 
|   `value`   |   `Token`istanza di classe  | 
|   `valueAsList`   |  Il token rappresentato come un elenco di stringhe  | 
|   `valueAsNumber`   |  Il token rappresentato come numero  | 
|   `valueAsString`   |  Il token rappresentato come una stringa  | 


| Proprietà | tipo di valore | 
| --- | --- | 
|   `value`   |   `Token`istanza di classe  | 
|   `valueAsList`   |  Il token rappresentato come un elenco di stringhe  | 
|   `valueAsNumber`   |  Il token rappresentato come numero  | 
|   `valueAsString`   |  Il token rappresentato come una stringa  | 


| Proprietà | tipo di valore | 
| --- | --- | 
|   `value`   |   `Token`istanza di classe  | 
|   `value_as_list`   |  Il token rappresentato come un elenco di stringhe  | 
|   `value_as_number`   |  Il token rappresentato come numero  | 
|   `value_as_string`   |  Il token rappresentato come una stringa  | 


| Proprietà | tipo di valore | 
| --- | --- | 
|   `getValue()`   |   `Token`istanza di classe  | 
|   `getValueAsList()`   |  Il token rappresentato come un elenco di stringhe  | 
|   `getValueAsNumber()`   |  Il token rappresentato come numero  | 
|   `getValueAsString()`   |  Il token rappresentato come una stringa  | 


| Proprietà | tipo di valore | 
| --- | --- | 
|   `Value`   |   `Token`istanza di classe  | 
|   `ValueAsList`   |  Il token rappresentato come un elenco di stringhe  | 
|   `ValueAsNumber`   |  Il token rappresentato come numero  | 
|   `ValueAsString`   |  Il token rappresentato come una stringa  | 

Ad esempio, per utilizzare un parametro in una `Bucket` definizione:

**Example**  

```
const bucket = new Bucket(this, "amzn-s3-demo-bucket",
  { bucketName: uploadBucketName.valueAsString});
```

```
const bucket = new Bucket(this, "amzn-s3-demo-bucket",
  { bucketName: uploadBucketName.valueAsString});
```

```
bucket = Bucket(self, "amzn-s3-demo-bucket",
    bucket_name=upload_bucket_name.value_as_string)
```

```
Bucket bucket = Bucket.Builder.create(this, "amzn-s3-demo-bucket")
        .bucketName(uploadBucketName.getValueAsString())
        .build();
```

```
var bucket = new Bucket(this, "amzn-s3-demo-bucket")
{
    BucketName = uploadBucketName.ValueAsString
};
```

## Distribuisci app CDK contenenti parametri
<a name="parameters-deploy"></a>

Quando distribuisci un AWS CloudFormation modello generato tramite la AWS CloudFormation console, ti verrà richiesto di fornire i valori per ogni parametro.

È inoltre possibile fornire i valori dei parametri utilizzando il comando CDK `cdk deploy` CLI o specificando i valori dei parametri nel file stack del progetto CDK.

### Fornite i valori dei parametri con cdk deploy
<a name="parameters-deploy-cli"></a>

Quando si esegue la distribuzione utilizzando il `cdk deploy` comando CDK CLI, è possibile fornire i valori dei parametri al momento della distribuzione con l'opzione. `--parameters`

Di seguito è riportato un esempio della struttura dei `cdk deploy` comandi:

```
$ cdk deploy <stack-logical-id> --parameters <stack-name>:<parameter-name>=<parameter-value>
```

Se l'app CDK contiene un singolo stack, non è necessario fornire l'argomento dell'ID logico dello stack o il `stack-name` valore dell'opzione. `--parameters` La CLI CDK troverà e fornirà automaticamente questi valori. Di seguito è riportato un esempio che specifica un `uploadbucket` valore per il `uploadBucketName` parametro del single stack nella nostra app CDK:

```
$ cdk deploy --parameters <uploadBucketName>=<uploadbucket>
```

### Fornisci i valori dei parametri con cdk deploy per applicazioni multi-stack
<a name="parameters-deploy-cli-multi-stack"></a>

Di seguito è riportato un esempio di applicazione CDK TypeScript che contiene due stack CDK. Ogni stack contiene un'istanza del bucket Amazon S3 e un parametro per impostare il nome del bucket Amazon S3:

```
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';

// Define the CDK app
const app = new cdk.App();

// First stack
export class MyFirstStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // Set a default parameter name
    const bucketNameParam = new cdk.CfnParameter(this, 'bucketNameParam', {
      type: 'String',
      default: 'amzn-s3-demo-bucket1'
    });

    // Define an S3 bucket
    new s3.Bucket(this, 'MyFirstBucket', {
      bucketName: bucketNameParam.valueAsString
    });
  }
}

// Second stack
export class MySecondStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // Set a default parameter name
    const bucketNameParam = new cdk.CfnParameter(this, 'bucketNameParam', {
      type: 'String',
      default: 'amzn-s3-demo-bucket2'
    });

    // Define an S3 bucket
    new s3.Bucket(this, 'MySecondBucket', {
      bucketName: bucketNameParam.valueAsString
    });
  }
}

// Instantiate the stacks
new MyFirstStack(app, 'MyFirstStack', {
  stackName: 'MyFirstDeployedStack',
});

new MySecondStack(app, 'MySecondStack', {
  stackName: 'MySecondDeployedStack',
});
```

Per le app CDK che contengono più stack, puoi fare quanto segue:
+  **Distribuisci uno stack con parametri**: per distribuire un singolo stack da un'applicazione multi-stack, fornisci l'ID logico dello stack come argomento.

  Di seguito è riportato un esempio che utilizza `MySecondStack` come valore del parametro per: `mynewbucketname` `bucketNameParam`

  ```
  $ cdk deploy <MySecondStack> --parameters <bucketNameParam>='<mynewbucketname>'
  ```
+  **Distribuisci tutti gli stack e specifica i valori dei parametri per ogni stack**: fornisci la `'*'` jolly o l'`--all`opzione per distribuire tutti gli stack. Fornite l'`--parameters`opzione più volte in un unico comando per specificare i valori dei parametri per ogni stack. Di seguito è riportato un esempio:

  ```
  $ cdk deploy <'*'> --parameters <MyFirstDeployedStack>:<bucketNameParam>='<mynewfirststackbucketname>' --parameters <MySecondDeployedStack>:<bucketNameParam>='<mynewsecondstackbucketname>'
  ```
+  **Distribuisci tutti gli stack e specifica i valori dei parametri per un singolo stack**: fornisci la `'*'` wildcard o l'`--all`opzione per distribuire tutti gli stack. Quindi, specifica lo stack per definire il parametro dell'opzione. `--parameters` Di seguito sono riportati alcuni esempi che distribuiscono tutti gli stack in un'app CDK e specificano un valore di parametro per lo stack. `MySecondDeployedStack` AWS CloudFormation Tutti gli altri stack verranno distribuiti e utilizzeranno il valore del parametro predefinito:

  ```
  $ cdk deploy <'*'> --parameters <MySecondDeployedStack>:<bucketNameParam>='<mynewbucketname>'
  $ cdk deploy <--all> --parameters <MySecondDeployedStack>:<bucketNameParam>='<mynewbucketname>'
  ```

### Fornisci i valori dei parametri `cdk deploy` per le applicazioni con stack annidati
<a name="parameters-deploy-cli-nested-stack"></a>

Il comportamento della CLI CDK quando si lavora con applicazioni contenenti stack annidati è simile alle applicazioni multi-stack. La differenza principale è che se vuoi distribuire tutti gli stack annidati, usa la wildcard. `'**'` La `'*'` jolly distribuisce tutte le pile ma non distribuirà le pile nidificate. La `'**'` jolly distribuisce tutte le pile, incluse le pile nidificate.

Di seguito è riportato un esempio che implementa gli stack nidificati specificando il valore del parametro per uno stack nidificato:

```
$ cdk deploy '**' --parameters <MultiStackCdkApp/SecondStack>:<bucketNameParam>='<mysecondstackbucketname>'
```

[Per ulteriori informazioni sulle opzioni di `cdk deploy` comando, consulta cdk deploy.](ref-cli-cmd-deploy.md)