标签: aws-lambda

AWS Lambda调用函数并不总是返回

我使用Node 4.3作为运行时运行AWS Lambda函数进行图像/视频处理.我正在使用节点aws-sdk从我的webapp代码调用我的函数.

问题是当函数需要很长时间执行(例如250秒)时,永远不会收到调用回调,尽管我可以在aws cloudwatch日志中清楚地看到函数正确执行.最重要的是,该函数至少重新运行两次(这可能与调用的maxRetries参数有关:因为它没有得到响应,所以它重试).

令我感到困惑的是,它适用于更快的功能,而我的lambda功能永远不会超时.谁有这样的问题?它可以与新的4.3运行时相关吗?请注意,我省略了context.succeed()或context.fail()因为它不再需要,但我尝试了它并没有改变一件事.

Lambda代码

...
var handler = function (event, context, callback) {
    // video/image processing code
    // 
    // callback function
    ..., function(err, result) {
        if (err) {
            console.log("Error", err, err.stack);
            callback(err);
        } else {
            console.log("Done");
            callback(null, result);
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

Lambda调用

var lambda = new AWS.Lambda;

var myEventObject = {...};
var payload = JSON.stringify('myEventObject');

var params = {
    FunctionName: 'myLambdaFunction'
    InvocationType: 'RequestResponse',
    LogType: 'None',
    Payload: payload
};

lambda.invoke(params, …
Run Code Online (Sandbox Code Playgroud)

javascript node.js aws-sdk aws-lambda

2
推荐指数
1
解决办法
1606
查看次数

AWS Lambda Java,连接到MySQL RDS

我需要开发一个AWS Lambda Java函数来从RDS MySQL数据库中检索一些记录.

我应该使用JDBC吗?我应该使用标准JDBC示例:

try {
    String url = "jdbc:msql://200.210.220.1:1114/Demo";
    Connection conn = DriverManager.getConnection(url,"","");
    Statement stmt = conn.createStatement();
    ResultSet rs;

    rs = stmt.executeQuery("SELECT Lname FROM Customers WHERE Snum = 2001");
    while ( rs.next() ) {
        String lastName = rs.getString("Lname");
        System.out.println(lastName);
    }
    conn.close();
} catch (Exception e) {
    System.err.println("Got an exception! ");
    System.err.println(e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)

java amazon-web-services aws-lambda

2
推荐指数
1
解决办法
1万
查看次数

按计划在AWS EC2中运行Node.js函数

我试图实现按计划的时间间隔在AWS EC2实例上运行Node.js代码的功能。它类似于AWS Lambda的工作方式,但是Lambda不能提供我需要的资源量。我已经有一个运行中的Node.js应用程序,我只需要使其在EC2上运行即可(我认为)。

我对服务器和EC2还是陌生的,所以我对如何实现这一点迷失了。我能够很好地设置和运行EC2实例,但是运行代码是另一回事。我的想法是将Node.js应用程序托管在EC2实例上,但按计划运行Lambda函数,以调用该应用程序以在EC2中启动。我只是不知道从哪里开始学习如何做。

一如既往,感谢您的帮助!

amazon-ec2 amazon-web-services node.js aws-lambda

2
推荐指数
1
解决办法
684
查看次数

关闭Mongoose连接Lambda

我在Amazon Web Services中使用Lambda函数发现了一种奇怪的行为.

我正在使用Node 4.3和Mongoose 4.4.17

我们的想法是测试和使用Lambda的功能.

我制作了一个简单的模型,并将其存储在Ec2实例中.代码工作正常,直到我尝试关闭连接.我知道,更好的做法是说"不要关闭你的连接,让游泳池处理." 嗯,这适用于普通的应用程序,但Lambda是无状态函数,所以如果我不关闭连接,这将保持打开,消耗资源.当你每秒有数千个请求时,这可能非常糟糕.

所以,这是我的代码.

'use strict';
let mongoose = require('mongoose');
//I add this options, because this close my connections 
//faster than the 30 min by default
let options = { server: { socketOptions: { keepAlive: 30000, connectTimeoutMS: 30000 } }};
let db =  mongoose.createConnection('mongodb://myInternalServerEC2:27017/myDB', options);
let Schema = require('mongoose').Schema;
let TempSchema =new Schema({name:{type:String,required:true}});
//This is a copy paste from an another project, 
//but i can remove, but i don't think this has nothing 
//with …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js aws-lambda

2
推荐指数
1
解决办法
2306
查看次数

如何异步调用AWS Lambda函数

有谁知道异步调用Amazon AWS Lambda函数而不是同步调用的当前正确方法?

AWS Java SDK中的InvokeAsync API仍然可用,但标记为已弃用,他们建议您使用Invoke API.我无法弄清楚为什么他们会强迫我们使用同步.我有一个Web前端,可以调度一些批处理作业.我不能指望前端在等待响应时保持连接打开几分钟(实际上在处理完大约4-5分钟后通过电子邮件发送给他们).

理想情况下,我试图弄清楚如何使用他们的API端点而不是Java SDK来实现这一点,因为我运行后端的环境(GAE)不支持AWS使用HttpClient.

asynchronous amazon-web-services aws-lambda

2
推荐指数
3
解决办法
5949
查看次数

Lambda函数可以生成简单的HTTP请求

我想使用AWS lambda来创建一个cronjob样式的HTTP请求.不幸的是我不懂Python.

我发现他们有一个"金丝雀"功能,似乎与我想要的相似.如何简化此操作以简单地发出HTTP请求?我只需要触发一个PHP文件.

from __future__ import print_function

from datetime import datetime
from urllib2 import urlopen

SITE = 'https://www.amazon.com/'  # URL of the site to check
EXPECTED = 'Online Shopping'  # String expected to be on the page


def validate(res):
    '''Return False to trigger the canary

    Currently this simply checks whether the EXPECTED string is present.
    However, you could modify this to perform any number of arbitrary
    checks on the contents of SITE.
    '''
    return EXPECTED in res


def lambda_handler(event, context): …
Run Code Online (Sandbox Code Playgroud)

php python cron aws-lambda

2
推荐指数
3
解决办法
6764
查看次数

出现错误:使用本地节点服务从S3调整图像大小时,Stream会产生空缓冲区

我有一个非常类似的方法:使用nodeJs和AWS调整图像大小.当我在Windows 10上本地运行我的服务时,我仍然会遇到同样的错误.它可以在lambda云上完美运行.我发现如何有限的内存或有限超时可能会引发这次讨论stderr中gm:流处理的GM大的图像文件时产生空缓冲区错误.此外,这个讨论还提到了有限的内存如何使你的lambda服务易受攻击而且不健壮:在amazon lambda中,并行异步抛出调整多个缩略图大小错误:Stream产生空缓冲区.但是,我在本地运行这个节点服务并且有足够的空闲内存,我不应该一直遇到这个"有限内存"陷阱.我在想这个问题来自于gm.这是我的代码:

async.forEachOf(_sizesArray, function(value, key, callback) {
        async.waterfall([

            function download(next) {
                s3.getObject({
                    Bucket: srcBucket,
                    Key: srcKey
                }, next);
            },
            function convert(response, next) {
                console.log(response.Body);
                gm(response.Body,srcKey).antialias(true).density(
                    300).toBuffer('JPG', function(err,
                    buffer) {
                    if (err) {
                        console.log(err + "\n\nfrom convert\n");
                        next(err);
                    } else {
                        next(null, buffer);
                    }
                });
            },
            function process(response, next) {
                gm(response).size(function(err, size) {
                    var scalingFactor = Math.min(
                        _sizesArray[key].width /
                        size.width, _sizesArray[
                            key].width / size.height
                    );
                    var width = …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services node.js aws-lambda

2
推荐指数
1
解决办法
2686
查看次数

API网关-主体映射模板-可选主体参数

我有一个POST API网关方法,我将向其中发送以下application / json主体,以将参数从其传递到该方法所连接的Lambda:

{ 
    "otherClientId": "12345",
    "message": "Text",
    "seconds": 0,
    "hours": 0
}
Run Code Online (Sandbox Code Playgroud)

我正在使用以下映射模板:

#set($inputRoot = $input.path('$'))
{
  "authorizedUser": "$context.authorizer.principalId",
  "otherClientId": "$inputRoot.otherClientId",
  "message": "$inputRoot.message",
  "amount": $inputRoot.amount,
  "duration": $inputRoot.duration
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,我尝试发送没有数量或持续时间的请求时收到“错误字符串”错误。由于某些原因,这些参数似乎不是可选的(但我需要将它们设为!)。我能够错过其他参数,例如消息,但不能错过两个数字参数。

有人遇到过这种情况吗?或者有人可以指出我很可能会失踪的明显现象吗?AWS文档对此主题很少。

post http-post amazon-web-services aws-lambda aws-api-gateway

2
推荐指数
1
解决办法
1565
查看次数

将记录写入Aurora数据库实例时触发AWS Lambda

如何创建在将记录插入Aurora数据库实例的表时触发的AWS Lambda?

我不知道如何将Lambda与它联系起来.

当我在网上搜索时,Lambda主要触发S3或DynamoDB事件等.

amazon-web-services aws-lambda amazon-aurora

2
推荐指数
1
解决办法
2039
查看次数

由于"Firebase应用程序名称"[DEFAULT]"已存在",无法销毁Firebase连接,导致热Lambda失败

一直在尝试我能想到几个小时的每一种方法.

基本上我正在运行AWS Lambda函数,它在客户端和服务器角色中为我的Firebase应用程序做了一些工作.

在Lambda上,我需要能够扭转firebase.initializeApp(config)和firebase.initializeApp(config, 'server').我尝试过,firebase.app('server').delete()但似乎没有用.

在此先感谢您的帮助.

为了澄清,我不能只使用现有的连接,因为配置可能会改变.

firebase aws-lambda firebase-realtime-database

2
推荐指数
1
解决办法
983
查看次数