Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:BerriAI Litellm SQS Logger

From Leeroopedia
Attribute Value
Sources litellm/integrations/sqs.py
Domains Logging, AWS SQS, Message Queues, Integrations
Last Updated 2026-02-15 16:00 GMT

Overview

The SQSLogger is a batch logging integration that sends StandardLoggingPayload entries to an AWS SQS queue, with optional application-level encryption.

Description

SQSLogger extends both CustomBatchLogger and BaseAWSLLM to accumulate LLM call payloads and flush them to an SQS queue using the SendMessage API action via SigV4-signed HTTP POST requests. Each message is sent individually (SQS does not batch in this implementation). The logger supports extensive AWS credential options (access keys, IAM roles, web identity tokens, STS endpoints), configurable batch sizes and flush intervals, base64 content stripping, and optional application-level AES-GCM encryption of payloads (via AppCrypto). Encrypted messages are wrapped in a {"__encrypted__": True, "payload": ...} envelope. It also includes a health check method that sends a dummy message to verify connectivity.

Usage

Import and register SQSLogger when you need to push LLM log data to an SQS queue for downstream processing. Configure via litellm.aws_sqs_callback_params or constructor arguments.

Code Reference

Source Location

litellm/integrations/sqs.py

Signature

class SQSLogger(CustomBatchLogger, BaseAWSLLM):
    def __init__(
        self,
        sqs_queue_url: Optional[str] = None,
        sqs_region_name: Optional[str] = None,
        sqs_api_version: Optional[str] = None,
        sqs_use_ssl: bool = True,
        sqs_verify: Optional[bool] = None,
        sqs_endpoint_url: Optional[str] = None,
        sqs_aws_access_key_id: Optional[str] = None,
        sqs_aws_secret_access_key: Optional[str] = None,
        sqs_aws_session_token: Optional[str] = None,
        sqs_aws_session_name: Optional[str] = None,
        sqs_aws_profile_name: Optional[str] = None,
        sqs_aws_role_name: Optional[str] = None,
        sqs_aws_web_identity_token: Optional[str] = None,
        sqs_aws_sts_endpoint: Optional[str] = None,
        sqs_flush_interval: Optional[int] = DEFAULT_SQS_FLUSH_INTERVAL_SECONDS,
        sqs_batch_size: Optional[int] = DEFAULT_SQS_BATCH_SIZE,
        sqs_config=None,
        sqs_strip_base64_files: bool = False,
        sqs_aws_use_application_level_encryption: bool = False,
        sqs_app_encryption_key_b64: Optional[str] = None,
        sqs_app_encryption_aad: Optional[str] = None,
        **kwargs,
    ) -> None

Import

from litellm.integrations.sqs import SQSLogger

I/O Contract

Inputs

Parameter Type Required Description
sqs_queue_url Optional[str] No SQS queue URL. Can also be set via litellm.aws_sqs_callback_params.
sqs_region_name Optional[str] No AWS region name.
sqs_aws_access_key_id Optional[str] No AWS access key ID.
sqs_aws_secret_access_key Optional[str] No AWS secret access key.
sqs_flush_interval Optional[int] No Flush interval in seconds. Defaults to DEFAULT_SQS_FLUSH_INTERVAL_SECONDS.
sqs_batch_size Optional[int] No Batch size. Defaults to DEFAULT_SQS_BATCH_SIZE.
sqs_strip_base64_files bool No Strip base64 inline data from payloads. Default False.
sqs_aws_use_application_level_encryption bool No Enable AES-GCM encryption of payloads. Default False.
sqs_app_encryption_key_b64 Optional[str] No Base64-encoded AES encryption key. Required if encryption is enabled.
sqs_app_encryption_aad Optional[str] No Additional authenticated data for encryption.

Key Methods

Method Returns Description
async_log_success_event(kwargs, response_obj, start_time, end_time) None Async success logging - queues payload.
async_log_failure_event(kwargs, response_obj, start_time, end_time) None Async failure logging - queues payload.
async_send_batch() None Flushes queue by creating async tasks for each message.
async_send_message(payload) None Sends a single message to SQS with SigV4 signing and optional encryption.
async_health_check() IntegrationHealthCheckStatus Sends a test message to verify SQS connectivity.

Outputs

Output Type Description
Side effect SQS SendMessage Posts URL-encoded form data to the SQS queue URL with SigV4 authentication.

Usage Examples

import litellm

litellm.aws_sqs_callback_params = {
    "sqs_queue_url": "https://sqs.us-east-1.amazonaws.com/123456789012/my-queue",
    "sqs_region_name": "us-east-1",
}

litellm.success_callback = ["sqs"]
litellm.failure_callback = ["sqs"]
# With application-level encryption
from litellm.integrations.sqs import SQSLogger

logger = SQSLogger(
    sqs_queue_url="https://sqs.us-east-1.amazonaws.com/123456789012/my-queue",
    sqs_region_name="us-east-1",
    sqs_aws_use_application_level_encryption=True,
    sqs_app_encryption_key_b64="base64-encoded-256-bit-key",
    sqs_app_encryption_aad="my-app-context",
)

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment