2016-04-14 13 views
0

AWS Lambda işlevlerinin olaylara hızlı bir şekilde yanıt vermesi bekleniyor. Yavaş bir API için hızlı bir istekte bulunan ve yanıt beklemeden sona eren bir işlev oluşturmak istiyorum. Daha sonra, bir cevap geldiğinde, yanıtı ele almak için farklı bir Lambda fonksiyonu istiyorum. Bu kulağa çılgınca geliyor, AWS'nin bir Lambda fonksiyonundan açık bir bağlantıya asmak için ne yapması gerektiğini düşündüğünüzde ve cevabı bir diğerine göndermek için düşünürseniz, ama Lambda'nın ruhunda bu çok fazla gibi görünüyor. Kullanılmak üzere dizayn edilmiştir.Bir Lambda işlevinden bir HTTP isteği yapmak ve başka birindeki yanıtı işlemek mümkün mü?

Fikirler:

  • yapılacak bir istek temsil bir OKS sıraya iletiler gönderin. Bir EC2/EB kümesinde bir çeşit mesaj/HTTP proxy türü hizmetinin kuyruğu dinleyip gerçekten HTTP isteklerini gerçekleştirmesini sağlayın. Gerekirse, ilişkili talebi tanımlamak için etiketlenen başka bir kuyruğa yanıt nesneleri koyar. Bu geleneksel bir hizmet için önemsiz olacak bir şey için çok fazla karmaşıklık hissi veriyor.
  • Sadece bununla geçin. Lambda işlevlerinin 60 saniye boyunca çalışmasına izin verilir ve yaptığım bu API çağrıları genellikle 10 saniyeden uzun sürmüyor. LF'lerin çalışma sürelerinin% 95'ini yanıt beklerken harcayacakları ne kadar maliyetli olduğundan emin değilsiniz, fakat "beklemek" LF'lerin ne için olduğu değildir.
  • hızlı yıldırım olmayan 3. parti API'ler :(Bu benim projelerin çoğu, gerçi.
+0

Neden bir SNS mesajı yayınlamıyor ve bir lambda özeti var? VEYA API-son nokta sekmesi altında bir API uç noktası olarak Call-B ve Call-A'nın sonunda uç noktaya yönelik http isteği ayarlayabilirsiniz - bu muhtemelen daha iyidir. – iSkore

+0

Eğer doğru anlıyorsam, bu Call-A'nın bir HTTP isteği oluşturacağı, yanıtı beklediği ve bunu başka bir göreve göndereceği anlamına mı geliyor? Bu hala Call-A, bir Lambda func, boş bir yerde, harici bir API'da beklemekte olduğu anlamına gelmez, değil mi? –

+0

Oh. Bir cevaba mı ihtiyacınız var? SNS yayınlama ile kesinlikle beklemek zorunda kalmayacaksınız. Ayrıca bir HTTP'yi kapatabilir ve beklemezsiniz. Sadece API'ye bilgi verin ve lambda'yı başarılılaştırın. – iSkore

cevap

1

O kaç arama olacak bu bugünlerde bağlıdır şey bu etkileşime şey için Lambda'ya kullanmayın lambda aylık olarak ve lambda için ne kadar bellek ayırıyorsunuz? Lambda için yeni zaman aşımı 5 dakikadır, bu da (umarız: p) bir API'nin yanıt vermesi için fazlasıyla yeterli olmalıdır. iş akışını karmaşıklaştırmaktan ziyade, lambda fiyatlandırması genel olarak gerçekten ucuzdur.

Örn: 128 MB'lık bir disk ile 1 milyon kez çalıştırılan bir lambda 10 saniye boyunca yaklaşık 20 $ maliyet olacak - bu potansiyel ücretsiz katmanı dikkate almadan.

+0

$ 1M istekleri için 20 $, daha karmaşık bir şey için zamandan daha ucuz bir hale getiriyor ... Ama şu anda, bu yeni kurulumu gerçekten nasıl kullanacağımı öğrenmeye çalışıyorum ve bu bana şahsen benim için hafta sonu değerinde . –

+0

Eğer lambda etrafında basitçe ilerlemek yerine oynamak istiyorsanız, o zaman ilk noktanızda sunduğunuz şeye benzeyebilirsiniz: lambda bir api'yi tetikleyerek, arka planda sıradan bir şekilde işleri çalıştıracaktır. Bu işler daha sonra yanıtı işlemek için başka bir lambda'yı tetikleyen bir SNS konusuna yanıtlar yayınlayacaktır. Ayrıca bir sqs kuyruğu da içerebilir ve örneğin her 5 dakikada bir sırayı sorgulamak için bir lambda cronify olabilir. Bunu önermiyorum ama bunu deneyebilirsiniz :) – Tom

İlgili konular