

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

# CloudFormation riferimento agli script di supporto
<a name="cfn-helper-scripts-reference"></a>

CloudFormation fornisce i seguenti script di supporto in Python che puoi usare per installare software e avviare servizi su un'istanza Amazon EC2 che crei come parte del tuo stack:
+  [cfn-init](cfn-init.md): utilizzalo per recuperare e interpretare i metadati delle risorse, installare pacchetti, creare file e avviare i servizi.
+  [cfn-signal](cfn-signal.md): consente di inviare il segnale con `CreationPolicy` o `WaitCondition`, in modo da sincronizzare altre risorse nello stack quando la risorsa o l’applicazione del prerequisito è pronta.
+  [cfn-get-metadata](cfn-get-metadata.md): utilizzalo per recuperare i metadati per una risorsa o un percorso di una chiave specifica.
+  [cfn-hup](cfn-hup.md): utilizzalo per verificare la presenza di aggiornamenti dei metadati ed eseguire gli hook personalizzati quando le modifiche vengono rilevate.

Puoi chiamare gli script direttamente dal tuo modello. Lo script funziona in combinazione con i metadati delle risorse definiti nello stesso modello. Gli script eseguiti sull’istanza Amazon EC2 durante il processo di creazione dello stack.

**Nota**  
Gli script non vengono eseguiti per impostazione predefinita. Devi includere le chiamate al modello per l’esecuzione di script helper specifici.

**Topics**
+ [Immagini AMI Amazon Linux](#cfn-helper-scripts-reference-amazon-amis)
+ [Download di pacchetti per altre piattaforme](#cfn-helper-scripts-reference-downloads)
+ [Autorizzazioni per gli script helper](#cfn-helper-scripts-reference-permissions)
+ [Utilizzo della versione più recente](#cfn-helper-scripts-reference-latest-version)
+ [cfn-init](cfn-init.md)
+ [cfn-signal](cfn-signal.md)
+ [cfn-get-metadata](cfn-get-metadata.md)
+ [cfn-hup](cfn-hup.md)

## Immagini AMI Amazon Linux
<a name="cfn-helper-scripts-reference-amazon-amis"></a>

Gli script di CloudFormation supporto sono preinstallati nelle immagini AMI Amazon Linux su cui sono installati script di bootstrap.
+ Sulla versione più recente di AMI Amazon Linux, gli script vengono installati in `/opt/aws/bin`.
+ Nelle precedenti versioni di AMI Amazon Linux, il pacchetto `aws-cfn-bootstrap` che contiene gli script si trova nel repository Yum.

**Nota**  
Gli script di supporto sono preinstallati nelle versioni più recenti dell'AMI Amazon Linux e non su Optimized AMIs, come ECS Optimized Image che utilizza Amazon Linux come base.

## Download di pacchetti per altre piattaforme
<a name="cfn-helper-scripts-reference-downloads"></a>

<a name="cfn-helper-scripts-reference-downloads"></a>Per Linux/Unix le distribuzioni diverse dalle immagini AMI Amazon Linux e per Microsoft Windows (2008 o versione successiva), puoi scaricare il `aws-cfn-bootstrap` pacchetto.

**Nota**  
La versione 2.0–1 e versioni successive degli script helper supportano Python 3.4 e versioni successive. Se hai bisogno di script di supporto che supportino una versione precedente di Python, vedi [Cronologia delle versioni per Helper CloudFormation ](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/releasehistory-aws-cfn-bootstrap.html#releasehistory-aws-cfn-bootstrap-v1) Scripts 1.4.


| Formato del file | Scarica il URL | 
| --- | --- | 
|  TAR.GZ  |  [ https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-py3-latest.tar.gz](https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-py3-latest.tar.gz) Utilizza Pip di Python per installare `tar.gz`. Per completare l’installazione per Ubuntu, devi creare un collegamento simbolico: `ln -s /<path-to-extracted-tar>/aws-cfn-bootstrap-2.0/init/ubuntu/cfn-hup /etc/init.d/cfn-hup`  | 
|  ZIP  |  [ https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-py3-latest.zip](https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-py3-latest.zip)  | 
|  EXE  |  [Windows a 32 bit: 3-latest.exe https://s3.amazonaws.com/cloudformation-examples/ aws-cfn-bootstrap-py](https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-py3-latest.exe)  [Windows a 64 bit: 3-win64-latest.exe https://s3.amazonaws.com/cloudformation-examples/ aws-cfn-bootstrap-py](https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-py3-win64-latest.exe)  | 

## Autorizzazioni per gli script helper
<a name="cfn-helper-scripts-reference-permissions"></a>

Per impostazione predefinita, gli script helper non richiedono credenziali, perciò non è necessario utilizzare le opzioni `--access-key`, `--secret-key`,`--role` o `--credential-file`. Tuttavia, se non viene specificata alcuna credenziale, CloudFormation verifica la sottoscrizione allo stack e limita l'ambito della chiamata allo stack a cui l'istanza appartiene.

Se scegli di specificare un’opzione, è consigliabile specificare solo una delle seguenti:
+ `--role`
+ `--credential-file`
+ `--access-key` insieme a `--secret-key`

Se specifichi un’opzione, ricorda le autorizzazioni richieste dai vari script helper:
+ `cfn-signal` richiede `cloudformation:SignalResource`
+ Tutti gli altri script helper richiedono `cloudformation:DescribeStackResource`

Per ulteriori informazioni sull'utilizzo di azioni CloudFormation specifiche e chiavi di contesto delle condizioni nelle politiche IAM, consulta [Control CloudFormation access with AWS Identity and Access Management](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/control-access-with-iam.html) nella *Guida per l'AWS CloudFormation utente*.

## Utilizzo della versione più recente
<a name="cfn-helper-scripts-reference-latest-version"></a>

Gli script helper vengono aggiornati periodicamente. Se utilizzi gli script helper, assicurati che le istanze siano lanciate utilizzando la versione più recente degli script:
+ Includi il comando seguente nella proprietà `UserData` del modello prima di chiamare gli script. Questo comando garantisce l’utilizzo della versione più recente:

  `yum install -y aws-cfn-bootstrap`
+ Se non includi il comando `yum install` e utilizzi gli script `cfn-init`, `cfn-signal` o `cfn-get-metadata`, dovrai aggiornare manualmente gli script in ciascuna istanza Linux Amazon EC2 utilizzando questo comando:

  `sudo yum install -y aws-cfn-bootstrap`
**Nota**  
L’esecuzione di `sudo yum install -y aws-cfn-bootstrap` consente di installare gli script helper dal repository `yum`.
+ Se non includi il comando `yum install` e utilizzi lo script `cfn-hup`, allora dovrai aggiornare manualmente lo script in ciascuna istanza Linux Amazon EC2 utilizzando questi comandi:

  `sudo yum install -y aws-cfn-bootstrap`

  `sudo /sbin/service cfn-hup restart`
**Nota**  
L’esecuzione di `sudo yum install -y aws-cfn-bootstrap` consente di installare gli script helper dal repository `yum`.
+ Se utilizzi il codice sorgente per gli script in modo che funzionino con un’altra versione di Linux o un’altra piattaforma e hai creato l’archivio di trust del certificato, dovrai anche mantenere l’archivio aggiornato.

Per la cronologia della versione del pacchetto `aws-cfn-bootstrap`, consulta [Cronologia delle versioni per gli CloudFormation script di supporto](releasehistory-aws-cfn-bootstrap.md).

# cfn-init
<a name="cfn-init"></a>

In un CloudFormation modello, puoi utilizzarlo `AWS::CloudFormation::Init` all'interno della `Metadata` sezione di una risorsa Amazon EC2 per definire le attività di inizializzazione. Per ulteriori informazioni, consulta [`AWS::CloudFormation::Init`](aws-resource-init.md).

Lo script helper `cfn-init` legge i metadati del modello dalla chiave `AWS::CloudFormation::Init` e agisce di conseguenza per:
+ Recupera e analizza i metadati da CloudFormation
+ Installa i pacchetti
+ Scrivere file su disco
+ Servizi Enable/disable and start/stop

Lo script helper `cfn-init` viene in genere eseguito dai dati utente di un’istanza Amazon EC2 o di un modello di lancio.

Se non conosci l’utilizzo degli script di supporto, ti consigliamo di completare prima il tutorial [Deploying applications on Amazon EC2](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/deploying.applications.html) nella *Guida per l’utente di AWS CloudFormation *.

**Topics**
+ [Sintassi](#cfn-init-Syntax)
+ [Opzioni](#cfn-init-options)
+ [Esempi](#cfn-init-examples)
+ [Risorse correlate](#cfn-init-related-resources)

**Nota**  
Se utilizzi `cfn-init` per aggiornare un file esistente, crea una copia di backup del file originale nella stessa directory con un’estensione bak. Ad esempio, se aggiorni `/path/to/file_name`, l’operazione genera due file: `/path/to/file_name.bak` racchiude i contenuti del file originale e `/path/to/file_name` racchiude i contenuti aggiornati.

## Sintassi
<a name="cfn-init-Syntax"></a>

```
cfn-init --stack|-s stack.name.or.id \
         --resource|-r logical.resource.id \
         --region region \
         --access-key access.key \
         --secret-key secret.key \
         --role rolename \
         --credential-file|-f credential.file \
         --configsets|-c config.sets \
         --url|-u service.url \
         --http-proxy HTTP.proxy \
         --https-proxy HTTPS.proxy \
         --verbose|-v
```

**Nota**  
`cfn-init` non richiede credenziali, pertanto non è necessario utilizzare le opzioni `--access-key`, `--secret-key`, `--role` o `--credential-file`. Tuttavia, se non viene specificata alcuna credenziale, CloudFormation verifica la sottoscrizione allo stack e limita l'ambito della chiamata allo stack a cui l'istanza appartiene. Per ulteriori informazioni, consulta [Autorizzazioni per gli script helper](cfn-helper-scripts-reference.md#cfn-helper-scripts-reference-permissions).

## Opzioni
<a name="cfn-init-options"></a>


| Nome | Description | Richiesto | 
| --- | --- | --- | 
|   `-s, --stack`   |  Nome dello stack o ID stack. ▬*Tipo:* stringa *Default*: nessuna *Esempio*: `--stack { "Ref" : "AWS::StackName" },`  |  Sì  | 
|   `-r, --resource `   |  L’ID di risorsa logica della risorsa che contiene i metadati. ▬*Tipo:* stringa *Esempio*: `--resource WebServerHost`  |  Sì  | 
|   `--region`   |  L'endpoint CloudFormation regionale da utilizzare. ▬*Tipo:* stringa *Default*: `us-east-1` *Esempio*: `--region ", { "Ref" : "AWS::Region" },`  |  No  | 
|   `--access-key`   |  AWS chiave di accesso per un account con autorizzazione a chiamare`DescribeStackResource`. CloudFormation Il parametro del file delle credenziali sostituisce questo parametro. ▬*Tipo:* stringa  |  No  | 
|   `--secret-key`   |  AWS chiave di accesso segreta che corrisponde alla chiave di AWS accesso specificata. ▬*Tipo:* stringa  |  No  | 
|   `--role`   |  Il nome di un ruolo IAM associato all’istanza. ▬*Tipo:* stringa Condizione: il parametro del file delle credenziali sostituisce questo parametro.  |  No  | 
|   `-f, --credential-file`   |  Un file che contiene sia una chiave di accesso segreta sia una chiave di accesso. Il parametro del file delle credenziali sostituisce i parametri di ruolo, chiave di accesso e chiave segreta. ▬*Tipo:* stringa  |  No  | 
|   `-c, --configsets`   |  Un elenco separato da virgole di set di configurazione da eseguire (in ordine). ▬*Tipo:* stringa *Default*: `default`  |  No  | 
|   `-u, --url`   |  L' CloudFormation endpoint da usare. ▬*Tipo:* stringa  |  No  | 
|  `--http-proxy`  |  Un proxy HTTP (non SSL). Utilizzare il seguente formato: `http://user:password@host:port` ▬*Tipo:* stringa  |  No  | 
|  `--https-proxy`  |  Un proxy HTTPS. Utilizzare il seguente formato: `https://user:password@host:port` ▬*Tipo:* stringa  |  No  | 
|  `-v, --verbose`  |  Output verboso. Questa funzione è utile per il debug dei casi in cui `cfn-init` non si inizializza.  Per eseguire il debug di eventi di inizializzazione, devi attivare `DisableRollback`. Puoi quindi utilizzare SSH nella console e leggere i log in `/var/log/cfn-init.log`. Per ulteriori informazioni, consulta [Choose how to handle failures when provisioning resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stack-failure-options.html) nella *Guida per l’utente di AWS CloudFormation *.   |  No  | 
| `-h, --help` | Mostra il messaggio di aiuto ed esce. |  No | 

## Esempi
<a name="cfn-init-examples"></a>

### Esempi Amazon Linux
<a name="w2aac32c27c21b3"></a>

I seguenti esempi mostrano le proprietà `UserData` di un’istanza EC2, che esegue il set di configurazione `InstallAndRun` associato alla risorsa `WebServerInstance`.

Per includere la versione più recente, aggiungi `yum install -y aws-cfn-bootstrap` a `UserData`.

#### JSON
<a name="cfn-init-example.json"></a>

Proprietà `UserData` utilizzando la funzione intrinseca `Fn::Join`.

```
{
    "UserData": {
        "Fn::Base64": {
            "Fn::Join": [
                "",
                [
                    "#!/bin/bash -xe\n",
                    "",
                    "yum install -y aws-cfn-bootstrap",
                    "/opt/aws/bin/cfn-init -v ",
                    "         --stack ",
                    {
                        "Ref": "AWS::StackName"
                    },
                    "         --resource WebServerInstance ",
                    "         --configsets InstallAndRun ",
                    "         --region ",
                    {
                        "Ref": "AWS::Region"
                    },
                    "\n"
                ]
            ]
        }
    }
}
```

#### YAML
<a name="cfn-init-example.yaml"></a>

Proprietà `UserData` utilizzando la funzione intrinseca `Fn::Sub`.

```
UserData:
  Fn::Base64: !Sub |
    #!/bin/bash -xe
    yum update -y aws-cfn-bootstrap
    # Install the files and packages from the metadata
    /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource WebServerInstance --configsets InstallAndRun --region ${AWS::Region}
```

## Risorse correlate
<a name="cfn-init-related-resources"></a>

Per un tutorial con un modello di esempio, consulta [Deploying applications on Amazon EC2](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/deploying.applications.html) nella *Guida per l’utente di AWS CloudFormation *.

*Per un Windows esempio, consulta gli [ CloudFormation stack Windows basati su Bootstrap](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-windows-stacks-bootstrapping.html) nella Guida per l'utente.AWS CloudFormation *

Puoi anche visitare il nostro GitHub repository per scaricare i [modelli di esempio](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html#sample-templates) che utilizziamo`cfn-init`, inclusi i seguenti modelli.
+  [InstanceWithCfnInit.yaml](https://github.com/aws-cloudformation/aws-cloudformation-templates/blob/main/EC2/InstanceWithCfnInit.yaml) 
+  [AutoScalingRollingUpdates.yaml](https://github.com/aws-cloudformation/aws-cloudformation-templates/blob/main/AutoScaling/AutoScalingRollingUpdates.yaml) 

Ad esempio, i modelli di stack LAMP che utilizzano`cfn-init`, vedi [ec2-lamp-server](https://github.com/aws-samples/ec2-lamp-server) sul sito web. GitHub 

# cfn-signal
<a name="cfn-signal"></a>

Lo script di `cfn-signal` supporto segnala se CloudFormation le istanze Amazon EC2 sono state create o aggiornate con successo. Se installi e configuri applicazioni software sulle istanze, puoi segnalare CloudFormation quando tali applicazioni software sono pronte.

Usa lo script `cfn-signal` in combinazione con [Attributo `CreationPolicy`](aws-attribute-creationpolicy.md) o [Attributo `UpdatePolicy`](aws-attribute-updatepolicy.md) con `WaitOnResourceSignals` per i gruppi di Amazon EC2 Auto Scaling. Quando CloudFormation crea o aggiorna risorse con tali policy, sospende il lavoro sullo stack finché la risorsa non riceve il numero di segnali richiesto o fino al superamento del periodo di timeout. Per ogni segnale valido che CloudFormation riceve, pubblica i segnali negli eventi dello stack in modo da consentire all'utente di tenere traccia di ogni segnale.

**Topics**
+ [Sintassi per la segnalazione della risorsa (consigliata)](#w2aac32c29b9)
+ [Sintassi per l’uso con handle di condizione di attesa](#cfn-signal-Syntaxwaitcondition)
+ [Opzioni](#cfn-signal-options)
+ [Esempi](#cfn-signal-examples)
+ [Risorse correlate](#cfn-signal-related-resources)

## Sintassi per la segnalazione della risorsa (consigliata)
<a name="w2aac32c29b9"></a>

Se vuoi segnalare CloudFormation le risorse, usa la seguente sintassi.

```
cfn-signal --success|-s signal.to.send \
        --access-key access.key \
        --credential-file|-f credential.file \
        --exit-code|-e exit.code \
        --http-proxy HTTP.proxy \
        --https-proxy HTTPS.proxy \
        --id|-i unique.id \
        --region AWS.region \
        --resource resource.logical.ID \
        --role IAM.role.name \
        --secret-key secret.key \
        --stack stack.name.or.stack.ID \
        --url CloudFormation.endpoint
```

**Nota**  
`cfn-signal` non richiede credenziali, pertanto non è necessario utilizzare le opzioni `--access-key`, `--secret-key`, `--role` o `--credential-file`. Tuttavia, se non viene specificata alcuna credenziale, CloudFormation verifica la sottoscrizione allo stack e limita l'ambito della chiamata allo stack a cui l'istanza appartiene. Per ulteriori informazioni, consulta [Autorizzazioni per gli script helper](cfn-helper-scripts-reference.md#cfn-helper-scripts-reference-permissions).

## Sintassi per l’uso con handle di condizione di attesa
<a name="cfn-signal-Syntaxwaitcondition"></a>

Se desideri segnalare un handle di condizione di attesa, utilizza la sintassi seguente.

```
cfn-signal --success|-s signal.to.send \
        --reason|-r resource.status.reason \
        --data|-d data \
        --id|-i unique.id \
        --exit-code|-e exit.code \
        waitconditionhandle.url
```

## Opzioni
<a name="cfn-signal-options"></a>

Le opzioni che puoi utilizzare dipendono dalla segnalazione di una policy di creazione o di una condizione di attesa. Alcune opzioni che si applicano a una policy di creazione potrebbero non essere applicabili a una condizione di attesa.


| Nome | Description | Richiesto | 
| --- | --- | --- | 
|  `--access-key` (solo per la segnalazione della risorsa)  |  AWS chiave di accesso per un account con autorizzazione a chiamare l' CloudFormation`SignalResource `API. Il parametro del file delle credenziali sostituisce questo parametro. ▬*Tipo:* stringa  |  No  | 
|  `-d, --data` (solo per l’handle di condizione di attesa)  |  Dati per l’invio con `waitConditionHandle`. L’impostazione predefinita è vuoto. ▬*Tipo:* stringa *Default*: vuoto  |  No  | 
|  `-e, --exit-code`   |  Il codice di errore da parte di un processo che può essere utilizzato per determinare un esito positivo o negativo. Se specificato, l’opzione `--success` viene ignorata. ▬*Tipo:* stringa *Esempi*: `-e $?` (per Linux), `-e %ERRORLEVEL%` (per Windows cmd.exe) e `-e $lastexitcode` (per Windows PowerShell).  |  No  | 
|  `-f, --credential-file` (solo per la segnalazione della risorsa)  |  Un file che contiene sia una chiave di accesso segreta sia una chiave di accesso. Il parametro del file delle credenziali sostituisce i parametri di ruolo, chiave di accesso e chiave segreta. ▬*Tipo:* stringa  |  No  | 
|  `--http-proxy`  |  Un proxy HTTP (non SSL). Utilizzare il seguente formato: `http://user:password@host:port` ▬*Tipo:* stringa  |  No  | 
|  `--https-proxy`  |  Un proxy HTTPS. Utilizzare il seguente formato: `https://user:password@host:port` ▬*Tipo:* stringa  |  No  | 
|  `-i, --id`  |  ID univoco per l’invio. ▬*Tipo:* stringa *Default*: l’ID dell’istanza Amazon EC2. Se l’ID non può essere risolto, viene restituito il nome di dominio completo della macchina.  |  No  | 
|  `-r, --reason ` (solo per l’handle di condizione di attesa)  |  Un motivo dello stato per l’evento della risorsa (attualmente utilizzato solo in caso di errore) - viene impostato su "Configurazione non riuscita" se il successo è false. ▬*Tipo:* stringa  |  No  | 
| --region (solo per la segnalazione della risorsa) |  L'endpoint CloudFormation regionale da utilizzare. ▬*Tipo:* stringa *Default*: `us-east-1`  |  No  | 
| --resource (solo per la segnalazione della risorsa) |  L’ID logico della risorsa che contiene la policy della creazione che vuoi segnalare. ▬*Tipo:* stringa  |  Sì  | 
|  `--role` (solo per la segnalazione della risorsa)  |  Il nome di un ruolo IAM associato all’istanza. ▬*Tipo:* stringa Condizione: il parametro del file delle credenziali sostituisce questo parametro.  |  No  | 
|  `-s, --success`   |  Se è true, il segnale è `SUCCESS`, altrimenti è `FAILURE`. *Tipo*: Booleano *Default*: `true`  |  No  | 
|  `--secret-key` (solo per la segnalazione della risorsa)  |  AWS chiave di accesso segreta che corrisponde alla chiave di AWS accesso specificata. ▬*Tipo:* stringa  |  No  | 
|  `--stack` (solo per la segnalazione della risorsa)  |  Il nome dello stack o l’ID dello stack che contiene la risorsa da segnalare. ▬*Tipo:* stringa  |  Sì  | 
| -u, --url (solo per la segnalazione della risorsa) |  L' CloudFormation endpoint da usare. ▬*Tipo:* stringa  |  No  | 
|  `waitconditionhandle.url` (solo per l’handle di condizione di attesa)  |  Un URL prefirmato che puoi utilizzare per segnalare l’esito positivo o negativo a una `WaitCondition` associata. ▬*Tipo:* stringa  |  Sì  | 

## Esempi
<a name="cfn-signal-examples"></a>

### Esempio Amazon Linux
<a name="w2aac32c29c15b3"></a>

Un modello di utilizzo comune è utilizzare `cfn-init` e `cfn-signal` insieme. La chiamata `cfn-signal` utilizza lo stato restituito della chiamata a `cfn-init` (tramite il costrutto shell \$1?). Se l’applicazione non è in grado di installarsi, l’istanza non è in grado di creare e lo stack sarà sottoposto a rollback.

#### JSON
<a name="cfn-signal-example.json"></a>

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "Simple EC2 instance",
    "Resources": {
        "MyInstance": {
            "Type": "AWS::EC2::Instance",
            "Metadata": {
                "AWS::CloudFormation::Init": {
                    "config": {
                        "files": {
                            "/tmp/test.txt": {
                                "content": "Hello world!",
                                "mode": "000755",
                                "owner": "root",
                                "group": "root"
                            }
                        }
                    }
                }
            },
            "Properties": {
                "ImageId": "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}",
                "InstanceType": "t2.micro",
                "UserData": {
                    "Fn::Base64": {
                        "Fn::Join": [
                            "",
                            [
                                "#!/bin/bash -x\n",
                                "# Install the files and packages from the metadata\n",
                                "yum install -y aws-cfn-bootstrap",
                                "\n",
                                "/opt/aws/bin/cfn-init -v ",
                                "         --stack ",
                                {
                                    "Ref": "AWS::StackName"
                                },
                                "         --resource MyInstance ",
                                "         --region ",
                                {
                                    "Ref": "AWS::Region"
                                },
                                "\n",
                                "# Signal the status from cfn-init\n",
                                "/opt/aws/bin/cfn-signal -e $? ",
                                "         --stack ",
                                {
                                    "Ref": "AWS::StackName"
                                },
                                "         --resource MyInstance ",
                                "         --region ",
                                {
                                    "Ref": "AWS::Region"
                                },
                                "\n"
                            ]
                        ]
                    }
                }
            },
            "CreationPolicy": {
                "ResourceSignal": {
                    "Timeout": "PT5M"
                }
            }
        }
    }
}
```

#### YAML
<a name="cfn-signal-example.yaml"></a>

```
AWSTemplateFormatVersion: 2010-09-09
Description: Simple EC2 instance
Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Metadata:
      'AWS::CloudFormation::Init':
        config:
          files:
            /tmp/test.txt:
              content: Hello world!
              mode: '000755'
              owner: root
              group: root
    Properties:
      ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}'
      InstanceType: t2.micro
      UserData:
        Fn::Base64: !Sub |
          #!/bin/bash -x
          # Install the files and packages from the metadata
          yum install -y aws-cfn-bootstrap
          /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}
          # Signal the status from cfn-init
          /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}
    CreationPolicy:
      ResourceSignal:
        Timeout: PT5M
```

## Risorse correlate
<a name="cfn-signal-related-resources"></a>

Puoi anche visitare il nostro GitHub repository per scaricare i [modelli di esempio](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html#sample-templates) che utilizziamo`cfn-signal`, inclusi i seguenti modelli.
+  [InstanceWithCfnInit.yaml](https://github.com/aws-cloudformation/aws-cloudformation-templates/blob/main/EC2/InstanceWithCfnInit.yaml) 
+  [AutoScalingRollingUpdates.yaml](https://github.com/aws-cloudformation/aws-cloudformation-templates/blob/main/AutoScaling/AutoScalingRollingUpdates.yaml) 

# cfn-get-metadata
<a name="cfn-get-metadata"></a>

È possibile utilizzare lo script di `cfn-get-metadata` supporto per recuperare un blocco di metadati CloudFormation e stamparlo sullo standard output. Puoi anche stampare una sottostruttura del blocco di metadati se specifichi una chiave. Tuttavia, solo le chiavi di primo livello sono supportate.

**Topics**
+ [Sintassi](#cfn-get-metadata-Syntax)
+ [Opzioni](#cfn-get-metadata-options)

## Sintassi
<a name="cfn-get-metadata-Syntax"></a>

```
cfn-get-metadata --access-key access.key \
                 --secret-key secret.key \
                 --credential-file|f credential.file \
                 --key|k key \
                 --stack|-s stack.name.or.id \
                 --resource|-r logical.resource.id \
                 --role IAM.role.name \
                 --url|-u service.url \
                 --region region
```

**Nota**  
`cfn-get-metadata` non richiede credenziali, pertanto non è necessario utilizzare le opzioni `--access-key`, `--secret-key`, `--role` o `--credential-file`. Tuttavia, se non viene specificata alcuna credenziale, CloudFormation verifica la sottoscrizione allo stack e limita l'ambito della chiamata allo stack a cui l'istanza appartiene. Per ulteriori informazioni, consulta [Autorizzazioni per gli script helper](cfn-helper-scripts-reference.md#cfn-helper-scripts-reference-permissions).

## Opzioni
<a name="cfn-get-metadata-options"></a>


| Nome | Description | Richiesto | 
| --- | --- | --- | 
|   `-k, --key`   |  Per una coppia chiave-valore, restituisce il nome della chiave per il valore specificato. ▬*Tipo:* stringa *Esempio*: per `{ "Key1": "SampleKey1", "Key2": "SampleKey2" }`, `cfn-get-metadata -k Key2` restituisce `SampleKey2`.  |  No  | 
|   `-s, --stack`   |  Nome dello stack. ▬*Tipo:* stringa *Default*: nessuna *Esempio*: `-s { "Ref" : "AWS::StackName" },`  |  Sì  | 
|   `-r, --resource`   |  L’ID di risorsa logica della risorsa che contiene i metadati. ▬*Tipo:* stringa *Esempio*: `-r WebServerHost`  |  Sì  | 
|  `--role` (solo per la segnalazione della risorsa)  |  Il nome di un ruolo IAM associato all’istanza. ▬*Tipo:* stringa Condizione: il parametro del file delle credenziali sostituisce questo parametro.  |  No  | 
|   `--region`   |  La regione da cui derivare l'URL. CloudFormation  ▬*Tipo:* stringa *Default*: nessuna *Esempio*: `--region ", { "Ref" : "AWS::Region" },`  |  No  | 
|   `--access-key`   |  AWS Chiave di accesso per un account con autorizzazione DescribeStackResource a CloudFormation chiamare. ▬*Tipo:* stringa Condizione: il parametro del file delle credenziali sostituisce questo parametro.  |  Condizionale  | 
|   `--secret-key`   |  AWS Chiave segreta che corrisponde alla chiave di AWS accesso specificata. ▬*Tipo:* stringa Condizione: il parametro del file delle credenziali sostituisce questo parametro.  |  Condizionale  | 
|   `-f, --credential-file`   |  Un file che contiene sia una chiave segreta sia una chiave di accesso. ▬*Tipo:* stringa Condizione: il parametro del file delle credenziali sostituisce i parametri di chiave di accesso e chiave segreta.  |  Condizionale  | 

# cfn-hup
<a name="cfn-hup"></a>

L’helper `cfn-hup` è un daemon che rileva modifiche nei metadati della risorsa ed esegue azioni specificate dall’utente quando viene rilevata una modifica. In questo modo puoi effettuare gli aggiornamenti della configurazione sulle istanze Amazon EC2 in esecuzione tramite l’operazione API `UpdateStack`.

Per ulteriori informazioni, consulta il tutorial [Aggiornamento di uno CloudFormation stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/updating.stacks.walkthrough.html) nella *Guida per l'AWS CloudFormation utente*.

**Topics**
+ [Sintassi](#cfn-hup-Syntax)
+ [Opzioni](#cfn-hup-options)
+ [File di configurazione cfn-hup.conf](#cfn-hup-config-file)
+ [File di configurazione `hooks.conf`](#cfn-hup-hook-file)
+ [`hooks.d`directory](#cfn-hup-hooks-dir)
+ [Esempi](#cfn-hup-examples)
+ [Risorse correlate](#cfn-hup-related-resources)

## Sintassi
<a name="cfn-hup-Syntax"></a>

```
cfn-hup --config|-c config.dir \
        --no-daemon \
        --verbose|-v
```

## Opzioni
<a name="cfn-hup-options"></a>


| Nome | Description | Richiesto | 
| --- | --- | --- | 
|   `--config\|-c config.dir`   |  Specifica il percorso in cui lo script `cfn-hup` cerca le directory `cfn-hup.conf` e `hooks.d`. In Windows, il percorso predefinito è `system_drive\cfn`. In Linux, il percorso predefinito è `/etc/cfn`.  |  No  | 
|   `--no-daemon`   |  Specifica questa opzione per eseguire lo script `cfn-hup` una volta e uscire.  |  No  | 
|   `-v, --verbose `   |  Specifica questa opzione per utilizzare la modalità dettagliata (verbose).  |  No  | 

## File di configurazione cfn-hup.conf
<a name="cfn-hup-config-file"></a>

Il file `cfn-hup.conf` memorizza il nome dello stack e le credenziali AWS che il daemon `cfn-hup` usa come destinazione.

Il file `cfn-hup.conf` utilizza il formato seguente:

```
[main]
stack=<stack-name-or-id>
```


| Nome | Description | Richiesto | 
| --- | --- | --- | 
|   `stack`   |  Un nome o ID dello stack. ▬*Tipo:* stringa  |  Sì  | 
|   `credential-file`   |  Un file delle credenziali solo del proprietario, nello stesso formato utilizzato per gli strumenti a riga di comando. ▬*Tipo:* stringa *Condizione*: il parametro `role` sostituisce questo parametro.  |  No  | 
|   `role`   |  Il nome di un ruolo IAM associato all’istanza. ▬*Tipo:* stringa  |  No  | 
|   `region`   |  Il nome dello stack Regione AWS che contiene lo stack. *Esempio*: us-east-2  |  No  | 
|   `umask`   |  L’`umask` usato dal daemon `cfn-hup`. Questo valore può essere specificato con o senza 0 iniziale. In entrambi i casi, viene interpretato come un numero ottale (simile al comando `umask` di Linux). Questo parametro non ha effetto su Windows. *Tipo*: intero ottale compreso tra `0` e `0777` *Default*: `022`, versione 1.4–22 e superiore. Il valore predefinito di `022` maschera le autorizzazioni group e world write, perciò i file creati dal daemon `cfn-hup` non sono scrivibili a livello di gruppo o mondo per impostazione predefinita. Il valore predefinito per le versioni 1.4-21 e precedenti è `0`, che non maschera nulla.  |  No  | 
|   `interval`   |  L’intervallo utilizzato per verificare la presenza di modifiche apportate ai metadati della risorsa in pochi minuti. *Tipo*: integer *Default*: `15`  |  No  | 
|   `verbose`   |  Specifica l’utilizzo della registrazione verbose. *Tipo*: Booleano *Default*: `false`  |  No  | 

## File di configurazione `hooks.conf`
<a name="cfn-hup-hook-file"></a>

Le operazioni dell’utente che il daemon `cfn-hup` chiama periodicamente sono definite nel file di configurazione `hooks.conf`. Il file `hooks.conf` utilizza il *formato* seguente:

```
[hookname]
triggers=post.add or post.update or post.remove
path=Resources.<logicalResourceId> (.Metadata or .PhysicalResourceId)(.<optionalMetadatapath>)
action=<arbitrary shell command>
runas=<runas user>
```

Al momento dell’esecuzione, l’operazione viene eseguita su una copia dell’ambiente attuale (su cui si trova `cfn-hup`), con `CFN_OLD_METADATA` impostato sul valore di metadati precedente specificato dal percorso e `CFN_NEW_METADATA` impostato sul valore attuale.

Il file di configurazione hook viene caricato solo all’avvio del daemon `cfn-hup`, perciò un nuovo hook richiede il riavvio del daemon. Una cache dei valori dei metadati precedenti viene memorizzata su `/var/lib/cfn-hup/data/metadata_db`: puoi eliminarla per forzare `cfn-hup` a eseguire di nuovo tutte le azioni `post.add`.


| Nome | Description | Richiesto | 
| --- | --- | --- | 
|   `hookname`   |  Un nome univoco per questo hook. ▬*Tipo:* stringa  |  Sì  | 
|   `triggers`   |  Un elenco di condizioni delimitate da virgola da rilevare. *Valori validi*: `post.add`, `post.update` o `post.remove` *Esempio*: `post.add, post.update`  |  Sì  | 
|   `path`   |  Il percorso verso l’oggetto metadati. Supporta un percorso profondo arbitrariamente all’interno del blocco di metadati.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AWSCloudFormation/latest/TemplateReference/cfn-hup.html)  |  Sì  | 
|   `action`   |  Un comando shell arbitrario che viene eseguito in modo invariato.  |  Sì  | 
|   `runas`   |  Un utente per eseguire il comando come `cfn-hup` usa il comando su per passare all’utente.  |  Sì  | 

## `hooks.d`directory
<a name="cfn-hup-hooks-dir"></a>

Per supportare la composizione di diverse applicazioni che distribuiscono hook di notifica della modifica, `cfn-hup` supporta una directory denominata `hooks.d` che si trova nella directory di configurazione degli hook. Puoi posizionare uno o più file di configurazione hook nella directory `hooks.d`. Il file hook aggiuntivi devono utilizzare lo stesso layout del file `hooks.conf`.

Il daemon `cfn-hup` analizza e carica ciascun file nella directory. Se qualsiasi hook nella directory `hooks.d` ha lo stesso nome di un hook in `hooks.conf`, gli hook verranno uniti (il che significa che `hooks.d` sovrascriverà `hooks.conf` per qualsiasi valore che entrambi i file specificano).

## Esempi
<a name="cfn-hup-examples"></a>

Negli esempi seguenti, CloudFormation attiva il file `cfn-auto-reloader.conf` hooks quando si modifica la `AWS::CloudFormation::Init` risorsa associata alla `LaunchConfig` risorsa.

### JSON
<a name="cfn-hup-example.json"></a>

```
...
    "LaunchConfig": {
      "Type" : "AWS::AutoScaling::LaunchConfiguration",
      "Metadata" : {
        "AWS::CloudFormation::Init" : {
...
              "/etc/cfn/hooks.d/cfn-auto-reloader.conf": {
                "content": { "Fn::Join": [ "", [
                  "[cfn-auto-reloader-hook]\n",
                  "triggers=post.update\n",
                  "path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init\n",
                  "action=/opt/aws/bin/cfn-init -v ",
                          "         --stack ", { "Ref" : "AWS::StackName" },
                          "         --resource LaunchConfig ",
                          "         --configsets wordpress_install ",
                          "         --region ", { "Ref" : "AWS::Region" }, "\n",
                  "runas=root\n"
                ]]},          
                "mode"  : "000400",
                "owner" : "root",
                "group" : "root"
              }
...
```

### YAML
<a name="cfn-hup-example.yaml"></a>

```
...
  LaunchConfig:
    Type: AWS::AutoScaling::LaunchConfiguration
    Metadata:
      AWS::CloudFormation::Init:
...
            /etc/cfn/hooks.d/cfn-auto-reloader.conf:
              content: !Sub |
                [cfn-auto-reloader-hook]
                triggers=post.update
                path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init
                action=/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource LaunchConfig --configsets wordpress_install --region ${AWS::Region}
                runas=root
              mode: "000400"
              owner: "root"
              group: "root"
...
```

## Risorse correlate
<a name="cfn-hup-related-resources"></a>

Puoi anche visitare il nostro GitHub repository per scaricare i [modelli di esempio](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html#sample-templates) che utilizziamo`cfn-hup`, inclusi i seguenti modelli.
+  [InstanceWithCfnInit.yaml](https://github.com/aws-cloudformation/aws-cloudformation-templates/blob/main/EC2/InstanceWithCfnInit.yaml) 
+  [AutoScalingRollingUpdates.yaml](https://github.com/aws-cloudformation/aws-cloudformation-templates/blob/main/AutoScaling/AutoScalingRollingUpdates.yaml) 