Example #1
0
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}