簡體   English   中英

對涉及 SQS 和 DynamoDB 的數據管道進行本地 Lambda 測試的建議

[英]Advice on local Lambda testing for data pipeline that involves SQS and DynamoDB

其他開發人員和我目前正在測試/構建 lambda 函數,用於清理來自 S3 -> SQS -> 數據路由器 Lambda(python)、DynamoDB 規則引擎,然后是 Lambda 中的文本處理器的數據。 我們目前正在使用 AWS 平台,但我正在嘗試在本地測試這部分數據管道。

理想情況下模擬 S3 和 SQS 並轉儲 zip 文件並通過 lambda function 運行它。 目前正在玩弄 SAM-CLI 和 Visual Studio,但還沒有任何問題。 有小費嗎?

您可以通過多種方式對 AWS 應用程序進行(本地)測試:

  1. 對“管道”的不同部分使用單元測試,mocking 其他部分,如 DynamoDB、SQS 等。
  2. 使用類似LocalStack的東西。
  3. 每個開發人員在 AWS 中都有自己的“開發人員環境”。 例如,您可以在每個資源前加上開發人員的名稱 ( john_processing_lambda )。 您部署到 AWS 並從本地計算機運行集成測試。 您可以使用Terraform 之類的工具來實現類似的目的,它允許您“動態地”命名資源,例如添加帶有開發人員名稱的前綴。

就個人而言,我認為通過 Docker 容器或諸如 LocalStack 之類的工具運行“在您的本地計算機上的 AWS”並不是很令人滿意。 結合使用選項 1 和選項 3,我們獲得了最好的結果。兩者都有優點,您可以在 CI/CD 管道中使用相同的測試。

此外,不在實際的雲 (AWS) 中運行總是要承擔“忘記”某些事情的風險。 最值得注意的是 IAM 權限。 所以一切都在您的本地機器上運行良好,但它在 AWS 上不起作用。

我的建議是為每個開發人員部署一個單獨的環境,以便他們可以使用實際資源並直接在 AWS 中運行測試。 這與可靠的單元測試相結合應該會產生最好的結果。

AWS 中的開發人員環境的缺點是開發人員每次想要測試某些東西時都必須將他們的代碼部署到 AWS。 因此,快速部署很重要。 我發現,有了足夠的經驗,您就不需要再頻繁地進行部署,這不再是一個問題。 盡管如此,團隊中的開發人員滿意度很重要,因此請確保盡可能順利。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM