# Auto Scaling code examples for the SDK for Python ## Overview Shows how to use the AWS SDK for Python (Boto3) to work with Amazon EC2 Auto Scaling. *Auto Scaling automatically scales EC2 instances, either with scaling policies or with scheduled scaling.* ## ⚠ Important * Running this code might result in charges to your AWS account. For more details, see [AWS Pricing](https://aws.amazon.com/pricing/?aws-products-pricing.sort-by=item.additionalFields.productNameLowercase&aws-products-pricing.sort-order=asc&awsf.Free%20Tier%20Type=*all&awsf.tech-category=*all) and [Free Tier](https://aws.amazon.com/free/?all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types=*all&awsf.Free%20Tier%20Categories=*all). * Running the tests might result in charges to your AWS account. * We recommend that you grant your code least privilege. At most, grant only the minimum permissions required to perform the task. For more information, see [Grant least privilege](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege). * This code is not tested in every AWS Region. For more information, see [AWS Regional Services](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services). ## Code examples ### Prerequisites For prerequisites, see the [README](../../README.md#Prerequisites) in the `python` folder. Install the packages required by these examples by running the following in a virtual environment: ``` python -m pip install -r requirements.txt ``` ### Get started * [Hello Auto Scaling](hello.py#L4) (`DescribeAutoScalingGroups`) ### Single actions Code excerpts that show you how to call individual service functions. * [Attach an ELB target group to an Auto Scaling group](../../cross_service/resilient_service/auto_scaler.py#L382) (`AttachLoadBalancerTargetGroups`) * [Create a group](action_wrapper.py#L28) (`CreateAutoScalingGroup`) * [Delete a group](../../cross_service/resilient_service/auto_scaler.py#L403) (`DeleteAutoScalingGroup`) * [Disable metrics collection for a group](action_wrapper.py#L219) (`DisableMetricsCollection`) * [Enable metrics collection for a group](action_wrapper.py#L201) (`EnableMetricsCollection`) * [Get information about groups](action_wrapper.py#L93) (`DescribeAutoScalingGroups`) * [Get information about instances](action_wrapper.py#L158) (`DescribeAutoScalingInstances`) * [Get information about scaling activities](action_wrapper.py#L178) (`DescribeScalingActivities`) * [Set the desired capacity of a group](action_wrapper.py#L139) (`SetDesiredCapacity`) * [Terminate an instance in a group](action_wrapper.py#L114) (`TerminateInstanceInAutoScalingGroup`) * [Update a group](action_wrapper.py#L57) (`UpdateAutoScalingGroup`) ### Scenarios Code examples that show you how to accomplish a specific task by calling multiple functions within the same service. * [Build and manage a resilient service](../../cross_service/resilient_service/runner.py) * [Manage groups and instances](scenario_groups_and_instances.py) ## Run the examples ### Instructions #### Hello Auto Scaling This example shows you how to get started using Auto Scaling. ``` python hello.py ``` #### Build and manage a resilient service This example shows you how to create a load-balanced web service that returns book, movie, and song recommendations. The example shows how the service responds to failures, and how to restructure the service for more resilience when failures occur. * Use an Amazon EC2 Auto Scaling group to create Amazon Elastic Compute Cloud (Amazon EC2) instances based on a launch template and to keep the number of instances in a specified range. * Handle and distribute HTTP requests with Elastic Load Balancing. * Monitor the health of instances in an Auto Scaling group and forward requests only to healthy instances. * Run a Python web server on each EC2 instance to handle HTTP requests. The web server responds with recommendations and health checks. * Simulate a recommendation service with an Amazon DynamoDB table. * Control web server response to requests and health checks by updating AWS Systems Manager parameters. Start the example by running the following at a command prompt: ``` python ../../cross_service/resilient_service/runner.py ``` Complete details and instructions on how to run this example can be found in the [README](../../cross_service/resilient_service/README.md) for the example. #### Manage groups and instances This example shows you how to do the following: * Create an Amazon EC2 Auto Scaling group with a launch template and Availability Zones, and get information about running instances. * Enable Amazon CloudWatch metrics collection. * Update the group's desired capacity and wait for an instance to start. * Terminate an instance in the group. * List scaling activities that occur in response to user requests and capacity changes. * Get statistics for CloudWatch metrics, then clean up resources. Start the example by running the following at a command prompt: ``` python scenario_groups_and_instances.py ``` ### Tests ⚠ Running tests might result in charges to your AWS account. To find instructions for running these tests, see the [README](../../README.md#Tests) in the `python` folder. ## Additional resources * [Auto Scaling User Guide](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) * [Auto Scaling API Reference](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/Welcome.html) * [SDK for Python Auto Scaling reference](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/autoscaling.html) --- Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0