3

我期望通過向AWS lambda提供一系列來自我的s3存儲桶的圖像來生成動畫GIF,並將其下載到其/ tmp /文件夾中。將ImageMagick作爲AWS lambda上的python子進程運行lambda

我的文檔是ImageMagick的上預裝的拉姆達閱讀,但由於某些原因,我無法通過蟒子叫它:

import subprocess 

# ... some code later ... 

# Now, generate the gif 
input_dir = '/tmp/' 
output_dir = '/tmp/' 

args = (['convert', '-delay', '60', '-dispose', 'Background', '+page'] + 
     files_list + 
     ['-loop', '0', os.path.join(output_dir, 'animation.gif')]) 

try: 
    subprocess.check_call(args) 
    print("gif was generated") 
except subprocess.CalledProcessError as e: 
    print("gif produced errors ...") 
    print(e.output) 

任何想法如何我可以去通過調用子ImageMagick的在lambda?我已經能夠在ec2上獲得這個工作,但在lambda上沒有運氣。我得到的唯一回應是生成一個空白的.gif文件,並在輸出「gif生成的錯誤...」後返回一個空的異常線程。

+0

你見過這個教程嗎? http://docs.aws.amazon.com/lambda/latest/dg/with-s3-example-deployment-pkg.html –

回答

3

僅當您的lambda函數編寫爲Node.js時纔會預裝Imagemagick。但是你用Python編寫的lambda函數。

Lambda support

AWS LAMBDA支持以下運行時版本:

  • 的Node.js:v0.10.36
  • 的Java:Java的8
  • 的Python:Python 2.7版

如果筆者的Node.js您 lambda函數的代碼,下列庫在AWS LAMBDA執行環境提供 ,所以你並不需要包括 他們:

ImageMagick的:缺省設置安裝的。有關版本號 的信息,請參閱imagemagick nodejs包裝器和ImageMagick本機 二進制(搜索「ImageMagick」)。 AWS SDK:對JavaScript 版本AWS SDK 2.2.12

如果你編寫Python中的lambda函數的代碼中, 以下庫是在AWS LAMBDA執行 環境可用,因此您不必將它們包括:

AWS SDK的Python(博託3)1.2.1版

有可用於Java沒有額外 庫。

+0

dang ...你知道我還能做什麼嗎?是否有可能封裝imagemagick?看起來我必須將整個腳本從lambda移到服務器上,畢竟...... – 24x7

+0

以前從未使用過。您可以嘗試PythonMagick,它是ImageMagick的Python接口。 https://wiki.python.org/moin/ImageMagick – helloV

+0

「您可以嘗試PythonMagick,它是ImageMagick的Python接口。」 是的,但是,PythonMagick並未預先安裝在AWS Lambda上,因此您必須將其包含在您的部署包中,這並不容易。有關說明,請參閱http://docs.aws.amazon.com/lambda/latest/dg/with-s3-example-deployment-pkg.html?shortFooter=true#with-s3-example-deployment-pkg-python。 – Grilse