Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Obtenir des AWS valeurs à l'aide de pseudo-paramètres
Les pseudo-paramètres sont des variables intégrées qui permettent d'accéder à des informations importantes sur AWS l'environnement, telles que le compte IDs, les noms de région et les détails de la pile, qui peuvent changer entre les déploiements ou les environnements.
Vous pouvez utiliser des pseudo-paramètres au lieu de valeurs codées en dur pour rendre vos modèles plus portables et plus faciles à réutiliser dans différentes Comptes AWS régions.
Syntaxe
Vous pouvez référencer des pseudo-paramètres à l'aide de la fonction Ref
intrinsèque ou de la fonction Fn::Sub
intrinsèque.
Réf
La fonction Ref
intrinsèque utilise la syntaxe générale suivante. Pour plus d'informations, consultez Ref.
JSON
{ "Ref" : "AWS::
PseudoParameter
" }
YAML
!Ref AWS::
PseudoParameter
Fn : :Sub
La fonction Fn::Sub
intrinsèque utilise un format différent qui inclut la ${}
syntaxe du pseudo-paramètre. Pour plus d'informations, consultez Fn::Sub.
JSON
{ "Fn::Sub" : "${AWS::
PseudoParameter
}" }
YAML
!Sub '${AWS::
PseudoParameter
}'
Pseudo-paramètres disponibles
AWS::AccountId
Renvoie l' Compte AWS ID du compte dans lequel la pile est créée, par exemple123456789012
.
Ce pseudo-paramètre est couramment utilisé lors de la définition de rôles, de politiques et d'autres politiques de ressources IAM impliquant des informations spécifiques à un compte ARNs.
AWS::NotificationARNs
Renvoie la liste des noms de ressources Amazon (ARNs) pour les rubriques Amazon SNS qui reçoivent des notifications d'événements de pile. Vous pouvez les spécifier ARNs via l'--notification-arns
option dans AWS CLI ou via la console lorsque vous créez ou mettez à jour votre stack.
Contrairement aux autres pseudo-paramètres qui renvoient une valeur unique, AWS::NotificationARNs
renvoie une liste de ARNs. Pour accéder à un ARN spécifique de la liste, utilisez la fonction Fn::Select
intrinsèque. Pour de plus amples informations, veuillez consulter Fn::Select.
AWS::NoValue
Supprime la propriété de ressource correspondante lorsqu'elle est spécifiée comme valeur de retour dans la fonction intrinsèque Fn::If
. Pour de plus amples informations, veuillez consulter Fn::If.
Ce pseudo-paramètre est particulièrement utile pour créer des propriétés de ressources conditionnelles qui ne doivent être incluses que sous certaines conditions.
AWS::Partition
Renvoie la partition dans laquelle se trouve la ressource. En standard Régions AWS, la partition estaws
. Pour les ressources dans d'autres partitions, la partition est aws-
partitionname
. Par exemple, la partition pour les ressources dans les régions de Chine (Pékin et Ningxia) est aws-cn
et la partition pour les ressources dans la région AWS GovCloud (ouest des États-Unis) est. aws-us-gov
La partition fait partie de l'ARN des ressources. L'utilisation AWS::Partition
garantit le bon fonctionnement de vos modèles sur les différentes AWS partitions.
AWS::Region
Renvoie une chaîne représentant la région dans laquelle la ressource globale est créée, comme us-west-2
.
C'est l'un des pseudo-paramètres les plus couramment utilisés, car il permet aux modèles de s'adapter aux différents modèles Régions AWS sans modification.
AWS::StackId
Renvoie l'ID (ARN) de la pile, par exemplearn:aws:cloudformation:us-west-2:123456789012:stack/teststack/51af3dc0-da77-11e4-872e-1234567db123
.
AWS::StackName
Renvoie le nom de la pile, par exempleteststack
.
Le nom de pile est couramment utilisé pour créer des noms de ressources uniques facilement identifiables comme appartenant à une pile spécifique.
AWS::URLSuffix
Renvoie le suffixe du AWS domaine dans Région AWS lequel la pile est déployée. Le suffixe est généralementamazonaws.com
, mais pour la région de Chine (Pékin), c'est le suffixe. amazonaws.com.cn
Ce paramètre est particulièrement utile lors de la construction URLs pour les points de terminaison AWS de service.
Exemples
Rubriques
Utilisation de base
Les exemples suivants créent deux ressources : une rubrique Amazon SNS et une CloudWatch alarme qui envoie des notifications à cette rubrique. Ils utilisent AWS::StackName
AWS::Region
, et AWS::AccountId
pour insérer dynamiquement le nom de la pile, le courant Région AWS et l'ID de compte dans les noms des ressources, les descriptions et ARNs.
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}
Utiliser AWS::NotificationARNs
Les exemples suivants configurent un groupe Auto Scaling pour envoyer des notifications pour les événements de lancement d'instances et les erreurs de lancement. La configuration utilise le AWS::NotificationARNs
pseudo-paramètre, qui fournit une liste des rubriques Amazon SNS spécifiées lors de la ARNs création de la pile. La Fn::Select
fonction choisit le premier ARN dans cette liste.
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
Propriétés conditionnelles avec AWS::NoValue
Les exemples suivants créent une instance de base de données Amazon RDS qui utilise un instantané uniquement si un ID d'instantané est fourni. Si la UseDBSnapshot
condition est vraie, CloudFormation utilise la valeur du DBSnapshotName
paramètre de la DBSnapshotIdentifier
propriété. Si la condition est fausse, la DBSnapshotIdentifier
propriété CloudFormation est supprimée.
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