我有一个运行良好的 lambda 函数,但我想导入一个包,所以我用 index.js 创建了一个目录并安装了我的 npm 包。
然后创建此文件夹的 zip 并使用上传
aws lambda 更新函数代码 --function-name smrtfac-test --zip-file fileb://lambda.zip
但现在我收到这个错误
index.handler is undefined or not exported
Run Code Online (Sandbox Code Playgroud)
原因可能是什么?myindex.js和node_modules在同一个目录中。
创建事件源映射时出错:配置模糊定义.如果前缀对于相同的事件类型重叠,则在两个规则中不能具有重叠的后缀.
我在6-7天前从GUI控制台创建了一个事件,它运行正常.第二天事件刚刚失踪,我无法再在Lambda控制台GUI上看到它.但每个S3对象仍然似乎触发lambda函数不是问题.如果我看不到,那就不好了; 所以我删除了Lambda函数,在创建另一个新函数之前等了5-10秒.现在,当我尝试创建这样的事件源时,我收到相同的内容:

当我单击"提交"时,事件源选项卡显示"您没有此功能的任何事件源",Lambda不会被触发; 这意味着整个应用程序流程现在已经崩溃:(
问题几乎与:" https://forums.aws.amazon.com/thread.jspa?messageID=670712 "但不知何故我不能回复该线程,所以我在这里创建了一个新线程.谁有人遇到这个问题?
事实上,我尝试回应现有的AWS论坛帖子:https://forums.aws.amazon.com/thread.jspa? messageID = 670712 , 但我一直收到这个有趣的错误:"你的邮件配额已达到. 请稍后再试.".我甚至没有张贴任何东西,我怎么能用完我的配额?
我想通过选择aws-lambda,azure函数或google云函数来开发无服务器项目,然后我想比较每个项目以便为我的项目选择更好的项目.
我需要为我的项目需求选择最稳定的无服务器技术.这些技术比较有什么材料吗?这些无服务器技术是否有任何受支持的框架?
我坚持使用API网关的问题,我已经在这个AWS论坛上完成了所有其他的SO答案,并且已经通过他们的文档,但仍然没有乐趣.
我正在尝试使用AWS API网关设置API,该网关调用Lambda函数,该函数读取/写入DynamoDB中的表.
DynamoDB的Lambda函数正在运行.我在AWS中创建了一个API,并为它创建了一个GET和OPTIONS方法.我读AWS并没有强制执行只有GET/POST的选项,但是当没有OPTIONS方法时我在我的ajax调用中遇到了预检错误,所以我添加了一个.
目前为了取得进展,我没有使用API密钥或授权.我可以使用POSTMAN成功调用我的GET方法,POSTMAN返回DynamoDB表的内容.
但是当我尝试使用JQuery ajax调用时,我得到了
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)
我可以看到在网络选项卡下使用Chrome开发工具,OPTIONS方法返回状态200,GET返回状态200,但出现上述错误.
我已尝试在OPTIONS和GET方法上启用CORS,在每次更改后重新部署API,尝试了以下(http://enable-cors.org/server_awsapigateway.html)但总是得到相同的错误安慰.
我正在从桌面上的文件执行ajax调用,因此origin是null,因为页面将部署到S3作为JS中的单个Web页面应用程序.
当我在我的GET和OPTIONS上启用CORS时,我可以看到Access-Control-Allow-Headers是'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'和Access-Control-Allow-Origin*是'*'
我的Ajax调用如下所示.我也尝试复制POSTMAN使用的确切标题,它具有Authorization标头集(我现在已在AWS中关闭)但我总是得到相同的错误
var awsHeaders = {};
awsHeaders['X-Amz-Date'] = '20161127T171734';
$('#add, #cloud').click(function() {
$.ajax({
type: 'GET',
headers: awsHeaders,
dataType : "json",
url: '...',
success: function (res) {
console.log('response in GET:');
console.log(res);
},
error: function(data) {
console.log('in error');
console.log(data);
}
});
});
Run Code Online (Sandbox Code Playgroud)
任何人都可以阐明我可能会失踪的东西吗?
非常感谢
更新 请参阅下面的答案,关于我如何根据DigitalKapteain评论解决这个问题 - 在我的Lambda函数的响应中设置'Access-Control-Allow-Origin':'*'标题.我在AWS文档中查找了这个,但无法找到它.此链接描述了Lambda和Lambda Proxy之间的区别,并说明了使用CORS时要执行的操作https://serverless.com/framework/docs/providers/aws/events/apigateway/
我有一个将指标写入 Cloudwatch 的 lambda 函数。虽然它写入指标,但它会在日志组中生成一些日志。
INFO:: username: simran+test@abc.com ClinicID: 7667 nodename: MacBook-Pro-2.local
INFO:: username: simran+test2@abc.com ClinicID: 7667 nodename: MacBook-Pro-2.local
INFO:: username: simran+test@abc.com ClinicID: 7668 nodename: MacBook-Pro-2.local
INFO:: username: simran+test3@abc.com ClinicID: 7667 nodename: MacBook-Pro-2.local
Run Code Online (Sandbox Code Playgroud)
我想x根据任何参数查询过去几小时内的AWS 日志,其中 x 可以是 12 到 24 小时之间的任何时间。
例如:
ClinicID=7667或者
ClinicID=7667和username='simran+test@abc.com'或者
username='simran+test@abc.com'我boto3在 Python 中使用。我可以在这方面有指导吗?
python amazon-web-services amazon-cloudwatch boto3 aws-lambda
我刚刚向AWS Lambda上传了一个zip,其中包含"ref"(https://www.npmjs.com/package/ref),这是验证iOS Game Center身份验证令牌所必需的(如何验证Game Center用户)来自第三方node.js服务器).
不幸的是,调用它会导致"无效的ELF头"错误,
{
"errorMessage": "/var/task/node_modules/ref/build/Release/binding.node: invalid ELF header",
"errorType": "Error",
"stackTrace": [
"Module.load (module.js:356:32)",
"Function.Module._load (module.js:312:12)",
"Module.require (module.js:364:17)",
"require (module.js:380:17)",
"bindings (/var/task/node_modules/ref/node_modules/bindings/bindings.js:76:44)",
"Object.<anonymous> (/var/task/node_modules/ref/lib/ref.js:5:47)",
"Module._compile (module.js:456:26)",
"Object.Module._extensions..js (module.js:474:10)",
"Module.load (module.js:356:32)",
"Function.Module._load (module.js:312:12)"
]
}
Run Code Online (Sandbox Code Playgroud)
这是在运行Yosemite的64位Macbook Pro上开发的,在本地运行代码没有问题.谷歌搜索"无效的ELF标题"几乎没有知道相关的结果,我真的不知道从哪里去.我是否可以在node.js区域更好地询问这个问题,或者这是相关领域,因为它可能是平台的问题?
我正在尝试使用AWS Lambda Python(Python btw中的初学者)启动并运行,但在包含MySQL依赖项方面存在一些问题.我试图按照指示在这里我的Mac上.
对于第3步,我在项目的根目录下执行命令会遇到一些问题
sudo pip install MySQL-python -t /
Run Code Online (Sandbox Code Playgroud)
错误:
例外:回溯(最近一次调用最后一次):文件"/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/basecommand.py",第122行,处于主状态= self .run(options,args)在运行os.path中的文件"/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/commands/install.py",第311行. join(options.target_dir,item)文件"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py",第292行,移动引发错误,"目标路径"%s '已存在'%real_dst错误:目标路径'/MySQL_python-1.2.5-py2.7.egg-info/MySQL_python-1.2.5-py2.7.egg-info'已存在
我最终编写了以下lambda函数(在我的Mac上运行正常),这是:
import MySQLdb
def lambda_handler(event, context):
# Open database connection
db = MySQLdb.connect(...)
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = "SELECT * FROM Users"
try:
# Execute the SQL command
cursor.execute(sql)
# Fetch all the rows in a list of lists.
results = cursor.fetchall()
for row in results:
fname = row[0]
lname = row[1]
age …Run Code Online (Sandbox Code Playgroud) 可以使用在lambda中使用Python3构建的应用程序,而不仅仅是python2.7.可能会看看周围的选项 - https://gun.io/blog/announcing-zappa-serverless-python-aws-lambda/
AWS lambda文档提到了python2.7.
是否有一些示例代码,我可以尝试使用lambda的python3.0
我有一个AWS Lambda函数,配置只有128MB内存,由SNS(它本身由S3触发)触发,并将从S3下载该文件.
在我的功能中,我有以下内容:
public class LambdaHandler {
private final AmazonS3Client s3Client = new AmazonS3Client();
public void gdeltHandler(SNSEvent event, Context context) {
System.out.println("Starting");
System.out.println("Found " + eventFiles.size() + " event files");
}
Run Code Online (Sandbox Code Playgroud)
我已经注释掉并从这篇文章中排除了所有的逻辑,因为我得到了一个OutOfMemoryError,我已经隔离到了创建AmazonS3Client对象.当我拿出那个物体时,我没有得到错误.上面的确切代码导致OutOfMemoryError.
我为这个函数分配了128MB的内存,真的不足以简单地获取凭据并实例化AmazonS3Client对象吗?
我试过给AmazonS3Client构造函数
new EnvironmentVariableCredentialsProvider()
Run Code Online (Sandbox Code Playgroud)
以及
new InstanceProfileCredentialsProvider()
Run Code Online (Sandbox Code Playgroud)
结果相似.
创建AmazonS3Client对象是否只需要更多内存?
下面是堆栈跟踪:
Metaspace:java.lang.OutOfMemoryError java.lang.OutOfMemoryError:com.fasterxml.jackson.databind.deser.BeanDeserializerBuilder.build(BeanDeserializerBuilder.java:347)中的Metaspace,位于com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.buildBeanDeserializer( BeanDeserializerFactory.java:242)at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:143)at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:409)at com .fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:358)位于com.fasterxml.jackson.databind.deser的com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:265) .deserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:245)at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:143)at com.fasterxml.jackson.databind.De serial.Context.findRootValueDeserializer(DeserializationContext.java:439)位于com的com.fasterxml.jackson.databind.ObjectReader._prefetchRootDeserializer(ObjectReader.java:1588),位于com的com.fasterxml.jackson.databind.ObjectReader.(ObjectReader.java:185). quickxml.jackson.databind.ObjectMapper._newReader(ObjectMapper.java:558)at com.fasterxml.jackson.databind.ObjectMapper.reader(ObjectMapper.java:3108)
当我尝试提供InstanceProfileCredentialsProvider或EnvironmentVariableCredentialsProvider时,我得到以下堆栈跟踪:
线程"main"中的异常java.lang.Error:java.lang.OutOfMemoryError:java.lang.Class中java.lang.Class.forName0(Native Method)的lambdainternal.AWSLambda.(AWSLambda.java:62)中的Metaspace. lambdaainternal.LambdaRTEntry.main上的forName(Class.java:348)(LambdaRTEntry.java:94)引起:java.lang.OutOfMemoryError:java.lang.ClassLoader中java.lang.ClassLoader.defineClass1(Native Method)的Metaspace. java.securityClassLoader.defineClass(URLClassLoader.java:467)java.securityClassLoader.defineClass(SecureClassLoader.java:142)中的javaC(ClassLoader.java:763)java.net.URLClassLoader.access $ 100(URLClassLoader. java:73)at java.net.URLClassLoader $ 1.run(URLClassLoader.java:368)at java.net.URLClassLoader $ 1.run(URLClassLoader.java:362)at java.security.AccessController.doPrivileged(Native Method)at java位于lambd的java.lang.ClassLoader.loadClass(ClassLoader.java:357)的java.lang.ClassLoader.loadClass(ClassLoader.java:424)中的.net.URLClassLoader.findClass(URLClassLoader.java:361)ainternal.EventHandlerLoader $ PojoMethodRequestHandler.makeRequestHandler(EventHandlerLoader.java:421)在lambdainternal.EventHandlerLoader.getTwoLengthHandler(EventHandlerLoader.java:777)在lambdainternal.EventHandlerLoader.getHandlerFromOverload(EventHandlerLoader.java:802)在lambdainternal.EventHandlerLoader.loadEventPojoHandler(EventHandlerLoader.java :888)lambdainternal.EventHandlerLoader.loadEventHandler(EventHandlerLoader.java:740)lambdainternal.AWSLambda.findUserMethodsImmediate(AWSLambda.java:126)lambdainternal.AWSLambda.findUserMethods(AWSLambda.java:71)lambdainternal.AWSLambda.startRuntime(AWSLambda) .java:219)在lambdainternal.AWSLambda.(AWSLambda.java:60)... 3更多START RequestId:58837136-483e-11e6-9ed3-39246839616a版本:$ LATEST …
似乎我的问题可能与此类似.
我的API网关中有一个API,我正在通过POST的multipart/form-data文件的端点进行HTTP代理.
如果我直接调用http端点(而不是通过API网关) - 使用邮递员,它按预期工作,但是,使用API网关端点(通过邮递员)失败.
我已经比较了两个似乎相同的请求(通过fiddler和CloudWatch日志):
请求直接API调用(工作):
POST https://domainname/api/v1/documents HTTP/1.1
Host: api.service
Connection: keep-alive
Content-Length: 202
Authorization: AuthToken
Postman-Token: a75869d6-1d64-6b9f-513d-a80ac192c8e1
Cache-Control: no-cache
Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop
docMetaInfo: some extra data needed
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryB85rsPlMffA2fziS
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8
------WebKitFormBoundaryB85rsPlMffA2fziS
Content-Disposition: form-data; name=""; filename="Test.txt"
Content-Type: text/plain
This is a test Text File
------WebKitFormBoundaryB85rsPlMffA2fziS--
Run Code Online (Sandbox Code Playgroud)
来自API网关的请求(不工作):
POST https://GATEWAY_domainname/api/v1/documents HTTP/1.1
Host: api-Gateway.service
Connection: keep-alive
Content-Length: 202
Authorization: …Run Code Online (Sandbox Code Playgroud) aws-lambda ×10
python ×2
ajax ×1
amazon-s3 ×1
aws-cli ×1
azure ×1
boto3 ×1
jquery ×1
mysql ×1
node.js ×1
python-2.7 ×1
python-3.x ×1