

Questa è la nuova *Guida di riferimento ai modelli CloudFormation *. Aggiorna i segnalibri e i link. Per informazioni su come iniziare CloudFormation, consulta la [Guida AWS CloudFormation per l'utente](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

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

# Riferimento delle trasformazioni
<a name="transform-reference"></a>

Le trasformazioni sono macro ospitate da. CloudFormation A differenza delle macro personalizzate, la trasformazione non richiede particolari autorizzazioni per utilizzarla in quanto è ospitata da CloudFormation. Le trasformazioni possono essere utilizzate nei modelli in qualsiasi account all'interno di CloudFormation. Inoltre, non è previsto alcun costo per l'utilizzo delle trasformazioni. CloudFormation tratta una trasformazione come qualsiasi altra macro in termini di ordine e ambito di valutazione.

*Per ulteriori informazioni sul funzionamento delle macro, vedere [Utilizzo delle CloudFormation macro per eseguire l'elaborazione personalizzata sui modelli](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html) nella Guida per l'AWS CloudFormation utente.*

È possibile utilizzare le seguenti trasformazioni nei modelli. CloudFormation 

**Topics**
+ [Trasformazione `AWS::CodeDeployBlueGreen`](transform-aws-codedeploybluegreen.md)
+ [Trasformazione `AWS::Include`](transform-aws-include.md)
+ [Trasformazione `AWS::LanguageExtensions`](transform-aws-languageextensions.md)
+ [Trasformazione `AWS::SecretsManager`](transform-aws-secretsmanager.md)
+ [Trasformazione `AWS::Serverless`](transform-aws-serverless.md)
+ [Trasformazione `AWS::ServiceCatalog`](transform-aws-servicecatalog.md)

# Trasformazione `AWS::CodeDeployBlueGreen`
<a name="transform-aws-codedeploybluegreen"></a>

Questo argomento descrive come utilizzare la `AWS::CodeDeployBlueGreen` trasformazione per abilitare le blue/green implementazioni ECS sullo stack. CodeDeploy 

*Per ulteriori informazioni, consulta [Eseguire le blue/green distribuzioni ECS tramite l'utilizzo nella Guida per l'utente. CodeDeploy CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html)AWS CloudFormation *

## Utilizzo
<a name="aws-codedeploybluegreen-usage"></a>

Per utilizzare la `AWS::CodeDeployBlueGreen` trasformazione, devi dichiararla al livello più alto del modello. CloudFormation Non è possibile utilizzare `AWS::CodeDeployBlueGreen` come trasformazione incorporata in qualsiasi altra sezione del modello.

Il valore della dichiarazione della trasformazione deve essere una stringa letterale. Non è possibile utilizzare un parametro o una funzione per specificare un valore di trasformazione.

### Sintassi
<a name="aws-codedeploybluegreen-syntax"></a>

Per dichiarare questa trasformazione nel CloudFormation modello, utilizzate la seguente sintassi:

#### JSON
<a name="aws-codedeploybluegreen-syntax.json"></a>

```
{
  "Transform":[
    "AWS::CodeDeployBlueGreen"
  ],
  "Resources":{
    ...
  }
}
```

#### YAML
<a name="aws-codedeploybluegreen-syntax.yaml"></a>

```
Transform:
  - 'AWS::CodeDeployBlueGreen'
Resources:
  ...
```

La trasformazione `AWS::CodeDeployBlueGreen` è una dichiarazione autonoma senza parametri aggiuntivi.

## Risorse correlate
<a name="aws-codedeploybluegreen-related-resources"></a>

*Per esempi completi di CloudFormation modelli che puoi utilizzare per abilitare le distribuzioni blu/green di ECS sul tuo stack, consulta l'esempio di modello di distribuzione [Blue/green](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green-template-example.html) nella Guida per l'utente.AWS CloudFormation *

*Per informazioni generali sull'uso delle macro, consulta [Eseguire l'elaborazione personalizzata sui modelli con le macro dei modelli nella CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html) Guida per l'utente.AWS CloudFormation *

# Trasformazione `AWS::Include`
<a name="transform-aws-include"></a>

Questo argomento descrive come utilizzare la `AWS::Include` trasformazione per inserire contenuti standard nei modelli. CloudFormation 

`AWS::Include`È una CloudFormation macro che, quando viene referenziata nel modello di stack, inserisce il contenuto del file specificato nella posizione della trasformazione nel modello quando si crea o si aggiorna uno stack utilizzando un set di modifiche. La funzione `AWS::Include` ha un comportamento analogo a una direttiva `include`, `copy` o `import` dei linguaggi di programmazione.

## Utilizzo
<a name="aws-include-usage"></a>

È possibile utilizzare la `AWS::Include` trasformazione ovunque all'interno del CloudFormation modello tranne nella sezione dei parametri del modello o nella versione del modello. Ad esempio, è possibile utilizzare `AWS::Include` nella sezione delle mappature.

### Sintassi al livello superiore di un modello
<a name="aws-include-syntax-top-level"></a>

Per dichiarare questa trasformazione al livello più alto del CloudFormation modello, come `Transform` sezione, utilizzate la seguente sintassi:

#### JSON
<a name="aws-include-syntax-top-level.json"></a>

```
{
  "Transform":{
    "Name":"AWS::Include",
    "Parameters":{
      "Location":"s3://amzn-s3-demo-bucket/MyFileName.json"
    }
  },
  "Resources":{
    ...
  }
}
```

#### YAML
<a name="aws-include-syntax-top-level.yaml"></a>

```
Transform:
  Name: AWS::Include
  Parameters:
    Location: 's3://amzn-s3-demo-bucket/MyFileName.yaml'
Resources:
  ...
```

### Sintassi da utilizzare quando la trasformazione è incorporata in una sezione di un modello
<a name="aws-include-syntax-within-section"></a>

Per dichiarare questa trasformazione all'interno di una sezione del CloudFormation modello, utilizzate la funzione `Fn::Transform` intrinseca e la seguente sintassi:

#### JSON
<a name="aws-include-syntax-within-section.json"></a>

```
{
  "Fn::Transform":{
    "Name":"AWS::Include",
    "Parameters":{
      "Location":"s3://amzn-s3-demo-bucket/MyFileName.json"
    }
  }
}
```

#### YAML
<a name="aws-include-syntax-within-section.yaml"></a>

```
Fn::Transform:
  Name: AWS::Include
  Parameters:
    Location: s3://amzn-s3-demo-bucket/MyFileName.yaml
```

Per ulteriori informazioni, consulta [`Fn::Transform`](intrinsic-function-reference-transform.md).

### Parameters
<a name="aws-include-parameters"></a>

`Location`

Il percorso è un URI Amazon S3, con un determinato nome di file in un bucket S3. Ad esempio, `s3://amzn-s3-demo-bucket/MyFile.yaml`.

## Considerazioni
<a name="aws-include-considerations"></a>

Quando utilizzi `AWS::Include`, tieni presente le considerazioni riportate di seguito. Per ulteriori considerazioni sull’uso delle macro, consulta [Macros considerations](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros-overview.html#template-macros-considerations) nella *Guida per l’utente di AWS CloudFormation *.
+ Attualmente supportiamo URI Amazon S3, ma nessun altro formato Amazon S3 (ad esempio ARN Amazon S3). Deve essere un bucket Amazon S3, anziché qualcosa come un repository. GitHub 
+ Tutti gli utenti con accesso all’URL Amazon S3 possono includere il frammento nel proprio modello.
+ I tuoi frammenti di modello devono essere in formato JSON valido.
+ I tuoi frammenti di modello devono essere oggetti chiave-valore, ad esempio, `"KeyName": "keyValue"`.
+ Non puoi utilizzare `AWS::Include` per fare riferimento a un frammento di codice che utilizza anche `AWS::Include`.
+ Se i frammenti cambiano, lo stack non include automaticamente le modifiche. Per includere le modifiche, devi aggiornare lo stack con i frammenti aggiornati. Se aggiorni lo stack, assicurati che i frammenti inclusi non siano cambiati a tua insaputa. Per verificare prima di aggiornare lo stack, controlla il set di modifiche.
+ Durante la creazione di modelli e frammenti, puoi combinare i linguaggi di modello YAML e JSON.
+ Attualmente non supportiamo l’utilizzo di notazioni abbreviate per i frammenti YAML.
+ È possibile fornire un URI Amazon S3 di replica in più Regioni con `AWS::Include`. Assicurati di verificare i nomi dei bucket Amazon S3 durante l’accesso agli oggetti di replica in più Regioni. Per maggiori informazioni, consulta [Replicating objects within and across Regions](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html) nella *Guida per l’utente di Amazon S3*.

## Esempi
<a name="aws-include-examples"></a>

L’esempio seguente mostra come utilizzare la trasformazione `AWS::Include` per eseguire un handle di condizione di attesa. Sostituisci *amzn-s3-demo-bucket* con il nome effettivo del bucket. 

Innanzitutto, salva un file YAML denominato `single_wait_condition.yaml` nel tuo bucket S3 con il seguente contenuto:

```
MyWaitCondition:
  Type: AWS::CloudFormation::WaitCondition
  Properties:
    Handle: !Ref MyWaitHandle
    Timeout: '4500'
```

Quindi, puoi fare riferimento a questo file utilizzando il formato JSON o YAML.

### JSON
<a name="aws-include-example.json"></a>

```
{
   "Resources": {
      "MyWaitHandle": {
         "Type": "AWS::CloudFormation::WaitConditionHandle"
      },
      "Fn::Transform": {
         "Name": "AWS::Include",
         "Parameters": {
            "Location": "s3://amzn-s3-demo-bucket/single_wait_condition.yaml"
         }
      }
   }
}
```

### YAML
<a name="aws-include-example.yaml"></a>

```
Resources:
  MyWaitHandle:
    Type: AWS::CloudFormation::WaitConditionHandle
  Fn::Transform:
    Name: AWS::Include
    Parameters:
      Location: "s3://amzn-s3-demo-bucket/single_wait_condition.yaml"
```

*Per ulteriori informazioni, consulta [Creare condizioni di attesa in un CloudFormation modello nella Guida per](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-waitcondition.html) l'AWS CloudFormation utente.*

# Trasformazione `AWS::LanguageExtensions`
<a name="transform-aws-languageextensions"></a>

Questo argomento descrive come utilizzare la trasformazione `AWS::LanguageExtensions` per abilitare funzioni e funzionalità aggiuntive che non sono disponibili per impostazione predefinita. 

`AWS::LanguageExtensions`È una CloudFormation macro che, quando viene referenziata nel modello di stack, aggiorna qualsiasi funzione intrinseca definita dalla trasformazione al suo valore risolto all'interno del modello quando si crea o si aggiorna uno stack utilizzando un set di modifiche. 

Includendo questa trasformazione nel CloudFormation modello, è possibile accedere a funzionalità aggiuntive, ad esempio che consentono operazioni più avanzate come `Fn::ForEach` l'iterazione. Puoi anche utilizzare le funzioni intrinseche in luoghi in cui in genere non sono consentite, ad esempio nelle funzioni `Ref` e `Fn::GetAtt`.

## Utilizzo
<a name="aws-languageextensions-usage"></a>

Per utilizzare la `AWS::LanguageExtensions` trasformazione, è necessario dichiararla al livello più alto del CloudFormation modello. Non è possibile utilizzare `AWS::LanguageExtensions` come trasformazione incorporata in qualsiasi altra sezione del modello.

La dichiarazione deve utilizzare la stringa letterale `AWS::LanguageExtensions` come valore. Non è possibile utilizzare un parametro o una funzione per specificare un valore di trasformazione.

### Sintassi
<a name="aws-languageextensions-syntax"></a>

Per dichiarare questa trasformazione nel CloudFormation modello, utilizzate la seguente sintassi:

### JSON
<a name="aws-languageextensions-syntax.json"></a>

```
{
  "Transform":"AWS::LanguageExtensions",
  "Resources":{
    ...
  }
}
```

### YAML
<a name="aws-languageextensions-syntax.yaml"></a>

```
Transform: AWS::LanguageExtensions
Resources:
  ...
```

La trasformazione `AWS::LanguageExtensions` è una dichiarazione autonoma senza parametri aggiuntivi.

## Supporto per funzioni aggiuntive
<a name="aws-languageextensions-supported-functions"></a>

L’operazione di trasformazione `AWS::LanguageExtensions` supporta le seguenti funzioni aggiuntive:
+ [`Fn::ForEach`](intrinsic-function-reference-foreach.md)
+ [`Fn::Length`](intrinsic-function-reference-length.md)
+ [`Fn::ToJsonString`](intrinsic-function-reference-ToJsonString.md)

## Considerazioni
<a name="aws-languageextensions-considerations"></a>

Quando utilizzi l’operazione transform di `AWS::LanguageExtensions`, tieni presente le considerazioni riportate di seguito:
+ Quando aggiorni uno stack che utilizza la `AWS::LanguageExtensions` trasformazione, ti consigliamo di non utilizzare l'opzione Usa **modello esistente** nella CloudFormation console o l'opzione equivalente della riga di comando. `--use-previous-template` La trasformazione `AWS::LanguageExtensions` risolve i parametri in valori letterali durante l’elaborazione. Quando si utilizza`--use-previous-template`, CloudFormation utilizza questo modello elaborato con i vecchi valori letterali, impedendo l'applicazione di nuovi valori dei parametri e degli aggiornamenti dei parametri di Systems Manager. Invece, fornisce il modello originale per garantire che i parametri vengano risolti nuovamente con i valori attuali.
+ La sintassi YAML in forma abbreviata non è supportata all’interno di un modello per le funzioni intrinseche che sono disponibili solo nella trasformazione `AWS::LanguageExtensions`. Utilizza riferimenti espliciti a queste funzioni. Ad esempio, utilizza `Fn::Length` anziché `!Length`.
+ La AWS SAM CLI attualmente non supporta la funzione `Fn::ForEach` intrinseca della trasformazione. `AWS::LanguageExtensions`
+ Se utilizzi più trasformazioni, utilizza un formato elenco. Se utilizzi macro personalizzate, inserisci le trasformazioni AWS fornite dopo le macro personalizzate. Se utilizzi entrambe le operazioni di trasformazione `AWS::LanguageExtensions` e `AWS::Serverless`, l’operazione transform di `AWS::LanguageExtensions` deve essere posizionata prima della trasformazione `AWS::Serverless` nell’elenco.
+ Le funzioni e gli attributi forniti dall’operazione transform di `AWS::LanguageExtensions` sono supportati solo nelle sezioni `Resources`, `Conditions` e `Outputs` del modello.

## Esempi
<a name="aws-languageextensions-examples"></a>

L’esempio seguente mostra come utilizzare l’operazione di trasformazione `AWS::LanguageExtensions` per utilizzare la funzione intrinseca `Fn::Length` definita dalla trasformazione.

### JSON
<a name="aws-languageextensions-example.json"></a>

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Transform": "AWS::LanguageExtensions",
    "Parameters": {
        "QueueList": {
            "Type": "CommaDelimitedList"
        },
        "QueueNameParam": {
            "Description": "Name for your SQS queue",
            "Type": "String"
        }
    },
    "Resources": {
        "Queue": {
            "Type": "AWS::SQS::Queue",
            "Properties": {
                "QueueName": {
                    "Ref": "QueueNameParam"
                },
                "DelaySeconds": {
                    "Fn::Length": {
                        "Ref": "QueueList"
                    }
                }
            }
        }
    }
}
```

### YAML
<a name="aws-languageextensions-example.yaml"></a>

```
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::LanguageExtensions
Parameters:
  QueueList:
    Type: CommaDelimitedList
  QueueNameParam:
    Description: Name for your SQS queue
    Type: String
Resources:
  Queue:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: !Ref QueueNameParam
      DelaySeconds:
        'Fn::Length': !Ref QueueList
```

## Risorse correlate
<a name="aws-languageextensions-related-resources"></a>

Per altri esempi, consulta gli argomenti seguenti.
+ [`Fn::ForEach`](intrinsic-function-reference-foreach.md)
+ [`Fn::Length`](intrinsic-function-reference-length.md)
+ [`Fn::ToJsonString`](intrinsic-function-reference-ToJsonString.md)
+ [`Ref`](intrinsic-function-reference-ref.md)
+ [`Fn::GetAtt`](intrinsic-function-reference-getatt.md)
+ [`Fn::FindInMap enhancements`](intrinsic-function-reference-findinmap-enhancements.md)

*Per informazioni generali sull'uso delle macro, consulta [Eseguire l'elaborazione personalizzata su CloudFormation modelli con macro di modello](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html) nella Guida per l'utente.AWS CloudFormation *

# `Fn::FindInMap enhancements`
<a name="intrinsic-function-reference-findinmap-enhancements"></a>

La `AWS::LanguageExtensions` trasformazione migliora la funzionalità della funzione `Fn::FindInMap` intrinseca nei modelli. CloudFormation 

La `Fn::FindInMap` funzione viene utilizzata per recuperare un valore da una mappatura definita nella sezione di un modello. `Mappings` CloudFormation Tuttavia, la funzione `Fn::FindInMap` standard presenta delle limitazioni, come l’impossibilità di gestire le mappature mancanti o di utilizzare una funzione `Fn::FindInMap` con alcune funzioni intrinseche incorporate al suo interno.

La trasformazione `AWS::LanguageExtensions` risolve queste limitazioni introducendo i seguenti miglioramenti:
+ **Supporto per valori predefinito**: puoi specificare un valore predefinito da restituire se non viene trovata una mappatura.
+ **Supporto per funzione intrinseca**: puoi inoltre utilizzare una gamma più ampia di funzioni intrinseche per definire i campi di `Fn::FindInMap` rispetto alla funzione standard `Fn::FindInMap`.

## Dichiarazione
<a name="intrinsic-function-reference-findinmap-enhancements-declaration"></a>

### JSON
<a name="intrinsic-function-reference-findinmap-enhancements-syntax.json"></a>

```
{ "Fn::FindInMap" : [
    "MapName",
    "TopLevelKey",
    "SecondLevelKey",
    {"DefaultValue": "DefaultValue"}
  ]
}
```

### YAML
<a name="intrinsic-function-reference-findinmap-enhancements-syntax.yaml"></a>

Sintassi per il nome completo della funzione:

```
Fn::FindInMap:
  - MapName
  - TopLevelKey
  - SecondLevelKey
  - DefaultValue: DefaultValue
```

Sintassi per la forma breve:

```
!FindInMap
  - MapName
  - TopLevelKey
  - SecondLevelKey
  - DefaultValue: DefaultValue
```

## Parameters
<a name="intrinsic-function-reference-findinmap-enhancements-parameters"></a>

DefaultValue  <a name="DefaultValue"></a>
Il valore che `Fn::FindInMap` si risolverà se non `TopLevelKey` and/or `SecondLevelKey` può essere trovato dalla `MapName` mappa. Questo campo è facoltativo.

Tutti i parametri `MapName`, `TopLevelKey`, `SecondLevelKey` e `DefaultValue` possono essere una funzione intrinseca purché possa risolversi in un valore valido durante la trasformazione.

## Esempi
<a name="w2aac28c16c20c15"></a>

Gli esempi seguenti mostrano come definire i campi di `Fn::FindInMap` quando si aggiunge la trasformazione `AWS::LanguageExtensions`.

### Utilizzo di un valore predefinito
<a name="intrinsic-function-reference-findinmap-enhancements-example"></a>

Di seguito è riportato un esempio di utilizzo di un valore predefinito nella funzione `Fn::FindInMap`.

#### JSON
<a name="intrinsic-function-reference-findinmap-default-value-example.json"></a>

```
{
  //...
    "Transform": "AWS::LanguageExtensions",
    //...
    "Fn::FindInMap": [
      "RegionMap",
      { "Ref": "AWS::Region" },
      "InstanceType",
      { "DefaultValue": "t3.micro" }
    ]
  //...
}
```

#### YAML
<a name="intrinsic-function-reference-findinmap-default-value-example.yaml"></a>

```
Transform: 'AWS::LanguageExtensions'
#...
    !FindInMap 
        - 'RegionMap'
        - !Ref 'AWS::Region'
        - 'InstanceType'
        - DefaultValue: t3.micro
#...
```

#### Utilizzare le funzioni intrinseche per definire la chiave di primo livello
<a name="intrinsic-function-reference-findinmap-enhancements-example"></a>

Di seguito è riportato un esempio di utilizzo di una funzione `Fn::FindInMap` con le funzioni intrinseche `Fn::Select` e `Fn::Split` incorporate al suo interno per definire la chiave di primo livello.

##### JSON
<a name="intrinsic-function-reference-findinmap-enhancement-example.json"></a>

```
{
  //...
  "Transform": "AWS::LanguageExtensions",
  //...
      "Fn::FindInMap": [
        "MyMap",
        {
          "Fn::Select": [
            0,
            {
              "Fn::Split": [
                "|",
                { "Ref": "InputKeys" }
              ]
            }
          ]
        },
        "SecondKey"
      ]
//...
}
```

##### YAML
<a name="intrinsic-function-reference-findinmap-enhance-example.yaml"></a>

```
Transform: 'AWS::LanguageExtensions'
#...
    !FindInMap: [MyMap, !Select [0, !Split [|, !Ref InputKeys]], SecondKey]
#...
```

## Funzioni supportate
<a name="intrinsic-function-reference-findinmap-enhancements-supported-functions"></a>

Puoi utilizzare le seguenti funzioni nei parametri dei miglioramenti di `Fn::FindInMap:`:
+ ``Fn::FindInMap``
+ ``Fn::Join``
+ ``Fn::Sub``
+ ``Fn::If``
+ ``Fn::Select``
+ ``Fn::Length``
+ ``Fn::ToJsonString``
+ ``Fn::Split`` - A meno che non venga utilizzato per il valore predefinito, `Fn::Split` deve essere utilizzato assieme a funzioni intrinseche che producono una stringa, ad esempio ``Fn::Join`` o ``Fn::Select``.
+ ``Ref``

## Risorse correlate
<a name="w2aac28c16c20c19"></a>

Per ulteriori informazioni ed esempi che mostrano come utilizzare la funzione intrinseca `Fn::FindInMap`, consulta [`Fn::FindInMap`](intrinsic-function-reference-findinmap.md).

Per ulteriori informazioni sulla trasformazione `AWS::LanguageExtensions`, consulta [Trasformazione `AWS::LanguageExtensions`](transform-aws-languageextensions.md).

# Trasformazione `AWS::SecretsManager`
<a name="transform-aws-secretsmanager"></a>

Questo argomento descrive come utilizzare la `AWS::SecretsManager` trasformazione e il tipo di [AWS::SecretsManager::RotationSchedule](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html)risorsa per specificare una funzione Lambda per eseguire la rotazione dei segreti.

La `AWS::SecretsManager` trasformazione è una CloudFormation macro che, se referenziata nel modello di stack, genera automaticamente una funzione Lambda per la rotazione dei segreti quando si crea o si aggiorna uno stack utilizzando un set di modifiche. La funzione Lambda viene inserita in uno stack annidato nel modello elaborato. Utilizza un modello di funzione dal repository [Gestione dei segreti AWS Rotation Lambda Functions](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas), basato sul valore della [RotationType](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html#cfn-secretsmanager-rotationschedule-hostedrotationlambda-rotationtype)proprietà della risorsa. [AWS::SecretsManager::RotationSchedule](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html)

## Utilizzo
<a name="aws-secretsmanager-usage"></a>

Per utilizzare la `AWS::SecretsManager` trasformazione, è necessario dichiararla al livello più alto del modello. CloudFormation Non è possibile utilizzare `AWS::SecretsManager` come trasformazione incorporata in qualsiasi altra sezione del modello.

La dichiarazione deve utilizzare la stringa letterale `AWS::SecretsManager-2020-07-23` o `AWS::SecretsManager-2024-09-16` come valore. Non è possibile utilizzare un parametro o una funzione per specificare un valore di trasformazione.

### Sintassi
<a name="aws-secretsmanager-syntax"></a>

Per dichiarare questa trasformazione nel CloudFormation modello, utilizzate la seguente sintassi:

#### JSON
<a name="aws-secretsmanager-syntax.json"></a>

```
{
  "Transform":"AWS::SecretsManager-2020-07-23",
  "Resources":{
    ...
  }
}
```

#### YAML
<a name="aws-secretsmanager-syntax.yaml"></a>

```
Transform: AWS::SecretsManager-2020-07-23
Resources:
  ...
```

La trasformazione `AWS::SecretsManager` è una dichiarazione autonoma senza parametri aggiuntivi. Invece, configuri la [HostedRotationLambda](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html)proprietà della [AWS::SecretsManager::RotationSchedule](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html)risorsa nel tuo modello di stack. La [HostedRotationLambda](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html)proprietà specifica la funzione Lambda per eseguire la rotazione dei segreti.

## Nuove funzionalità in `AWS::SecretsManager-2024-09-16`
<a name="aws-secretsmanager-new-version"></a>

L’ultima versione di trasformazione `AWS::SecretsManager` (`AWS::SecretsManager-2024-09-16`) introduce i seguenti miglioramenti:
+ **Aggiornamenti Lambda automatici**: quando aggiorni gli CloudFormation stack, le funzioni Lambda ora aggiornano automaticamente la configurazione di runtime e le dipendenze interne. Ciò garantisce l’utilizzo delle versioni più sicure e affidabili del codice che gestisce la rotazione segreta in Secrets Manager.
+ **Supporto per attributi aggiuntivi**: la nuova trasformazione supporta attributi di risorsa aggiuntivi per il tipo di risorsa `AWS::SecretsManager::RotationSchedule` quando viene utilizzata con la proprietà `HostedRotationLambda`, incluso l’attributo `DependsOn`.
**Nota**  
Entrambe le versioni supportano gli attributi `DeletionPolicy` e `UpdateReplacePolicy`.

Per saperne di più su questa nuova versione della `AWS::SecretsManager` trasformazione, consulta [Introducing a Enhanced Version of the Gestione dei segreti AWS Transform: AWS::SecretsManager-2024-09-16 sul Security](https://aws.amazon.com/blogs/security/introducing-an-enhanced-version-of-the-aws-secrets-manager-transform-awssecretsmanager-2024-09-16/) Blog. AWS 

## Esempi
<a name="aws-secretsmanager-examples"></a>

Gli esempi seguenti mostrano come utilizzare `AWS::SecretsManager` transform (`AWS::SecretsManager-2024-09-16`) e la [AWS::SecretsManager::RotationSchedule](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html)risorsa nel modello. In questo esempio, CloudFormation genererà automaticamente una funzione Lambda per la rotazione segreta di un singolo utente MySQL.

Il segreto è impostato per ruotare automaticamente ogni giorno a mezzanotte (UTC). Il processo di rotazione può richiedere fino a 2 ore. L’aggiornamento del programma di rotazione non avvia una rotazione immediata.

### JSON
<a name="aws-secretsmanager-example.json"></a>

```
{
  "AWSTemplateFormatVersion":"2010-09-09",
  "Transform":"AWS::SecretsManager-2024-09-16",
  "Resources":{

  ...

    "MySecretRotationSchedule":{
      "Type":"AWS::SecretsManager::RotationSchedule",
      "DependsOn":"logical name of AWS::SecretsManager::SecretTargetAttachment resource",
      "Properties":{
        "SecretId":{
          "Ref":"logical name of AWS::SecretsManager::Secret resource"
        },
        "HostedRotationLambda":{
          "RotationType":"MySQLSingleUser",
          "RotationLambdaName":"name of Lambda function to be created",
          "VpcSecurityGroupIds":{
            "Fn::GetAtt":[
              "logical name of AWS::EC2::SecurityGroup resource",
              "GroupId"
            ]
          },
          "VpcSubnetIds":{
            "Fn::Join":[
              ",",
              [
                {
                  "Ref":"logical name of primary subnet"
                },
                {
                  "Ref":"logical name of secondary subnet"
                }
              ]
            ]
          }
        },
        "RotationRules":{
          "ScheduleExpression":"cron(0 0 * * ? *)",
          "Duration":"2h"
        },
        "RotateImmediatelyOnUpdate":false
      }
    }
  }
}
```

### YAML
<a name="aws-secretsmanager-example.yaml"></a>

```
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::SecretsManager-2024-09-16
Resources:

  ...

  MySecretRotationSchedule:
    Type: AWS::SecretsManager::RotationSchedule
    DependsOn: logical name of AWS::SecretsManager::SecretTargetAttachment resource
    Properties:
      SecretId: !Ref logical name of AWS::SecretsManager::Secret resource
      HostedRotationLambda:
        RotationType: MySQLSingleUser
        RotationLambdaName: name of Lambda function to be created
        VpcSecurityGroupIds: !GetAtt logical name of AWS::EC2::SecurityGroup resource.GroupId
        VpcSubnetIds:
          Fn::Join:
          - ","
          - - Ref: logical name of primary subnet
            - Ref: logical name of secondary subnet
      RotationRules:
        ScheduleExpression: cron(0 0 * * ? *)
        Duration: 2h
      RotateImmediatelyOnUpdate: false
```

## Risorse correlate
<a name="aws-secretsmanager-related-resources"></a>

Per esempi completi di CloudFormation modelli che puoi utilizzare per impostare rotazioni segrete, consulta la sezione [Esempi](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html#aws-resource-secretsmanager-rotationschedule--examples) della risorsa. `AWS::SecretsManager::RotationSchedule`

*Per informazioni generali sull'uso delle macro, consulta [Eseguire l'elaborazione personalizzata sui CloudFormation modelli con le macro dei modelli](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html) nella Guida per l'AWS CloudFormation utente.*

# Trasformazione `AWS::Serverless`
<a name="transform-aws-serverless"></a>

Questo argomento descrive come utilizzare la `AWS::Serverless` trasformazione per elaborare un modello scritto nella sintassi AWS Serverless Application Model (AWS SAM) e trasformarlo in un modello conforme. CloudFormation 

Per ulteriori informazioni su come utilizzare la trasformazione `AWS::Serverless`, consulta [AWS SAM transform](https://github.com/aws/serverless-application-model) su GitHub.

## Utilizzo
<a name="aws-serverless-usage"></a>

Per utilizzare la `AWS::Serverless` trasformazione, è necessario dichiararla al livello più alto del modello. CloudFormation Non è possibile utilizzare `AWS::Serverless` come trasformazione incorporata in qualsiasi altra sezione del modello.

La dichiarazione deve utilizzare la stringa letterale `AWS::Serverless-2016-10-31` come valore. Non è possibile utilizzare un parametro o una funzione per specificare un valore di trasformazione.

### Sintassi
<a name="aws-serverless-syntax"></a>

Per dichiarare questa trasformazione nel CloudFormation modello, utilizzate la seguente sintassi:

#### JSON
<a name="aws-serverless-syntax.json"></a>

```
{
  "Transform":"AWS::Serverless-2016-10-31",
  "Resources":{
    ...
  }
}
```

#### YAML
<a name="aws-serverless-syntax.yaml"></a>

```
Transform: AWS::Serverless-2016-10-31
Resources:
  ...
```

La trasformazione `AWS::Serverless` è una dichiarazione autonoma senza parametri aggiuntivi.

## Esempi
<a name="aws-serverless-examples"></a>

L’esempio seguente mostra come utilizzare la trasformazione `AWS::Serverless` e la sintassi AWS SAM per semplificare la dichiarazione di una funzione Lambda e il relativo ruolo di esecuzione.

### JSON
<a name="aws-serverless-example.json"></a>

```
{
  "Transform":"AWS::Serverless-2016-10-31",
  "Resources":{
    "MyFunction":{
      "Type":"AWS::Serverless::Function",
      "Properties":{
        "Handler":"index.handler",
        "Runtime":"nodejs20.x",
        "CodeUri":"s3://amzn-s3-demo-bucket/MySourceCode.zip"
      }
    }
  }
}
```

### YAML
<a name="aws-serverless-example.yaml"></a>

```
Transform: AWS::Serverless-2016-10-31
Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: nodejs20.x
      CodeUri: 's3://amzn-s3-demo-bucket/MySourceCode.zip'
```

Quando si crea un set di modifiche dal modello, CloudFormation espande la AWS SAM sintassi, come definita dalla trasformazione. Il modello elaborato espande la risorsa `AWS::Serverless::Function`, dichiarando una funzione Lambda e un ruolo di esecuzione.

```
{
  "Resources": {
    "MyFunction": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Handler": "index.handler",
        "Code": {
          "S3Bucket": "amzn-s3-demo-bucket",
          "S3Key": "MySourceCode.zip"
        },
        "Role": {
          "Fn::GetAtt": ["MyFunctionRole", "Arn"]
        },
        "Runtime": "nodejs20.x"
      }
    },
    "MyFunctionRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "ManagedPolicyArns": ["arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"],
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",		 	 	 
          "Statement": [{
            "Action": ["sts:AssumeRole"],
            "Effect": "Allow",
            "Principal": {
              "Service": ["lambda.amazonaws.com"]
            }
          }]
        }
      }
    }
  }
}
```

## Uso di `AWS::Serverless` con `AWS::LanguageExtensions`
<a name="aws-serverless-language-extensions"></a>

Quando si utilizzano entrambe le trasformazioni `AWS::Serverless` e `AWS::LanguageExtensions`, il riferimento a risorse come `AWS::ApiGateway::Stage` richiede una sintassi speciale quando il nome dello stadio viene passato come valore `NoEcho` senza parametro.

Invece di utilizzare la AWS SAM sintassi per il riferimento (`MyApi.Stage`), utilizzatelo per generare il riferimento `Fn::Sub` all'ID logico. Ad esempio, `"Ref": {"Fn::Sub": "${MyApi}${StageName}Stage"}`. Questo crea l’ID logico corretto durante il runtime.

Il motivo di questo formato speciale è che queste due trasformazioni gestiscono i valori in modo diverso:
+ `AWS::LanguageExtensions` risolve le funzioni intrinseche ai loro valori effettivi.
+ `AWS::Serverless`crea logiche diverse IDs a seconda che riceva un valore statico o una funzione intrinseca.

## Risorse correlate
<a name="aws-serverless-related-resources"></a>

[Per ulteriori informazioni sulle applicazioni serverless e sul Serverless Application Model AWS (AWS SAM), consulta la Developer Guide.AWS Serverless Application Model](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html)

Per i tipi di risorse e proprietà specifici AWS SAM, consulta [AWS SAM le risorse e le proprietà nella Guida](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-specification-resources-and-properties.html) per gli *AWS Serverless Application Model sviluppatori*.

Per informazioni generali sull'uso delle macro, consulta [Eseguire l'elaborazione personalizzata sui CloudFormation modelli con le macro dei modelli nella Guida](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html) per l'*AWS CloudFormation utente*.

# Trasformazione `AWS::ServiceCatalog`
<a name="transform-aws-servicecatalog"></a>

Questo argomento descrive come utilizzare la `AWS::ServiceCatalog` trasformazione per fare riferimento agli output di un prodotto AWS Service Catalog predisposto esistente nel modello. CloudFormation

## Utilizzo
<a name="aws-servicecatalog-usage"></a>

Per utilizzare la `AWS::ServiceCatalog` trasformazione, è necessario dichiararla al livello più alto del modello. CloudFormation Non è possibile utilizzare `AWS::ServiceCatalog` come trasformazione incorporata in qualsiasi altra sezione del modello.

Se è necessario un valore di output, occorre specificare il nome del prodotto sottoposto a provisioning e il nome della chiave di output.

È possibile fare riferimento a più prodotti con provisioning e nomi chiave nel modello, un massimo di 20 per modello. Durante il provisioning, la trasformazione recupera il valore da ogni prodotto e chiave con provisioning di riferimento, sostituendo il valore di output nel modello CloudFormation .

La dichiarazione deve utilizzare la stringa letterale `AWS::ServiceCatalog` come valore. Non è possibile utilizzare un parametro o una funzione per specificare un valore di trasformazione.

### Sintassi
<a name="aws-servicecatalog-syntax"></a>

Per dichiarare questa trasformazione nel CloudFormation modello, utilizzate la seguente sintassi:

#### JSON
<a name="aws-servicecatalog-syntax.json"></a>

```
{
  "Transform":"AWS::ServiceCatalog",
  "Resources":{
    ...
  }
}
```

#### YAML
<a name="aws-servicecatalog-syntax.yaml"></a>

```
Transform: AWS::ServiceCatalog
Resources:
  ...
