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.37.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.37.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.37.0.tar.gz.

File metadata

  • Download URL: amgi_sqs_event_source_mapping-0.37.0.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.37.0.tar.gz
Algorithm Hash digest
SHA256 ddba9cc90ff1aa32d65d29952fac7354161706f519988f5e0fc654652c8070de
MD5 f51826c2e07c41ecae94cfad4a3c5ca2
BLAKE2b-256 7e6ad2ac6f8b44c144e630ba3a7547c982f1d6e944f6c35f6f93caab396dd21b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: amgi_sqs_event_source_mapping-0.37.0-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","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.37.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fac38b47be120644707060328ced7a4ecc5301caadc6fac78303f0cc4175fd2f
MD5 3217623f1500f22119bdcdb5e612b45f
BLAKE2b-256 a703d589cfae25b87702dafb28b04e62d48a87ab0a2eba2e8b35a4eae60ff281

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