Jhon Alexander Alvarez Casas commited on
Commit
7c01fbf
·
1 Parent(s): fa20fa2

upload files

Browse files
Files changed (5) hide show
  1. .gitignore +2 -0
  2. app/core/s3_config.py +12 -21
  3. app/model/credentils.py +7 -0
  4. main.py +4 -4
  5. requirements.txt +2 -2
.gitignore CHANGED
@@ -53,6 +53,7 @@ ipython_config.py
53
  .python-version
54
 
55
  # Environment
 
56
  .env
57
  .venv
58
  env/
@@ -70,3 +71,4 @@ venv.bak/
70
  *.db.sqlite3-journal
71
  # Pycharm
72
  .idea/
 
 
53
  .python-version
54
 
55
  # Environment
56
+ *.env
57
  .env
58
  .venv
59
  env/
 
71
  *.db.sqlite3-journal
72
  # Pycharm
73
  .idea/
74
+ data/
app/core/s3_config.py CHANGED
@@ -1,28 +1,19 @@
1
  import os
 
2
 
3
  import boto3
4
  from dotenv import load_dotenv
 
5
 
6
- load_dotenv()
7
 
8
- session = boto3.Session(
9
- aws_access_key_id=os.getenv('AWS_ACCESS_KEY_ID'),
10
- aws_secret_access_key=os.getenv('AWS_SECRET_ACCESS_KEY'),
11
- aws_session_token=os.getenv('AWS_SESSION_TOKEN'),
12
- region_name='us-east-1'
13
- )
14
-
15
-
16
- def s3():
17
- # sts = boto3.client('sts')
18
- # response = sts.assume_role(
19
- # RoleArn='arn:aws:iam::404540104025:role/Role-S3-logs-elasticsearch-prod',
20
- # RoleSessionName='back_office_session'
21
- # )
22
- # return boto3.client(
23
- # 's3',
24
- # aws_access_key_id=response['Credentials']['AccessKeyId'],
25
- # aws_secret_access_key=response['Credentials']['SecretAccessKey'],
26
- # aws_session_token=response['Credentials']['SessionToken']
27
- # )
28
  return session.client("s3")
 
1
  import os
2
+ import shutil
3
 
4
  import boto3
5
  from dotenv import load_dotenv
6
+ from fastapi import UploadFile
7
 
 
8
 
9
+ def s3(file: UploadFile):
10
+ with open("s3.env", 'w+b') as f:
11
+ shutil.copyfileobj(file.file, f)
12
+ load_dotenv(dotenv_path="s3.env")
13
+ session = boto3.Session(
14
+ aws_access_key_id=os.getenv('AWS_ACCESS_KEY_ID'),
15
+ aws_secret_access_key=os.getenv('AWS_SECRET_ACCESS_KEY'),
16
+ aws_session_token=os.getenv('AWS_SESSION_TOKEN'),
17
+ region_name='us-east-1'
18
+ )
 
 
 
 
 
 
 
 
 
 
19
  return session.client("s3")
app/model/credentils.py ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ from pydantic import BaseModel
2
+
3
+
4
+ class Credentials(BaseModel):
5
+ aws_access_key_id: str
6
+ aws_secret_access_key: str
7
+ aws_session_token: str
main.py CHANGED
@@ -1,6 +1,6 @@
1
  import os
2
 
3
- from fastapi import FastAPI
4
  from ttp import ttp
5
 
6
  from app.core.s3_config import s3
@@ -9,15 +9,15 @@ app = FastAPI()
9
 
10
 
11
  @app.post("/data")
12
- async def data(bucket: str, project: str, local_date: str):
13
  server_folder = f"{project}/{local_date}"
14
  local_folder = f"data/{server_folder}"
15
- response = s3().list_objects_v2(Bucket=bucket, Prefix=server_folder)
16
  if not os.path.exists(local_folder):
17
  os.makedirs(local_folder)
18
  with open(f"{local_folder}/data.txt", "ab") as f:
19
  for obj in response.get('Contents', []):
20
- s3().download_fileobj(bucket, obj['Key'], f)
21
  return {"message": "success"}
22
 
23
 
 
1
  import os
2
 
3
+ from fastapi import FastAPI, File, UploadFile
4
  from ttp import ttp
5
 
6
  from app.core.s3_config import s3
 
9
 
10
 
11
  @app.post("/data")
12
+ def data(bucket: str, project: str, local_date: str, env_file: UploadFile = File(...)):
13
  server_folder = f"{project}/{local_date}"
14
  local_folder = f"data/{server_folder}"
15
+ response = s3(env_file).list_objects_v2(Bucket=bucket, Prefix=server_folder)
16
  if not os.path.exists(local_folder):
17
  os.makedirs(local_folder)
18
  with open(f"{local_folder}/data.txt", "ab") as f:
19
  for obj in response.get('Contents', []):
20
+ s3(env_file).download_fileobj(bucket, obj['Key'], f)
21
  return {"message": "success"}
22
 
23
 
requirements.txt CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:5873fb4a948ebc8e59acfbafc1ff40f94ec95c40d9114f6862e2abdf009f05b7
3
- size 85
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:73b42010809a2962aa575b4e93ab9df5b44c2cf19c641f2a87e01cbe5aba93de
3
+ size 127