Experimental: This documentation covers the AWS SDK for Python v4, which is experimental, non-GA software intended for evaluation and testing only. Do not use it for production workloads. For production applications, use the AWS SDK for Python (Boto3). To understand the differences between the two SDKs, see Choosing the right AWS SDK for Python.
Choosing the right AWS SDK for Python
AWS offers two SDKs for Python developers. This page helps you understand the differences and choose the right SDK for your needs.
Overview
AWS SDK for Python (Boto3) is the established, production-ready SDK with full coverage of all AWS services. It has been the standard for Python developers building on AWS for years and remains fully supported.
AWS SDK for Python v4 is the next-generation SDK covered in this guide, rebuilt from the ground up with an async-first, modular architecture. It is experimental, non-GA software in early development, released for evaluation and early feedback rather than production use.
Both SDKs can coexist in the same project without conflicts, and you can use either or both based on your requirements.
Key differences
| Capability | AWS SDK for Python (Boto3) | AWS SDK for Python v4 |
|---|---|---|
| Release status | General Availability (GA) | Experimental (not GA) |
| Production use | Yes | Not recommended |
| Architecture | Synchronous, monolithic package | Async-first, modular per-service packages |
| Async support | Via community wrappers (aiobotocore/aioboto3) | Native async/await with asyncio |
| Packaging | Single boto3 package for all services |
Per-service packages (for example, aws-sdk-dynamodb) |
| HTTP/2 streaming | Not supported | Native bidirectional event streaming |
| Service coverage | All AWS services | A subset of AWS services (expanding) |
| Paginators & waiters | Available | Coming soon |
| Presigned URLs | Available | Coming soon |
| S3 Transfer Manager | Available | Coming soon |
| Synchronous client | Default mode | Coming soon |
| Credential support | Full (SSO, Web Identity, etc.) | Default credential chain (SSO, Web Identity coming soon) |
| Code generation | Partial | Fully auto-generated from Smithy service models |
Decision guide
Choose AWS SDK for Python (Boto3) if you:
Need production stability: Boto3 is generally available, widely used in production, and provides complete AWS service coverage.
Require services the experimental SDK doesn't support yet: If your application depends on services that the experimental SDK doesn't support yet, use Boto3.
Run synchronous workloads: If your application doesn't have concurrency performance bottlenecks, the synchronous model in Boto3 is mature and well-suited.
Need full credential provider support: If you rely on SSO via IAM Identity Center or Web Identity (EKS/GitHub Actions OIDC).
Depend on paginators, waiters, or presigned URLs: These features are not yet available in the experimental SDK.
Choose AWS SDK for Python v4 if you:
Are building high-throughput async applications: Native async/await with asyncio eliminates the overhead of community wrappers and delivers true concurrency for multiple simultaneous AWS service calls.
Work with streaming services: Bedrock Runtime, Transcribe Streaming, and SageMaker Runtime are designed for async, and the new SDK's HTTP/2 bidirectional streaming support provides first-class handling.
Need minimal deployment size: Per-service packages (for example,
aws-sdk-dynamodb) with granular dependencies help you stay within AWS Lambda deployment size limits.Want to influence SDK direction: Feedback on the experimental SDK directly shapes feature prioritization and the GA release.
Are evaluating for future migration: Getting familiar with the new SDK's API patterns early helps you plan a smooth transition.
Use both SDKs together if you:
Want to use the new SDK for async workloads (for example, Bedrock streaming) while relying on Boto3 for everything else.
Are incrementally evaluating the new SDK in non-production paths while maintaining Boto3 for production code.
Need services from both SDKs in the same application.
Important
When using both SDKs together, be aware that mixing synchronous Boto3 calls inside an async event loop can block the loop and negate the performance benefits of async. Keep sync and async code paths separated. Refer to the Working with AWS SDK for Python (Boto3) page for additional details.
Services available in the experimental SDK
The experimental SDK currently supports 24 service clients, including:
Amazon Bedrock & Bedrock Runtime
Amazon DynamoDB
AWS Lambda
Amazon SQS
Amazon SNS
AWS STS
Amazon Transcribe Streaming
Amazon SageMaker Runtime
And more: see the aws-sdk-python repository
on GitHub for the full list
What's coming next
AWS SDK for Python v4 is being developed incrementally. Planned additions include:
Expanded service coverage: Support for Amazon S3 and additional AWS services.
Complete credential chain: SSO via IAM Identity Center, Web Identity, AWS Login, process credentials, and SigV4a multi-region signing.
Core SDK features: Paginators, waiters, presigned URLs, S3 Transfer Manager, and synchronous client support.
Observability: Adaptive retries, logging, metrics, OpenTelemetry tracing, proxy configuration, and connection pooling.
Lifecycle and support
| Question | Answer |
|---|---|
| Is AWS SDK for Python (Boto3) being retired? | Not until the new SDK reaches feature parity with the synchronous support in Boto3. AWS will provide ample notice, migration guidance, and support throughout any transition. |
| When will the new SDK reach GA? | The GA release will be informed by feedback on the experimental releases. No date has been set. |
| Can I use the experimental SDK in production? | No. It is intended for evaluation and testing in pre-production environments only. |
| Will both SDKs be supported simultaneously? | Yes. Both SDKs are fully supported, and you can confidently choose the one that best meets your current needs. |
Getting started
AWS SDK for Python (Boto3): Developer Guide | SDK source
on GitHub AWS SDK for Python v4: Getting started with the AWS SDK for Python v4 | SDK source
on GitHub
Feedback
We want your feedback to guide feature prioritization and service coverage. File issues in the aws-sdk-python repository