#python-3.x #amazon-web-services #amazon-s3 #amazon-ec2 #boto3
Вопрос:
Я пытаюсь загрузить изображение в AWS s3-Bucket , я использую boto3 и работаю правильно , но когда я открываю ссылку , она автоматически загружает изображение, а когда я загружаю изображение вручную, оно открывается в веб-браузере . в чем проблема ?
это мой код.
import boto3
from botocore.exceptions import NoCredentialsError
ACCESS_KEY = 'xxxxxxxxxxxxxxxxx'
SECRET_KEY = 'xxxxxxxxxxxxxxxxx 4Tr4nUp'
def upload_to_aws(local_file, bucket, s3_file):
s3 = boto3.client('s3', aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY)
try:
s3.upload_file(local_file, bucket, s3_file)
print("Upload Successful")
return True
except FileNotFoundError:
print("The file was not found")
return False
except NoCredentialsError:
print("Credentials not available")
return False
uploaded = upload_to_aws('test.jpg', 'testverifcation', 'test.jpg')
Комментарии:
1. Подобное жесткое кодирование учетных данных aws не является хорошей практикой. Выполняется ли этот код на экземпляре ec2?
2. Когда объект загружается с помощью этого кода, каково значение
Content-Type
метаданных? (И я согласен с @Marcin-вам никогда не нужно вводить учетные данные в свой код. Вместо этого используйте команду AWSaws configure
CLI для хранения учетных данных в файле конфигурации.)
Ответ №1:
try:
s3.upload_file(local_file, bucket, s3_file,ExtraArgs={'ACL': 'public-read', 'ContentType': 'image'})
print("Upload Successful")
return True
except FileNotFoundError:
print("The file was not found")
return False
except NoCredentialsError:
print("Credentials not available")
return False