2017-04-21 64 views
0

在S3的input_bucket中創建對象123456時,將調用我的亞馬遜Lambda函數(使用Python),請執行對象轉換並將其保存在output_bucket中。如果亞馬遜Lambda功能成功或失敗,請發送請求

如果請求成功或不成功,我想通知我的主應用程序。例如,POST http://myapp.com/successful/123456如果處理成功,並且http://myapp.com/unsuccessful/123456如果沒有。

我認爲的一個解決方案是創建第二個Amazon Lambda函數,該函數由output_bucket中的put事件觸發,並且它執行成功的 POST請求。這解決了一半的問題,因爲我不能觸發不成功的 POST請求。

也許AWS有更優雅的解決方案,使用Lambda中的參數或處理這些類型通知的服務。任何建議或點在正確的方向將不勝感激。

+0

input_bucket - >這是什麼S3? – kosa

+0

@Nambari是的,水桶是S3 – Victor

+1

我認爲沒有任何優雅的AWS解決方案,除非您重新設計架構,例如您的lambda向SQS發送消息或向STATUS發送一些中間消息服務,然後interemdeiatery調用POST給您應用。如果你仍然想用你的解決方法,你可能需要配置「DeadLetter隊列」來處理失敗情況下的錯誤處理(注意這裏描述的用例不全面,因此需要確保它覆蓋你的情況),就像在這裏描述:http://docs.aws.amazon.com/lambda/latest/dg/retries-on-errors.html – kosa

回答

1

我不認爲有任何優雅的AWS解決方案,除非您重新設計架構,例如您的lambda向SQS發送消息或向STATUS發送一些中間消息服務,然後interemdeiatery調用POST到您的應用程序。

如果你仍然想用你的解決方法,你可能需要配置「DeadLetter隊列」來處理失敗情況下的錯誤處理(請注意,這裏描述的用例並不全面,因此需要確保它覆蓋你的情況)像描述here

2

一些可能的解決方案,這是我看到的優雅

  • 使用SNS Topic:從你的變身拉姆達,引發SNS話題,成功/不成功的消息,其中SNS將調用一個HTTP/HTTPS端點消息負載。這裏的優點是,您的轉換lambda與端點觸發器鬆散耦合,並且只通過消息傳遞進行連接。
  • 使用Lambda Step Functions

    你可以安排到每一個新的對象被上傳到S3存儲時間運行lambda函數。這個函數可以通過調用StartExecution來啓動狀態機的執行。使用步驟功能的優勢在於,您可以將應用程序的組件作爲可視化工作流中的一系列步驟進行協調。