2017-04-13 71 views
1

因此,我一直致力於在AWS中的EC2實例中啓動並運行Bamboo CI服務器。一切都一帆風順;然而,我遇到了一個棘手的問題。 CI部分工作正常,但似乎在我的基於Ubuntu的Bamboo服務器上執行「dotnet lambda publish」開發的工件正在創建一個不兼容的包,而不是在Windows機器上執行「dotnet lambda publish」。當我部署由我的竹服務器生成的包,我只是得到了以下錯誤:在Windows環境和Ubuntu環境下執行「dotnet lambda package」的不同軟件包

{ 
    "errorType": "LambdaException", 
    "errorMessage": "Unable to load assembly '<project-name>, Culture=neutral, PublicKeyToken=null'." 
} 

我看着包的內容,雖然有在文件中沒有明顯的差異;文件大小有一些差異。在Ubuntu上生成的包約爲14.8 MB,而在Windows上生成的包約爲15.4 MB。

任何人都可以解釋這些包過程之間的區別嗎?爲什麼在針對Ubuntu編譯時可能會獲得更小的包?爲什麼當Ubuntu軟件包抱怨找不到文件時,我的Windows軟件包正常工作?

我假定「dotnet lambda package」命令將專門爲Lambda上下文構建工具,而不考慮操作系統環境。使用相同的CLI命令在不同的環境中創建不同的,看起來不兼容的版本看起來很奇怪。


編輯:經進一步調查,我相信它有事情做與通過「DOTNET拉姆達包」 CLI的執行竹CI服務器上使用的壓縮和解進程。當我將它本地放入我的Windows機器並嘗試再次上傳軟件包時,它會失敗。經過多一點調查後,我發現如果我在Windows上解壓該軟件包,然後通過右鍵單擊並將其重新壓縮併發送到 - >壓縮(壓縮)文件夾,然後再次上載,則會開始完全相同的文件內容加工。在「dotnet lambda package」方法中,可能是zip執行的問題?

回答

1

在瞭解我的編輯之後,我決定聯繫亞馬遜的那些幫助創建Amazon.Lambda.Tools包的人。事實證明,如果你的linux機器上沒有安裝「zip」,它會自動假定你正在運行一臺Windows機器,並且它會選擇不正確的可執行文件來壓縮用「dotnet lambda package」創建的最終包, 。當它使用不正確的可執行文件時,應用的chmod命令不會結轉。

簡單的修補程序,執行:易安裝拉鍊

這將確保你的Ubuntu箱採用正確的ZIP可執行文件並將得到的壓縮文件,可以上傳到LAMBDA沒有問題。

https://github.com/aws/aws-lambda-dotnet/issues/100

+0

嚴重的是,這種需求是AWS文檔中的某處〜 – user3682091

+0

右儘管!?很高興我的痛苦時間幫助別人節省了一些時間! –