-
Notifications
You must be signed in to change notification settings - Fork 0
/
lambda.py
38 lines (26 loc) · 980 Bytes
/
lambda.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
"""Lambda function handler."""
import asyncio
import json
import logging
from typing import TYPE_CHECKING
import boto3
import expense_bot as bot
from expense_bot import Repository, setup_logging
from expense_bot.secrets import provides
if TYPE_CHECKING:
from awslambdaric.lambda_context import LambdaContext
setup_logging()
logger = logging.getLogger()
@provides(secret="g-service-acct")
def service_acct_credentials():
secret_name = "expenseBot/credentials/gsheet"
client = boto3.client(service_name="secretsmanager")
response = client.get_secret_value(SecretId=secret_name)
return json.loads(response["SecretString"])
Repository.set_current(Repository.new("GoogleSheets"))
def handler(event: dict, context: "LambdaContext"):
"""Entry point for the Lambda function."""
logger.info("Expense Bot (version %s) is running!", bot.__version__)
return asyncio.get_event_loop().run_until_complete(
bot.handle_lambda_event(event)
)