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 funzionalità 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 Dividi un modello in pezzi riutilizzabili usando stack nidificati.
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 hai mai effettuato l’importazione, ti consigliamo di esaminare prima le informazioni introduttive nella sezione Importazione AWS manuale delle risorse in uno CloudFormation stack.
Convalida dell’importazione dello stack nidificato
Durante un'operazione di importazione di stack annidati, CloudFormation esegue le seguenti convalide.
-
La definizione
AWS::CloudFormation::Stacknidificata nel modello di stack padre corrisponde al modello dello stack nidificato effettivo. -
I tag per la definizione
AWS::CloudFormation::Stacknidificata nel modello di stack padre corrispondono ai tag per la risorsa stack nidificata effettiva.
Nidificazione di uno stack esistente utilizzando la Console di gestione AWS
-
Aggiungi la
AWS::CloudFormation::Stackrisorsa al modello dello stack principale con un.RetainDeletionPolicy Nel seguente modello di stack 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.templateParameters: InstanceType: t1.micro KeyName: mykey -
Apri la CloudFormation console.
-
Nella pagina Stack con lo stack padre selezionato, scegliere Operazioni stack, quindi scegliere Importa risorse nello stack.
-
Leggere la pagina Panoramica importazione per un elenco di elementi da fornire durante questa operazione. Quindi, seleziona Successivo.
-
Nella pagina Specifica modello, fornire il modello padre aggiornato utilizzando uno dei metodi descritti di seguito, quindi scegliere Successivo.
-
Scegliere URL Amazon S3, quindi specificare l’URL per il tuo modello nella casella di testo.
-
Scegliere Carica un file modello, quindi cercare il modello.
-
-
Nella pagina Identifica risorse, identifica la risorsa
AWS::CloudFormation::Stack.-
In Proprietà identificatore, scegliere il tipo di identificatore di risorsa. Ad esempio, una risorsa
AWS::CloudFormation::Stackpuò essere identificata utilizzando la proprietàStackId. -
In Valore identificatore, digita l’ARN dello stack che stai importando. Ad esempio,
.arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10
-
Scegli Successivo.
-
-
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.
-
Nella
MyParentStackpagina Revisione, conferma che sia stata 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 Eventi della pagina Dettagli stack.
Nota
Non è necessario eseguire il rilevamento della deviazione nello stack padre dopo questa operazione di importazione perché la risorsa
AWS::CloudFormation::Stackera già gestita da CloudFormation.
Nidificazione di uno stack esistente utilizzando la AWS CLI
-
Aggiungi la
AWS::CloudFormation::Stackrisorsa al modello dello stack principale con un.RetainDeletionPolicy 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: 1MyNestedStack: Type: AWS::CloudFormation::Stack DeletionPolicy: Retain Properties: TemplateURL: >-https://s3.amazonaws.com/cloudformation-templates-us-east-2/EC2ChooseAMI.templateParameters: InstanceType: t1.micro KeyName: mykey -
Componi una stringa JSON come mostrato nell’esempio seguente, con queste modifiche:
-
Sostituisci
MyNestedStackcon l'ID logico della risorsa di destinazione come specificato nel modello. -
Sostituisci
arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10con l'ARN dello stack che desideri 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, puoi specificare i parametri in un file di configurazione.
Ad esempio, per importare
MyNestedStack, potreste creare unResourcesToImport.txtfile che contenga 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:MyNestedStackResourceIdentifier: StackId: >-arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10 -
-
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-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-importnon 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, puoi anche utilizzare l’URL del file come input per l’opzione
--resources-to-import, come mostrato nell’esempio seguente.--resources-to-importfile://ResourcesToImport.txtSe eseguito correttamente, il comando restituirà 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 padre di origine, 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. Al completamento dell’operazione di importazione
(IMPORT_COMPLETE), lo stack viene nidificato correttamente.aws cloudformation execute-change-set --change-set-nameImportChangeSetNota
Non è necessario eseguire il rilevamento della deviazione nello stack padre dopo questa operazione di importazione perché la risorsa
AWS::CloudFormation::Stackè già gestita da CloudFormation.