Wie kann ich aus einer AWS CloudFormation-Vorlage auf eine Ressource in einem anderen Stack verweisen?

Lesedauer: 3 Minute
0

Ich möchte auf eine Ressource in einem anderen AWS CloudFormation-Stack verweisen, wenn ich eine Vorlage erstelle.

Kurze Beschreibung

Die folgende Auflösung enthält ein Beispiel für eine Methode zum Erstellen einer stapelübergreifenden Referenz. Weitere Anweisungen finden Sie unter Durchgang Vorgehensweise: Weitere Informationen finden Sie in den Ressourcenausgaben in einem anderen AWS CloudFormation-Stack.

Hinweis: Um auf eine Ressource in einem anderen AWS CloudFormation-Stack zu verweisen, müssen Sie zunächst stapelübergreifende Verweise erstellen. Um eine stapelübergreifende Referenz zu erstellen, verwenden Sie das Exportfeld, um den Wert einer Ressourcenausgabe für den Export zu kennzeichnen. Verwenden Sie dann die intrinsische Funktion Fn::ImportValue, um den Wert in einen beliebigen Stapel innerhalb derselben AWS-Region und desselben Kontos zu importieren. AWS CloudFormation identifiziert exportierte Werte anhand der in der Vorlage angegebenen Namen. Diese Namen müssen für Ihre AWS-Region und Ihr Konto eindeutig sein.

Auflösung

Die folgenden Schritte zeigen, wie Sie einen AWS CloudFormation-Stack mit dem Namen NetworkStack erstellen. Dieser Stack erstellt netzwerkbezogene Ressourcen und Exporte mit den Namen ${AWS::StackName}-SecurityGroupId und ${AWS::StackName}-SubnetId. ${AWS::StackName} wird nach der Stack-Erstellung durch NetworkStack ersetzt. Die endgültigen Exportnamen sind NetworkStack-SecurityGroupID und NetworkStack-SubnetId.

Erstellen Sie einen Stapel, um Ausgabewerte zu exportieren

1.Erstellen Sie mithilfe dieser Vorlage einen AWS CloudFormation-Stack.

2.Nennen Sie den Stack NetworkStack.

Hinweis: NetworkStack exportiert die Subnetz- und Sicherheitsgruppenwerte.

Erstellen Sie eine Amazon Elastic Compute Cloud (Amazon EC2) -Instance mithilfe eines importierten Subnetzes und einer Sicherheitsgruppe

1.Öffnen Sie die AWS CloudFormation-Konsole.

2.Wählen Sie Erstellen Stapel und dann Designvorlage.

3.Wählen Sie im Code-Editor auf der Registerkarte Parameter die Option Vorlage aus.

4.Kopieren Sie die folgende Vorlage,fügen Sie in den Code-Editor ein und aktualisieren Sie die Vorlage dann mit den entsprechenden Werten für InstanceType und 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"
              }
            }
          }
        ]
      }
    }
  }
}

**Wichtig:**Verwenden Sie in der Vorlage in Schritt 4 den NetworkStack-Ressourcenstapel als Wert für NetworkStackParameter. Der NetworkStack-Wert ersetzt den richtigen Stacknamen in den entsprechenden Fn::ImportValue-Funktionen.

**Hinweis:**Beispiele für Import- und Exportvorlagen finden Sie unter Fn::ImportValue.

5.Wählen Sie Erstellen Stapel-Symbol und dannWeiter.

6.Geben Sie unter Stackname einen Namen für Ihren Stack ein.

7.Geben Sie unter Parameter den Namen des Netzwerk-Stacks (NetworkStack) ein, auf den Sie einen Querverweis erstellen möchten.

8.Wählen Sie Weiter, wählen Sie erneut Weiter und dann Erstellen.

9.Nachdem die Stack-Erstellung abgeschlossen ist, öffnen Sie die Amazon EC2-Konsole.

10.Wählen Sie im Navigationsbereich Instances und dann die Instance aus, die Sie in Schritt 4 mit der Vorlage erstellt haben.

11.Wählen Sie die Ansicht Beschreibung, und überprüfen Sie dann, ob die Sicherheitsgruppe und das Subnetz konfiguriert sind.

Wichtig: Sie können den Quellstapel oder die Exportwerte des Quellstapels nicht löschen, während ein anderer Stapel diese Werte importiert. Um die Exportwerte des Quell-Stacks zu aktualisieren, ersetzen Sie zunächst manuell die tatsächlichen Werte in den Stacks, die Exportwerte des Quell-Stacks importieren. Anschließend können Sie die Exportwerte des Quellstapels aktualisieren.

Führen Sie den Befehl list-imports aus, um alle Stacks aufzulisten, die einen exportierten Ausgabewert importieren. Um alle Exporte in einer AWS-Region aufzulisten, verwenden Sie die AWS CloudFormation-Konsole oder führen Sie den Befehl list-exports aus. Der Exportname muss für das Konto pro AWS-Region eindeutig sein.

Verwandte Informationen

Wie verwende ich Parameter im AWS Systems Manager Parameter Store, um Werte zwischen CloudFormation-Stacks auszutauschen?

AWS CloudFormation-Vorlagen

AWS::EC2::Instanz

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr