【发布时间】:2017-01-01 20:25:17
【问题描述】:
赋予调用函数的所有权限后。我的 Lambda 函数无法调用另一个函数。每次我遇到30 seconds timeout 问题时都会超时。看来 lambda 无法获取另一个 lambda 函数
我的 lambdas 位于同一区域、同一策略、同一安全组 .. 两个 lambdas 中的 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);
};
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);
} else {
context.succeed('Lambda_TEST said '+ data.Payload);
}
})
};
参考来自:This link
【问题讨论】:
-
您的 Lambda 函数是否在 VPC 内运行?
-
是的,两者共享相同的 VPC 、 lambda 执行角色和安全组。 .感谢回复
-
除非您将 NAT 网关添加到 VPC,否则您将无法从 VPC 中存在的 Lambda 函数访问 AWS API 或 VPC 之外存在的任何其他内容。跨度>
-
在这种情况下,这些细节都不重要。您正在尝试调用 AWS API,它恰好是您的 VPC 外部存在的资源。
标签: amazon-web-services aws-lambda aws-sdk amazon-iam