Wie behebe ich den Fehler „Parameterüberprüfung fehlgeschlagen: Parameterwert 'abc' für den Parameternamen 'ABC' ist nicht vorhanden“ in CloudFormation?

Lesedauer: 5 Minute
0

Wenn ich meinen AWS CloudFormation-Stack erstelle oder aktualisiere, erhalte ich die folgende Fehlermeldung: „Die Parameterüberprüfung ist fehlgeschlagen: Der Parameterwert 'abc' für den Parameternamen 'ABC' ist nicht vorhanden.“ Wie kann ich diesen Fehler beheben?

Kurzbeschreibung

AWS CloudFormation gibt den Fehler „Parameterüberprüfung fehlgeschlagen“ zurück, wenn es sich bei einem der in Ihrer CloudFormation-Vorlage verwendeten Parameter um einen AWS-spezifischen Parametertyp handelt.

Sie können diesen Fehler erhalten, wenn Sie einen AWS-spezifischen Parameter verwenden:

  • Um bei der Stack-Erstellung einen Wert zu übergeben, der in der AWS-Region oder im AWS-Konto nicht existiert.
  • Als Eigenschaft für eine Ressource, und löschen Sie dann diesen Wert Out-of-Band-Wert, bevor Sie die Ressource während der Stack-Aktualisierung aktualisieren.
  • Als Parameter in einem untergeordneten Stapel. Der Fehler tritt auf, wenn der Wert des untergeordneten Stacks, der vom übergeordneten Stapel übergeben wird, nicht dem Parametertyp entspricht. Der Fehler tritt auch auf, wenn die Ressource des Parameters im Konto in dieser Region nicht vorhanden ist.

Behebung

Hinweis: Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS CLI-Version verwenden.

Erstellen Sie einen Stapel

1.    Öffnen Sie die AWS CloudFormation-Konsole.

2.    Wählen Sie im Navigationsbereich Listen.

3.    Wählen Sie in der Spalte Stackname den Stapel aus, der ausgefallen ist.

4.    Wählen Sie die Registerkarte Parameter.

5.    Suchen Sie in der Spalte Schlüssel nach dem ABC-Parameter mit dem ABC-Wert.

6.    Überprüfen Sie im Abschnitt Parameter der Vorlage, die für die Erstellung Ihres Stacks verwendet wird, ob die Ressource abc dem AWS-spezifischen Parametertyp entspricht.

7.    Stellen Sie sicher, dass die ABC -Ressource für den ABC-Parameter in der Region oder dem Konto vorhanden ist. Verwenden Sie entweder die AWS-Managementkonsole oder den AWS-CLI-Befehl, um die Ressource zu beschreiben. Um den richtigen Befehl für Ihre Ressource zu finden, lesen Sie den Abschnitt Finden Sie den Beschreibungsbefehl für Ihre Ressource.

Hinweis: Wenn Sie beispielsweise den Parametertyp AWS::EC2::VPC::Id, suchen Sie in der Amazon Virtual Private Cloud (Amazon VPC) -Konsole nach der Ressource.

8.    Wenn ABC ein Parameter für den untergeordneten Stapel ist, müssen Sie den ABC-Wert übergeben. Wählen Sie Option A oder Option B.

(Option A) Wenn Sie auf eine andere Ressource im übergeordneten Stapel verweisen, stellen Sie sicher, dass diese Ressource dem AWS-spezifischen Parametertyp entspricht, der im untergeordneten Stapel verwendet wird.

Hinweis: Der Stack schlägt beispielsweise fehl, wenn Sie den Parametertyp AWS::EC2::Subnet::Id (Subnetz) verwenden und auf den Ressourcentyp AWS::EC2::VPC verweisen.

(Option B) Wenn der ABC-Wert direkt vom übergeordneten Stapel übergeben wird, überprüfen Sie, ob die ABC-Ressource für den ABC-Parameter in der Region oder dem Konto vorhanden ist. Verwenden Sie entweder die AWS-Managementkonsole oder den AWS-CLI-Befehl, um die Ressource zu beschreiben. Um den richtigen Befehl für Ihre Ressource zu finden, lesen Sie den Abschnitt Finden Sie den Beschreibungsbefehl für Ihre Ressource.

