Obtenir des AWS valeurs à l'aide de pseudo-paramètres - AWS CloudFormation

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

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::StackNameAWS::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