AWS Werte mithilfe von Pseudo-Parametern abrufen - AWS CloudFormation

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AWS Werte mithilfe von Pseudo-Parametern abrufen

Pseudo-Parameter sind integrierte Variablen, die den Zugriff auf wichtige AWS Umgebungsinformationen wie Konten IDs, Regionsnamen und Stack-Details ermöglichen, die sich zwischen Bereitstellungen oder Umgebungen ändern können.

Sie können Pseudo-Parameter anstelle von fest codierten Werten verwenden, um Ihre Vorlagen portabler zu machen und sie in verschiedenen Regionen leichter wiederzuverwenden. AWS-Konten

Syntax

Sie können Pseudoparameter entweder mit der Funktion Ref intrinsisch oder mit der Funktion Fn::Sub intrinsisch referenzieren.

Punkt

Die Funktion Ref verwendet die folgende allgemeine Syntax. Weitere Informationen finden Sie unter Ref.

JSON

{ "Ref" : "AWS::PseudoParameter" }

YAML

!Ref AWS::PseudoParameter

Fn::Sub

Die Fn::Sub-Funktion verwendet ein anderes Format, das die ${}-Syntax um den Pseudoparameter herum enthält. Weitere Informationen finden Sie unter Fn::Sub.

JSON

{ "Fn::Sub" : "${AWS::PseudoParameter}" }

YAML

!Sub '${AWS::PseudoParameter}'

Verfügbare Pseudoparameter

AWS::AccountId

Gibt die AWS-Konto ID des Kontos zurück, in dem der Stack erstellt wird, z. B. 123456789012

Dieser Pseudo-Parameter wird häufig bei der Definition von IAM-Rollen, Richtlinien und anderen Ressourcenrichtlinien verwendet, die kontospezifische Richtlinien beinhalten. ARNs

AWS::NotificationARNs

Gibt die Liste der Amazon-Ressourcennamen (ARNs) für die Amazon SNS-Themen zurück, die Stack-Ereignisbenachrichtigungen erhalten. Sie können diese ARNs über die --notification-arns Option in der AWS CLI oder über die Konsole angeben, während Sie Ihren Stack erstellen oder aktualisieren.

Im Gegensatz zu anderen Pseudo-Parametern, die einen einzelnen Wert zurückgeben, AWS::NotificationARNs gibt dies eine Liste von ARNs zurück. Um auf eine bestimmte ARN in der Liste zuzugreifen, verwenden Sie die Funktion Fn::Select intrinsic. Weitere Informationen finden Sie unter Fn::Select.

AWS::NoValue

Entfernt die entsprechende Ressourceneigenschaft, wenn als Rückgabewert in der intrinsischen Funktion Fn::If angegeben. Weitere Informationen finden Sie unter Fn::If.

Dieser Pseudoparameter ist besonders nützlich, um bedingte Ressourceneigenschaften zu erstellen, die nur unter bestimmten Bedingungen einbezogen werden sollen.

AWS::Partition

Gibt die Partition zurück, in der sich die Ressource befindet. Standardmäßig ist AWS-Regionen die Partitionaws. Für Ressourcen in anderen Partitionen lautet die Partition aws-partitionname. Zum Beispiel ist die Partition für Ressourcen in den Regionen China (Peking und Ningxia) aws-cn und die Partition für Ressourcen in der Region AWS GovCloud (USA West). aws-us-gov

Die Partition ist Teil des ARN für Ressourcen. Durch die Verwendung AWS::Partition wird sichergestellt, dass Ihre Vorlagen auf verschiedenen AWS Partitionen korrekt funktionieren.

AWS::Region

Gibt eine Zeichenfolge zurück, die die Region repräsentiert, in der die umfassende Ressource erstellt wird, z. B. us-west-2.

Dies ist einer der am häufigsten verwendeten Pseudo-Parameter, da er es Vorlagen ermöglicht, sich AWS-Regionen ohne Änderung an andere anzupassen.

AWS::StackId

Gibt die ID (ARN) des Stacks zurück, beispielsweise arn:aws:cloudformation:us-west-2:123456789012:stack/teststack/51af3dc0-da77-11e4-872e-1234567db123.

AWS::StackName

Gibt den Namen des Stacks zurück, beispielsweise teststack.

Der Stapelname wird üblicherweise verwendet, um eindeutige Ressourcennamen zu erstellen, die leicht als zu einem bestimmten Stapel gehörig identifiziert werden können.

AWS::URLSuffix

Gibt das Suffix für die AWS Domain zurück, AWS-Region in der der Stack bereitgestellt wird. Das Suffix ist normalerweise,amazonaws.com aber für die Region China (Beijing) lautet das Suffix amazonaws.com.cn.

Dieser Parameter ist besonders nützlich, wenn Sie URLs für AWS Dienstendpunkte konstruieren.

Beispiele

Grundlegende Verwendung

In den folgenden Beispielen werden zwei Ressourcen erstellt: ein Amazon SNS SNS-Thema und ein CloudWatch Alarm, der Benachrichtigungen zu diesem Thema sendet. Sie verwendenAWS::StackName, undAWS::Region, AWS::AccountId um den Stacknamen, die aktuelle AWS-Region ID und die Konto-ID dynamisch in Ressourcennamen, Beschreibungen und ARNs einzufügen.

JSON

{ "Resources": { "MyNotificationTopic": { "Type": "AWS::SNS::Topic", "Properties": { "DisplayName": { "Fn::Sub": "Notifications for ${AWS::StackName}" } } }, "CPUAlarm": { "Type": "AWS::CloudWatch::Alarm", "Properties": { "AlarmDescription": { "Fn::Sub": "Alarm for high CPU in ${AWS::Region}" }, "AlarmName": { "Fn::Sub": "${AWS::StackName}-HighCPUAlarm" }, "MetricName": "CPUUtilization", "Namespace": "AWS/EC2", "Statistic": "Average", "Period": 300, "EvaluationPeriods": 1, "Threshold": 80, "ComparisonOperator": "GreaterThanThreshold", "AlarmActions": [{ "Fn::Sub": "arn:aws:sns:${AWS::Region}:${AWS::AccountId}:${MyNotificationTopic}" }] } } } }

YAML

Resources: MyNotificationTopic: Type: AWS::SNS::Topic Properties: DisplayName: !Sub Notifications for ${AWS::StackName} CPUAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmDescription: !Sub Alarm for high CPU in ${AWS::Region} AlarmName: !Sub ${AWS::StackName}-HighCPUAlarm MetricName: CPUUtilization Namespace: AWS/EC2 Statistic: Average Period: 300 EvaluationPeriods: 1 Threshold: 80 ComparisonOperator: GreaterThanThreshold AlarmActions: - !Sub arn:aws:sns:${AWS::Region}:${AWS::AccountId}:${MyNotificationTopic}

Verwenden von AWS::NotificationARNs

In den folgenden Beispielen wird eine Amazon EC2 Auto Scaling Scaling-Gruppe so konfiguriert, dass sie Benachrichtigungen für Instance-Startereignisse und Startfehler sendet. Die Konfiguration verwendet den AWS::NotificationARNs Pseudo-Parameter, der eine Liste der Amazon SNS-Themen bereitstellt ARNs , die bei der Stack-Erstellung angegeben wurden. Die Funktion Fn::Select wählt den ersten ARN aus dieser Liste aus.

JSON

"myASG": { "Type": "AWS::AutoScaling::AutoScalingGroup", "Properties": { "LaunchTemplate": { "LaunchTemplateId": { "Ref": "myLaunchTemplate" }, "Version": { "Fn::GetAtt": [ "myLaunchTemplate", "LatestVersionNumber" ] } }, "MaxSize": "1", "MinSize": "1", "VPCZoneIdentifier": [ "subnetIdAz1", "subnetIdAz2", "subnetIdAz3" ], "NotificationConfigurations" : [{ "TopicARN" : { "Fn::Select" : [ "0", { "Ref" : "AWS::NotificationARNs" } ] }, "NotificationTypes" : [ "autoscaling:EC2_INSTANCE_LAUNCH", "autoscaling:EC2_INSTANCE_LAUNCH_ERROR" ] }] } }

YAML

myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: LaunchTemplate: LaunchTemplateId: !Ref myLaunchTemplate Version: !GetAtt myLaunchTemplate.LatestVersionNumber MinSize: '1' MaxSize: '1' VPCZoneIdentifier: - subnetIdAz1 - subnetIdAz2 - subnetIdAz3 NotificationConfigurations: - TopicARN: Fn::Select: - '0' - Ref: AWS::NotificationARNs NotificationTypes: - autoscaling:EC2_INSTANCE_LAUNCH - autoscaling:EC2_INSTANCE_LAUNCH_ERROR

Bedingte Eigenschaften mit AWS::NoValue

Die folgenden Beispiele erstellen eine Amazon RDS DB-Instance, die nur dann einen Snapshot verwendet, wenn eine Snapshot-ID angegeben wird. Wenn die UseDBSnapshot Bedingung als wahr ausgewertet wird, wird der DBSnapshotName Parameterwert für die Eigenschaft CloudFormation verwendet. DBSnapshotIdentifier Wenn die Bedingung als falsch ausgewertet wird, CloudFormation wird die DBSnapshotIdentifier Eigenschaft entfernt.

JSON

"MyDB" : { "Type" : "AWS::RDS::DBInstance", "Properties" : { "AllocatedStorage" : "5", "DBInstanceClass" : "db.t2.small", "Engine" : "MySQL", "EngineVersion" : "5.5", "MasterUsername" : { "Ref" : "DBUser" }, "MasterUserPassword" : { "Ref" : "DBPassword" }, "DBParameterGroupName" : { "Ref" : "MyRDSParamGroup" }, "DBSnapshotIdentifier" : { "Fn::If" : [ "UseDBSnapshot", {"Ref" : "DBSnapshotName"}, {"Ref" : "AWS::NoValue"} ] } } }

YAML

MyDB: Type: AWS::RDS::DBInstance Properties: AllocatedStorage: '5' DBInstanceClass: db.t2.small Engine: MySQL EngineVersion: '5.5' MasterUsername: Ref: DBUser MasterUserPassword: Ref: DBPassword DBParameterGroupName: Ref: MyRDSParamGroup DBSnapshotIdentifier: Fn::If: - UseDBSnapshot - Ref: DBSnapshotName - Ref: AWS::NoValue