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
Themen
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