Skip to main content

AMGI SQS event source mapping handler

Project description

amgi-sqs-event-source-mapping

amgi-sqs-event-source-mapping is an adaptor for AMGI applications to run in an SQS event source mapped Lambda.

Installation

pip install amgi-sqs-event-source-mapping==0.45.0

Example

This example uses AsyncFast:

from dataclasses import dataclass

from amgi_sqs_event_source_mapping import SqsEventSourceMappingHandler
from asyncfast import AsyncFast

app = AsyncFast()


@dataclass
class Order:
    item_ids: list[str]


@app.channel("order-queue")
async def order_queue(order: Order) -> None:
    # Makes an order
    ...


handler = SqsEventSourceMappingHandler(app)

What it does

  • Converts SQS batch events into AMGI message.receive events
  • Uses the SQS queue name as the AMGI message address
  • Supports partial batch failures so only failed messages are retried
  • Sends outbound messages back to SQS efficiently using batching
  • Optionally manages application startup and shutdown via AMGI lifespan
  • Verifies message integrity using the SQS-provided MD5 checksum and retries corrupted messages

Record handling

  • Record bodies are passed to your app as bytes
  • SQS record attributes become AMGI headers
  • Records are only acknowledged when your app emits message.ack
  • Records that are not acknowledged are treated as failures and will be retried
  • Corrupted messages are detected automatically and retried

Lifespan

Lifespan support is enabled by default.

  • Startup runs once per Lambda execution environment
  • Shutdown is attempted when the environment is terminated

Shutdown handling relies on signal.SIGTERM, which is supported by Python 3.12 and later Lambda runtimes.

To use fully stateless, per-invocation behavior, disable lifespan:

handler = SqsEventSourceMappingHandler(app, lifespan=False)

Contact

For questions or suggestions, please contact jack.burridge@mail.com.

License

Copyright 2025 AMGI

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

amgi_sqs_event_source_mapping-0.45.0.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file amgi_sqs_event_source_mapping-0.45.0.tar.gz.

File metadata

  • Download URL: amgi_sqs_event_source_mapping-0.45.0.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for amgi_sqs_event_source_mapping-0.45.0.tar.gz
Algorithm Hash digest
SHA256 9b5fd0ccf0dd131d3fff90eda398d7fd0b5dc224d7a8ec8d1e7db2e3e49fcb15
MD5 702088b5abcb11f100e2eaa9b86d8dd7
BLAKE2b-256 2424d7ef1bebaa6d12d0eca6002e551e3dc1211692942ff550092b3438695db0

See more details on using hashes here.

File details

Details for the file amgi_sqs_event_source_mapping-0.45.0-py3-none-any.whl.

File metadata

  • Download URL: amgi_sqs_event_source_mapping-0.45.0-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for amgi_sqs_event_source_mapping-0.45.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ea9984879d6968183efb4de92fc71f8dce3254ce63168adb66536d88d152cb55
MD5 a57d6d4005305a35190d0c66911863f1
BLAKE2b-256 b9f67f73056ee08a3a4483b47fa03def67b037133536e069bc8639a5f8d3750c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page