コードはLambda Function Programming Modelに準拠している必要があります。コードは軽微な変更が必要になるようです。 Pythonコードでは、その関数の1つをハンドラとして識別する必要があります。公式マニュアルから
def handler_name(event, context):
...
return some_value
を:これは、次のように行われている
イベントAWSラムダは ハンドラにイベントデータを渡すために、このパラメータを使用しています。このパラメータは通常、Pythonのdict型です。 もlist、str、int、float、またはNoneTypeのいずれの型でもあります。
context-AWSラムダはこのパラメータを使用して、ランタイム情報 をハンドラに提供します。このパラメータはLambdaContext型です。 オプションで、ハンドラは値を返すことができます。何がラムダ 機能を呼び出すときに使用する呼び出しの種類に依存返さ 値はどうなる:
あなたはRequestResponse呼び出しタイプ(同期 実行)を使用している場合は、AWSラムダはPythonの関数呼び出し の結果を返します。クライアントはラムダ関数を呼び出す(HTTP応答で に呼び出し要求をJSONにシリアライズする)。たとえば、AWS Lambda コンソールはRequestResponse呼び出しタイプを使用するため、コンソールを使用して 関数を呼び出すと、コンソールに 戻り値が表示されます。
最初のステップは、展開パッケージに、すべての依存関係と一緒に、コードをパッケージ化するだろうしました。これを行うには、
.zip
ファイルを次のように作成する必要があります。
まず、パッケージのディレクトリを作成します。この場合はMailgunScript
などと似ています。すべてのPythonソースファイルをこのディレクトリのルートレベルに保存します。
あなたはあなたの任意のディレクトリに、要求とurllib2のライブラリのように、すべての必要なライブラリをインストールするには、PIPコマンドを使用することができます。最後に
pip install requests -t /absolutePathTo/MailgunScript
pip install urllib2 -t /absolutePathTo/MailgunScript
、あなたはコンテンツから.zip
アーカイブを作成する必要があります。このディレクトリのものであり、ディレクトリ自体のものではありません。
これで、展開パッケージをラムダ関数にする準備が整いました。 AWS管理コンソールにログインし、Create a Lambda Function
を選択します。青写真を選択するように求められたら、デフォルトのhello-world
青写真を選択して、展開パッケージをアップロードし、必要に応じて残りのフィールドに記入してください。
メインのAWS管理コンソールに戻り、機能を選択してtest
をクリックするだけで、この機能をテストできます。また、手動で次のようなコマンドを使用して、コマンドラインインターフェイスから新しいラムダ関数を呼び出すことができます。
aws lambda invoke \
--region yourRegion \
--function-name yourFunctionName \
--payload '{"url"}' \
--invocation-type RequestResponse \
/tmp/response
これはあなたの機能と出力の検査のため/tmp/response
への応答を実行します。
私のmailgun関数にはURLが入力されています。イベントにどのように渡しますか? – shantanuo
については、私はLinux zip fieで問題に直面しており、コードをウィンドウにコピーしてwinzipを使用する必要があります。そうでなければ、 "no module find"とエラーが発生し続けます。 – BMW