Example #1
0
def create_app() -> FlaskLambda:
    '''Create an app by initializing components'''
    app = FlaskLambda(__name__)

    _initialize_blueprints(app)

    # Do it!
    return app
Example #2
0
def init_flask_for_env():
    """
  Loads flask for lambda or local debug.
  """
    from os import environ
    if 'LOCAL_DEBUG' in environ:
        from flask import Flask
        return Flask(__name__)
    else:
        from flask_lambda import FlaskLambda
        return FlaskLambda(__name__)
Example #3
0
def create_app():
    '''
    Create an app by initializing components.
    '''
    application = FlaskLambda(__name__)

    _initialize_errorhandlers(application)
    _initialize_blueprints(application)

    # Do it!
    return application
Example #4
0
def create_lambda_app() -> FlaskLambda:
    """Create Flask Lambda app for deploying on AWS.

    Returns:
        app (Flask): flask application
    """

    database_name = os.environ.get("DB_NAME")
    cluster_arn = os.environ.get("DB_CLUSTER_ARN")
    secret_arn = os.environ.get("DB_SECRET_ARN")
    secret_key = os.environ.get("SECRET_KEY", DEFAULT_SECRET_KEY)

    app = FlaskLambda(__name__)
    app.config.from_mapping(
        DEBUG=False,
        SECRET_KEY=secret_key,
        SQLALCHEMY_DATABASE_URI=f"mysql+auroradataapi://:@/{database_name}",
        SQLALCHEMY_ENGINE_OPTIONS={
            "connect_args":
            dict(aurora_cluster_arn=cluster_arn, secret_arn=secret_arn)
        },
        SQLALCHEMY_TRACK_MODIFICATIONS=False,
    )

    # Add a test route
    @http.route("/test-deployment/")
    def test():
        return Response(
            json.dumps({"message": "Serverless deployment successful"}),
            status=200,
            mimetype="application/json",
        )

    app.register_blueprint(http, url_prefix=r"/")

    # Setup database
    global db
    db.init_app(app)

    s = app.app_context().push()  # Push the app into context

    try:
        db.Model.metadata.create_all(
            db.engine, checkfirst=False)  # Create database tables
        seed_db()  # Seed the database
    except Exception as e:
        print("Error", e)

    db.session.commit()

    return app
Example #5
0
import os

from flask_lambda import FlaskLambda
from flask import request, jsonify
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
from marshmallow import ValidationError

from serializers import MovieSchema
from utils import initialize_movie

app = FlaskLambda(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['JSON_SORT_KEYS'] = False

db = SQLAlchemy(app)
ma = Marshmallow(app)


class Movie(db.Model):
    __tablename__ = "movies"
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(300))
    year = db.Column(db.String(50))
    age = db.Column(db.String(10))
    imbd = db.Column(db.String(10))
    rotten_tomatoes = db.Column(db.String(10))
    netflix = db.Column(db.String(10))
    hulu = db.Column(db.String(10))
def create_lambda_app(node_id: str) -> FlaskLambda:
    """Create flask application for hosting on AWS Lambda.

    Args:
        node_id: ID used to identify this node.
    Returns:
        app : FlaskLambda App instance.
    """

    # Register dialects to talk to AWS RDS via Data API
    import sqlalchemy_aurora_data_api

    sqlalchemy_aurora_data_api.register_dialects()

    database_name = os.environ.get("DB_NAME")
    cluster_arn = os.environ.get("DB_CLUSTER_ARN")
    secret_arn = os.environ.get("DB_SECRET_ARN")

    app = FlaskLambda(__name__)
    app.config.from_mapping(
        DEBUG=False,
        SQLALCHEMY_DATABASE_URI=f"mysql+auroradataapi://:@/{database_name}",
        SQLALCHEMY_ENGINE_OPTIONS={
            "connect_args":
            dict(aurora_cluster_arn=cluster_arn, secret_arn=secret_arn)
        },
        SQLALCHEMY_TRACK_MODIFICATIONS=False,
    )

    # Register app blueprints
    from .main import (
        auth,
        data_centric_routes,
        hook,
        local_worker,
        main_routes,
        model_centric_routes,
        ws,
    )

    # Add a test route
    @main_routes.route("/test-deployment/")
    def test():
        return Response(
            json.dumps({"message": "Serverless deployment successful."}),
            status=200,
            mimetype="application/json",
        )

    # set_node_id(id)
    local_worker.id = node_id
    hook.local_worker._known_workers[node_id] = local_worker
    local_worker.add_worker(hook.local_worker)

    # Register app blueprints
    app.register_blueprint(main_routes, url_prefix=r"/")
    app.register_blueprint(model_centric_routes, url_prefix=r"/model-centric")
    app.register_blueprint(data_centric_routes, url_prefix=r"/data-centric")

    # Setup database
    global db
    db.init_app(app)

    s = app.app_context().push()  # Push the app into context

    try:
        db.Model.metadata.create_all(
            db.engine, checkfirst=False)  # Create database tables
        seed_db()  # Seed the database
    except Exception as e:
        print("Error", e)

    db.session.commit()

    # Set Authentication configs
    app = auth.set_auth_configs(app)

    CORS(app)

    # Threads
    executor.init_app(app)
    app.config["EXECUTOR_PROPAGATE_EXCEPTIONS"] = True
    app.config["EXECUTOR_TYPE"] = "thread"

    return app
Example #7
0
import json
from flask_lambda import FlaskLambda
import boto3
import os
from flask import request, redirect
from uuid import uuid4
from datetime import datetime

handler = FlaskLambda(__name__)
s3 = boto3.client("s3")
bucketName = os.environ["BUCKET_NAME"]
dynamoDB = boto3.resource("dynamodb")
tableName = dynamoDB.Table(os.environ["DYNAMO_TABLE_NAME"])


@handler.route('/')
def index():
    response = {"message": " Bienvenue sur le site de partage"}
    return (json.dumps(response), 200, {'Content-Type': 'application/json'})


@handler.route('/objects', methods=['GET'])
def listobject():
    response = s3.list_objects_v2(Bucket=bucketName)["Contents"]
    return (json.dumps(response, indent=4, sort_keys=True, default=str), 200, {
        'Content-Type': 'application/json'
    })


@handler.route("/shares", methods=["GET", "POST", "DELETE"])
def list_or_put_object():
Example #8
0
from . import text

from flask_lambda import FlaskLambda
from flask import request, jsonify

kwargs = {}
app_path = os.path.dirname(__file__)
kwargs.update({
    'static_url_path':
    '',
    'static_folder':
    os.path.join(os.path.abspath(app_path), 'client')
})

app = FlaskLambda(__name__, **kwargs)


@app.route('/')
def index():
    return app.send_static_file('index.html')


@app.route('/render', methods=['POST'])
def render_template():
    data = request.get_json()

    client = docker.from_env()

    repository, tag = docker.utils.parse_repository_tag(
        os.getenv('DOCKER_IMAGE', 'sivel/ansible-template-ui'))
Example #9
0
def create_app_lambda():
    app = FlaskLambda(__name__)
    return configure_app(app)