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
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 (CreateUpdate, oDelete) e segue questo flusso di lavoro di alto livello:
-
Uno sviluppatore di modelli definisce una risorsa personalizzata con un
ServiceTokeneServiceTimeoutnel modello e avvia un'operazione di stack. -
CloudFormation invia una richiesta JSON al provider di risorse personalizzato tramite SNS o Lambda.
-
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.
-
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.
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
Quando definisce una risorsa personalizzata in un modello, lo sviluppatore del modello utilizza AWS::CloudFormation::CustomResourcele seguenti proprietà:
ServiceToken-
ARN dell'argomento Amazon SNS o ARN della funzione Lambda della stessa regione dello stack.
Campo 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
Oggetto Response
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
SUCCESSoFAILED.Campo obbligatorio: sì
▬Tipo: stringa
RequestId-
Un ID univoco per la richiesta. Copia questo valore esattamente come appare nella richiesta.
Campo 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.
Campo 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.
Campo 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
PhysicalResourceIddetermina 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 AWS::CloudFormation::CustomResource.Campo 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 sutrue, tutti i valori restituiti vengono nascosti con degli asterischi (*****), ad eccezione di quelli archiviati nella sezione del modelloMetadata. CloudFormation non trasforma, modifica o omette le informazioni incluse nella sezioneMetadata. Il valore predefinito èfalse.Per ulteriori informazioni sull’utilizzo di
NoEchoper mascherare le informazioni sensibili, consulta la best practice Non incorporare le credenziali nei modelli.Disponibile solo per
UpdaterisposteCreatee risposte. Non è supportata perDeletele risposte.Required: 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
UpdaterisposteCreatee risposte. Non è supportata perDeletele risposte.Importante
Se le coppie nome-valore contengono informazioni riservate, è necessario utilizzare il campo
NoEchoper mascherare l’output della risorsa personalizzata. Altrimenti, i valori sono visibili attraverso i valori delle proprietà di APIs quella superficie (ad esempioDescribeStackEvents).Required: No
Tipo: JSON object
Esempi di risposte di successo
Createe Update risposta
{
"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
{
"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
{
"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"
}