Type Annotations for boto3 SecretsManager

1.42.8 · active · verified Thu Apr 16

types-boto3-secretsmanager provides comprehensive type annotations for the `boto3` AWS Secrets Manager service, enhancing static analysis, code completion, and overall developer experience in Python projects. It is automatically generated by the `mypy-boto3-builder` and is currently at version 1.42.8, with releases closely tracking `boto3` updates to ensure compatibility and extensive type coverage across all service operations, paginators, and type definitions.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to initialize a `boto3` Secrets Manager client and retrieve a secret value with the benefit of static type checking provided by `types-boto3-secretsmanager`. The `if TYPE_CHECKING:` block ensures that `mypy_boto3_secretsmanager` is only used for type analysis and not as a runtime dependency.

import boto3
from typing import TYPE_CHECKING
import os

# Ensure AWS credentials are configured (e.g., via environment variables or ~/.aws/credentials)
# os.environ['AWS_ACCESS_KEY_ID'] = 'YOUR_ACCESS_KEY'
# os.environ['AWS_SECRET_ACCESS_KEY'] = 'YOUR_SECRET_KEY'
# os.environ['AWS_REGION'] = 'us-east-1'

if TYPE_CHECKING:
    from mypy_boto3_secretsmanager import SecretsManagerClient

def get_secret_value_typed(secret_name: str, region_name: str) -> str:
    session = boto3.session.Session()
    client: SecretsManagerClient = session.client(
        service_name='secretsmanager',
        region_name=region_name,
    )

    try:
        response = client.get_secret_value(
            SecretId=secret_name
        )
        if 'SecretString' in response:
            return response['SecretString']
        elif 'SecretBinary' in response:
            return response['SecretBinary'].decode('utf-8') # Assuming UTF-8 encoded binary
    except client.exceptions.ResourceNotFoundException:
        print(f"Secret '{secret_name}' not found.")
    except client.exceptions.ClientError as e:
        print(f"An AWS client error occurred: {e}")
    return ""

# Example usage (uncomment and replace with valid secret name and region)
# if __name__ == "__main__":
#     secret = get_secret_value_typed("my-test-secret", os.environ.get('AWS_REGION', 'us-east-1'))
#     if secret:
#         print(f"Retrieved secret: {secret}")

view raw JSON →