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à.
Nidificazione di uno stack esistente
Utilizzare la funzione resource import
per nidificare uno stack esistente all'interno di un altro stack esistente. Gli stack nidificati sono componenti comuni che l'utente dichiara e vi fa riferimento all'interno di altri modelli. In questo modo, è possibile evitare di copiare e incollare le stesse configurazioni nei modelli e semplificare gli aggiornamenti dello stack. Se si dispone di un modello per un componente comune, è possibile utilizzare la risorsa AWS::CloudFormation::Stack
per fare riferimento a questo modello da un altro modello. Per ulteriori informazioni sugli stack nidificati, consulta Incorpora pile all'interno di altre pile utilizzando pile annidate.
AWS CloudFormation supporta solo un livello di nidificazione. resource import
Ciò significa che non è possibile importare uno stack in uno stack figlio o importare uno stack con figli.
Se non conosci l'importazione, ti consigliamo di leggere prima le informazioni introduttive contenute nell'argomento. Importa AWS risorse in una CloudFormation pila con un'importazione di risorse
Convalida dell'importazione dello stack nidificato
Durante un'operazione di importazione di stack annidati, AWS CloudFormation esegue le seguenti convalide.
-
La definizione
AWS::CloudFormation::Stack
nidificata nel modello di stack padre corrisponde al modello dello stack nidificato effettivo. -
I tag per la definizione
AWS::CloudFormation::Stack
nidificata nel modello di stack padre corrispondono ai tag per la risorsa stack nidificata effettiva.
Nidificazione di uno stack esistente utilizzando la AWS Management Console
-
Aggiungi la
AWS::CloudFormation::Stack
risorsa al modello dello stack principale con un.Retain
DeletionPolicy Nell'esempio seguente, il modello dello stack principale,MyNestedStack
è la destinazione dell'importazione.JSON
{ "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "ServiceTable":{ "Type":"AWS::DynamoDB::Table", "Properties":{ "TableName":"Service", "AttributeDefinitions":[ { "AttributeName":"key", "AttributeType":"S" } ], "KeySchema":[ { "AttributeName":"key", "KeyType":"HASH" } ], "ProvisionedThroughput":{ "ReadCapacityUnits":5, "WriteCapacityUnits":1 } } }, "MyNestedStack" : { "Type" : "AWS::CloudFormation::Stack", "DeletionPolicy": "Retain", "Properties" : { "TemplateURL" : "
https://s3.amazonaws.com/cloudformation-templates-us-east-2/EC2ChooseAMI.template
","Parameters" : { "InstanceType" : "t1.micro", "KeyName" : "mykey"
} } } } }YAML
AWSTemplateFormatVersion: 2010-09-09 Resources: ServiceTable: Type: 'AWS::DynamoDB::Table' Properties: TableName: Service AttributeDefinitions: - AttributeName: key AttributeType: S KeySchema: - AttributeName: key KeyType: HASH ProvisionedThroughput: ReadCapacityUnits: 5 WriteCapacityUnits: 1 MyNestedStack: Type: 'AWS::CloudFormation::Stack' DeletionPolicy: Retain Properties: TemplateURL: >-
https://s3.amazonaws.com/cloudformation-templates-us-east-2/EC2ChooseAMI.template
Parameters: InstanceType: t1.micro KeyName: mykey
-
Apri la AWS CloudFormation console.
-
Nella pagina Stacks (Stack) con lo stack padre selezionato, scegliere Stack actions (Operazioni stack), quindi scegliere Import resources into stack (Importa risorse nello stack).
-
Leggere la pagina Import overview (Panoramica importazione) per un elenco di elementi da fornire durante questa operazione. Quindi, seleziona Next (Successivo).
-
Nella pagina Specify model (Specifica modello), fornire il modello padre 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.
-
-
Nella pagina Identify resources (Identifica risorse), identifica la risorsa
AWS::CloudFormation::Stack
.-
In Identifier property (Proprietà identificatore), scegliere il tipo di identificatore di risorsa. Ad esempio, una risorsa
AWS::CloudFormation::Stack
può essere identificata utilizzando la proprietàStackId
. -
In Valore identificativo, digita lo ARN stack che stai importando. Ad esempio
.arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10
-
Scegli Next (Successivo).
-
-
Nella pagina Specify stack details (Specifica dettagli stack), modificare i parametri, quindi scegliere Next (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.
-
Sulla recensione
MyParentStack
nella pagina, conferma che viene importata la risorsa corretta, 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 lo stack padre viene visualizzato il riquadro Events (Eventi) della pagina Stack details (Dettagli stack).
Nota
Non è necessario eseguire il rilevamento della deviazione nello stack padre dopo questa operazione di importazione perché la risorsa
AWS::CloudFormation::Stack
era già gestita da AWS CloudFormation.
Nidificazione di uno stack esistente utilizzando la AWS CLI
-
Aggiungi la
AWS::CloudFormation::Stack
risorsa al modello dello stack principale con un.Retain
DeletionPolicy Nel seguente modello padre di esempio,MyNestedStack
è la destinazione dell'importazione.JSON
{ "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "ServiceTable":{ "Type":"AWS::DynamoDB::Table", "Properties":{ "TableName":"Service", "AttributeDefinitions":[ { "AttributeName":"key", "AttributeType":"S" } ], "KeySchema":[ { "AttributeName":"key", "KeyType":"HASH" } ], "ProvisionedThroughput":{ "ReadCapacityUnits":5, "WriteCapacityUnits":1 } } }, "
MyNestedStack
" : { "Type" : "AWS::CloudFormation::Stack", "DeletionPolicy": "Retain", "Properties" : { "TemplateURL" : "https://s3.amazonaws.com/cloudformation-templates-us-east-2/EC2ChooseAMI.template
","Parameters" : { "InstanceType" : "t1.micro", "KeyName" : "mykey"
} } } } }YAML
AWSTemplateFormatVersion: 2010-09-09 Resources: ServiceTable: Type: 'AWS::DynamoDB::Table' Properties: TableName: Service AttributeDefinitions: - AttributeName: key AttributeType: S KeySchema: - AttributeName: key KeyType: HASH ProvisionedThroughput: ReadCapacityUnits: 5 WriteCapacityUnits: 1
MyNestedStack
: Type: 'AWS::CloudFormation::Stack' DeletionPolicy: Retain Properties: TemplateURL: >-https://s3.amazonaws.com/cloudformation-templates-us-east-2/EC2ChooseAMI.template
Parameters: InstanceType: t1.micro KeyName: mykey
-
Componi una JSON stringa come mostrato nell'esempio seguente, con queste modifiche:
-
Replace (Sostituisci)
MyNestedStack
con l'ID logico della risorsa di destinazione come specificato nel modello. -
Replace (Sostituisci)
arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10
con lo ARN stack che vuoi importare.
[{"ResourceType":"AWS::CloudFormation::Stack","LogicalResourceId":"
MyNestedStack
","ResourceIdentifier":{"StackId":"arn:aws:cloudformation:us-east-2:123456789012:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10
"}}]In alternativa, è possibile specificare i parametri in un file di configurazione.
Ad esempio, per importare
MyNestedStack
, è possibile creare unResourcesToImport.txt
file che contiene la seguente configurazione.JSON
[ { "ResourceType":"AWS::CloudFormation::Stack", "LogicalResourceId":"
MyNestedStack
", "ResourceIdentifier": { "StackId":"arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10
" } } ]YAML
ResourceType: 'AWS::CloudFormation::Stack' LogicalResourceId:
MyNestedStack
ResourceIdentifier: StackId: >-arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10
-
-
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 diIMPORT
. Per l'--resources-to-import
opzione, sostituite la JSON stringa di esempio con la JSON stringa effettiva appena creata.$
aws cloudformation create-change-set \ --stack-nameMyParentStack
--change-set-nameImportChangeSet
\ --change-set-typeIMPORT
\ --template-bodyfile://TemplateToImport.json
\ --resources-to-import'[{"ResourceType":"AWS::CloudFormation::Stack","LogicalResourceId":"MyNestedStack","ResourceIdentifier":{"StackId":"arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10"}}]'
Nota
--resources-to-import
non supporta inlineYAML. I requisiti per l'escape tra virgolette nella JSON stringa variano a seconda del terminale. Per ulteriori informazioni, consultate Uso delle virgolette all'interno delle stringhe nella Guida per l'AWS Command Line Interface utente.In alternativa, è possibile utilizzare un file URL come input per l'
--resources-to-import
opzione, come illustrato nell'esempio seguente.--resources-to-import
file://ResourcesToImport.txt
In caso di successo, questo comando restituisce il seguente output di esempio.
{ "Id": "arn:aws:cloudformation:us-west-2:12345678910:changeSet/ImportChangeSet/8ad75b3f-665f-46f6-a200-0b4727a9442e", "StackId": "arn:aws:cloudformation:us-west-2:12345678910:stack/MyParentStack/4e345b70-1281-11ef-b027-027366d8e82b" }
-
Esaminare il set di modifiche per assicurarsi che venga importato lo stack corretto.
$
aws cloudformation describe-change-set --change-set-nameImportChangeSet
-
Per avviare il set di modifiche e importare lo stack nello stack principale di origine, 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. Al completamento dell'operazione di importazione
(IMPORT_COMPLETE)
, lo stack viene nidificato correttamente.$
aws cloudformation execute-change-set --change-set-nameImportChangeSet
Nota
Non è necessario eseguire il rilevamento della deviazione nello stack padre dopo questa operazione di importazione perché la risorsa
AWS::CloudFormation::Stack
è già gestita da AWS CloudFormation.