telegram-s3-uploader/s3/client.py

38 lines
890 B
Python

import boto3
from botocore.client import Config
from config import (
S3_ENDPOINT,
S3_REGION,
S3_ACCESS_KEY,
S3_SECRET_KEY,
)
def get_s3_client():
kwargs = {
"aws_access_key_id": S3_ACCESS_KEY,
"aws_secret_access_key": S3_SECRET_KEY,
"config": Config(signature_version="s3v4"),
}
if S3_ENDPOINT:
kwargs["endpoint_url"] = S3_ENDPOINT
kwargs["region_name"] = S3_REGION or "us-east-1"
else:
if not S3_REGION:
raise RuntimeError("AWS S3 requires S3_REGION")
kwargs["region_name"] = S3_REGION
return boto3.client("s3", **kwargs)
def generate_presigned_url(s3, bucket: str, key: str, expires: int):
return s3.generate_presigned_url(
ClientMethod="get_object",
Params={
"Bucket": bucket,
"Key": key,
},
ExpiresIn=expires,
)