Howto / Help

Use livebridge as a module within another app

# -*- coding: utf-8 -*-
import asyncio
from livebridge.run import main as lb_run

async def hello_world():
    while 1:
        print("PING")
        await asyncio.sleep(5)

loop = asyncio.get_event_loop()
asyncio.ensure_future(hello_world())

# initialise livebridge
livebridge = lb_run(loop=loop, control="control-dev.yaml")

try:
    loop.run_forever()
finally:
    livebridge.shutdown()
    loop.stop()
    loop.close()

To allow Livebridge to shutdown properly, you should call livebridge.shutdown() before stopping and closing the event loop.

IAM policy for running on Amazon AWS

To run Livebridge on Amazon AWS, following IAM rule can be used:

{
    "Version": "2012-10-17",
    "Statement": [
    {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::S3_CONFIG_BUCKET/*"
            ]
        },
        {
            "Action": [
                "dynamodb:*"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:dynamodb:eu-central-1:AWS_ACCOUNT_ID:table/*",
                "arn:aws:dynamodb:eu-central-1:AWS_ACCOUNT_ID:table/*/index/*"
            ]
        },
        {
            "Action": [
                "dynamodb:ListTables"
            ],
            "Effect": "Allow",
            "Resource": [
                "*"
            ]
        },
    {
            "Sid": "Stmt1468584281000",
            "Effect": "Allow",
            "Action": [
                "sqs:DeleteMessage",
                "sqs:GetQueueAttributes",
                "sqs:GetQueueUrl",
                "sqs:ListQueues",
                "sqs:ReceiveMessage",
                "sqs:PurgeQueue"
            ],
            "Resource": [
                "arn:aws:sqs:eu-central-1:AWS_ACCOUNT_ID:*"
            ]
        }
    ]
}