|
import hashlib |
|
from enum import Enum |
|
|
|
import boto3 |
|
from botocore.client import BaseClient |
|
|
|
|
|
|
|
def get_md5(fpath): |
|
with open(fpath, "rb") as f: |
|
file_hash = hashlib.md5() |
|
while chunk := f.read(8192): |
|
file_hash.update(chunk) |
|
return file_hash.hexdigest() |
|
|
|
|
|
def upload_file_to_bucket(s3_client, file_obj, bucket, s3key): |
|
"""Upload a file to an S3 bucket |
|
:param file_obj: File to upload |
|
:param bucket: Bucket to upload to |
|
:param s3key: s3key |
|
:param object_name: S3 object name. If not specified then file_name is used |
|
:return: True if file was uploaded, else False |
|
""" |
|
|
|
return s3_client.upload_fileobj( |
|
file_obj, bucket, s3key, |
|
ExtraArgs={"ACL": "public-read", "ContentType": "Content-Type: audio/mpeg"} |
|
) |
|
|
|
|
|
def s3_auth(aws_access_key_id, aws_secret_access_key, region_name) -> BaseClient: |
|
s3 = boto3.client( |
|
service_name='s3', |
|
aws_access_key_id=aws_access_key_id, |
|
aws_secret_access_key=aws_secret_access_key, |
|
region_name=region_name |
|
) |
|
return s3 |
|
|
|
|
|
def get_list_of_buckets(s3: BaseClient): |
|
response = s3.list_buckets() |
|
buckets = {} |
|
|
|
for buckets in response['Buckets']: |
|
buckets[response['Name']] = response['Name'] |
|
|
|
BucketName = Enum('BucketName', buckets) |
|
return BucketName |
|
|
|
|
|
if __name__ == '__main__': |
|
import os |
|
|
|
AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID'] |
|
AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY'] |
|
S3_BUCKET = "synthia-research" |
|
S3_FOLDER = "huggingface_spaces_demo" |
|
AWS_REGION = "eu-west-3" |
|
|
|
s3 = s3_auth(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION) |
|
print(s3.list_buckets()) |
|
|
|
s3key = f'{S3_FOLDER}/015.WAV' |
|
|
|
|