CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-botocore

Low-level, data-driven core of boto 3 providing foundational AWS service access.

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

config.mddocs/

Configuration

Advanced configuration system for customizing client behavior, timeouts, retry logic, and AWS-specific settings. The Config class provides fine-grained control over how botocore clients interact with AWS services.

Capabilities

Configuration Class

Primary configuration class for customizing client behavior.

class Config:
    def __init__(
        self,
        region_name: str = None,
        signature_version: str = None,
        user_agent: str = None,
        user_agent_extra: str = None,
        user_agent_appid: str = None,
        connect_timeout: Union[int, float] = 60,
        read_timeout: Union[int, float] = 60,
        parameter_validation: bool = True,
        max_pool_connections: int = 10,
        proxies: dict = None,
        proxies_config: dict = None,
        s3: dict = None,
        retries: dict = None,
        tcp_keepalive: bool = False,
        inject_host_prefix: bool = True,
        disable_request_compression: bool = False,
        request_min_compression_size_bytes: int = 10240,
        **kwargs
    ):
        """
        Initialize client configuration.
        
        Args:
            region_name: AWS region name override
            signature_version: AWS signature version ('v2', 'v4', 's3v4')
            user_agent: Custom user agent string
            user_agent_extra: Additional user agent information
            user_agent_appid: Application ID for user agent
            connect_timeout: Connection timeout in seconds (default: 60)
            read_timeout: Read timeout in seconds (default: 60)
            parameter_validation: Enable parameter validation (default: True)
            max_pool_connections: Maximum HTTP connection pool size (default: 10)
            proxies: Proxy configuration dictionary
            proxies_config: Advanced proxy configuration
            s3: S3-specific configuration options
            retries: Retry configuration dictionary
            tcp_keepalive: Enable TCP keepalive (default: False)
            inject_host_prefix: Enable host prefix injection (default: True)
            disable_request_compression: Disable request compression
            request_min_compression_size_bytes: Minimum size for compression
        """

Configuration Properties

Access configuration values after initialization.

class Config:
    @property
    def region_name(self) -> str:
        """AWS region name."""
    
    @property
    def signature_version(self) -> str:
        """AWS signature version."""
    
    @property
    def user_agent(self) -> str:
        """User agent string."""
    
    @property
    def connect_timeout(self) -> Union[int, float]:
        """Connection timeout in seconds."""
    
    @property
    def read_timeout(self) -> Union[int, float]:
        """Read timeout in seconds."""
    
    @property
    def max_pool_connections(self) -> int:
        """Maximum connection pool size."""
    
    @property
    def parameter_validation(self) -> bool:
        """Parameter validation enabled status."""

Configuration Merging

Merge configuration objects for inheritance and override behavior.

class Config:
    def merge(self, other_config: 'Config') -> 'Config':
        """
        Merge with another configuration.
        
        Args:
            other_config: Configuration to merge with
            
        Returns:
            Config: New merged configuration
        """

Configuration Options

Network Configuration

Configure network-related settings for HTTP requests.

# Connection and read timeouts
config = Config(
    connect_timeout=30,      # 30 seconds to connect
    read_timeout=60,         # 60 seconds to read response
)

# Connection pooling
config = Config(
    max_pool_connections=20,  # Allow up to 20 concurrent connections
    tcp_keepalive=True       # Enable TCP keepalive
)

Proxy Configuration

Configure proxy settings for HTTP requests.

# Basic proxy configuration
config = Config(
    proxies={
        'http': 'http://proxy.example.com:8080',
        'https': 'https://proxy.example.com:8080'
    }
)

# Advanced proxy configuration with authentication
config = Config(
    proxies={
        'http': 'http://user:pass@proxy.example.com:8080',
        'https': 'https://user:pass@proxy.example.com:8080'
    },
    proxies_config={
        'proxy_ca_bundle': '/path/to/ca-bundle.pem',
        'proxy_client_cert': '/path/to/client.pem',
        'proxy_use_forwarding_for_https': True
    }
)

Retry Configuration

Configure automatic retry behavior for failed requests.

# Standard retry configuration
config = Config(
    retries={
        'max_attempts': 5,        # Maximum retry attempts
        'mode': 'standard'        # Use standard retry mode
    }
)

# Adaptive retry configuration
config = Config(
    retries={
        'max_attempts': 10,
        'mode': 'adaptive'        # Use adaptive retry mode
    }
)

# Legacy retry configuration
config = Config(
    retries={
        'max_attempts': 3,
        'mode': 'legacy'
    }
)

S3-Specific Configuration

Configure S3-specific client behavior.

config = Config(
    s3={
        'addressing_style': 'virtual',      # Use virtual-hosted-style URLs
        'signature_version': 's3v4',        # Use S3 Signature Version 4
        'use_accelerate_endpoint': True,    # Use S3 Transfer Acceleration
        'use_dualstack_endpoint': True,     # Use dual-stack endpoints
        'payload_signing_enabled': False,   # Disable payload signing
        'chunked_encoding': True,           # Enable chunked encoding
        'us_east_1_regional_endpoint': 'regional'  # Use regional endpoint
    }
)

User Agent Configuration

Customize user agent strings for request identification.

# Custom user agent
config = Config(
    user_agent='MyApplication/1.0',
    user_agent_extra='Additional/Info',
    user_agent_appid='my-app-id'
)

Validation and Compression

Configure parameter validation and request compression.

config = Config(
    parameter_validation=False,              # Disable parameter validation
    disable_request_compression=True,        # Disable compression
    request_min_compression_size_bytes=5120  # Set compression threshold
)

Security Configuration

Configure authentication and signature settings.

# Signature version configuration
config = Config(
    signature_version='v4'  # Use AWS Signature Version 4
)

# Service-specific signature configuration
config = Config(
    signature_version='s3v4'  # Use S3-specific signature version
)

Usage Examples

Basic Configuration

from botocore.config import Config
from botocore.session import get_session

# Create configuration
config = Config(
    region_name='us-west-2',
    connect_timeout=30,
    read_timeout=30,
    max_pool_connections=20
)

# Apply to client
session = get_session()
client = session.create_client('s3', config=config)

Production Configuration

# Production-ready configuration
production_config = Config(
    # Network settings
    connect_timeout=10,
    read_timeout=60,
    max_pool_connections=50,
    tcp_keepalive=True,
    
    # Retry settings
    retries={
        'max_attempts': 5,
        'mode': 'adaptive'
    },
    
    # User agent
    user_agent_appid='myapp-production',
    
    # Validation
    parameter_validation=True
)

Service-Specific Configuration

# S3-optimized configuration
s3_config = Config(
    s3={
        'addressing_style': 'virtual',
        'signature_version': 's3v4',
        'use_accelerate_endpoint': True,
        'payload_signing_enabled': False
    },
    connect_timeout=60,
    read_timeout=300,  # Longer timeout for large uploads
    max_pool_connections=25
)

s3_client = session.create_client('s3', config=s3_config)

Development Configuration

# Development configuration with debugging
dev_config = Config(
    # Shorter timeouts for faster feedback
    connect_timeout=5,
    read_timeout=30,
    
    # More aggressive retries
    retries={
        'max_attempts': 2,
        'mode': 'standard'
    },
    
    # Enable validation for development
    parameter_validation=True,
    
    # Custom user agent for development
    user_agent_extra='Development/Testing'
)

Configuration Merging

# Base configuration
base_config = Config(
    connect_timeout=30,
    read_timeout=60,
    parameter_validation=True
)

# Service-specific overrides
s3_overrides = Config(
    read_timeout=300,  # Longer timeout for S3
    s3={'addressing_style': 'virtual'}
)

# Merge configurations
final_config = base_config.merge(s3_overrides)

Environment-Specific Configuration

import os

# Configuration based on environment
def get_config():
    if os.environ.get('ENVIRONMENT') == 'production':
        return Config(
            retries={'max_attempts': 5, 'mode': 'adaptive'},
            connect_timeout=10,
            max_pool_connections=50
        )
    else:
        return Config(
            retries={'max_attempts': 2, 'mode': 'standard'},
            connect_timeout=5,
            max_pool_connections=10
        )

config = get_config()
client = session.create_client('dynamodb', config=config)

Install with Tessl CLI

npx tessl i tessl/pypi-botocore

docs

client.md

config.md

credentials.md

events.md

exceptions.md

index.md

models.md

pagination.md

response.md

session.md

testing.md

waiters.md

tile.json