2016-03-09 2 views
0
aws_session = Session(
aws_access_key_id=settings.AWS_ACCESS_KEY_ID, 
aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY, 
region_name=settings.AWS_DEFAULT_LAMBDA_REGION 
) 

s3_resource = aws_session.resource('s3') 

def copy_audio_file(source_audio_url): 
    url_validator = URLValidator() 
    try: 
     url_validator(source_audio_url) 
    except ValidationError as e: 
     raise CopyAudioFileException("Got error while trying to copy audio file. URL: {0}, Error: {1}". 
           format(source_audio_url, e.message)) 

    filename = get_random_string(32) + ".mp3" 
    destination_audio_url = settings.AWS_BASE_URL_S3 + settings.AWS_BUCKET_CALL_RECORDINGS + '/' + filename 

    try: 
     s3_resource.Object(settings.AWS_BUCKET_CALL_RECORDINGS, filename).copy_from(
     CopySource=source_audio_url) 
    except ClientError as e: 
     logger.exception(e) 
     raise CopyAudioFileException("Got error while trying to copy audio file. URL: {0}, Error: {1}". 
           format(source_audio_url, e.message)) 
return destination_audio_url 

Я использую вышеуказанную функцию для копирования файла с URL-адреса на s3. Я хочу сделать этот файл общедоступным. Какие-либо предложения?Скопировать файл в s3 с URL-адреса и сделать его общедоступным

+0

Непонятно, в чем вопрос. Для просмотра кода вы можете попробовать https://codereview.stackexchange.com/ –

+0

Я успешно скопировал файл. Теперь я хочу, чтобы tom изменил права доступа к файлу. – Simar

ответ

1

ACL='public-read' в copy_from метод.

s3_resource.Object(settings.AWS_BUCKET_CALL_RECORDINGS,filename) \ 
    .copy_from(CopySource=source_audio_url, ACL='public-read')