```

La trasformazione `AWS::ServiceCatalog` è una dichiarazione autonoma senza parametri aggiuntivi.

## Esempi
<a name="aws-servicecatalog-examples"></a>

Gli esempi seguenti mostrano come è possibile fare riferimento agli output di un prodotto esistente fornito da Service Catalog in un CloudFormation modello.

In questi esempi, `SampleProvisionedProduct` è un prodotto precedentemente creato con provisioning. `SampleOutputKey` è una chiave di output di questo prodotto sottoposto a provisioning.

### JSON
<a name="aws-servicecatalog-example.json.json"></a>

Questo esempio è una versione funzionante.

Le versioni del modello che non integrano il valore come stringa letterale avranno esito negativo.

```
{
  "AWSTemplateFormatVersion":"2010-09-09",
  "Transform":"AWS::ServiceCatalog",
  "Resources":{
    "ExampleParameter":{
      "Type":"AWS::SSM::Parameter",
      "Properties":{
        "Type":"String",
        "Value":"[[servicecatalog:provisionedproduct:SampleProvisionedProduct:SampleOutputKey]]"
      }
    }
  }
}
```

### YAML
<a name="aws-servicecatalog-example.yaml"></a>

Gli esempi 1–4 sono modelli validi. Negli esempi 1 e 2, la trasformazione e il valore sono stringhe letterali.

L’esempio 5 non è un modello valido. Il valore deve essere integrato in una stringa `'` o `"` o `>-`. In caso contrario, l’utente riceve un errore.

```
// Example 1 
AWSTemplateFormatVersion: 2010-09-09
Transform: 'AWS::ServiceCatalog'
Resources:
  ExampleParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Value: '[[servicecatalog:provisionedproduct:SampleProvisionedProduct:SampleOutputKey]]'
     
// Example 2
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::ServiceCatalog
Resources:
  ExampleParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Value: '[[servicecatalog:provisionedproduct:SampleProvisionedProduct:SampleOutputKey]]'
     
     
// Example 3 
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::ServiceCatalog
Resources:
  ExampleParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Value: "[[servicecatalog:provisionedproduct:SampleProvisionedProduct:SampleOutputKey]]"
     
     
// Example 4 
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::ServiceCatalog
Resources:
  ExampleParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Value: >-
        [[servicecatalog:provisionedproduct:SampleProvisionedProduct:SampleOutputKey]]
     
     
// Example 5 
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::ServiceCatalog
Resources:
  ExampleParameter2:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Value: [[servicecatalog:provisionedproduct:SSMProductProvisionedProduct:SampleOutputKey]]
```