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 auf Pseudo-Parameter verweisen, indem Sie entweder die Ref intrinsische Funktion oder die intrinsische Funktion verwenden. Fn::Sub

Punkt

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

JSON

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

YAML

!Ref AWS::PseudoParameter

Fn: :Sub

Die Fn::Sub systeminterne Funktion verwendet ein anderes Format, das die ${} Syntax rund um den Pseudo-Parameter beinhaltet. 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. Verwenden Sie die Fn::Select systeminterne Funktion, um auf einen bestimmten ARN in der Liste zuzugreifen. 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 Pseudo-Parameter ist besonders nützlich, um bedingte Ressourceneigenschaften zu erstellen, die nur unter bestimmten Bedingungen enthalten sein sollten.

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, z. arn:aws:cloudformation:us-west-2:123456789012:stack/teststack/51af3dc0-da77-11e4-872e-1234567db123 B.

AWS::StackName

Gibt den Namen des Stacks zurück, z. teststack B.

Der Stackname wird häufig verwendet, um eindeutige Ressourcennamen zu erstellen, die leicht als zu einem bestimmten Stack gehörend 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 typischamazonaws.com, aber für die Region China (Peking) ist das Suffix. amazonaws.com.cn

Dieser Parameter ist besonders nützlich bei der Konstruktion URLs für AWS Dienstendpunkte.

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 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 Fn::Select Funktion 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

In den folgenden Beispielen wird eine Amazon RDS-DB-Instance erstellt, die nur dann einen Snapshot verwendet, wenn eine Snapshot-ID angegeben wird. Wenn die UseDBSnapshot Bedingung als wahr ausgewertet wird, CloudFormation wird der DBSnapshotName Parameterwert für die DBSnapshotIdentifier Eigenschaft verwendet. 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