คำขอการรวมหลายรายการของ AWS API Gateway ต่อวิธี

ทรัพยากรของฉัน /api มีเมธอด POST ซึ่งมอบพร็อกซีเนื้อหาให้กับ Kinesis Firehose (และจากนั้นไปที่ ES) ในขณะเดียวกัน ฉันต้องการให้เรียกใช้ฟังก์ชัน Lambda

ฉันพยายามเพิ่มวิธีการเพิ่มเติมใด ๆ เพื่อทริกเกอร์ฟังก์ชัน Lambda แต่ดูเหมือนว่า API Gateway จะตั้งค่าตัวจัดการ POST

ฉันรู้ว่าฉันสามารถทริกเกอร์ Lambda บน POST และส่งจากฟังก์ชัน Lambda ไปยัง Firehose ได้ แต่ฉันต้องการให้ทั้งสองแยกจากกัน


person Glaslos    schedule 24.08.2017    source แหล่งที่มา
comment
แค่สงสัยว่าทำไมคุณถึงไม่ต้องการมี Lambda (ไม่จำเป็นอันที่คุณตั้งใจจะเรียกใช้) เป็นเลเยอร์กลาง ตัวอย่างเช่น คำขอบูรณาการเรียก Lambda X ซึ่งเป็นแบบไม่กี่บรรทัด Lambda X เรียกใช้ Lambda ดั้งเดิมของคุณและกระตุ้นไคเนซิสใช่ไหม นอกจากนี้ คุณต้องรวบรวม/รอการตอบกลับ/สถานะจากทั้งสองสิ่งนี้หรือไม่ หรือคุณแค่สนใจที่จะไล่พวกมันออกไป   -  person Nicholas    schedule 24.08.2017
comment
ฉันไม่มี Lambda ดั้งเดิม API Gateway ส่งโดยตรงไปยัง Kinesis   -  person Glaslos    schedule 25.08.2017
comment
คุณได้พิจารณาฟังก์ชันขั้นตอนแล้วหรือยัง? docs.aws.amazon.com/step- ฟังก์ชั่น/ล่าสุด/dg/   -  person Nicholas    schedule 25.08.2017


คำตอบ (1)


API Gateway จะไม่แยกคำขอออกเป็นการดำเนินการหลายรายการพร้อมกัน วิธีการ ANY หมายถึง "วิธีการใดๆ ที่ไม่มีวิธีการที่กำหนดไว้" เนื่องจากคุณได้กำหนด POST ไว้แล้ว POST ใดๆ จะไม่เห็น ANY

หากต้องการทำสิ่งที่คุณพยายามทำอยู่ เรียกใช้ฟังก์ชัน Lambda และ ทำการเรียก Kinesis API คุณจะต้องเขียนฟังก์ชัน Lambda เริ่มต้นซึ่งทำหน้าที่เป็น Wrapper และดำเนินการทั้งสองอย่าง -- ส่งคำขอไปยัง Kinesis และส่งคำขอไปยัง Lambda (เพื่อเรียกใช้ฟังก์ชัน Lambda อื่นๆ) -- แบบอะซิงโครนัสหากตรรกะทางธุรกิจอนุญาต -- จากนั้นรวบรวมผลลัพธ์ให้เป็นการตอบสนองที่สอดคล้องกันเดียวที่ตรงกับความต้องการของคุณ

ฟังก์ชัน Lambda แรกนี้ไม่จำเป็นต้องเป็นภาษาเดียวกับฟังก์ชันที่สอง ดังนั้น ตัวอย่างเช่น หากฟังก์ชัน Lambda ที่มีอยู่อยู่ใน Java ฟังก์ชัน Wrapper ก็สามารถเขียนใน Node ได้ โดยไม่มีผลกระทบด้านประสิทธิภาพเชิงลบ เนื่องจากฟังก์ชันดังกล่าวดำเนินการอย่างเป็นอิสระบน อีกด้านหนึ่งของ Lambda API

person Michael - sqlbot    schedule 24.08.2017
comment
ขอบคุณที่ยืนยันข้อสังเกตของฉัน เหตุผลหลักที่ฉันต้องการหลีกเลี่ยง lambda ส่วนเกินคือการผสานรวม Kinesis เข้ากับ API Gateway อย่างเรียบร้อย นอกจากนี้ การกระทำทั้งสอง (Kinesis และ Lambda) ที่ฉันตั้งใจจะทำนั้นมีความเป็นอิสระอย่างสมบูรณ์ และไม่มีการตอบสนองใด ๆ จากการกระทำทั้งสอง ฉันจะยอมรับคำตอบของคุณภายในสองสามชั่วโมง - person Glaslos; 25.08.2017