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 Application Auto Scaling avec AWS CloudFormation
Cette section fournit des exemples de AWS 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 de code Application Auto Scaling est inclus dans le modèle, vous devrez peut-être déclarer une dépendance à l'égard de la ressource évolutive spécifique créée via le modèle à l'aide de l'DependsOnattribut. Cela remplace le parallélisme par défaut et indique à AWS 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éation d'une politique de dimensionnement pour un cluster de base de données Aurora
Création d'une politique de dimensionnement pour une table DynamoDB
Création d'une action planifiée avec une expression cron pour une fonction Lambda
Création d'une action planifiée avec une at expression pour un parc de spots
Création d'une politique de dimensionnement pour une AppStream flotte
Cet extrait montre comment créer une politique et l'appliquer à une AWS::AppStream::Fleetressource utilisant cette ressource. AWS::ApplicationAutoScaling::ScalingPolicy La AWS::ApplicationAutoScaling::ScalableTargetressource 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 Rev intrinsèques Fn::Join et pour construire la ResourceId propriété avec le nom logique de la AWS::AppStream::Fleet ressource spécifiée dans le même modèle. Pour plus d'informations, consultez la section 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éation d'une politique de dimensionnement pour un cluster de base de données Aurora
Dans cet extrait, vous enregistrez une AWS::RDS::DBClusterressource. La AWS::ApplicationAutoScaling::ScalableTargetressource indique que le cluster de base de données doit être dimensionné dynamiquement pour contenir de une à huit répliques Aurora. Vous appliquez également une politique de dimensionnement du suivi des cibles au cluster à l'aide de la AWS::ApplicationAutoScaling::ScalingPolicyressource.
Dans cette configuration, la métrique prédéfinie RDSReaderAverageCPUUtilization est utilisée pour ajuster un cluster de base 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 base 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 Fn::Sub intrinsèque pour construire la ResourceId propriété avec le nom logique de la AWS::RDS::DBCluster ressource spécifiée dans le même modèle. Pour plus d'informations, consultez la section 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éation d'une politique de dimensionnement pour une table DynamoDB
Cet extrait montre comment créer une politique avec le type de TargetTrackingScaling stratégie et l'appliquer à une AWS::DynamoDB::Tableressource utilisant cette ressource. AWS::ApplicationAutoScaling::ScalingPolicy La AWS::ApplicationAutoScaling::ScalableTargetressource 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 Ref intrinsèques Fn::Join et pour construire la ResourceId propriété avec le nom logique de la AWS::DynamoDB::Table ressource spécifiée dans le même modèle. Pour plus d'informations, consultez la section Référence des fonctions intrinsèques.
Note
Pour plus d'informations sur la création d'un AWS CloudFormation modèle pour les ressources DynamoDB, consultez le billet de blog Comment utiliser pour configurer le dimensionnement automatique AWS 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éation d'une politique de dimensionnement pour un service Amazon ECS (mesures : processeur et mémoire moyens)
Cet extrait montre comment créer une politique et l'appliquer à une AWS::ECS::Serviceressource utilisant cette ressource. AWS::ApplicationAutoScaling::ScalingPolicy La AWS::ApplicationAutoScaling::ScalableTargetressource 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 Ref intrinsèques Fn::Join et pour construire la ResourceId propriété avec les noms logiques des ressources AWS::ECS::ClusterAWS::ECS::Service(myContainerClustermyService) et () spécifiées dans le même modèle. Pour plus d'informations, consultez la section 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éation d'une politique de dimensionnement pour un service Amazon ECS (métrique : nombre moyen de demandes 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 Fn::GetAtt intrinsèques Fn::Join et pour construire la ResourceLabel propriété avec les noms logiques des ressources AWS::ElasticLoadBalancingV2::LoadBalancerAWS::ElasticLoadBalancingV2::TargetGroup(myLoadBalancermyTargetGroup) et () spécifiées dans le même modèle. Pour plus d'informations, consultez la section 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éation d'une action planifiée avec une expression cron pour une fonction Lambda
Cet extrait enregistre la simultanéité provisionnée pour une fonction alias (AWS::Lambda::Alias) nommée 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 Ref intrinsèques Fn::Join et de la RoleARN propriété pour spécifier l'ARN du rôle lié au service. Il utilise la fonction Fn::Sub intrinsèque pour construire la ResourceId propriété avec le nom logique de la AWS::Serverless::Functionressource AWS::Lambda::Functionou spécifiée dans le même modèle. Pour plus d'informations, consultez la section Référence des fonctions intrinsèques.
Note
Vous ne pouvez pas attribuer de simultanéité provisionnée à un alias qui pointe vers la version non publiée (). $LATEST
Pour plus d'informations sur la création d'un AWS 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éation d'une action planifiée avec une at expression pour un parc de spots
Cet extrait montre comment créer deux actions planifiées qui ne se produisent qu'une seule fois pour une AWS::EC2::SpotFleetressource utilisant cette ressource. AWS::ApplicationAutoScaling::ScalableTarget Le fuseau horaire de chaque action programmée ponctuelle est UTC.
Il utilise les fonctions Ref intrinsèques Fn::Join et pour construire la ResourceId propriété avec le nom logique de la AWS::EC2::SpotFleet ressource spécifiée dans le même modèle. Pour plus d'informations, consultez la section 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)'