Merge pull request #55 from Hestia-Homes/main

deploying
This commit is contained in:
KhalimCK 2023-07-17 19:55:02 +01:00 committed by GitHub
commit d50935ae73
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 51 additions and 25 deletions

View file

@ -1,18 +1,15 @@
from fastapi import Depends, HTTPException, status, Request
from fastapi.security import APIKeyHeader, OAuth2PasswordBearer
from jose import JWTError, jwe, jwt
from Crypto.Protocol.KDF import HKDF
from Crypto.Hash import SHA256
from cryptography.hazmat.primitives.kdf.hkdf import HKDF
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.backends import default_backend
from typing import Any
import json
# import logging
from app.config import get_settings
from app.utils import logger
# logger = logging.getLogger(__name__)
api_key_header = APIKeyHeader(name=get_settings().API_KEY_NAME, auto_error=False)
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
@ -43,14 +40,14 @@ def get_user(user_id: str):
def get_derived_encryption_key(secret: str) -> Any:
context = str.encode("NextAuth.js Generated Encryption Key")
return HKDF(
master=secret.encode(),
key_len=32,
salt="".encode(),
hashmod=SHA256,
num_keys=1,
context=context,
hkdf = HKDF(
algorithm=hashes.SHA256(),
length=32,
salt=b"",
info=context,
backend=default_backend()
)
return hkdf.derive(secret.encode())
def get_token_payload(token: str, secret: str) -> dict[str, Any]:
@ -97,6 +94,7 @@ def validate_jwt_token(token: str = Depends(oauth2_scheme)):
async def validate_token(token: str = Depends(oauth2_scheme), request: Request = None):
print("VALIDATING - PRINT")
logger.info("Validating token")
logger.info(token)
logger.info("Secret")

View file

@ -1,9 +1,9 @@
from fastapi import APIRouter, Depends
from app.dependencies import validate_token
from app.plan.schemas import PlanTriggerRequest
from app.utils import read_csv_from_s3
from app.utils import read_csv_from_s3, logger
from app.config import get_settings
from app.utils import logger
router = APIRouter(
prefix="/plan",

View file

@ -3,13 +3,11 @@ import csv
from io import StringIO
import string
import secrets
from aws_lambda_powertools import Logger, Metrics, Tracer
from aws_lambda_powertools.metrics import MetricUnit # noqa: F401
import logging
logger: Logger = Logger()
metrics: Metrics = Metrics()
tracer: Tracer = Tracer()
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
def read_csv_from_s3(bucket_name, filepath):

View file

@ -1,5 +1,5 @@
# Pull base image
FROM python:3.10.12-slim-buster
FROM lambci/lambda:build-python3.10
# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1

View file

@ -0,0 +1,22 @@
FROM public.ecr.aws/lambda/python:3.10
# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# Set work directory
WORKDIR /app
# Install system dependencies
#RUN apt-get update && apt-get install -y netcat-openbsd
# Install python dependencies
COPY ./requirements/base.txt ./requirements/base.txt
RUN pip install --upgrade pip
RUN pip install -r requirements/base.txt
# Copy project
COPY . .
# command to run on container start
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]

View file

@ -1,7 +1,7 @@
anyio==3.7.1
cffi==1.15.1
click==8.1.3
cryptography==41.0.1
cryptography==37.0.4
ecdsa==0.18.0
exceptiongroup==1.1.2
fastapi==0.99.1
@ -25,6 +25,4 @@ uvicorn==0.22.0
uvloop==0.17.0
watchfiles==0.19.0
websockets==11.0.3
boto3
pycryptodome
aws-lambda-powertools
boto3

View file

@ -28,6 +28,7 @@ custom:
useDocker: true
dockerSsh: true
fileName: requirements/base.txt
dockerRunCmdExtraArgs: ['--platform', 'linux/amd64']
customDomain:
domainName: api.${self:provider.environment.DOMAIN_NAME}
createRoute53Record: true

9
backend/test_event.json Normal file
View file

@ -0,0 +1,9 @@
{
"httpMethod": "POST",
"path": "/v1/plan/trigger",
"headers": {
"x-api-key": "4QPwbB6hEdUloDVtbBJCUTfGBdBgWwpeavWQ7t5Z",
"Authorization": "Bearer 4QPwbB6hEdUloDVtbBJCUTfGBdBgWwpeavWQ7t5Z"
},
"body": "{\"goal\": \"epc\", \"goal_value\": \"c\", \"portfolio_id\": 1, \"trigger_file_path\": \"test\", \"housing_type\": \"social\"}"
}