def create_pre_signed_url_for_get(id: str, filename: str, has_thumbnail: Optional[bool], s3_client: BaseClient) -> dict: bucket = get_bucket_name() expire = 3600 method = 'GET' url = s3_client.generate_presigned_url(ClientMethod='get_object', Params={ 'Bucket': bucket, 'Key': f'images/{id}/{filename}' }, ExpiresIn=expire, HttpMethod=method) option = { 'id': id, 'url': url, 'thumbnail_url': None, 'method': method, 'expiresIn': expire } if has_thumbnail: thumbnail_url = s3_client.generate_presigned_url( ClientMethod='get_object', Params={ 'Bucket': bucket, 'Key': f'thumbnails/{id}/{filename}' }, ExpiresIn=expire, HttpMethod=method) option['thumbnail_url'] = thumbnail_url return option
def create_pre_signed_url_for_put(id: str, filename: str, s3_client: BaseClient) -> dict: """ アップロード用のPreSignedUrlを生成する """ bucket = get_bucket_name() expire = 3600 method = 'PUT' url = s3_client.generate_presigned_url(ClientMethod='put_object', Params={ 'Bucket': bucket, 'Key': f'images/{id}/{filename}' }, ExpiresIn=expire, HttpMethod=method) return {'id': id, 'url': url, 'method': 'PUT', 'expiresIn': expire}