AWS Lambda函數中python腳本引入pymssql包
本來是看上去一件很簡單的事情,卻花了我半天多的時間.主要里面的坑比較多.所以寫個博客,萬一有人碰到了可以少走點彎路.
-
首先我是在WINDOWS下面開發的python腳本,實現內容也很簡單也就是連接下sqlserver數據庫,然后做一下更新(其實這些工作可以數據庫自己的計划任務來實現). 但是正好要熟悉下AWS的Lambda怎么使用,所以就用pyhon寫了然后放到AWM的Lambda上面.
-
起初我以為這些import的包Lambda已經幫我們都引入了.后來才發現這些要通過pip下載的包也是需要自己打包好了上傳到Lambda的.
-
因為AWS Lambda支持zip格式上傳,所以我們要把需要的包和自己代碼放到一個文件下面然后打包.記住:打包的時候要進入文件夾里面,不要打包文件夾.
-
怎么做:那就把需要的包pip安裝到指定的位置,這樣也不會有多余的包,然后再把需要的代碼拷貝到對應的位置.最后打成zip格式的上傳即可.
-
那么問題來了,我在windows下面按照上面的步驟一步步做完后上傳到了Lambda,但是測試的時候還是提示我找不到pymssql包.這就很郁悶了.
-
找了很多資料也沒說啥,最后發現AWS Lambda是基於Linux的系統,如果用windows下面的包是不是會有問題?
-
所以我就馬上裝了Linux虛擬機,最后從Linux下面把需要的包pip到指定的位置然后包拷貝到了下來重新打包.上傳之后確實不會報錯說找不到pymssql.
-
但是報錯說找不到文件夾:libsybdb-89a09a88.so.5.1.0,這就很神奇了,這個文件夾是什么鬼.然后查找發下,這是pymssql下面隱藏文件夾里面的,所以從linux下面把包下載到windows的時候要注意把隱藏文件也下載下來.
-
最后終於搞好了....