我在python中按预期运行此函数。 如何将其转换为AWS Lambda函数?
def mymailgun(url):
import urllib2
myfile=urllib2.urlopen(url)
import requests
print requests.post("https://api.mailgun.net/v3/XXX.mailgun.org/messages",
auth=("api", "key-XXX"),
files=[("attachment", myfile)
#("attachment", open("files/test.txt"))
],
data={"from": "Excited User <excited-user@example.com>",
"to": "XXX@gmail.com",
"cc": "YYY@yahoo.com",
"bcc": "ZZZ@hotmail.com",
"subject": "Hello",
"text": "Testing some awesomness with attachments!",
"html": myfile})
答案 0 :(得分:2)
您的代码必须遵循Lambda函数编程模型,您似乎需要稍微修改您的代码以适应。您的Python代码必须将其中一个函数标识为处理程序。这样做如下:
def handler_name(event, context):
...
return some_value
从官方手册:
event-AWS Lambda使用此参数将事件数据传递给 处理程序。此参数通常是Python dict类型。它可以 也可以是list,str,int,float或NoneType类型。
context-AWS Lambda使用此参数提供运行时信息 你的经纪人。此参数属于LambdaContext类型。 可选地,处理程序可以返回值。返回后会发生什么 value取决于调用Lambda时使用的调用类型 功能:
如果使用RequestResponse调用类型(同步 执行),AWS Lambda返回Python函数调用的结果 调用Lambda函数的客户端(在HTTP响应中) 调用请求,序列化为JSON)。例如,AWS Lambda console使用RequestResponse调用类型,因此在测试时 使用控制台调用该功能,控制台将显示 返回值。
如果处理程序未返回任何内容,则AWS Lambda将返回null。
如果使用Event调用类型(异步执行),则会丢弃该值。
通过这些更改,第一步是将代码与任何依赖项一起打包到部署包中。为此,您必须创建一个
.zip
以下列方式提交文件。
首先,为您的包创建一个目录。在这种情况下,您可以将其称为MailgunScript
或类似的东西。将所有Python源文件保存在根目录下的此目录中。
您可以使用pip命令将所有必需的库(如requests和urllib2库)安装到您选择的目录中:
pip install requests -t /absolutePathTo/MailgunScript
pip install urllib2 -t /absolutePathTo/MailgunScript
最后,您必须从此目录的 content 创建.zip
存档,而不是从目录本身创建。{/ p>
您现在已准备好将部署包转换为Lambda函数。登录AWS管理控制台并选择Create a Lambda Function
。如果系统提示您选择蓝图,则可以选择默认的hello-world
蓝图,然后继续上传部署包并根据需要填写其余字段。
然后,您只需返回主AWS管理控制台,选择该功能并单击test
即可测试该功能。或者,您可以使用以下命令从命令行界面手动调用新的Lambda函数:
aws lambda invoke \
--region yourRegion \
--function-name yourFunctionName \
--payload '{"url"}' \
--invocation-type RequestResponse \
/tmp/response
这将执行您的功能并将响应输出到/tmp/response
进行检查。
答案 1 :(得分:2)
您需要以lambda函数方式设置函数。如上所述:
def handler_name(event, context):
return some_value
事件 - AWS Lambda使用此参数将事件数据传递给处理程序。此参数通常是Python dict类型。它也可以是list,str,int,float或NoneType类型。
上下文 - AWS Lambda使用此参数向处理程序提供运行时信息。此参数属于LambdaContext类型。
将代码测试为lambda函数:
用于创建lambda函数的CLI命令:
aws lambda create-function \
--region us-west-2 \
--function-name HelloPython \
--zip-file fileb://deployment-package.zip \
--role arn:aws:iam::account-id:role/lambda_basic_execution \
--handler hello_python.my_handler \
--runtime python2.7 \
--timeout 15 \
--memory-size 512