| 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