

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 personalizzato alla richiesta e alla risposta delle risorse
<a name="crpg-ref"></a>

CloudFormation gestisce le risorse personalizzate tramite un protocollo di richiesta-risposta che comunica con il fornitore di risorse personalizzato. Ogni richiesta include un tipo di richiesta (`Create``Update`, o`Delete`) e segue questo flusso di lavoro di alto livello:

1. Uno sviluppatore di modelli definisce una risorsa personalizzata con un `ServiceToken` e `ServiceTimeout` nel modello e avvia un'operazione di stack.

1. CloudFormation invia una richiesta JSON al provider di risorse personalizzato tramite SNS o Lambda.

1. Il provider di risorse personalizzato elabora la richiesta e restituisce una risposta JSON a un URL del bucket Amazon S3 predefinito prima della scadenza del periodo di timeout.

1. CloudFormation legge la risposta e procede con l'operazione stack. Se non viene ricevuta alcuna risposta prima della fine del periodo di timeout, la richiesta viene considerata non riuscita e l'operazione di stack ha esito negativo.

Per ulteriori informazioni, consulta [Funzionamento delle risorse personalizzate](template-custom-resources.md#how-custom-resources-work).

Questa sezione descrive la struttura, i parametri e le risposte previste per ogni tipo di richiesta.

**Nota**  
La dimensione totale del corpo della risposta non può superare 4096 byte.

## Configurazione del modello
<a name="crpg-ref-template-setup"></a>

Quando definisce una risorsa personalizzata in un modello, lo sviluppatore del modello utilizza [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-customresource.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-customresource.html)le seguenti proprietà:

`ServiceToken`  
ARN dell'argomento Amazon SNS o ARN della funzione Lambda della stessa regione dello stack.  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`ServiceTimeout`  
Il tempo massimo, in secondi, prima del timeout di un'operazione su una risorsa personalizzata. Deve essere un valore compreso tra 1 e 3600. Impostazione predefinita: 3600 secondi (1 ora).  
*Required*: No  
▬*Tipo:* stringa

Sono supportate proprietà aggiuntive delle risorse. Le proprietà delle risorse verranno incluse come `ResourceProperties` nella richiesta. Il fornitore di risorse personalizzate deve determinare quali proprietà sono valide e i relativi valori accettabili.

## Oggetto Request
<a name="crpg-ref-requesttypes"></a>

------
#### [ Create ]

Quando lo sviluppatore del modello crea uno stack contenente una risorsa personalizzata, CloudFormation invia una richiesta con `RequestType` set to`Create`.

Le richieste di creazione contengono i seguenti campi:

`RequestType`  
`Create`.  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`RequestId`  
Un ID univoco per la richiesta.  
La combinazione di `StackId` con `RequestId` costituisce un valore che puoi utilizzare per identificare in modo univoco una richiesta in una particolare risorsa personalizzata.  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`StackId`  
Il nome della risorsa Amazon (ARN) che identifica lo stack che contiene la risorsa personalizzata.  
La combinazione di `StackId` con `RequestId` costituisce un valore che puoi utilizzare per identificare in modo univoco una richiesta in una particolare risorsa personalizzata.  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`ResponseURL`  
L'URL di risposta identifica un bucket S3 predefinito che riceve risposte dal fornitore di risorse personalizzato a. CloudFormation  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`ResourceType`  
Il tipo di risorsa scelta dallo sviluppatore del modello della risorsa personalizzata nel modello CloudFormation . I nomi dei tipi di risorsa personalizzata possono contenere fino a 60 caratteri e possono includere caratteri alfanumerici, oltre ai caratteri seguenti: `_@-`.  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`LogicalResourceId`  
Il nome (ID logico) scelto dallo sviluppatore del modello della risorsa personalizzata nel modello CloudFormation .  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`ResourceProperties`  
Questo campo contiene il contenuto dell’oggetto `Properties` inviato dallo sviluppatore del modello. I suoi contenuti vengono definiti dal provider di risorse personalizzate.  
*Obbligatorio:* no  
*Tipo*: JSON object

*Esempio*

```
{
   "RequestType" : "Create",
   "RequestId" : "unique-request-id",
   "StackId" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/id",
   "ResponseURL" : "pre-signed-url-for-create-response",
   "ResourceType" : "Custom::MyCustomResourceType",
   "LogicalResourceId" : "resource-logical-id",
   "ResourceProperties" : {
      "key1" : "string",
      "key2" : [ "list" ],
      "key3" : { "key4" : "map" }
   }
}
```

------
#### [ Update ]

Quando lo sviluppatore del modello apporta modifiche alle proprietà di una risorsa personalizzata all'interno del modello e aggiorna lo stack, CloudFormation invia una richiesta al fornitore di risorse personalizzate con set to. `RequestType` `Update` Questo significa che il codice della risorsa personalizzata non deve rilevare le modifiche nelle risorse perché sa che le proprietà sono state modificate quando il tipo di richiesta è `Update`.

Le richieste di aggiornamento contengono i seguenti campi:

`RequestType`  
`Update`.  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`RequestId`  
Un ID univoco per la richiesta.  
La combinazione di `StackId` con `RequestId` costituisce un valore che puoi utilizzare per identificare in modo univoco una richiesta in una particolare risorsa personalizzata.  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`StackId`  
Il nome della risorsa Amazon (ARN) che identifica lo stack che contiene la risorsa personalizzata.  
La combinazione di `StackId` con `RequestId` costituisce un valore che puoi utilizzare per identificare in modo univoco una richiesta in una particolare risorsa personalizzata.  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`ResponseURL`  
L'URL di risposta identifica un bucket S3 predefinito che riceve risposte dal provider di risorse personalizzato a. CloudFormation  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`ResourceType`  
Il tipo di risorsa scelta dallo sviluppatore del modello della risorsa personalizzata nel modello CloudFormation . I nomi dei tipi di risorsa personalizzata possono contenere fino a 60 caratteri e possono includere caratteri alfanumerici, oltre ai caratteri seguenti: `_@-`. Non puoi modificare il tipo durante un aggiornamento.  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`LogicalResourceId`  
Il nome (ID logico) scelto dallo sviluppatore del modello della risorsa personalizzata nel modello CloudFormation .  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`PhysicalResourceId`  
Un ID fisico personalizzato definito dal provider di risorse che è unico per quel provider.  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`ResourceProperties`  
Questo campo contiene il contenuto dell’oggetto `Properties` inviato dallo sviluppatore del modello. I suoi contenuti vengono definiti dal provider di risorse personalizzate.  
*Obbligatorio:* no  
*Tipo*: JSON object

`OldResourceProperties`  
Usato solo per le richieste `Update`. I valori della proprietà della risorsa dichiarati precedentemente dal template developer nel modello CloudFormation .  
*Obbligatorio:* sì  
*Tipo*: JSON object

*Esempio*

```
{
   "RequestType" : "Update",
   "RequestId" : "unique-request-id",
   "StackId" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/id",
   "ResponseURL" : "pre-signed-url-for-update-response",
   "ResourceType" : "Custom::MyCustomResourceType",
   "LogicalResourceId" : "resource-logical-id",
   "PhysicalResourceId" : "provider-defined-physical-id",
   "ResourceProperties" : {
      "key1" : "new-string",
      "key2" : [ "new-list" ],
      "key3" : { "key4" : "new-map" }
   },
   "OldResourceProperties" : {
      "key1" : "string",
      "key2" : [ "list" ],
      "key3" : { "key4" : "map" }
   }
}
```

------
#### [ Delete ]

Quando lo sviluppatore del modello elimina lo stack o rimuove la risorsa personalizzata dal modello e quindi aggiorna lo stack, CloudFormation invia una richiesta con set to. `RequestType` `Delete`

Le richieste di eliminazione contengono i seguenti campi:

`RequestType`  
`Delete`.  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`RequestId`  
Un ID univoco per la richiesta.  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`StackId`  
Il nome della risorsa Amazon (ARN) che identifica lo stack che contiene la risorsa personalizzata.  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`ResponseURL`  
L'URL di risposta identifica un bucket S3 predefinito che riceve risposte dal provider di risorse personalizzato a. CloudFormation  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`ResourceType`  
Il tipo di risorsa scelta dallo sviluppatore del modello della risorsa personalizzata nel modello CloudFormation . I nomi dei tipi di risorsa personalizzata possono contenere fino a 60 caratteri e possono includere caratteri alfanumerici, oltre ai caratteri seguenti: `_@-`.  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`LogicalResourceId`  
Il nome (ID logico) scelto dallo sviluppatore del modello della risorsa personalizzata nel modello CloudFormation .  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`PhysicalResourceId`  
Un ID fisico personalizzato definito dal provider di risorse che è unico per quel provider.  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`ResourceProperties`  
Questo campo contiene il contenuto dell’oggetto `Properties` inviato dallo sviluppatore del modello. I suoi contenuti vengono definiti dal provider di risorse personalizzate.  
*Obbligatorio:* no  
*Tipo*: JSON object

*Esempio*

```
{
   "RequestType" : "Delete",
   "RequestId" : "unique-request-id",
   "StackId" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/id",
   "ResponseURL" : "pre-signed-url-for-delete-response",
   "ResourceType" : "Custom::MyCustomResourceType",
   "LogicalResourceId" : "resource-logical-id",
   "PhysicalResourceId" : "provider-defined-physical-id",
   "ResourceProperties" : {
      "key1" : "string",
      "key2" : [ "list" ],
      "key3" : { "key4" : "map" }
   }
}
```

------

## Oggetto Response
<a name="crpg-ref-responses"></a>

Il provider di risorse personalizzato invia una risposta all'URL prefirmato per tutti i tipi di richiesta. Se il provider di risorse personalizzato non invia una risposta, CloudFormation attende il timeout dell'operazione.

La risposta deve essere un oggetto JSON con i seguenti campi:

`Status`  
Deve essere `SUCCESS` o `FAILED`.  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`RequestId`  
Un ID univoco per la richiesta. Copia questo valore esattamente come appare nella richiesta.  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`StackId`  
Il nome della risorsa Amazon (ARN) che identifica lo stack che contiene la risorsa personalizzata. Copia questo valore esattamente come appare nella richiesta.  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`LogicalResourceId`  
Il nome (ID logico) scelto dallo sviluppatore del modello della risorsa personalizzata nel modello CloudFormation . Copia questo valore esattamente come appare nella richiesta.  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`PhysicalResourceId`  
Questo valore deve essere un identificativo univoco per il fornitore di risorse personalizzate e può avere una dimensione massima di 1 KB. Il valore deve essere una stringa non vuota e deve essere identico per tutte le risposte per la stessa risorsa.  
Quando si aggiornano risorse personalizzate, il valore restituito per `PhysicalResourceId` determina il comportamento di aggiornamento. Se il valore rimane lo stesso, lo CloudFormation considera un aggiornamento normale. Se il valore cambia, CloudFormation interpreta l'aggiornamento come sostitutivo e invia una richiesta di eliminazione alla vecchia risorsa. Per ulteriori informazioni, consulta [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-customresource.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-customresource.html).  
*Obbligatorio:* sì  
▬*Tipo:* stringa

`Reason`  
Descrive il motivo di una risposta con esito negativo.  
Necessario se `Status` è `FAILED`. Altrimenti, è facoltativo.  
*Required*: Conditional  
▬*Tipo:* stringa

`NoEcho`  
Indica se nascondere o meno l’output della risorsa personalizzata quando viene recuperata utilizzando la funzione `Fn::GetAtt`. Se impostato su `true`, tutti i valori restituiti vengono nascosti con degli asterischi (\$1\$1\$1\$1\$1), *ad eccezione di quelli archiviati nella sezione del modello `Metadata`*. CloudFormation non trasforma, modifica o omette le informazioni incluse nella sezione `Metadata`. Il valore predefinito è `false`.  
Per ulteriori informazioni sull’utilizzo di `NoEcho` per mascherare le informazioni sensibili, consulta la best practice [Non incorporare le credenziali nei modelli](security-best-practices.md#creds).  
Disponibile solo per `Update` risposte `Create` e risposte. Non è supportata per `Delete` le risposte.  
*Obbligatorio:* no  
*Tipo*: Booleano

`Data`  
Le coppie nome-valore definite dal provider di risorse personalizzate da inviare con la risposta. Puoi accedere ai valori forniti qui in base al nome nel modello con `Fn::GetAtt`.  
Disponibile solo per `Update` risposte `Create` e risposte. Non è supportata per `Delete` le risposte.  
Se le coppie nome-valore contengono informazioni riservate, è necessario utilizzare il campo `NoEcho` per mascherare l’output della risorsa personalizzata. Altrimenti, i valori sono visibili attraverso i valori delle proprietà di APIs quella superficie (ad esempio`DescribeStackEvents`).
*Obbligatorio:* no  
*Tipo*: JSON object

### Esempi di risposte di successo
<a name="crpg-ref-success-response-examples"></a>

#### `Create`e `Update` risposta
<a name="crpg-ref-success-response-example-1"></a>

```
{
   "Status": "SUCCESS",
   "RequestId": "unique-request-id",
   "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/name/id",
   "LogicalResourceId": "resource-logical-id", 
   "PhysicalResourceId": "provider-defined-physical-id",
   "NoEcho": true,
   "Data": {
      "key1": "value1",
      "key2": "value2"
   }
}
```

#### Risposta `Delete`
<a name="crpg-ref-success-response-example-2"></a>

```
{
   "Status": "SUCCESS",
   "RequestId": "unique-request-id",
   "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/name/id",
   "LogicalResourceId": "resource-logical-id", 
   "PhysicalResourceId": "provider-defined-physical-id"
}
```

### Esempio di risposta fallita
<a name="crpg-ref-failed-response-example"></a>

```
{
   "Status": "FAILED",
   "RequestId": "unique-request-id",
   "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/name/id",
   "LogicalResourceId": "resource-logical-id",
   "PhysicalResourceId": "provider-defined-physical-id",
   "Reason": "Required failure reason string"
}
```