#python #amazon-web-services #amazon-s3 #aws-lambda
Вопрос:
Я использую функцию lambda для обслуживания png-файлов, хранящихся в корзине Amazon S3. Мне нужно, чтобы они были сняты относительно быстро (
Проблема, с которой я сталкиваюсь, заключается в получении одного небольшого (
Мой код довольно прост:
def loadS3Object(key):
bucket = 'bucketname'
s3=boto3.client('s3')
http=urllib3.PoolManager()
try:
myObject = s3.get_object(Bucket=bucket, Key=key)
except ClientError as e:
return False
- Есть ли способ уменьшить задержку?
- Или я должен использовать что-то другое, кроме S3, для такой потребности, чувствительной к задержке?
Большое спасибо!
Комментарии:
1. Увеличьте объем лямбда-памяти и, следовательно, производительность, доступную для функции. Что вы делаете в лямбда-функции? Можете ли вы использовать URL-адреса с предустановленными ссылками, чтобы не загружать изображение в Лямбде и не заставлять клиента напрямую извлекать его из S3?
2. Как вызывается этот код? Это через шлюз API? Что вы подразумеваете под «подачей» файлов?
3. Имеет ли смысл использовать корзину S3 в качестве источника для распространения cloudfront?
4. @John — Шлюз API. «Служит» означает отправку изображения обратно через HTTP. @ Maurice — увеличение памяти сократило 300 мс до 30 мс. Удивительно, но моя гипотеза о том, что это была проблема с задержкой S3< ->, оказалась неверной. Глупой причиной была просто выделенная память/процессор.