2017-04-10 110 views
1

我熟悉Terraform及其terraform.tfstate文件,該文件記錄了哪些本地資源標識符映射到哪些遠程資源。我注意到我的機器上有一個.serverless目錄,它似乎包含諸如包含Lambda代碼的CloudFormation模板和ZIP文件等文件。備份無服務器框架部署

假設我從我的筆記本電腦創建並部署了一個項目,並且無服務器啓動fooxyz.cloudfront.net,它指向一個Lambda函數arn:aws:lambda:us-east-1:123456789012:function:handleRequest456。如果我天真地嘗試從另一臺機器再次運行無服務器(或者我的工作目錄是git clean),它會啓動一個新的CloudFront端點,因爲它不知道fooxyz.cloudfront.net已經代表了相同的應用程序。我正在考慮備份其內部保存的狀態,以便修改現有資源而不是創建新資源。 (在Terraform相當於將備份文件terraform.tfstate

如果我想備份或恢復無服務器部署狀態,哪些文件會我回來了?在AWS的情況下,我似乎應該備份CloudFormation模板;我不想備份Lambda代碼,因爲它是直接從源代碼生成的。但是,我將來可能會使用的不僅僅是AWS,因此如果可能的話,不想「特殊情況」CloudFormation模板。

如何僅備份無法重新生成的文件?

+0

它看起來像無服務器自動將CloudFormation模板備份到S3。使用_serverless.yml_中的'deploymentBucket'鍵可以[配置]存儲桶名稱(https://serverless.com/framework/docs/providers/aws/guide/serverless.yml/)。但是,我懷疑這隻會備份AWS配置,而我也想保留其他提供者的狀態。 –

+0

我不明白這個問題。 serverless.yml和源代碼足以在另一個Cloud帳戶中部署完全相同的解決方案。您只需避免對密鑰或端點進行硬編碼。 – Zanon

+1

好的一點,我的意圖並不清楚我寫的東西。我正在編輯這個問題。 –

回答

0

我想你在問什麼是如果我或同事在不同的機器上從git檢查無服務器代碼,我們是否仍然能夠部署和更新相同的lambda函數和相同的API網關端點?

答案是肯定的!無服務器在其文件中跟蹤所有這些。除非您運行無服務器銷燬 - 沒有任何操作會創建新的lambda或api端點。

我的團隊和我正在使用這種方法:我們將所有代碼提交到一個git倉庫,我們中的一個人將它檢出並部署一個函數或整個事物,並且正確地更新現有的一組函數。如果你設置了一個環境文件 - 這就是你唯一需要擔心的問題。我建議完全把它放在git之外。