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
Questa sezione mostra come importare risorse AWS presenti 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 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 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 in locale o in un bucket Amazon S3.
Per ottenere una copia di un modello di stack in esecuzione
-
Apri la console CloudFormation all’indirizzo https://console.aws.amazon.com/cloudformation/
. -
Dagli elenchi di stack, scegli lo stack da cui recuperare il modello.
-
Nel riquadro dei dettagli dello stack, scegli la scheda Modello, quindi scegli Copia negli appunti.
-
Incolla il codice in un editor di testo per iniziare ad aggiungere altre risorse al modello.
-
-
Per ogni risorsa che desideri importare, includi:
-
le proprietà e i valori delle proprietà che definiscono la configurazione corrente della risorsa;
-
l’identificativo univoco per la risorsa, ad esempio il nome della risorsa. Per ulteriori informazioni, consulta Identificatori di risorse .
-
Argomenti
Modello di esempio
In questa procedura guidata, supponiamo che tu stia utilizzando il seguente modello di esempio, chiamato TemplateToImport.json, che specifica due tabelle DynamoDB. ServiceTable è attualmente parte dello stack e 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 quelle 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
}
}
}
}
}
Importazione di una risorsa esistente in uno stack utilizzando l’Console di gestione AWS
Nota
La console CloudFormation non supporta l’uso della funzione intrinseca Fn::Transform durante l’importazione di risorse. È possibile utilizzare ila AWS CLI per importare le risorse che utilizzano la funzione Fn::Transform.
Accedi alla Console di gestione AWS e apri la console di CloudFormation all’indirizzo https://console.aws.amazon.com/cloudformation
. -
Nella pagina Stack, scegli lo stack in cui importare le risorse.
-
Scegli Operazioni stack, quindi scegli Importa risorse nello stack.
-
Rivedi la pagina Panoramica importazione, quindi scegli Successivo.
-
Nella pagina Specifica modello, fornisci il modello aggiornato utilizzando uno dei metodi descritti di seguito, quindi scegli Successivo.
-
Scegli URL Amazon S3, quindi specifica l’URL per il tuo modello nella casella di testo.
-
Scegli Carica un file modello, quindi cerca il modello.
-
-
Nella pagina Identifica risorse, identifica ogni risorsa di destinazione. Per ulteriori informazioni, consulta Identificatori di risorse .
-
In Proprietà identificatore, scegli il tipo di identificatore di risorsa. Ad esempio, la risorsa
AWS::DynamoDB::Tablepuò essere identificata utilizzando la proprietàTableName. -
In Valore identificatore, digita il valore effettivo della proprietà. Ad esempio, il
TableNameper la risorsaGamesTablenel modello di esempio è.Games -
Scegli Successivo.
-
-
Nella pagina Specifica dettagli stack, aggiorna i parametri, quindi scegli 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.
-
Nella pagina Rivedi
nome stack, rivedi 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 Configurazione delle opzioni dello stack.Viene visualizzata la pagina Eventi per lo stack.
-
(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.
-
(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 delle risorse con deviazioni, consulta Risoluzione della deviazione con un’operazione di importazione.
Importazione di una risorsa esistente in uno stack utilizzando l’AWS CLI
-
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::Tablepuò essere identificata utilizzando la proprietàTableName. Per la risorsaGamesTablenel modello di esempio, il valore diTableNameèGames. Queste informazioni ti serviranno nella fase successiva.aws cloudformation get-template-summary \ --template-urlhttps://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/TemplateToImport.jsonPer ulteriori informazioni, consulta Identificatori di risorse .
-
Componi un elenco di risorse attuali da importare e di relativi identificatori univoci nel seguente formato della stringa JSON.
[{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"GamesTable","ResourceIdentifier":{"TableName":"Games"}}]In alternativa, puoi specificare i parametri formattati JSON in un file di configurazione.
Ad esempio, per importare
GamesTable, è possibile creare un fileResourcesToImport.txtcontenente la seguente configurazione.[ { "ResourceType":"AWS::DynamoDB::Table", "LogicalResourceId":"GamesTable", "ResourceIdentifier": { "TableName":"Games" } } ] -
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 diIMPORT. 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-nameTargetStack--change-set-nameImportChangeSet\ --change-set-typeIMPORT\ --template-urlhttps://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 YAML in linea. I requisiti per l’escape delle virgolette nella stringa JSON variano in base al terminale. Per ulteriori informazioni, consulta Using quotation marks inside strings 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-importfile://ResourcesToImport.txt -
Esamina il set di modifiche per assicurarsi che vengano importate le risorse corrette.
aws cloudformation describe-change-set \ --change-set-nameImportChangeSet--stack-nameTargetStack -
Per avviare il set di modifiche e importare le risorse, utilizza il seguente comando execute-change-set e sostituisci il testo segnaposto. Tutti i tag a livello di stack vengono applicati alle risorse importate in questo momento. Per ulteriori informazioni, consulta Configurazione delle opzioni dello stack. Al completamento dell’operazione
(IMPORT_COMPLETE), le risorse vengono importate correttamente.aws cloudformation execute-change-set \ --change-set-nameImportChangeSet--stack-nameTargetStack -
(Facoltativo) Esegui il rilevamento della deviazione sullo stack
IMPORT_COMPLETEper 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.-
Esegui il rilevamento della deriva sullo stack specificato.
aws cloudformation detect-stack-drift --stack-nameTargetStackSe eseguito correttamente, il comando restituirà il seguente output di esempio.
{ "Stack-Drift-Detection-Id" : "624af370-311a-11e8-b6b7-500cexample" } -
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-id624af370-311a-11e8-b6b7-500cexample -
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-nameTargetStack
-
-
(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 delle risorse con deviazioni, consulta Risoluzione della deviazione con un’operazione di importazione.