Direkt zum Inhalt

Wie kann ich mehrere Werte für einzelne Parameter in einer AWS CloudFormation-Vorlage verwenden?

Lesedauer: 2 Minute
0

Ich möchte mehrere Werte für einzelne Parameter verwenden, um einen Stack aus einer AWS-CloudFormation-Vorlage zu erstellen oder zu aktualisieren.

Behebung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version von AWS CLI verwendest.

Um mehrere Werte für einzelne Parameter in einer CloudFormation-Vorlage zu verwenden, führe eine der folgenden Aktionen aus:

AWS-spezifische Parametertypen verwenden

Hinweis: AWS CloudFormation validiert den von dir ausgewählten Eingabewert in deinem Konto anhand vorhandener Werte.

In den folgenden CloudFormation-Vorlagenbeispielen gibt der Parameter mit dem SecurityGroups-Schlüssel einen AWS-spezifischen Parametertyp an, der mehrere Werte für SecurityGroupIds akzeptieren kann.

JSON-Vorlage:

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Parameters": {
    "SecurityGroups": {
      "Type": "List<AWS::EC2::SecurityGroup::Id>",
      "Description": "The list of SecurityGroupIds in your Virtual Private Cloud (VPC)"
    }
  },
  "Resources": {
    "MyEC2Instance": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "ImageId": "ami-79fd7eee",
        "KeyName": "testkey",
        "SecurityGroupIds": {
          "Ref": "SecurityGroups"
        }
      }
    }
  }
}

YAML-Vorlage:

AWSTemplateFormatVersion: 2010-09-09
Parameters:
  SecurityGroups:
    Type: 'List<AWS::EC2::SecurityGroup::Id>'
    Description: The list of SecurityGroupIds in your Virtual Private Cloud (VPC)
Resources:
  MyEC2Instance:
    Type: 'AWS::EC2::Instance'
    Properties:
      ImageId: ami-79fd7eee
      KeyName: testkey
      SecurityGroupIds: !Ref SecurityGroups

Um den Stack bereitzustellen, führe den AWS-CLI-Befehl create-stack aus:

aws cloudformation create-stack --stack-name StackName --template-body file://TemplateFileName
--parameters ParameterKey=SecurityGroups,ParameterValue="sg-0123456789\,sg-2345678901"

Hinweis: Ersetze StackName durch den Namen deines Stacks und TemplateFileName durch den Namen deiner Datei. Gib bei ParameterValue deine Sicherheitsgruppen-ID ein.

CommaDelimitedList-Parametertypen verwenden

In den folgenden CloudFormation-Vorlagenbeispielen gibt der Parameter mit dem SchlüsselSecurityGroups einen CommaDelimitedList-Typ an, der mehrere Werte für SecurityGroupIDs annehmen kann.

JSON-Vorlage:

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Parameters": {
    "SecurityGroups": {
      "Type": "CommaDelimitedList",
      "Description": "The list of SecurityGroupIds in your Virtual Private Cloud (VPC)",
      "Default": "sg-a123fd85, sg-b456ge94"
    }
  },
  "Resources": {
    "MyEC2Instance": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "ImageId": "ami-79fd7eee",
        "KeyName": "testkey",
        "SecurityGroupIds": {
          "Ref": "SecurityGroups"
        }
      }
    }
  }
}

YAML-Vorlage:

AWSTemplateFormatVersion: 2010-09-09
Parameters:
  SecurityGroups:
    Type: CommaDelimitedList
    Description: The list of SecurityGroupIds in your Virtual Private Cloud (VPC)
    Default: sg-a123fd85, sg-b456ge94
Resources:
  MyEC2Instance:
    Type: 'AWS::EC2::Instance'
    Properties:
      ImageId: ami-79fd7eee
      KeyName: testkey
      SecurityGroupIds: !Ref SecurityGroups
AWS OFFICIALAktualisiert vor 8 Monaten