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

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::MyCustomResourceTypeName risorsa 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 SNS argomento Amazon o una funzione Lambda.

I seguenti argomenti forniscono informazioni su come utilizzare le 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 non avranno bisogno di associare un SNS argomento Amazon o una funzione Lambda per eseguire operazioniCRUDL. Per ulteriori informazioni, consulta Gestione delle estensioni con il CloudFormation registro.

Funzionamento delle risorse personalizzate

Il processo 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'SNSargomento Amazon o la funzione Lambda a cui CloudFormation inviare richieste. L'SNSargomento Amazon o la funzione Lambda devono trovarsi nella stessa regione in cui verrà creato lo stack.

  3. Il provider di risorse personalizzate fornisce l'SNSargomento Amazon ARN o la funzione Lambda ARN allo sviluppatore del modello.

  4. Lo sviluppatore del modello definisce la risorsa personalizzata nel proprio CloudFormation modello. 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'SNSargomento Amazon ARN o la ARN 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 Amazon Simple Storage Service prefirmatoURL, 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 uguale SUCCESS o FAILED a quella prefirmata. URL Il provider di risorse personalizzate fornisce la risposta in un file in JSON formato elettronico e la carica nell'S3 prefirmato. URL Per ulteriori informazioni, consulta Caricamento di oggetti utilizzando oggetti prefirmati URLs 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. Altrimenti, i valori sono visibili attraverso i valori delle proprietà di APIs quella superficie (ad esempioDescribeStackEvents).

    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 SNS le notifiche di Amazon, il fornitore di risorse personalizzate deve ascoltare e rispondere alle notifiche inviate a un argomento specificoARN. 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. Tutti i dati di output della risorsa personalizzata vengono archiviati nella posizione URL prefirmata. template developer è in grado di recuperare i dati mediante la funzione Fn::GetAtt.

Nota

Se utilizzi la funzionalità VPCendpoint, le risorse personalizzate presenti in VPC devono avere accesso a bucket S3 CloudFormation specifici. Le risorse personalizzate devono inviare risposte a un Amazon URL S3 prefirmato. 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.

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 la blocca, 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, assicurati che la risorsa personalizzata disponga di tempo sufficiente per eseguire le azioni necessarie e restituire una risposta.