AWS Developer Tools Blog

Python support policy updates for AWS SDKs and Tools

Overview

On May 30, 2022, the AWS SDK for Python (Boto3 and Botocore) and the AWS Command Line Interface (AWS CLI) v1 will no longer support Python 3.6. This will be the third in a recent series of runtime deprecations which started in 2021. The Python Software Foundation (PSF) has adopted a model of 5 year support windows for each language version. In 2022, we will start tracking this deprecation cycle more closely, providing 6 months of continued compatibility after the PSF’s end-of-support date for each language version. This is to help provide a more predictable deprecation cycle, enabling users to easily plan an upgrade roadmap around their schedule.

These end-of-support dates can be found in the PEP (Python’s Proposal Format) for each language version, which is created prior to start of beta development. Starting with Python 3.8, they’ve aligned on a pattern of deprecating versions in October of the 5th year of support. While this may not be followed indefinitely, you can reliably plan through at least October 2027. We’ve included a quick reference guide below for currently released and upcoming Python versions:

Python Version PSF End Of Support AWS SDKs End Of Support
3.6 (PEP 494) December 2021 May 2022
3.7 (PEP 537) June 2023 December 2023
3.8 (PEP 569) October 2024 April 2025
3.9 (PEP 596) October 2025 April 2026
3.10 (PEP 619) October 2026 April 2027
3.11 (PEP 664) October 2027 April 2028

For users currently using Python 3.6, we encourage you to upgrade to Python 3.8 or later to minimize impact of future update campaigns. After this point, you can expect the oldest supported Python version to be dropped in April of the following year. These deprecation are being regularly performed to both minimize use of software no longer receiving critical security updates and more readily enable improvements provided by new language features. We have included migration steps in this post to help you get started.

Migrating to Python 3.8 or later

If you’re currently using Python 3.6 as your runtime for AWS SDK for Python or AWS CLI v1, we recommend downloading Python 3.8 or later. For services hosted on Amazon Elastic Compute Cloud (Amazon EC2), most AWS Quick Start AMIs now provide Python 3.8+ out of the box:

  • macOS Monterey 12.1
  • Red Hat Enterprise Linux 8 (some setup required)
  • Ubuntu 20.04 LTS

AWS CLI users are strongly encouraged to migrate to AWS CLI v2, which doesn’t have a local Python dependency.
If you’re not ready to upgrade to Python 3.8+ or AWS CLI v2, you should review the following steps you may need to take.

Boto3 and Botocore

If you’re using Python 3.6, pip (9.0 or later) automatically halts updates at the last supported version. No actions are required until you decide to upgrade to Python 3.7+ (3.8+ is recommended).

AWS CLI v1

For AWS CLI v1 users, we recommend upgrading to a recent version of the AWS CLI v2. AWS CLI v2 doesn’t have a dependency on a local Python runtime, which allows you to avoid these deprecations in the future. For installation instructions, see Installing, updating, and uninstalling the AWS CLI version 2. Keep in mind the following:

  • MSI Installer – If you install the AWS CLI v1 using the Windows MSI Installer, you’re not impacted by this deprecation. The MSI Installer remains up to date with each release.
  • Pip Installation – If you install AWS CLI v1 using pip (9.0 or later) with Python 3.6, you automatically stop receiving updates after the last supported release. No other changes are required.
  • Bundled Installer – If you install the AWS CLI v1 using the bundled installer, you must ensure that you download a copy of the bundled installer that supports Python 3.6 runtime. You can do this by downloading the file from https://s3.amazonaws.com/aws-cli/awscli-bundle-{VERSION}.zip, replacing {VERSION} with the desired version of the AWS CLI. For example, to download version 1.18.165, use the following command:
    $ curl https://s3.amazonaws.com/aws-cli/awscli-bundle-1.18.165.zip -o awscli-bundle.zip

    Then continue following the installation instructions, starting with step 2.

Conclusion

If you’re currently using Python 3.6 as your runtime for AWS SDK for Python or AWS CLI v1, we encourage you to upgrade to Python 3.8 or later. Please share your questions, comments, and issues with us on GitHub.

Nate Prewitt

Nate Prewitt

Nate is a Software Development Engineer working on the AWS SDK for Python and AWS CLI. He is passionate about building tools to improve the developer experience. You can find him on Twitter @nateprewitt and GitHub @nateprewitt.