AWS已引入环境变量以便在Lambda函数中进行访问.我找不到任何文档说明如何使用Java从Lambda函数访问环境变量.谁能帮我?
我正在寻找使用连接到MongoDB数据库的AWS Lambda/API Gateway创建RESTful API.我已经读过与MongoDB的连接相对昂贵,因此最好的做法是在建立连接后保留连接以便重用,而不是为每个新查询建立新连接.
这对于普通应用程序来说非常简单,因为您可以在启动期间建立连接并在应用程序生命周期内重用它.但是,由于Lambda被设计为无国籍,因此保持这种联系似乎不太直接.
因此,我想知道什么是解决此数据库连接问题的最佳方法?我是否每次调用Lambda函数时都强制建立新连接,或者是否有办法池/缓存这些连接以获得更有效的查询?
谢谢.
我有以下函数用于从我的代码中调用Lambda函数.
但是,当我尝试在Lambda函数中使用它时,我收到以下错误:
AWS lambda undefined 0.27s 3 retries] invoke({ FunctionName: 'my-function-name',
InvocationType: 'RequestResponse',
LogType: 'Tail',
Payload: <Buffer > })
Run Code Online (Sandbox Code Playgroud)
如何在Lambda函数中调用Lambda函数?
我的功能:
'use strict';
var AWS = require("aws-sdk");
var lambda = new AWS.Lambda({
apiVersion: '2015-03-31',
endpoint: 'https://lambda.' + process.env.DYNAMODB_REGION + '.amazonaws.com',
logger: console
});
var lambdaHandler = {};
// @var payload - type:string
// @var functionName - type:string
lambdaHandler.invokeFunction = function (payload, functionName, callback) {
var params = {
FunctionName: functionName, /* required */
InvocationType: "RequestResponse",
LogType: "Tail",
Payload: new Buffer(payload, …Run Code Online (Sandbox Code Playgroud) 我目前正在使用NodeJS通过AWS Api Gateway在AWS lambda上构建机器人,我遇到了POST请求和JSON数据的问题.我的api使用'使用Lambda代理集成',甚至当我测试代理发送内容类型的Application/json和一些json在体内时,例如{"foo":"bar"}我无法访问该对象而不先解析它
例如
var json = JSON.parse(event.body);
console.log(json.foo);
Run Code Online (Sandbox Code Playgroud)
现在我知道通过JSON.parse运行它似乎并不是什么大不了的事,但我已经看到了许多其他例子,根本不是这种情况.请看这里https://github.com/pinzler/fb-messenger-bot-aws-lambda/blob/master/index.js
我是否需要向API网关添加任何内容才能正确处理?'post method request'部分中的'request body'步骤具有针对请求主体的内容类型application/json设置.
据我所知,上面例子的自述文件似乎没有使用代理集成,所以我不确定我应该在这里做什么
我正在尝试从节点调用lambda函数.
var aws = require('aws-sdk');
var lambda = new aws.Lambda({
accessKeyId: 'id',
secretAccessKey: 'key',
region: 'us-west-2'
});
lambda.invoke({
FunctionName: 'test1',
Payload: JSON.stringify({
key1: 'Arjun',
key2: 'kom',
key3: 'ath'
})
}, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
密钥用于IAM用户.用户必须AWSLambdaExecute和AWSLambdaBasicExecutionRole附加政策.
我收到了一个权限错误:
AccessDeniedException: User: arn:aws:iam::1221321312:user/cli is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:us-west-2:1221321312:function:test1
我阅读了文档和几个博客,但我无法授权此用户调用lambda函数.如何让这个用户调用lambda?
谢谢.
我正在尝试创建一个简单的lambda函数,我遇到了一个错误.
我的代码基本上是
console.log('Loading function');
exports.handler = function(event, context) {
console.log('value1 =', event.key1);
console.log('value2 =', event.key2);
console.log('value3 =', event.key3);
context.succeed(event.key1); // Echo back the first key value
// context.fail('Something went wrong');
}
Run Code Online (Sandbox Code Playgroud)
在helloworld.js文件中.我将其压缩并在创建lambda函数部分时将其作为zip文件上传,并且我不断收到此错误:
{
"errorMessage": "Cannot find module 'index'",
"errorType": "Error",
"stackTrace": [
"Function.Module._resolveFilename (module.js:338:15)",
"Function.Module._load (module.js:280:25)",
"Module.require (module.js:364:17)",
"require (module.js:380:17)"
]
}
Run Code Online (Sandbox Code Playgroud)
有人有主意吗?
我需要在python脚本中进行休息调用,每天运行一次.我无法使用AWS Lambdas将"requests"包打包到我的python-package中.我收到错误:"无法导入模块'lambda_function':没有名为lambda_function的模块"
我把它分解为hello_world预定义脚本.我可以把它打包成拉链并上传.一切正常.一旦我将"导入请求"放入文件中,我就会收到此错误.
这是我已经做过的事情:
一切的命名如下:
我想在最后运行的文件如下所示:
import requests
import json
def lambda_handler(event, context):
url = 'xxx.elasticbeanstalk.com/users/login'
headers = {"content-type": "application/json", "Authorization": "Basic Zxxxxxxxxx3NjxxZxxxxzcw==" }
response = requests.put(url, headers=headers, verify=False)
return 'hello lambda_handler'
Run Code Online (Sandbox Code Playgroud)
我很高兴能得到任何帮助.我已经在这个问题上使用了多个小时.
我正在尝试在S3中处理上传的文件.由于getObject是异步主函数在处理完成之前结束,因此AWS在3-4秒内杀死lambda.
更糟糕的是,处理方法中还包含异步操作 - 它会进行http调用.
在高级别,我的代码看起来像:
exports.handler = function(event, context) {
// Get the object from the event and show its content type
var bucket = event.Records[0].s3.bucket.name;
var key = event.Records[0].s3.object.key;
var params = {
Bucket: bucket,
Key: key
};
s3.getObject(params, function(err, data) {
if (err) {
...
} else {
processFile(data.Body.toString(), 0);
console.log("ok");
}
});
//need to wait here till processFile is done
};
processFile = function(content, start) {
... build url to call
http.get(url, function(res) {
console.log("Got …Run Code Online (Sandbox Code Playgroud) 使用AWS Lambda中的新环境变量支持,我通过webui为我的函数添加了一个env var.
我如何从Python访问它?我试过了:
import os
MY_ENV_VAR = os.environ['MY_ENV_VAR']
Run Code Online (Sandbox Code Playgroud)
但我的功能停止工作(如果我硬编码相关的值,MY_ENV_VAR它工作正常).
aws-lambda ×10
node.js ×5
python ×2
amazon-iam ×1
aws-sdk ×1
java ×1
javascript ×1
mongodb ×1
python-2.7 ×1
security ×1