[英]CDK: Deploy microservice endpoints (lambdas) individually
我正在為將使用 APIGateway 的 RestAPI 的微服務編寫帶有 CDK 的 IAAC。
我有一個包含所有 lambda 和 restApi 的堆棧,我可以很好地部署所有內容。
現在的問題是,當兩個人在不同的端點上工作時,我希望他們能夠只部署他們正在處理的端點(lambda)。 目前,當他們部署時,CDK 從他們的 repo 部署所有端點,覆蓋某人可能從他們的分支機構部署的更改。
我很樂意分享一些代碼,但我不確定要分享什么。 我想我可以使用一些幫助來構建堆棧中的代碼來實現我所需要的。
您有一個 api 網關在來自兩個不同存儲庫的兩個不同端點之間共享。
我能想到幾種方法:
選項 1:我們需要 4 個堆棧。
每次更改 lambda function 時,部署自己的堆棧和部署堆棧。
選項 2:我們只需要 1 個堆棧,但單獨部署 lambda。
您有 2 個選項來解決這個問題,而無需做太多工作。
第一個是使用代碼來識別誰在部署堆棧。 如果開發人員 1 正在部署堆棧,則將一些環境變量或參數設置為堆棧。 基於該值,CDK 代碼應僅編譯 1 個端點存儲庫。
第二種選擇是不將存儲庫構建為(CDK)部署的一部分。 使用單獨構建 repo 代碼的持續交付(或其他任何東西),CDK 只部署它們。
根據您項目的背景,任何一種策略都應該適合您。 或者,如果直到現在還沒有涉及,請分享更多上下文。
感謝您的輸入。 我采取了以下對我有用的方法:
const testLambda = new TestLambda(app, "dev-test-lambda", {
...backendProps.dev,
dynamoDbTable: docStoreDev.store,
});
const restApiDev = new RestApiStack(app, "dev-RestApi", {
...backendProps.dev,
hostedZone: hostedZones.test,
testFunction: testLambda.endpointFunction,
});
現在,如果開發人員只想部署他們的 lambda,他們只會部署 lambda 的堆棧,不會部署其他任何東西。 由於 restApiStack 需要 lambda 作為依賴項,因此部署它還將同時部署所有其他 lambdas。
還有一個想法是讓開發人員使用他們的代碼分支名稱部署管道,這樣他們就可以擁有一個完全成熟的環境,而不必擔心覆蓋其他開發人員的 lambda。
一旦他們完成了該功能,他們只需將他們的代碼合並到主分支中並銷毀他們自己的管道。
這是一種常見的方法:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.