Stellen Sie sich zum Beispiel den folgenden List-Parameter im untergeordneten Stapel vor:

"SecurityGroups": {
    "Description": "List of security group IDs for the instances",
    "Type": "List<AWS::EC2::SecurityGroup::Id>"
}

Der Wert des Parameters wird vom übergeordneten Stapel übergeben. Zum Beispiel:

"ChildStack" : {
 "Type" : "AWS::CloudFormation::Stack",
 "Properties" : {
    "Parameters":{
      "KeyPair" : { "Ref": "KeyPair" },
      "ImageID" : { "Ref": "ImageID" },
      "InstanceType" : { "Ref": "InstanceType" },
      "SecurityGroups" : { "Ref": "SecurityGroup" }
    }

Wichtig: Stellen Sie im vorherigen Beispiel sicher, dass der Wert der Sicherheitsgruppen-ID, der an den SecurityGroup -Parameter übergeben wird, in der Region oder dem Konto vorhanden ist.

9.    Erstellen Sie einen neuen Stapel mit einem gültigen Wert für den Parameter, der in Ihrer Region oder Ihrem Konto vorhanden ist und dem AWS-spezifischen Parametertyp entspricht.

Aktualisiere den Stapel

Wenn ein Stack-Update fehlschlägt, macht CloudFormation die Änderungen rückgängig. Das bedeutet, dass Sie den Parameterwert, der über die AWS CloudFormation-Konsole aktualisiert wurde, nicht sehen können.

Sie müssen den Wert für den ABC -Parameter während des Updates ändern. Wenn Sie den Wert nicht ändern, wird die Ressource mit dem Namen oder der PhysicalID von abc möglicherweise aus dem Konto out of band gelöscht.

1.    Um zu überprüfen, ob die Ressource vorhanden ist, verwenden Sie entweder die AWS-Managementkonsole oder den AWS-CLI-Befehl, um die Ressource zu beschreiben. Um den richtigen Befehl für Ihre Ressource zu finden, lesen Sie den Abschnitt Finden Sie den Beschreibungsbefehl für Ihre Ressource.

2.    Wenn Sie den Stapel aktualisieren, indem Sie den ABC-Parameter aktualisieren, folgen Sie den Schritten 6, 7 und 8 im vorherigen Abschnitt Einen Stapel erstellen.

3.    Aktualisieren Sie den Stapel, indem Sie einen gültigen Wert an den ABC-Parameter übergeben.

Suchen Sie den Befehl describe für Ihre Ressource

Wählen Sie den richtigen Befehl für Ihre Ressource:

  • Verwenden Sie für AWS::EC2::Image::Id oder List den Befehl für AWS CLI Version 1 oder Version 2.
  • Verwenden Sie für AWS::EC2::Instance::Id oder List den Befehl für AWS CLI Version 1 oder Version 2.
  • Verwenden Sie für AWS::EC2::KeyPair::KeyName den Befehl für AWS Version 1 oder Version 2.
  • Verwenden Sie für AWS::EC2::SecurityGroup::GroupName, AWS::EC2::SecurityGroup::Id, List, oder List den Befehl für Version 1 oder Version 2.
  • Verwenden Sie für AWS::EC2::Subnet::Id oder List den Befehl für AWS CLI Version 1 oder Version 2.
  • Verwenden Sie für AWS::EC2::VPC::Id oder List den Befehl für AWS CLI Version 1 oder Version 2.
  • Verwenden Sie für AWS::Route53::HostedZone::Id or List den Befehl für AWS CLI Version 1 or Version 2.
  • Verwenden Sie für AWS::EC2::AvailabilityZone::Name oder List den Befehl für AWS CLI Version 1 oder Version 2.
  • Verwenden Sie für AWS::EC2::Volume::Id oder List den Befehl für AWS CLI Version 1 oder Version 2.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren