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.
Configurez les ressources d’auto-scaling des applications avec CloudFormation
Cette section fournit des exemples de CloudFormation modèles pour les politiques de dimensionnement d'Application Auto Scaling et les actions planifiées pour différentes AWS ressources.
Important
Lorsqu’un extrait Application Auto Scaling est inclus dans le modèle, vous devez peut-être déclarer une dépendance sur la ressource évolutive spécifique créée via le modèle à l’aide de l’attribut DependsOn. Cela remplace le parallélisme par défaut et indique à CloudFormation
d'opérer sur les ressources dans un ordre spécifié. Sinon, la configuration de mise à l'échelle peut être appliquée avant que la ressource ait été complètement configurée.
Pour plus d'informations, voir la section consécrée à l'Attribut DependsOn.
Catégories d'extraits
Création d'une politique de dimensionnement pour une AppStream flotte
Créer une stratégie de mise à l’échelle pour un cluster de base de données Aurora
Créer une politique de mise à l’échelle pour une table DynamoDB
Créer une action planifiée avec une expression cron pour une fonction Lambda
Créer une action planifiée avec une expression at pour un parc d’instances Spot
Création d'une politique de dimensionnement pour une AppStream flotte
Cet extrait montre comment créer une stratégie et l’appliquer à une ressource AWS::AppStream::Fleet à l’aide de la ressource AWS::ApplicationAutoScaling::ScalingPolicy. La ressource AWS::ApplicationAutoScaling::ScalableTarget déclare une cible évolutive à laquelle cette politique est appliquée. Application Auto Scaling peut mettre à l'échelle le nombre d'instances de parc avec un minimum d'une instance et un maximum de 20 instances. La politique maintient l'utilisation moyenne de la capacité de la flotte à 75 %, avec des temps de stabilisation de montée en puissance et de mise à l'échelle horizontale de 300 secondes (5 minutes).
Il utilise les fonctions intrinsèques Fn::Join et Rev pour construire la propriété ResourceId avec le nom logique de la ressource AWS::AppStream::Fleet spécifiée dans le même modèle. Pour plus d’informations, consultez la Référence des fonctions intrinsèques.
JSON
{ "Resources" : { "ScalableTarget" : { "Type" : "AWS::ApplicationAutoScaling::ScalableTarget", "Properties" : { "MaxCapacity" : 20, "MinCapacity" : 1, "RoleARN" : { "Fn::Sub" : "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/appstream.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_AppStreamFleet" }, "ServiceNamespace" : "appstream", "ScalableDimension" : "appstream:fleet:DesiredCapacity", "ResourceId" : { "Fn::Join" : [ "/", [ "fleet", { "Ref" : "logicalName" } ] ] } } }, "ScalingPolicyAppStreamFleet" : { "Type" : "AWS::ApplicationAutoScaling::ScalingPolicy", "Properties" : { "PolicyName" : { "Fn::Sub" : "${AWS::StackName}-target-tracking-cpu75" }, "PolicyType" : "TargetTrackingScaling", "ServiceNamespace" : "appstream", "ScalableDimension" : "appstream:fleet:DesiredCapacity", "ResourceId" : { "Fn::Join" : [ "/", [ "fleet", { "Ref" : "logicalName" } ] ] }, "TargetTrackingScalingPolicyConfiguration" : { "TargetValue" : 75, "PredefinedMetricSpecification" : { "PredefinedMetricType" : "AppStreamAverageCapacityUtilization" }, "ScaleInCooldown" : 300, "ScaleOutCooldown" : 300 } } } } }
YAML
--- Resources: ScalableTarget: Type: AWS::ApplicationAutoScaling::ScalableTarget Properties: MaxCapacity: 20 MinCapacity: 1 RoleARN: Fn::Sub: 'arn:aws:iam::${AWS::AccountId}:role/aws-service-role/appstream.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_AppStreamFleet' ServiceNamespace: appstream ScalableDimension: appstream:fleet:DesiredCapacity ResourceId: !Join - / - - fleet - !ReflogicalNameScalingPolicyAppStreamFleet: Type: AWS::ApplicationAutoScaling::ScalingPolicy Properties: PolicyName: !Sub ${AWS::StackName}-target-tracking-cpu75 PolicyType: TargetTrackingScaling ServiceNamespace: appstream ScalableDimension: appstream:fleet:DesiredCapacity ResourceId: !Join - / - - fleet - !ReflogicalNameTargetTrackingScalingPolicyConfiguration: TargetValue: 75 PredefinedMetricSpecification: PredefinedMetricType: AppStreamAverageCapacityUtilization ScaleInCooldown: 300 ScaleOutCooldown: 300
Créer une stratégie de mise à l’échelle pour un cluster de base de données Aurora
Dans cet extrait, vous enregistrez une ressource AWS::RDS::DBCluster. La ressource AWS::ApplicationAutoScaling::ScalableTarget indique que le cluster de bases de données doit être dimensionné de manière dynamique pour comporter entre une et huit répliques Aurora. Vous appliquez également une stratégie de mise à l’échelle du suivi des cibles au cluster à l’aide de la ressource AWS::ApplicationAutoScaling::ScalingPolicy.
Dans cette configuration, la métrique prédéfinie RDSReaderAverageCPUUtilization est utilisée pour ajuster un cluster de bases de données Aurora en fonction d’une utilisation moyenne de l’UC de 40 % sur tous les réplicas Aurora de ce cluster de bases de données Aurora. La configuration indique un temps de stabilisation de diminution en charge de 10 minutes et un temps de stabilisation de montée en charge de 5 minutes.
Cet exemple utilise la fonction intrinsèque Fn::Sub pour construire la propriété ResourceId avec le nom logique de la ressource AWS::RDS::DBCluster spécifiée dans le même modèle. Pour plus d’informations, consultez la Référence des fonctions intrinsèques.
JSON
{ "Resources" : { "ScalableTarget" : { "Type" : "AWS::ApplicationAutoScaling::ScalableTarget", "Properties" : { "MaxCapacity" : 8, "MinCapacity" : 1, "RoleARN" : { "Fn::Sub" : "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/rds.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_RDSCluster" }, "ServiceNamespace" : "rds", "ScalableDimension" : "rds:cluster:ReadReplicaCount", "ResourceId" : { "Fn::Sub" : "cluster:${logicalName}" } } }, "ScalingPolicyDBCluster" : { "Type" : "AWS::ApplicationAutoScaling::ScalingPolicy", "Properties" : { "PolicyName" : { "Fn::Sub" : "${AWS::StackName}-target-tracking-cpu40" }, "PolicyType" : "TargetTrackingScaling", "ServiceNamespace" : "rds", "ScalableDimension" : "rds:cluster:ReadReplicaCount", "ResourceId" : { "Fn::Sub" : "cluster:${logicalName}" }, "TargetTrackingScalingPolicyConfiguration" : { "TargetValue" : 40, "PredefinedMetricSpecification" : { "PredefinedMetricType" : "RDSReaderAverageCPUUtilization" }, "ScaleInCooldown" : 600, "ScaleOutCooldown" : 300 } } } } }
YAML
--- Resources: ScalableTarget: Type: AWS::ApplicationAutoScaling::ScalableTarget Properties: MaxCapacity: 8 MinCapacity: 1 RoleARN: Fn::Sub: 'arn:aws:iam::${AWS::AccountId}:role/aws-service-role/rds.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_RDSCluster' ServiceNamespace: rds ScalableDimension: rds:cluster:ReadReplicaCount ResourceId: !Sub cluster:${logicalName} ScalingPolicyDBCluster: Type: AWS::ApplicationAutoScaling::ScalingPolicy Properties: PolicyName: !Sub ${AWS::StackName}-target-tracking-cpu40 PolicyType: TargetTrackingScaling ServiceNamespace: rds ScalableDimension: rds:cluster:ReadReplicaCount ResourceId: !Sub cluster:${logicalName} TargetTrackingScalingPolicyConfiguration: TargetValue: 40 PredefinedMetricSpecification: PredefinedMetricType: RDSReaderAverageCPUUtilization ScaleInCooldown: 600 ScaleOutCooldown: 300
Créer une politique de mise à l’échelle pour une table DynamoDB
Cet extrait montre comment créer une stratégie avec le type de stratégie TargetTrackingScaling et l’appliquer à une ressource AWS::DynamoDB::Table à l’aide de la ressource AWS::ApplicationAutoScaling::ScalingPolicy. La ressource AWS::ApplicationAutoScaling::ScalableTarget déclare une cible évolutive à laquelle cette politique est appliquée, avec un minimum de cinq unités de capacité d’écriture et un maximum de 15. La politique de mise à l'échelle fait évoluer la capacité d'écriture de la table pour maintenir une utilisation cible à 50 % par rapport à la métrique prédéfinie DynamoDBWriteCapacityUtilization.
Il utilise les fonctions intrinsèques Fn::Join et Ref pour construire la propriété ResourceId avec le nom logique de la ressource AWS::DynamoDB::Table spécifiée dans le même modèle. Pour plus d’informations, consultez la Référence des fonctions intrinsèques.
Note
Pour plus d'informations sur la création d'un CloudFormation modèle pour les ressources DynamoDB, consultez le billet de blog Comment utiliser pour configurer le dimensionnement automatique CloudFormation pour les tables et les index Amazon DynamoDB sur le blog de base
JSON
{ "Resources" : { "WriteCapacityScalableTarget" : { "Type" : "AWS::ApplicationAutoScaling::ScalableTarget", "Properties" : { "MaxCapacity" : 15, "MinCapacity" : 5, "RoleARN" : { "Fn::Sub" : "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/dynamodb.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_DynamoDBTable" }, "ServiceNamespace" : "dynamodb", "ScalableDimension" : "dynamodb:table:WriteCapacityUnits", "ResourceId" : { "Fn::Join" : [ "/", [ "table", { "Ref" : "logicalName" } ] ] } } }, "WriteScalingPolicy" : { "Type" : "AWS::ApplicationAutoScaling::ScalingPolicy", "Properties" : { "PolicyName" : "WriteScalingPolicy", "PolicyType" : "TargetTrackingScaling", "ScalingTargetId" : { "Ref" : "WriteCapacityScalableTarget" }, "TargetTrackingScalingPolicyConfiguration" : { "TargetValue" : 50.0, "ScaleInCooldown" : 60, "ScaleOutCooldown" : 60, "PredefinedMetricSpecification" : { "PredefinedMetricType" : "DynamoDBWriteCapacityUtilization" } } } } } }
YAML
--- Resources: WriteCapacityScalableTarget: Type: AWS::ApplicationAutoScaling::ScalableTarget Properties: MaxCapacity: 15 MinCapacity: 5 RoleARN: Fn::Sub: 'arn:aws:iam::${AWS::AccountId}:role/aws-service-role/dynamodb.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_DynamoDBTable' ServiceNamespace: dynamodb ScalableDimension: dynamodb:table:WriteCapacityUnits ResourceId: !Join - / - - table - !ReflogicalNameWriteScalingPolicy: Type: AWS::ApplicationAutoScaling::ScalingPolicy Properties: PolicyName: WriteScalingPolicy PolicyType: TargetTrackingScaling ScalingTargetId: !Ref WriteCapacityScalableTarget TargetTrackingScalingPolicyConfiguration: TargetValue: 50.0 ScaleInCooldown: 60 ScaleOutCooldown: 60 PredefinedMetricSpecification: PredefinedMetricType: DynamoDBWriteCapacityUtilization
Créer une stratégie de mise à l’échelle pour un service Amazon ECS (métriques : CPU et mémoire moyens)
Cet extrait montre comment créer une stratégie et l’appliquer à une ressource AWS::ECS::Service à l’aide de la ressource AWS::ApplicationAutoScaling::ScalingPolicy. La ressource AWS::ApplicationAutoScaling::ScalableTarget déclare une cible évolutive à laquelle cette politique est appliquée. Application Auto Scaling peut ajuster le nombre de tâches à un minimum de 1 tâche et un maximum de 6 tâches.
Cet exemple crée deux politiques de mise à l'échelle avec le type de politique TargetTrackingScaling. Les politiques sont utilisées pour mettre à l'échelle le service ECS en fonction de l'utilisation moyenne du processeur et de la mémoire du service. Il utilise les fonctions intrinsèques Fn::Join et Ref pour construire la propriété ResourceId avec les noms logiques des ressources AWS::ECS::Cluster (myContainerCluster) et AWS::ECS::Service (myService) spécifiées dans le même modèle. Pour plus d’informations, consultez la Référence des fonctions intrinsèques.
JSON
{ "Resources" : { "ECSScalableTarget" : { "Type" : "AWS::ApplicationAutoScaling::ScalableTarget", "Properties" : { "MaxCapacity" : "6", "MinCapacity" : "1", "RoleARN" : { "Fn::Sub" : "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService" }, "ServiceNamespace" : "ecs", "ScalableDimension" : "ecs:service:DesiredCount", "ResourceId" : { "Fn::Join" : [ "/", [ "service", { "Ref" : "myContainerCluster" }, { "Fn::GetAtt" : [ "myService", "Name" ] } ] ] } } }, "ServiceScalingPolicyCPU" : { "Type" : "AWS::ApplicationAutoScaling::ScalingPolicy", "Properties" : { "PolicyName" : { "Fn::Sub" : "${AWS::StackName}-target-tracking-cpu70" }, "PolicyType" : "TargetTrackingScaling", "ScalingTargetId" : { "Ref" : "ECSScalableTarget" }, "TargetTrackingScalingPolicyConfiguration" : { "TargetValue" : 70.0, "ScaleInCooldown" : 180, "ScaleOutCooldown" : 60, "PredefinedMetricSpecification" : { "PredefinedMetricType" : "ECSServiceAverageCPUUtilization" } } } }, "ServiceScalingPolicyMem" : { "Type" : "AWS::ApplicationAutoScaling::ScalingPolicy", "Properties" : { "PolicyName" : { "Fn::Sub" : "${AWS::StackName}-target-tracking-mem90" }, "PolicyType" : "TargetTrackingScaling", "ScalingTargetId" : { "Ref" : "ECSScalableTarget" }, "TargetTrackingScalingPolicyConfiguration" : { "TargetValue" : 90.0, "ScaleInCooldown" : 180, "ScaleOutCooldown" : 60, "PredefinedMetricSpecification" : { "PredefinedMetricType" : "ECSServiceAverageMemoryUtilization" } } } } } }
YAML
--- Resources: ECSScalableTarget: Type: AWS::ApplicationAutoScaling::ScalableTarget Properties: MaxCapacity: 6 MinCapacity: 1 RoleARN: Fn::Sub: 'arn:aws:iam::${AWS::AccountId}:role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService' ServiceNamespace: ecs ScalableDimension: 'ecs:service:DesiredCount' ResourceId: !Join - / - - service - !RefmyContainerCluster- !GetAttmyService.Name ServiceScalingPolicyCPU: Type: AWS::ApplicationAutoScaling::ScalingPolicy Properties: PolicyName: !Sub ${AWS::StackName}-target-tracking-cpu70 PolicyType: TargetTrackingScaling ScalingTargetId: !Ref ECSScalableTarget TargetTrackingScalingPolicyConfiguration: TargetValue: 70.0 ScaleInCooldown: 180 ScaleOutCooldown: 60 PredefinedMetricSpecification: PredefinedMetricType: ECSServiceAverageCPUUtilization ServiceScalingPolicyMem: Type: AWS::ApplicationAutoScaling::ScalingPolicy Properties: PolicyName: !Sub ${AWS::StackName}-target-tracking-mem90 PolicyType: TargetTrackingScaling ScalingTargetId: !Ref ECSScalableTarget TargetTrackingScalingPolicyConfiguration: TargetValue: 90.0 ScaleInCooldown: 180 ScaleOutCooldown: 60 PredefinedMetricSpecification: PredefinedMetricType: ECSServiceAverageMemoryUtilization
Créer une politique de mise à l’échelle pour un service Amazon ECS (métrique : nombre moyen de requêtes par cible)
L'exemple suivant applique une politique de mise à l'échelle de suivi cible avec la métrique prédéfinie ALBRequestCountPerTarget à un service ECS. La politique est utilisée pour ajouter de la capacité au service ECS lorsque le nombre de demandes par cible dépasse la valeur cible. La valeur de DisableScaleIn étant définie sur true, la politique de suivi des cibles n'entame pas la capacité de la cible évolutive.
Il utilise les fonctions intrinsèques Fn::Join et Fn::GetAtt pour construire la propriété ResourceLabel avec les noms logiques des ressources AWS::ElasticLoadBalancingV2::LoadBalancer (myLoadBalancer) et AWS::ElasticLoadBalancingV2::TargetGroup (myTargetGroup) spécifiées dans le même modèle. Pour plus d’informations, consultez la Référence des fonctions intrinsèques.
Les propriétés MaxCapacity et MinCapacity de la cible évolutive et de la propriété TargetValue des valeurs des paramètres de référence de politique de mise à l'échelle que vous transmettez au modèle lors de la création ou de la mise à jour d'une pile.
JSON
{ "Resources" : { "ECSScalableTarget" : { "Type" : "AWS::ApplicationAutoScaling::ScalableTarget", "Properties" : { "MaxCapacity" : { "Ref" : "MaxCount" }, "MinCapacity" : { "Ref" : "MinCount" }, "RoleARN" : { "Fn::Sub" : "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService" }, "ServiceNamespace" : "ecs", "ScalableDimension" : "ecs:service:DesiredCount", "ResourceId" : { "Fn::Join" : [ "/", [ "service", { "Ref" : "myContainerCluster" }, { "Fn::GetAtt" : [ "myService", "Name" ] } ] ] } } }, "ServiceScalingPolicyALB" : { "Type" : "AWS::ApplicationAutoScaling::ScalingPolicy", "Properties" : { "PolicyName" : "alb-requests-per-target-per-minute", "PolicyType" : "TargetTrackingScaling", "ScalingTargetId" : { "Ref" : "ECSScalableTarget" }, "TargetTrackingScalingPolicyConfiguration" : { "TargetValue" : { "Ref" : "ALBPolicyTargetValue" }, "ScaleInCooldown" : 180, "ScaleOutCooldown" : 30, "DisableScaleIn" : true, "PredefinedMetricSpecification" : { "PredefinedMetricType" : "ALBRequestCountPerTarget", "ResourceLabel" : { "Fn::Join" : [ "/", [ { "Fn::GetAtt" : [ "myLoadBalancer", "LoadBalancerFullName" ] }, { "Fn::GetAtt" : [ "myTargetGroup", "TargetGroupFullName" ] } ] ] } } } } } } }
YAML
--- Resources: ECSScalableTarget: Type: AWS::ApplicationAutoScaling::ScalableTarget Properties: MaxCapacity: !Ref MaxCount MinCapacity: !Ref MinCount RoleARN: Fn::Sub: 'arn:aws:iam::${AWS::AccountId}:role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService' ServiceNamespace: ecs ScalableDimension: 'ecs:service:DesiredCount' ResourceId: !Join - / - - service - !RefmyContainerCluster- !GetAttmyService.Name ServiceScalingPolicyALB: Type: AWS::ApplicationAutoScaling::ScalingPolicy Properties: PolicyName: alb-requests-per-target-per-minute PolicyType: TargetTrackingScaling ScalingTargetId: !Ref ECSScalableTarget TargetTrackingScalingPolicyConfiguration: TargetValue: !Ref ALBPolicyTargetValue ScaleInCooldown: 180 ScaleOutCooldown: 30 DisableScaleIn: true PredefinedMetricSpecification: PredefinedMetricType: ALBRequestCountPerTarget ResourceLabel: !Join - '/' - - !GetAttmyLoadBalancer.LoadBalancerFullName - !GetAttmyTargetGroup.TargetGroupFullName
Créer une action planifiée avec une expression cron pour une fonction Lambda
Cet extrait enregistre la concurrence provisionnée pour un alias de fonction (AWS::Lambda::Alias) nommé BLUE à l’aide de la ressource AWS::ApplicationAutoScaling::ScalableTarget. Il crée également une action planifiée avec une planification récurrente à l'aide d'une expression cron. Le fuseau horaire du calendrier récurrent est UTC.
Il utilise les fonctions intrinsèques Fn::Join et Ref de la propriété RoleARN pour spécifier l’ARN du rôle lié au service. Il utilise la fonction intrinsèque Fn::Sub pour construire la propriété ResourceId avec le nom logique de la ressource AWS::Lambda::Function ou AWS::Serverless::Function spécifiée dans le même modèle. Pour plus d’informations, consultez la Référence des fonctions intrinsèques.
Note
Vous ne pouvez pas allouer la simultanéité provisionnée sur un alias qui pointe vers la version non publiée ($LATEST).
Pour plus d'informations sur la création d'un CloudFormation modèle pour les ressources Lambda, consultez le billet de blog Scheduling Lambda Provisioned Concurrency for AWS Lambda Provisioned Concurrency for Recurrent Peak
JSON
{ "ScalableTarget" : { "Type" : "AWS::ApplicationAutoScaling::ScalableTarget", "Properties" : { "MaxCapacity" : 250, "MinCapacity" : 0, "RoleARN" : { "Fn::Join" : [ ":", [ "arn:aws:iam:", { "Ref" : "AWS::AccountId" }, "role/aws-service-role/lambda.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_LambdaConcurrency" ] ] }, "ServiceNamespace" : "lambda", "ScalableDimension" : "lambda:function:ProvisionedConcurrency", "ResourceId" : { "Fn::Sub" : "function:${logicalName}:BLUE" }, "ScheduledActions" : [ { "ScalableTargetAction" : { "MinCapacity" : "250" }, "ScheduledActionName" : "my-scale-out-scheduled-action", "Schedule" : "cron(0 18 * * ? *)", "EndTime" : "2022-12-31T12:00:00.000Z" } ] } } }
YAML
ScalableTarget: Type: AWS::ApplicationAutoScaling::ScalableTarget Properties: MaxCapacity: 250 MinCapacity: 0 RoleARN: !Join - ':' - - 'arn:aws:iam:' - !Ref 'AWS::AccountId' - role/aws-service-role/lambda.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_LambdaConcurrency ServiceNamespace: lambda ScalableDimension: lambda:function:ProvisionedConcurrency ResourceId: !Sub function:${logicalName}:BLUE ScheduledActions: - ScalableTargetAction: MinCapacity: 250 ScheduledActionName: my-scale-out-scheduled-action Schedule: 'cron(0 18 * * ? *)' EndTime: '2022-12-31T12:00:00.000Z'
Créer une action planifiée avec une expression at pour un parc d’instances Spot
Cet extrait montre comment créer deux actions planifiées qui ne se produisent qu’une seule fois pour une ressource AWS::EC2::SpotFleet utilisant la ressource AWS::ApplicationAutoScaling::ScalableTarget. Le fuseau horaire de chaque action programmée ponctuelle est UTC.
Il utilise les fonctions intrinsèques Fn::Join et Ref pour construire la propriété ResourceId avec le nom logique de la ressource AWS::EC2::SpotFleet spécifiée dans le même modèle. Pour plus d’informations, consultez la Référence des fonctions intrinsèques.
Note
La demande de parc d’instances Spot doit être de type maintain. Le dimensionnement automatique n'est pas pris en charge pour les demandes uniques et les blocs d'instances Spot.
JSON
{ "Resources" : { "SpotFleetScalableTarget" : { "Type" : "AWS::ApplicationAutoScaling::ScalableTarget", "Properties" : { "MaxCapacity" : 0, "MinCapacity" : 0, "RoleARN" : { "Fn::Sub" : "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/ec2.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_EC2SpotFleetRequest" }, "ServiceNamespace" : "ec2", "ScalableDimension" : "ec2:spot-fleet-request:TargetCapacity", "ResourceId" : { "Fn::Join" : [ "/", [ "spot-fleet-request", { "Ref" : "logicalName" } ] ] }, "ScheduledActions" : [ { "ScalableTargetAction" : { "MaxCapacity" : "10", "MinCapacity" : "10" }, "ScheduledActionName" : "my-scale-out-scheduled-action", "Schedule" : "at(2022-05-20T13:00:00)" }, { "ScalableTargetAction" : { "MaxCapacity" : "0", "MinCapacity" : "0" }, "ScheduledActionName" : "my-scale-in-scheduled-action", "Schedule" : "at(2022-05-20T21:00:00)" } ] } } } }
YAML
--- Resources: SpotFleetScalableTarget: Type: AWS::ApplicationAutoScaling::ScalableTarget Properties: MaxCapacity: 0 MinCapacity: 0 RoleARN: Fn::Sub: 'arn:aws:iam::${AWS::AccountId}:role/aws-service-role/ec2.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_EC2SpotFleetRequest' ServiceNamespace: ec2 ScalableDimension: 'ec2:spot-fleet-request:TargetCapacity' ResourceId: !Join - / - - spot-fleet-request - !ReflogicalNameScheduledActions: - ScalableTargetAction: MaxCapacity: 10 MinCapacity: 10 ScheduledActionName: my-scale-out-scheduled-action Schedule: 'at(2022-05-20T13:00:00)' - ScalableTargetAction: MaxCapacity: 0 MinCapacity: 0 ScheduledActionName: my-scale-in-scheduled-action Schedule: 'at(2022-05-20T21:00:00)'