Я пытаюсь реализовать два метода: один для загрузки файлов на s3, а другой для загрузки файлов.Не удается загрузить файлы с amazon s3
Функции обновления работают, однако, когда я пытаюсь загрузить один из обновленных файлов, я получаю ошибку 404, которая говорит, что у меня нет разрешения.
Разрешение на ведро установлено для всех разрешений для любого зарегистрированного пользователя, но когда файл создается с помощью кода, файл создается с разрешения только для одного пользователя.
Кто-нибудь знает, как изменить права на созданный файл?
вот обновления и загрузки:
from boto.s3.connection import S3Connection
from boto.s3.key import Key
def upload_file(bucket_name, new_file_name_in_bucket, local_file_path):
print "connecting to s3"
conn = S3Connection(AWS_ACCESS_KEY, AWS_SECRET_KEY)
print 'successfully connected to s3'
print 'getting bucket'
amazon_bucket = conn.get_bucket(bucket_name)
print 'successfully got bucket'
print 'uploading the file'
key = Key(amazon_bucket)
key.key = new_file_name_in_bucket
# this line will crash
# if this line would not exist the code would pass, however the file credentials would be for one user only.
key.set_acl('authenticated-read-write')
key.set_contents_from_filename(local_file_path)
def download_file(bucket_name, file_name):
print "connecting to s3"
conn = S3Connection(AWS_ACCESS_KEY, AWS_SECRET_KEY)
print 'successfully connected to s3'
print 'getting bucket'
amazon_bucket = conn.get_bucket(bucket_name)
print 'successfully got bucket'
print 'downloading file'
# Note the if validate will not be set to False, it will crash here
key = amazon_bucket.get_key(file_name, validate=False)
# This is the line where the error is raised
key.get_contents_to_filename(key.name)
conn.close()
return key
Вы используете те же учетные данные AWS, чтобы загрузить файл и загрузить файл? Кроме того, вы могли бы показать точную ошибку, которую вы получаете? '' 404'' означает '' Not Found'' и не обязательно является проблемой разрешений. – garnaat