예제 #1
0
def get_app_db():
    """DynamoDBTodo インスタンスを取得します

    Todo の DynamoDB テーブルを取得し、グローバル変数 _DB に格納します。
    このとき環境変数 APP_TABLE_NAME を参照し接続先のテーブル名を決定するため、
    デプロイのステージごとに DynamoDB テーブルを変更することができます。
    環境変数の定義は .chalice/config.json を参照してください。

    envs:
        DYNAMO_DB_ENDPOINT:
            接続する DynamoDB のエンドポイント
            この環境変数が存在しない場合は、「呼び出し環境のcredentialsと同一の
            AWSアカウント/リージョンに属するDynamoDB」がエンドポイントとなります。
        APP_TABLE_NAME: 接続する DynamoDB のテーブル名

    Return:
        DynamoDBTodo(instance):
            DynamoDB のエンドポイントとテーブルへのアクセスを内包した DynamoDBTodo インスタンスを返します

    Examples:
        get_app_db().list_items()   username と query に基づいて Todo を取得します
        get_app_db().get_item()    特定の Todo を取得します
        get_app_db().add_item()    Todo を新規登録します
        get_app_db().update_item() Todo を更新します
        get_app_db().delete_item() Todo を削除します

    """
    global _DB
    if _DB is None:
        endpoint = os.environ.get('DYNAMO_DB_ENDPOINT')
        tablename = os.environ['APP_TABLE_NAME']
        _DB = db.DynamoDBTodo(
            boto3.resource('dynamodb', endpoint_url=endpoint).Table(tablename)
        )
    return _DB
예제 #2
0
def get_app_db():
    global _DB
    if _DB is None:
        ## Choose InMemoryTodoDB for non persistence
        ## For persistence choose DynamoDBTodo
        #_DB = db.InMemoryTodoDB()
        print boto3.resource('dynamodb').Table(os.environ['APP_TABLE_NAME'])
        _DB = db.DynamoDBTodo(
            boto3.resource('dynamodb').Table(os.environ['APP_TABLE_NAME']))
    return _DB
예제 #3
0
def get_app_db():
    global _DB
    if _DB is None:
        _DB = db.DynamoDBTodo(
            boto3.resource('dynamodb').Table(os.environ['APP_TABLE_NAME']))
    return _DB