Test minio S3

This commit is contained in:
IgorVolochay
2025-12-23 13:40:28 +03:00
parent b6fded6526
commit c85e2e550c
2 changed files with 57 additions and 3 deletions
+13 -3
View File
@@ -1,8 +1,9 @@
from fastapi import FastAPI, File, UploadFile
from fastapi.staticfiles import StaticFiles
import dotenv
import os
import random
import string
import asyncio
import uvicorn
@@ -18,11 +19,20 @@ app: FastAPI = FastAPI(title="DropMeFiles analog")
# redoc_url=None if disable_docs else "/redoc",
# openapi_url=None if disable_docs else "/openapi.json")
# app.mount("/", StaticFiles(directory="frontend", html=True), name="frontend")
data = dict()
@app.post("/upload_file")
async def create_upload_file(file: UploadFile = File(...)):
return {"filename": file.filename, "content_type": file.content_type}
random_string = ''.join(random.choices(string.ascii_letters + string.digits, k=6))
data[random_string] = file.filename
return {"filename": file.filename, "content_type": file.content_type, "id": random_string}
@app.get("/{item_id}")
async def read_item(item_id: str):
if item_id in data.keys():
return {"return": data[item_id]}
else:
return {"return": "NO DATA!"}
async def main():
config = uvicorn.Config("main:app", port=5000, host="0.0.0.0", log_level="debug")
+44
View File
@@ -0,0 +1,44 @@
import asyncio
from aiobotocore.session import get_session
AWS_ACCESS_KEY_ID = "some_username"
AWS_SECRET_ACCESS_KEY = "some_password"
ENDPOINT_URL = ""
async def main():
session = get_session()
# Создаем S3 клиент
async with session.create_client(
"s3",
region_name="us-east-1",
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
aws_access_key_id=AWS_ACCESS_KEY_ID,
endpoint_url=ENDPOINT_URL, # важно для MinIO
) as s3:
bucket = "mybucket"
key = "example.txt"
# 1. Создаем bucket
print("Создаю bucket…")
await s3.create_bucket(Bucket=bucket)
# 2. Загружаем файл (put_object)
print("Загружаю файл…")
await s3.put_object(
Bucket=bucket,
Key=key,
Body=b"Hello from aiobotocore + MinIO!"
)
# 3. Скачиваем файл
print("Скачиваю файл…")
obj = await s3.get_object(Bucket=bucket, Key=key)
data = await obj["Body"].read()
print("Содержимое:", data.decode())
asyncio.run(main())