Высокая задержка при получении объекта Amazon S3 из лямбда-функции

#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
 
  1. Есть ли способ уменьшить задержку?
  2. Или я должен использовать что-то другое, кроме S3, для такой потребности, чувствительной к задержке?

Большое спасибо!

Комментарии:

1. Увеличьте объем лямбда-памяти и, следовательно, производительность, доступную для функции. Что вы делаете в лямбда-функции? Можете ли вы использовать URL-адреса с предустановленными ссылками, чтобы не загружать изображение в Лямбде и не заставлять клиента напрямую извлекать его из S3?

2. Как вызывается этот код? Это через шлюз API? Что вы подразумеваете под «подачей» файлов?

3. Имеет ли смысл использовать корзину S3 в качестве источника для распространения cloudfront?

4. @John — Шлюз API. «Служит» означает отправку изображения обратно через HTTP. @ Maurice — увеличение памяти сократило 300 мс до 30 мс. Удивительно, но моя гипотеза о том, что это была проблема с задержкой S3< ->, оказалась неверной. Глупой причиной была просто выделенная память/процессор.