Come faccio a fare riferimento a una risorsa in un altro stack da un modello di AWS CloudFormation?

4 minuti di lettura
0

Voglio fare riferimento a una risorsa in un altro stack di AWS CloudFormation quando creo un modello.

Breve descrizione

La risoluzione seguente fornisce un esempio di un metodo per creare un riferimento tra diversi stack. Per ulteriori istruzioni, vedi Procedura dettagliata: Fai riferimento agli output delle risorse in un altro stack di AWS CloudFormation.

Nota: per fare riferimento a una risorsa in un altro stack di AWS CloudFormation, devi prima creare riferimenti tra stack. Per creare un riferimento tra stack, utilizza il campo di esportazione per contrassegnare il valore di un output delle risorse per l'esportazione. Quindi, utilizza la funzione intrinseca Fn::ImportValue per importare il valore in qualsiasi stack all'interno della stessa regione e account AWS. AWS CloudFormation identifica i valori esportati in base ai nomi specificati nel modello. Questi nomi devono essere univoci per la tua regione AWS e il tuo account.

Risoluzione

I passaggi seguenti mostrano come creare uno stack AWS CloudFormation denominato NetworkStack. Questo stack crea risorse ed esportazioni relative alla rete denominate ${AWS::StackName}-SecurityGroupID e ${AWS::StackName}-SubnetID. ${AWS::StackName} viene sostituito da NetworkStack dopo la creazione dello stack. I nomi di esportazione finali sono NetworkStack-SecurityGroupID e NetworkStack-SubnetID.

Crea uno stack per esportare i valori di output

1.    Crea uno stack AWS CloudFormation utilizzando questo modello.

2.    Denomina lo stack NetworkStack.

Nota: NetworkStack esporta i valori della sottorete e del gruppo di sicurezza.

Crea un'istanza Amazon Elastic Compute Cloud (Amazon EC2) utilizzando una sottorete e un gruppo di sicurezza importati

1.    Apri la console di AWS CloudFormation.

2.    Scegli Creat stack (Crea stack), quindi scegli Design template (Progetta modello).

3.    Nella scheda Parameters (Parametri) dell'editor di codice, scegli Template (Modello).

4.    Copia e incolla il seguente modello nell'editor di codice, quindi aggiorna il modello con i valori appropriati per InstanceType e ImageId:

{
  "Parameters": {
    "NetworkStackParameter": {
      "Type": "String"
    }
  },
  "Resources": {
    "WebServerInstance": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "InstanceType": "t2.micro",
        "ImageId": "ami-a1b23456",
        "NetworkInterfaces": [
          {
            "GroupSet": [
              {
                "Fn::ImportValue": {
                  "Fn::Sub": "${NetworkStackParameter}-SecurityGroupID"
                }
              }
            ],
            "AssociatePublicIpAddress": "true",
            "DeviceIndex": "0",
            "DeleteOnTermination": "true",
            "SubnetId": {
              "Fn::ImportValue": {
                "Fn::Sub": "${NetworkStackParameter}-SubnetID"
              }
            }
          }
        ]
      }
    }
  }
}

Importante: nel modello del passaggio 4, utilizza lo stack di risorse NetworkStack come valore per NetworkStackParameter. Il valore NetworkStack sostituisce il nome corretto dello stack nelle funzioni Fn::ImportValue corrispondenti.

Nota: per esempi di modelli di importazione ed esportazione, vedi Fn::ImportValue.

5.    Scegli l'icona Create stack (Crea stack), quindi scegli Next (Avanti).

6.    In Stack name (Nome dello stack), inserisci un nome per il tuo stack.

7.    In Parameters (Parametri), inserisci il nome dello stack di rete (NetworkStack) a cui desideri fare un riferimento incrociato.

8.    Scegli Next (Avanti), poi di nuovo Next (Avanti), quindi scegli Create (Crea).

9.    Una volta completata la creazione dello stack, apri la console Amazon EC2.

10.    Nel riquadro di navigazione, scegli Instances (Istanze), quindi scegli l'istanza che hai creato con il modello nel passaggio 4.

11.    Scegli la visualizzazione Description (Descrizione), quindi verifica che il gruppo di sicurezza e la sottorete siano configurati.

Importante: non puoi eliminare lo stack di origine o i valori di esportazione dello stack di origine mentre un altro stack sta importando questi valori. Per aggiornare i valori di esportazione dello stack di origine, sostituisci prima manualmente i valori effettivi negli stack che importano i valori di esportazione dello stack di origine. Quindi, puoi aggiornare i valori di esportazione dello stack di origine.

Per elencare tutti gli stack che stanno importando un valore di output esportato, esegui il comando list-imports. Per elencare tutte le esportazioni in una regione AWS, utilizza la console AWS CloudFormation o esegui il comando list-exports. Il nome di esportazione deve essere univoco per l'account per regione AWS.

Informazioni correlate

Come faccio a utilizzare i parametri nell'archivio dei parametri AWS Systems Manager per condividere valori tra gli stack di CloudFormation?

Modelli AWS CloudFormation

AWS::EC2::Instance

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa