Creazione di uno stack da risorse esistenti - 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à.

Creazione di uno stack da risorse esistenti

Questa sezione mostra come creare uno stack dalle risorse AWS esistenti descrivendole in un modello. Per cercare invece le risorse esistenti e generare automaticamente un modello da utilizzare per importare risorse esistenti in CloudFormation o replicare le risorse in un nuovo account, consulta. Generazione di modelli da risorse esistenti con il generatore IaC

Prerequisiti

Prima di iniziare, devi:

  • disporre di un modello che descrive tutte le risorse che desideri nel nuovo stack; salvare il modello in locale o in un bucket Amazon S3.

  • Per ogni risorsa che desideri importare, includi:

Modello di esempio

In questa procedura dettagliata, supponiamo che tu stia utilizzando il seguente modello di esempio, chiamato TemplateToImport.json, che specifica due tabelle DynamoDB create al di fuori di CloudFormation. ServiceTable e GamesTable sono gli obiettivi dell’importazione.

Nota

Questo modello è inteso solo come esempio. Per utilizzarlo per scopi di test, sostituisci le risorse di esempio con le risorse del tuo account.

{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "Import test", "Resources": { "ServiceTable": { "Type": "AWS::DynamoDB::Table", "DeletionPolicy": "Retain", "Properties": { "TableName": "Service", "AttributeDefinitions": [ { "AttributeName": "key", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "key", "KeyType": "HASH" } ], "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 1 } } }, "GamesTable": { "Type": "AWS::DynamoDB::Table", "DeletionPolicy": "Retain", "Properties": { "TableName": "Games", "AttributeDefinitions": [ { "AttributeName": "key", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "key", "KeyType": "HASH" } ], "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 1 } } } } }

Creazione di uno stack da risorse esistenti utilizzando l’Console di gestione AWS

  1. Accedi alla Console di gestione AWS e apri la console di CloudFormation all’indirizzo https://console.aws.amazon.com/cloudformation.

  2. Nella pagina Stack, scegli Crea stack, quindi scegli Con risorse esistenti (risorse di importazione).

    L’opzione Crea stack da risorse esistenti nella console.
  3. Leggi la pagina Panoramica importazione per un elenco di elementi da fornire durante questa operazione. Quindi, seleziona Successivo.

  4. Nella pagina Specifica modello, fornisci il modello utilizzando uno dei metodi descritti di seguito, quindi scegli Successivo.

    • Scegli URL Amazon S3, quindi specificare l’URL per il tuo modello nella casella di testo.

    • Scegli Carica un file modello, quindi cercare il modello.

  5. Nella pagina Identifica risorse, identifica ogni risorsa di destinazione. Per ulteriori informazioni, consulta Identificatori di risorse .

    1. In Proprietà identificatore, scegli il tipo di identificatore di risorsa. Ad esempio, la risorsa AWS::DynamoDB::Table può essere identificata utilizzando la proprietà TableName.

    2. In Valore identificatore, digita il valore effettivo della proprietà. Ad esempio, il TableName per la risorsa GamesTable nel modello di esempio è Games.

    3. Scegli Successivo.

  6. Nella pagina Specifica dettagli stack, modifica i parametri, quindi scegli Successivo. Questo crea automaticamente un set di modifiche.

    Importante

    L’operazione di importazione ha esito negativo se si modificano i parametri esistenti che iniziano un’operazione di creazione, aggiornamento o eliminazione.

  7. Nella pagina Rivedi nome stack, verifica che vengano importate le risorse corrette, quindi scegli Importa risorse. In questo modo si esegue automaticamente il set di modifiche creato nell’ultimo passaggio.

    Per il nuovo stack viene visualizzato il riquadro Eventi della pagina Dettagli stack.

    La scheda Eventi nella console.
  8. (Facoltativo) Esegui il rilevamento della deviazione nello stack per assicurarti che il modello e la configurazione effettiva delle risorse importate corrispondano. Per ulteriori informazioni sul rilevamento delle deviazioni, consulta Rilevamento della deviazione su un intero stack CloudFormation.

  9. (Facoltativo) Se le risorse importate non corrispondono alle configurazioni dei modelli previste, correggi le configurazioni dei modelli o aggiorna direttamente le risorse. In questa spiegazione passo per passo, vengono corrette le configurazioni dei modelli in modo che corrispondano alle configurazioni effettive.

    1. Ripristina l’operazione di importazione per le risorse interessate.

    2. Aggiungi nuovamente le destinazioni di importazione al modello, assicurandoti che le configurazioni del modello corrispondano alle configurazioni effettive.

    3. Ripeti i passaggi 2-8 utilizzando il modello modificato per importare nuovamente le risorse.

