Importazione di risorse esistenti in uno stack - 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à.

Importazione di risorse esistenti in uno stack

Questo argomento mostra come importare elementi esistenti AWS risorse in uno stack esistente descrivendole in un modello. Per cercare invece le risorse esistenti e generare automaticamente un modello da utilizzare per importare risorse esistenti CloudFormation o replicare le risorse in un nuovo account, consulta. Genera modelli da risorse esistenti con il generatore IaC

Prerequisiti

Prima di iniziare, devi disporre di quanto segue:

  • Un modello che descrive l'intero stack, incluse le risorse che fanno già parte dello stack e le risorse da importare. Salva il modello localmente o in un bucket Amazon S3.

    Per ottenere una copia del modello di uno stack in esecuzione

    1. Apri la CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation/.

    2. Dall'elenco degli stack, scegli lo stack da cui vuoi recuperare il modello.

    3. Nel riquadro dei dettagli dello stack, scegli la scheda Modello, quindi scegli Copia negli appunti.

    4. Incolla il codice in un editor di testo per iniziare ad aggiungere altre risorse al modello.

  • Per ogni risorsa che desideri importare, includi quanto segue:

    • le proprietà e i valori delle proprietà che definiscono la configurazione corrente della risorsa.

    • l'identificatore univoco della risorsa, ad esempio il nome della risorsa. Per ulteriori informazioni, consulta Identificatori di risorse.

    • ilAttributo DeletionPolicy.

Modello di esempio

In questa procedura dettagliata, supponiamo che tu stia utilizzando il seguente modello di esempio, chiamatoTemplateToImport.json, che specifica due tabelle DynamoDB. ServiceTableè attualmente parte dello stack ed GamesTable è la tabella che desideri importare.

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", "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 } } } } }

Importa una risorsa esistente in uno stack utilizzando il AWS Management Console

Nota

Il AWS CloudFormation la console non supporta l'uso della funzione intrinseca Fn: :Transform durante l'importazione di risorse. Puoi utilizzare il plugin AWS Command Line Interface per importare risorse che utilizzano la funzione intrinseca Fn: :Transform.

  1. Accedere a AWS Management Console e apri il AWS CloudFormation console in https://console.aws.amazon.com/cloudformazione.

  2. Nella pagina Stacks (Stack), scegliere lo stack in cui importare le risorse.

  3. Scegliere Stack actions (Operazioni stack), quindi scegliere Import resources into stack (Importa risorse nello stack).

    L' opzione Importa risorse nello stack nella console.
  4. Rivedere la pagina Import overview (Panoramica importazione), quindi scegliere Next (Successivo).

  5. Nella pagina Specify model (Specifica modello), fornire il modello aggiornato utilizzando uno dei metodi descritti di seguito, quindi scegliere Next (Successivo).

    • Scegli Amazon S3 URL, quindi specifica URL il modello nella casella di testo.

    • Scegliere Upload a template file (Carica un file modello), quindi cercare il modello.

  6. Nella pagina Identify resources (Identifica risorse), identifica ogni risorsa di destinazione. Per ulteriori informazioni, consulta Identificatori di risorse.

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

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

    3. Scegli Next (Successivo).

  7. Nella pagina Specify stack details (Specifica dettagli stack), aggiornare i parametri, quindi scegliere Next (Successivo). Questo crea automaticamente un set di modifiche.

    Nota

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

  8. Sulla recensione stack-namenella pagina, esamina le risorse da importare, quindi scegli Importa risorse. In questo modo si esegue automaticamente il set di modifiche creato nell'ultimo passaggio. Tutti i tag a livello di stack vengono applicati alle risorse importate in questo momento. Per ulteriori informazioni, consulta Configura le opzioni dello stack.

    Viene visualizzata la pagina Events (Eventi) per lo stack.

    La scheda Eventi nella console.
  9. (Facoltativo) Eseguire il rilevamento della deviazione nello stack per assicurarsi che il modello e la configurazione effettiva delle risorse importate corrispondano. Per ulteriori informazioni sul rilevamento della deriva, vedere. Rileva la deriva su un'intera CloudFormation pila

  10. (Facoltativo) Se le risorse importate non corrispondono alle configurazioni dei modelli previste, correggi le configurazioni dei modelli o aggiorna direttamente le risorse. Per ulteriori informazioni sull'importazione di risorse che derivano dalla deriva, vedere. Risoluzione della deviazione con un'operazione di importazione

Importa una risorsa esistente in uno stack utilizzando il AWS CLI

  1. Per sapere quali proprietà identificano ogni tipo di risorsa nel modello, esegui il get-template-summary comando, specificando l'S3 URL 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. Avrai bisogno di queste informazioni nel passaggio successivo.

    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 di risorse effettive da importare e i relativi identificatori univoci nel seguente JSON formato di stringa.

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

    In alternativa, potete specificare i parametri JSON -formatted in un file di configurazione.

    Ad esempio, per importareGamesTable, è possibile creare un ResourcesToImport.txt file che contiene la seguente configurazione.

    [ { "ResourceType":"AWS::DynamoDB::Table", "LogicalResourceId":"GamesTable", "ResourceIdentifier": { "TableName":"Games" } } ]
  3. Per creare un set di modifiche, utilizzate il seguente create-change-set comando e sostituite il testo segnaposto. Per l'opzione --change-set-type, specifica il valore di IMPORT. Per l'--resources-to-importopzione, sostituite la JSON stringa di esempio con la JSON stringa effettiva appena creata.

    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"}}]'
    Nota

    --resources-to-importnon supporta inlineYAML. I requisiti per l'escape tra virgolette nella JSON stringa variano a seconda del terminale. Per ulteriori informazioni, vedete Uso delle virgolette all'interno delle stringhe nella AWS Command Line Interface Guida per l'utente.

    In alternativa, è possibile utilizzare un file URL come input per l'--resources-to-importopzione, come illustrato nell'esempio seguente.

    --resources-to-import file://ResourcesToImport.txt
  4. Esaminare il set di modifiche per assicurarsi 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, utilizzate il execute-change-set comando seguente e sostituite il testo segnaposto. Tutti i tag a livello di stack vengono applicati alle risorse importate in questo momento. Per ulteriori informazioni, consulta Configura le opzioni dello stack. 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) Eseguire il rilevamento della deviazione sullo stack IMPORT_COMPLETE per assicurarsi che il modello e la configurazione effettiva delle risorse importate corrispondano. Per ulteriori informazioni sul rilevamento della deriva, vedere. Rileva la deriva su un'intera CloudFormation pila

    1. Esegue il rilevamento della deriva sullo stack specificato.

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

      In caso di successo, questo comando restituisce 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 sulla deriva per le risorse per le quali è stata verificata la deriva nello 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. Per ulteriori informazioni sull'importazione di risorse alla deriva, vedere. Risoluzione della deviazione con un'operazione di importazione