A55 AWS PubSub Library
Project description
Welcome to Subdivisions
A55 Python library for PubSub Messaging
Install in Project
# pyproject.toml
# Add in every project which will
# receive or send messages
[tool.subdivisions]
source_name = "ProjectName" # ex.: "Client-Manager"
[tool.poetry.dependencies]
subdivisions = "*"
Run poetry update
Usage
Send Messages
from subdivisions.client import SubClient
from subdivisions.events import UserEvents
client = SubClient()
client.topic = UserEvents.USER_REGISTERED
client.send({"foo": "bar"})
Receive Messages
from subdivisions.client import SubClient
from subdivisions.events import UserEvents
client = SubClient()
client.topic = UserEvents.USER_REGISTERED
messages = client.get_messages() # use the ``from_dead_letter=True` to receive Dead Letter messages
# Process messages
client.delete_received_messages()
Full Configuration options
Configure subdivisions options in pyproject.toml file, inside [tool.subdivisions] table:
# pyproject.toml
[tool.subdivisions]
aws_region = "us-east-1" # AWS Region
aws_allowed_account = "" # AWS Allowed Account Id for create artifacts / send messages
pub_key = "alias/PubSubKey" # KMS PubSubKey (must be created first)
sqs_tags = [] # SQS tags for new queues. Example [{"foo": "bar"}]
queue_prefix = "" # Prefix for new SQS queues
queue_suffix = "" # Suffix for new SQS queues
queue_max_receive_count = 1000 # SQS MaxReceiveCount setting
sns_prefix = "" # Prefix for new SNS topics
sns_suffix = "" # Suffix for new SNS topics
sns_tags = [] # SNS tags for new topics. Example [{"foo": "bar"}]
event_prefix = "" # Prefix for new Eventbride rules
event_suffix = "" # Suffix for new Eventbride rules
event_tags = [] # Eventbridge tags for new rules. Example [{"foo": "bar"}]
event_bus = "default" # Eventbridge Bus
source_name = "" # Eventbridge default source name. No default, must inform
auto_create_new_topic = true # Auto create new topic if not exists in Eventbridge
auto_remove_from_queue = false # Acknowledge first messages on receive
use_aws_env_vars = true # Use AWS default env vars. If false append "SUBDIVISION_" on env vars. Example: "SUBDIVISION_AWS_ACCESS_KEY_ID"
default_prefix = "a55" # Default prefix for all sns, sqs and rule created
default_suffix = "" # Default suffix for all sns, sqs and rule created
All options above can be configured in environment variables. Just append SUBDIVISIONS_ on name. Example: SUBDIVISIONS_SOURCE_NAME="my_project"
Local Development
For local development, please first clone and install this project:
git clone git@github.com:access55/subdivisions.git /path/to/project
cd /path/to/project
# Install on WSL/Linux
make install
# Install on Powershell
poetry install
Example: Adding a new Topic
To avoid different names in different projects for the same topic, (i.e: "client_registered" and
"customer_registered") please add new events using Python Enum on subdivisions.event module:
# subdivisions.events
from enum import unique, Enum
@unique
class MyNewEvents(Enum):
MY_NEW_EVENT = "my_new_event"
Commit using a conventional commit message
To generate a new PyPI version, at least one commit must following the
Conventional Commit Specification, when you can
add the feat: or fix: prefix in your message:
# Create a new patch event. Ex. 1.0.0 to 1.0.1
git commit -m "fix: Event Bug"
# Create a new minor event. Ex. 1.0.0 to 1.1.0
git commit -m "feat: Add New Event"
# Create a new major event. Ex. 1.0.0 to 2.0.0
git commit -m "feat!: Add New Event \n\nBREAKING CHANGE: API changed"
Without a feat: or fix: prefixed commited message, code will not generate a new PyPI version.
Using AWS Credentials locally
Subdivisions will use AWS default environment variables. If you need to define another credentials, use the following variables:
SUBDIVISIONS_USE_AWS_ENV_VARS="false"
SUBDIVISIONS_AWS_ACCESS_KEY_ID="your id"
SUBDIVISIONS_AWS_SECRET_ACCESS_KEY="your key"
SUBDIVISIONS_AWS_SESSION_TOKEN="your token" # optional
Using Subdivisions in LOCALSTACK
To use with localstack, you need to activate the sqs, sns, events, and kms services and add them to your .env file:
LOCALSTACK_HOSTNAME_LOCAL="http://localstack:4566"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file subdivisions-1.53.0.tar.gz.
File metadata
- Download URL: subdivisions-1.53.0.tar.gz
- Upload date:
- Size: 16.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 importlib-metadata/7.1.0 keyring/21.8.0 pkginfo/1.10.0 requests/2.31.0 requests-toolbelt/0.9.1 urllib3/2.2.1 CPython/3.9.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fccd839d40aa64314521d52570a9e3b7c9675d68aeab4ee70f5474290066ce41
|
|
| MD5 |
5811a7803461b666b4f9bd31fb2bd80a
|
|
| BLAKE2b-256 |
edb7bcb2dead52ce97c3622e00f9e04e8c04847548e3f7cb4139048e719bee04
|
File details
Details for the file subdivisions-1.53.0-py3-none-any.whl.
File metadata
- Download URL: subdivisions-1.53.0-py3-none-any.whl
- Upload date:
- Size: 17.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 importlib-metadata/7.1.0 keyring/21.8.0 pkginfo/1.10.0 requests/2.31.0 requests-toolbelt/0.9.1 urllib3/2.2.1 CPython/3.9.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a4163178783dda9e8f5a41915d6e033b4d2b5b89725d5de3f80776bdc950f7b
|
|
| MD5 |
5d0f4f6901df5c6c1ec77ed83ac89b30
|
|
| BLAKE2b-256 |
7f79c0e1b0daca06d7478d26eb0d2b08b5996f2ff33b5ac0dd968f77f3bdfb74
|