Creazione di uno stack da risorse esistenti utilizzando l’AWS CLI

  1. Per scoprire quali proprietà identificano ogni tipo di risorsa nel modello, esegui il comando get-template-summary, specificando l’URL S3 del modello. Ad esempio, la risorsa AWS::DynamoDB::Table può essere identificata utilizzando la proprietà TableName. Per la risorsa GamesTable nel modello di esempio, il valore di TableName è Games. Queste informazioni ti serviranno nella fase successiva.

    aws cloudformation get-template-summary \ --template-url https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/TemplateToImport.json

    Per ulteriori informazioni, consulta Identificatori di risorse .

  2. Componi un elenco delle risorse attuali del modello e dei relativi identificatori univoci nel seguente formato della stringa JSON.

    [{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"GamesTable","ResourceIdentifier":{"TableName":"Games"}},{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"ServiceTable","ResourceIdentifier":{"TableName":"Service"}}]

    In alternativa, puoi specificare i parametri formattati JSON in un file di configurazione.

    Ad esempio, per importare ServiceTable e GamesTable, puoi creare un file ResourcesToImport.txt contenente la seguente configurazione.

    [ { "ResourceType":"AWS::DynamoDB::Table", "LogicalResourceId":"GamesTable", "ResourceIdentifier":{ "TableName":"Games" } }, { "ResourceType":"AWS::DynamoDB::Table", "LogicalResourceId":"ServiceTable", "ResourceIdentifier":{ "TableName":"Service" } } ]
  3. Per creare un set di modifiche, utilizza il seguente comando create-change-set e sostituisci il testo segnaposto. Per l’opzione --change-set-type, specifica il valore di IMPORT. Per l’opzione --resources-to-import, sostituisci la stringa JSON di esempio con la stringa JSON effettiva che hai appena creato.

    aws cloudformation create-change-set \ --stack-name TargetStack --change-set-name ImportChangeSet \ --change-set-type IMPORT \ --template-url https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/TemplateToImport.json \ --resources-to-import '[{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"GamesTable","ResourceIdentifier":{"TableName":"Games"}},{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"ServiceTable","ResourceIdentifier":{"TableName":"Service"}}]'
    Nota

    --resources-to-import non supporta YAML in linea. I requisiti per l’escape delle virgolette nella stringa JSON variano in base al terminale. Per ulteriori informazioni, consulta Utilizzo di virgolette all’interno di stringhe nella Guida per l’utente di AWS Command Line Interface.

    In alternativa, è possibile anche utilizzare l’URL del file come input per l’opzione --resources-to-import, come mostrato nell’esempio seguente.

    --resources-to-import file://ResourcesToImport.txt
  4. Esamina il set di modifiche per assicurarti che vengano importate le risorse corrette.

    aws cloudformation describe-change-set \ --change-set-name ImportChangeSet --stack-name TargetStack
  5. Per avviare il set di modifiche e importare le risorse, utilizza il seguente comando execute-change-set e sostituisci il testo segnaposto. Al completamento dell’operazione (IMPORT_COMPLETE), le risorse vengono importate correttamente.

    aws cloudformation execute-change-set \ --change-set-name ImportChangeSet --stack-name TargetStack
  6. (Facoltativo) Esegui il rilevamento della deviazione sullo stack IMPORT_COMPLETE per assicurarti che il modello e la configurazione effettiva delle risorse importate corrispondano. Per ulteriori informazioni, consulta Rilevamento della deviazione su singole risorse di stack.

    1. Esegui il rilevamento della deriva sullo stack specificato.

      aws cloudformation detect-stack-drift --stack-name TargetStack

      Se eseguito correttamente, il comando restituirà il seguente output di esempio.

      { "Stack-Drift-Detection-Id" : "624af370-311a-11e8-b6b7-500cexample" }
    2. Visualizza lo stato di avanzamento di un’operazione di rilevamento della deriva per l’ID di rilevamento della deriva dello stack specificato.

      aws cloudformation describe-stack-drift-detection-status \ --stack-drift-detection-id 624af370-311a-11e8-b6b7-500cexample
    3. Visualizza le informazioni di deviazione per le risorse la cui deviazione è stata controllata all’interno dello stack specificato.

      aws cloudformation describe-stack-resource-drifts --stack-name TargetStack
  7. (Facoltativo) Se le risorse importate non corrispondono alle configurazioni dei modelli previste, correggi le configurazioni dei modelli o aggiorna direttamente le risorse. In questa spiegazione passo per passo, vengono corrette le configurazioni dei modelli in modo che corrispondano alle configurazioni effettive.

    1. Ripristina l’operazione di importazione per le risorse interessate.

    2. Aggiungi nuovamente le destinazioni di importazione al modello, assicurandoti che le configurazioni del modello corrispondano alle configurazioni effettive.

    3. Ripeti i passaggi 3-6 utilizzando il modello modificato per importare nuovamente le risorse.