我正在关注这个小教程,用于在S3存储桶中上传对象时发送电子邮件。要与Lambda一起使用,我创建了一个带有以下结构的.zip文件:
在mail.js / node_modules
mail.js有以下代码:
var MailComposer = require('mailcomposer').MailComposer,
mailcomposer = new MailComposer();
var ses =
new aws.SES({
accessKeyId: 'xxxxxxxxxxxx',
secretAccessKey: 'xxxxxxxxxxxx'});
s3.getObject(params, function(err, data) {
if (err) {
//error handling
} else {
mailcomposer.setMessageOption({
from: 'chirer@gmail.com’,
to: 'sjuif@gmail.com',
subject: 'Test’,
body: 's3://' + bucket + '/' + key,
html: 's3://' + bucket + '/' + key +
'<br/><img src="cid:' + key + '" />'
});
var attachment = {
contents: data.Body,
contentType: 'image/png',
cid: key
};
mailcomposer.addAttachment(attachment);
mailcomposer.buildMessage(function(err, messageSource) {
if (err) {
// error handling
} else {
ses.sendRawEmail({RawMessage: {Data: messageSource}}, function(err, data) {
if(err) {
// error handling
} else {
context.done(null, data);
}
});
}
});
}
});
当我创建lambda函数时,我会执行以下操作:
作为角色,我选择“S3执行角色”。该向导现在提供一个新屏幕,我单击“查看策略文档”。我编辑文档,文档现在就像:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": [
"*"
]
}
]
}
我点击“允许”并返回上一个屏幕
然后我选择next zh_cn启用lambda函数
当我现在上传一个png文件时,我的日志中出现以下错误。
START RequestId: a4401d96-c0ef-11e5-9ae4-8f38a4f750b6 Version: $LATEST
**Unable to import module 'mail': No module named mail**
END RequestId: a4401d96-c0ef-11e5-9ae4-8f38a4f750b6
REPORT RequestId: a4401d96-c0ef-11e5-9ae4-8f38a4f750b6 Duration: 0.35 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 9 MB
我不知道为什么因为我确定mail.js位于我的.Zip文件的根目录
答案 0 :(得分:1)
在为AWS Lambda(Python)创建部署包时,您可以运行许多 gotchas 。我花了几个小时来调试会话,直到找到一个很少失败的公式。
我创建了一个自动化整个过程的脚本,因此不易出错。我还编写了教程,解释了一切是如何工作的。你可能想看一下:
答案 1 :(得分:0)
该错误意味着Lambda无法找到lib。它不能在proj / lib / python2.7 / site-packages或proj / lib64 / python2.7 / site-packages
它必须在proj /本身内。我遇到了与MySQL-python相同的问题并编写了一个howto:
http://www.iheavy.com/2016/02/14/getting-errors-building-amazon-lambda-python-functions-help-howto/
HTH -Sean