Risorse personalizzate - AWS CloudFormation

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

Risorse personalizzate

Nota

Il CloudFormation registro e le risorse personalizzate offrono ciascuno i propri vantaggi. Le risorse personalizzate offrono i seguenti vantaggi:

  • Non è necessario registrare la risorsa.

  • Puoi includere un'intera risorsa come parte di un modello senza registrarti.

  • Supporta le Create operazioniUpdate, e Delete

I vantaggi offerti dalle risorse basate sul registro includono quanto segue:

  • Supporta la modellazione, il provisioning e la gestione di risorse applicative di terze parti

  • Supporta le operazioni CreateReadUpdate, Delete e List (CRUDL)

  • Supporta il rilevamento della deriva su tipi di risorse private e di terze parti

A differenza delle risorse personalizzate, le risorse basate sul Registro di sistema non dovranno associare un argomento Amazon SNS o una funzione Lambda per eseguire operazioni CRUDL. Per ulteriori informazioni, consulta Utilizzo del AWS CloudFormation registro.

Le risorse personalizzate consentono di scrivere una logica di provisioning personalizzata nei CloudFormation modelli e di CloudFormation eseguirla ogni volta che si crea, aggiorna (se è stata modificata la risorsa personalizzata) o si elimina uno stack. Ciò può essere utile quando i requisiti di provisioning coinvolgono logiche o flussi di lavoro complessi che non possono essere espressi con CloudFormation i tipi di risorse integrati.

Ad esempio, potresti voler includere risorse che non sono disponibili come tipi di CloudFormation risorse. Puoi includere tali risorse utilizzando le risorse personalizzate. In questo modo, puoi comunque gestire tutte le risorse correlate in un unico stack.

Per definire una risorsa personalizzata nel CloudFormation modello, si utilizza il tipo di Custom::MyCustomResourceTypeNamerisorsa AWS::CloudFormation::CustomResourceor. Le risorse personalizzate richiedono una proprietà, il token di servizio, che specifica a dove vengono CloudFormation inviate le richieste, ad esempio un argomento Amazon SNS o una funzione Lambda.

I seguenti argomenti forniscono informazioni su come utilizzare le risorse personalizzate.

Nota

Se utilizzi la funzionalità endpoint VPC, le risorse personalizzate nel VPC devono avere accesso a bucket S3 specifici. CloudFormation Le risorse personalizzate devono inviare le risposte a un Amazon S3 preregistrato. Se non possono inviare risposte ad Amazon S3, CloudFormation non riceveranno alcuna risposta e l'operazione di stack avrà esito negativo. Per ulteriori informazioni, consulta Accesso CloudFormation tramite un endpoint di interfaccia ()AWS PrivateLink.

Funzionamento delle risorse personalizzate

La procedura generale per la configurazione di una nuova risorsa personalizzata include i seguenti passaggi. Questi passaggi prevedono due ruoli: il fornitore di risorse personalizzate proprietario della risorsa personalizzata e lo sviluppatore del modello che crea un modello che include un tipo di risorsa personalizzato. Può trattarsi della stessa persona, ma in caso contrario, il fornitore di risorse personalizzate dovrebbe collaborare con lo sviluppatore del modello.

  1. Il provider di risorse personalizzate scrive la logica che determina come gestire le richieste CloudFormation ed eseguire azioni sulla risorsa personalizzata.

  2. Il provider di risorse personalizzato crea l'argomento Amazon SNS o la funzione Lambda a cui CloudFormation inviare richieste. L'argomento Amazon SNS o la funzione Lambda devono trovarsi nella stessa regione in cui verrà creato lo stack.

  3. Il provider di risorse personalizzate fornisce l'argomento Amazon SNS ARN o l'ARN della funzione Lambda allo sviluppatore del modello.

  4. Lo sviluppatore del modello definisce la risorsa personalizzata nel proprio modello. CloudFormation Ciò include un token di servizio e tutti i parametri dei dati di input. Il token di servizio e la struttura dei dati di input sono definiti dal fornitore di risorse personalizzato. Il token di servizio specifica l'argomento di Amazon SNS ARN o l'ARN della funzione Lambda ed è sempre obbligatorio, ma i dati di input sono facoltativi a seconda della risorsa personalizzata.

Ora, ogni volta che qualcuno utilizza il modello per creare, aggiornare o eliminare la risorsa personalizzata, CloudFormation invia una richiesta al token di servizio specificato e quindi attende una risposta prima di procedere con l'operazione stack.

Di seguito viene riepilogato il flusso per la creazione di uno stack dal modello:

  1. CloudFormation invia una richiesta al token di servizio specificato. La richiesta include informazioni come il tipo di richiesta e un URL Amazon Simple Storage Service prefirmato, a cui la risorsa personalizzata invia le risposte. Per ulteriori informazioni sugli elementi inclusi nella richiesta, consulta Oggetti di richieste di risorse personalizzate.

    I seguenti dati di esempio mostrano cosa CloudFormation include una Create richiesta. In questo esempio, ResourceProperties consente di CloudFormation creare un payload personalizzato da inviare alla funzione Lambda.

    { "RequestType" : "Create", "ResponseURL" : "http://pre-signed-S3-url-for-response", "StackId" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10", "RequestId" : "unique id for this create request", "ResourceType" : "Custom::TestResource", "LogicalResourceId" : "MyTestResource", "ResourceProperties" : { "Name" : "Value", "List" : [ "1", "2", "3" ] } }
  2. Il provider di risorse personalizzato elabora la CloudFormation richiesta e restituisce una risposta SUCCESS o FAILED all'URL prefirmato. custom resource provider fornisce la risposta in un file in formato JSON e lo carica sull'URL S3 prefirmato. Per ulteriori informazioni consulta Caricamento degli oggetti mediante URL prefirmati nella Guida per l'utente di Amazon Simple Storage Service.

    Nella risposta, custom resource provider può anche includere coppie nome-valore a cui template developer può accedere. Ad esempio, la risposta può includere i dati di output nel caso in cui la richiesta sia andata a buon fine o un messaggio di errore nel caso in cui la richiesta abbia avuto esito negativo. Per ulteriori informazioni sulle risposte, consulta Oggetti di risposta di risorse personalizzate.

    Importante

    Se le coppie nome-valore contengono informazioni riservate, è necessario utilizzare il campo NoEcho per mascherare l'output della risorsa personalizzata. In caso contrario, i valori sono visibili tramite API che visualizzano i valori delle proprietà (ad esempio DescribeStackEvents).

    Per ulteriori informazioni sull'utilizzo per NoEcho mascherare informazioni riservate, consulta la procedura Non incorporare le credenziali nei modelli consigliata.

    custom resource provider è responsabile dell'ascolto e della risposta alla richiesta. Ad esempio, per le notifiche di Amazon SNS, il provider di risorse personalizzate deve ascoltare e rispondere alle notifiche inviate a un argomento specifico ARN. CloudFormation attende e ascolta una risposta nella posizione URL prefirmata.

    I seguenti dati di esempio mostrano ciò che una risorsa personalizzata può includere in una risposta:

    { "Status" : "SUCCESS", "PhysicalResourceId" : "TestResource1", "StackId" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10", "RequestId" : "unique id for this create request", "LogicalResourceId" : "MyTestResource", "Data" : { "OutputName1" : "Value1", "OutputName2" : "Value2", } }
  3. Dopo aver ricevuto una SUCCESS risposta, CloudFormation procede con l'operazione stack. Se viene restituita una risposta FAILED o nessuna risposta, l'operazione ha esito negativo. Qualsiasi dato di output dalla risorsa personalizzata viene memorizzato nella posizione dell'URL prefirmato. template developer è in grado di recuperare i dati mediante la funzione Fn::GetAtt.

Timeout di risposta

Il timeout predefinito per la risorsa personalizzata è di 3600 secondi (1 ora). Se non viene ricevuta alcuna risposta durante questo periodo, l'operazione stack ha esito negativo.

È possibile modificare il valore di timeout in base al tempo previsto per la risposta della risorsa personalizzata. Ad esempio, quando si esegue il provisioning di una risorsa personalizzata che richiama una funzione Lambda che dovrebbe rispondere entro cinque minuti, è possibile impostare un timeout di cinque minuti nel modello dello stack specificando la proprietà. ServiceTimeout Per ulteriori informazioni, consulta Oggetti di richieste di risorse personalizzate. In questo modo, se c'è un errore nella funzione Lambda che ne causa il blocco, l'operazione stack CloudFormation fallirà dopo cinque minuti invece di attendere l'intera ora.

Tuttavia, fai attenzione a non impostare un valore di timeout troppo basso. Per evitare timeout imprevisti, assicuratevi che la risorsa personalizzata disponga di tempo sufficiente per eseguire le azioni necessarie e restituire una risposta.