簡體   English   中英

使用boto3創建AWS Lambda函數

[英]Creating AWS Lambda function using boto3

我試圖按照教程AWS Lambda Functions Made Easy - codeburst

但是我不明白這段代碼:

export VIRTUALENV='venv_lambda'
export ZIP_FILE='lambda.zip'
export PYTHON_VERSION='python2.7'# Zip dependencies from virtualenv, and main.py
cd $VIRTUALENV/lib/$PYTHON_VERSION/site-packages/
zip -r9 ../../../../$ZIP_FILE *
cd ../../../../
zip -g $ZIP_FILE main.py
  1. 我只是將虛擬環境和main.py導出為zip嗎?

  2. 出口在這做什么?

  3. 我想用zip -r9 ../../../../$ZIP_FILE *替換zip -r9 ../../../../$ZIP_FILE *的中間部分是什么?

這是一個非常古老的教程。 我強烈建議放棄它並嘗試一些框架(例如無服務器AWS SAM )。 這里有一個很好的AWS SAM 官方教程

請注意,boto3是一個Python包,它是AWS API的Python驅動程序(中間件)。 從理論上講,您可以使用它創建一個函數,但是您仍然必須單獨進行lambda代碼的打包和部署。 框架可以為您做很多額外的配置工作。 絕對不是初學者。

至於你的問題:上面例子中的export命令是一個操作系統(而不是Python)命令,用於在OS會話中創建/更新一些ENVIRONMENT-al變量。 它們可以在您在該會話期間調用的任何語言/應用程序中使用。 在此代碼段中,您首先export ZIP_FILE ,然后將其用作$ZIP_FILE這是bash語法。 VIRTUALENVPYTHON_VERSION相同 - 這些只是字符串變量。

PS Python 2.7很快就會退役: https: //pythonclock.org/放棄那個。 AWS Lambda本身支持最新的兩個版本(截至今天):3.6和3.7。

1)您正在創建一個zip文件,其中包含您的main.py以及虛擬環境的site_packages目錄中的所有內容(您的pip安裝依賴項)。

2) export是一個bash builtin命令,用於在當前環境任何未來子進程的環境中設置變量。 在這種情況下,它似乎不會在任何子進程中使用,可能不需要。

3)沒什么。 那個../../../../$ZIP_FILE是返回結果zip文件在原始目錄../../../../$ZIP_FILE的相對路徑(在cd命令之前)。

關鍵是在zip存檔的頂層創建一個包含代碼和依賴項的zip,而不是在site_packages嵌入幾個級別的依賴site_packages因為它們是本地的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM