我正在尝试从节点调用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函数无法调用另一个函数.每次我有超时30 seconds timeout问题.看起来lambda无法获得另一个lambda函数
我的lambda属于同一地区,同一政策,同一安全组.两个lambda中的VPC也相同.现在唯一不同的是lambda函数
这是角色权利
1)创建 AWSLambdaExecute和AWSLambdaBasicExecutionRole
2)创建一个lambda函数,称为 Lambda_TEST
exports.handler = function(event, context) {
console.log('Lambda TEST Received event:', JSON.stringify(event, null, 2));
context.succeed(event);
};
Run Code Online (Sandbox Code Playgroud)
3)这是调用它的另一个函数.
var AWS = require('aws-sdk');
AWS.config.region = 'us-east-1';
var lambda = new AWS.Lambda();
exports.handler = function(event, context) {
var params = {
FunctionName: 'Lambda_TEST', // the lambda function we are going to invoke
InvocationType: 'RequestResponse',
LogType: 'Tail',
Payload: '{ "name" : "Arpit" }'
};
lambda.invoke(params, function(err, data) {
if (err) {
context.fail(err);
} …Run Code Online (Sandbox Code Playgroud) 我正在使用以下方法从另一个 Lambda 异步调用 Lambda:
payload = {"id":item['id']}
invoke_lambda = lambda_client.invoke(FunctionName="process",
InvocationType="Event",
Payload=json.dumps(payload)) # Use InvocationType="RequestResponse" for synchronous run
Run Code Online (Sandbox Code Playgroud)
这可能相当明显,但我找不到它的文档 - 如何访问定义为的第二个 lambda 中的有效负载:
def process(event, context):
(...)
Run Code Online (Sandbox Code Playgroud) 我想知道如何使API网关调用步骤函数并执行它.
如何在 Lambda 函数中调用 Lambda 函数?
例如,
在函数 1 中,它将由 API 网关请求触发,并将调用第二个 lambda 函数作为事件(InvocationType = Event)。
在函数 2 中,它将向端点发出 http 请求。
另外,我要在 serverless.yml 中编码吗?还是仅在 index/app/handler.js 上编写代码?
我在 stackoverflow -> Nodejs - Invoke an AWS.Lambda function from within another lambda function上尝试了这里的链接,但它不起作用。
var AWS = require('aws-sdk');
AWS.config.region = 'eu-west-1';
var lambda = new AWS.Lambda();
//LAMBDA A
exports.handler = function(event, context) {
var params = {
FunctionName: 'Lambda_B', // the lambda function we are going to invoke
InvocationType: 'RequestResponse', …Run Code Online (Sandbox Code Playgroud) 我有以下Promise.all示例。
承诺包装器是否需要lambda.invoke?
引用了这个线程
function get1(id) {
return new Promise((resolve, reject) => {
const params = {
FunctionName: 'myLambda', // the lambda function we are going to invoke
InvocationType: 'RequestResponse',
Payload: { id },
};
lambda.invoke(params, (err, data) => {
if (err) {
reject(new Error('error'));
} else {
const result = JSON.parse(data.Payload);
resolve(result);
}
});
}).catch(e => Promise.resolve({ error: 'Error has occurred.' }));
}
exports.getDetails = list => Promise.all(list.map(get1))
.then((response) => {
return result;
}).catch((error) => …Run Code Online (Sandbox Code Playgroud) 我有两个 AWS Lambda 函数,函数 A 和函数 B,
这两个 Lambda 函数都位于无 VPC 中,因为它们都不需要任何 VPC 资源。
这两个 Lambda 函数都附加了 LambdaFull 访问角色。
我能够从本地调用并执行 Lambda B,
但无法从 Lambda A 调用或执行 Lambda B。
我需要同步行为 -
line 1 ..
line 2, invoke lambda, get a response,
line 3 to use the response from line 2
Run Code Online (Sandbox Code Playgroud)
以下是本地代码和 Lambda 代码 -
1. 本地 -
let AWS = require('aws-sdk');
let client = new AWS.Lambda({
region: "us-east-1"
});
let payload = {
"param1": "ABC",
"param2": 123
};
payload = JSON.stringify(payload); …Run Code Online (Sandbox Code Playgroud) aws-lambda ×6
node.js ×3
amazon-iam ×2
javascript ×2
aws-sdk ×1
invoke ×1
promise ×1
python ×1