

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

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