python client for managing AWS appsync graphql subscriptions
Project description
appsync-subscription-manager
epiphani AWS AppSync Subscription Manager
Installation
$ pip install epiphani-appsync-subscription-manager
A package for managing GraphQL subscriptions for AWS AppSync
Currently supported AppSync authentication is AWS Cognito only. Future enhancements will add support for API Key, AWS IAM & OpenID.
For AWS Cognito, this package currently supports 2 modes of authentication:
- Provide an Access Token as argument:
- access_token - An authenticated, unexpired, Access Token
- Provide the following arguments, the user will be authenticated and the resulting access_token used for making subscriptions:
- username - Username of user in AWS Cognito Pool
- passwd - Password of username
- aws_cognito_pool_id - AWS Cognito Pool ID
- aws_cognito_pool_client_id - AWS Cognito Pool Client ID (one with no secret key)
Other Arguments
- aws_region The AWS Region of the AppSync API to use (default: us-west-2) (optional)
- appsync_api_id The API ID of the AppSync API to make subscriptions to (required)
- on_connection_error Callback function to notify of errors while connecting to GraphQL API endpoint (required)
- on_error Callback function to notify non-connection related errors (required)
- cb_data Opaque data that is passed back with any callback functions that the manager calls (optional)
- logger An instance of python logging getLogger (optional)
Using the AppSync Subscription Manager
Here is an example of using the subscription manager to register for notifications when a user is created or updated.
import appsync_subscription_manager as asm
AWS_APPSYNC_GQL_ENDPOINT_ID = 'dnj38asdfkn344nmkfndfnkl4nlk'
ID_TOKEN = 'JWT_ID_TOKEN'
USER_CREATE_SUBSCRIPTION = """
subscription OnCreateUser {
onCreateUser {
id
createdAt
updatedAt
userName
fullName
}
}
"""
USER_UPDATE_SUBSCRIPTION = """
subscription OnUpdateUser {
onUpdateUser {
id
createdAt
updatedAt
userName
fullName
}
}
"""
my_cb_data = {
'current_env': 'dev',
}
def on_connection_error(error, cb_data):
print("Got an error while making WebSocket connection: %r" % (error))
def on_close(cb_data):
print("WebSocket connection closed")
def on_error(error, cb_data):
print("Got an error on WebSocket connection: %r" % (error))
def user_create_subscription_error(error, cb_data):
print("Subscription failed: %r" % (error))
def user_create_subscription_success(cb_data):
print("Subscription succeeded")
def user_created(user_msg, cb_data):
print("user created")
def user_update_subscription_error(error, cb_data):
print("Subscription failed: %r" % (error))
def user_update_subscription_success(cb_data):
print("Subscription succeeded")
def user_updated(user_msg, cb_data):
print("user updated")
# sub: subscription object that you got (my_sub variable below)
# when you made the subscription request is returned
# back in the callback
def on_subscription_success(cb_data, sub):
print("Got subscription success...")
# create an instance of the subscription manager using token
# based authentication. Refer to the README.md to subscribe
# using username/password for a cognito pool user
my_mgr = asm.AppSyncSubscriptionManager(id_token = ID_TOKEN,
appsync_api_id = AWS_APPSYNC_GQL_ENDPOINT_ID,
on_connection_error = on_connection_error,
on_error = on_error,
on_close = on_close,
cb_data = my_cb_data)
# subscribe for user creation notifications
user_create_sub = my_mgr.subscribe(USER_CREATE_SUBSCRIPTION, user_created,
user_create_subscription_error, user_create_subscription_success)
user_update_sub = my_mgr.subscribe(USER_UPDATE_SUBSCRIPTION, user_updated,
user_update_subscription_error, user_update_subscription_success)
# Start the read loop to wait for subscription notifications
my_mgr.run_forever()
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
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 epiphani-appsync-subscription-manager-0.1.3.tar.gz.
File metadata
- Download URL: epiphani-appsync-subscription-manager-0.1.3.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/2.7.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48772a4ed0770229eb1919b555b077de334d074189e1ddfc4cfb3cac10b57392
|
|
| MD5 |
e545df2d8e42441d880cded418c383e2
|
|
| BLAKE2b-256 |
1bab8515f9a011eb9ee784b23d3d5b1c3d775871d233873c7e586c21d1fd4904
|
File details
Details for the file epiphani_appsync_subscription_manager-0.1.3-py2-none-any.whl.
File metadata
- Download URL: epiphani_appsync_subscription_manager-0.1.3-py2-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 2
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/2.7.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef917408fc133fe60cecec99a306e33b3328c0ed382f0f5b4e195a7511c397ce
|
|
| MD5 |
eb45211a8e9ff6febe9d77be451bb61c
|
|
| BLAKE2b-256 |
f771aa765875572c978d0cb81a1708ddc8e1e3056674ea5f91a05a07c45ba6c8
|