2016-04-06 9 views
3

Girdideki giriş tuşunu kullanarak s3'ten bir dosya alan ve istemciyle aynı şeyi göndermesi gereken bir lambda fonksiyonum var. Ben context.succeed bu vaadi (tampon) tepkisini, ön ucunda bir JSON dizi olarak görüntülenir gönderirseniz s3AWS Lambda ve AWS API Ağ Geçidi: Bir ikili dosya nasıl gönderilir?

function getObject(key){ 
    var params = { 
    Bucket: "my_bucket", 
    Key: key 
    } 
    return new Promise(function (resolve, reject){ 
    s3.getObject(params, function (err, data){ 
     if(err){ 
     reject(err); 
     } 
     resolve(data.Body) 
    }) 
    }) 
} 

dosyayı almak için aşağıdaki işlevi kullanıyorum. Dosya olarak nasıl gönderebilirim? Dosyalar ZIP veya HTTP Archive (HAR) dosyaları olabilir. S3 tuşları uygun uzantıyı içerir. API Ağ Geçidinde "Entegrasyon Yanıtı" ile ilgili bir şey olduğunu tahmin ediyorum. Ancak

+0

Bu konudaki resmi AWS yanıtını okuyun: https://forums.aws.amazon.com/thread.jspa?threadID=195218 –

+1

API Ağ Geçidi takımı - Mark B haklı, bu resmi durumdur. Gelecekte ikili geçişi desteklemek için çalışıyoruz, ancak ETA yok. –

+0

bunun için herhangi bir geçici çözüm var. Bizim tam uygulama sunucusuzdur. Sadece indirme amacıyla –

cevap

4

Nerede değiştirileceğini anlayamadık İyi haber, artık API Ağ Geçidi için ikili giriş ve çıkış işlemlerini gerçekleştirebilirsiniz (announcement ve documentation).

Temel olarak, hiçbir şey Lambda İşlevinizde değişmez, ancak şimdi contentHandling API Ağ Geçidi Entegrasyonu özelliğini CONVERT_TO_BINARY olarak ayarlayabilirsiniz.

Ne yazık ki, AWS Lambda desteği henüz tamamlanmadığı için resmi AWS örnekleri yalnızca HTTP API Ağ Geçidi arka ucunu gösterir. Örneğin, yeni ikili destek ve $util.base64Decode() haritalama yardımcı programı sayesinde mümkün olsa da, AWS Lambda'dan gziplenmiş içeriği geri getirmeyi başaramadım.

+0

Bazı örnekler verebilir misiniz? Ben AWS ile mutlak başlangıçlıyım ve şu anda Lambda'ya zip dosyası yüklemeye çalışıyorum ve ayrıca yerel olarak sunucusuz ve sunucu-olmayan çerçeveler (geliştirme için) kullanarak bunu yapmak istiyorum – Marecky