Durch die Nutzung von AWS re:Post stimmt du den AWS re:Post Nutzungsbedingungen

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

Lesedauer: 4 Minute
0

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

Lösung

Um auf eine Ressource in einem anderen CloudFormation-Stack zu verweisen, müssen Sie zunächst stackübergreifende Verweise erstellen. Die folgende Lösung enthält ein Beispiel für eine Methode zum Erstellen einer stackübergreifenden Referenz. Der NetworkStack-Beispielstack erstellt die netzwerkbezogenen Ressourcen und Exporte ${AWS::StackName}-SecurityGroupID und ${AWS::StackName}-SubnetID. Nach der Stack-Erstellung ersetzt CloudFormation ${AWS::StackName} durch NetworkStack. Die finalen Exportnamen sind NetworkStack-SecurityGroupID und NetworkStack-SubnetID.

Erstellen Sie einen Stack, um Ausgabewerte zu exportieren

Führen Sie die folgenden Schritte aus:

  1. Erstellen Sie einen CloudFormation-Stack und verwenden Sie dann die SampleNetworkCrossStack-Vorlage.
    Hinweis: Sie müssen das Exportfeld im Abschnitt Ausgaben der Vorlage deklarieren.
  2. Nennen Sie den Stack NetworkStack.
    Hinweis: NetworkStack exportiert die Subnetz- und Sicherheitsgruppenwerte.

Verwenden Sie ein importiertes Subnetz und eine Sicherheitsgruppe, um eine Amazon EC2-Instance zu erstellen

Die Instance-Eigenschaften von Amazon Elastic Compute Cloud (Amazon EC2) wie SubnetId und SecurityGroupId verwenden die Werte aus dem exportierenden Stack. Verwenden Sie die intrinsische Funktion Fn::ImportValue, um die Werte zu importieren.

Hinweis: Der Import- und Exportstack müssen sich in derselben AWS-Region und demselben AWS-Konto befinden. Außerdem müssen die Namen der exportierten Werte für Ihre Region und Ihr Konto eindeutig sein.

Bevor Sie die EC2-Instance erstellen, führen Sie die folgenden Schritte aus:

  1. Öffnen Sie die CloudFormation-Konsole.
  2. Wählen Sie Stack erstellen und dann Designvorlage.
  3. Wählen Sie die Registerkarte Parameter des Code-Editors und dann Vorlage.
  4. Um die Werte aus dem Exportstack zum Erstellen der Instance zu verwenden, geben Sie die folgende Vorlage in den Code-Editor ein:
    Wichtig: Legen Sie den NetworkStack-Ressourcenstack als Wert für NetworkStackParameter fest. Der NetworkStack-Wert ersetzt den richtigen Stacknamen in den entsprechenden Fn::ImportValue-Funktionen.
    {  "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"
                  }
                }
              }
            ]
          }
        }
      }
    }
    Hinweis: Ersetzen Sie t2.micro durch Ihren Instance-Typ und ami-a1b23456 durch Ihre Amazon Machine Image (AMI) ID.
  5. Wählen Sie Stack erstellen (Wolkensymbol mit Pfeil nach oben) und dann Weiter.
  6. Geben Sie unter Stackname einen Namen für Ihren Stack ein.
  7. Geben Sie unter Parameter den Namen des Netzwerk-Stacks, z. B.NetworkStack, ein, auf den Sie einen Querverweis erstellen möchten.
  8. Wählen Sie Weiter und dann erneut Weiter.
  9. Wählen Sie Erstellen.
  10. Nachdem sich der Stack-Status in CREATE\ _COMPLETE geändert hat, öffnen Sie die Amazon EC2-Konsole.
  11. Wählen Sie im Navigationsbereich Instances und dann Ihre erstellte Instance aus.
  12. Wählen Sie den Reiter Beschreibung, und überprüfen Sie dann, ob die Sicherheitsgruppe und das Subnetz konfiguriert sind.

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

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

**Hinweis:**Wenn bei der Ausführung von AWS Command Line Interface (AWS CLI)-Befehlen Fehler auftreten, finden Sie weitere Informationen unter Troubleshoot AWS CLI errors. Stellen Sie außerdem sicher, dass Sie die neueste Version von AWS CLI verwenden.

Ähnliche Informationen

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

AWS CloudFormation-Vorlagen

AWS::EC2::Instance

Weitere Informationen finden Sie in den Ressourcenausgaben in einem anderen CloudFormation-Stack

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Monaten