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.34.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.34.0.tar.gz (5.7 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.34.0.tar.gz.

File metadata

  • Download URL: amgi_sqs_event_source_mapping-0.34.0.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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.34.0.tar.gz
Algorithm Hash digest
SHA256 2ec9d5f940b9a4b2ea85a216479469fa5843697f4f2b3b8938970e7fced4212b
MD5 ec65c2c8c1d700f0337083b0d4f0cb66
BLAKE2b-256 86c2c2484086c6f34af7fcbd4c586a93034fd471db7484ddbd55c086fa1d4ddf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: amgi_sqs_event_source_mapping-0.34.0-py3-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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.34.0-py3-none-any.whl
Algorithm Hash digest
SHA256 98875aa0d278df33c565542250973545388ad49749d7716280da0b6cb775083a
MD5 c7d9e465776faf8fe88a71cbd61a1615
BLAKE2b-256 3256e5720cb6505a5b8e30908bfbe3859576f0ef4c8a3599e223bc5f741eb39c

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