【发布时间】:2017-07-30 10:31:43
【问题描述】:
我有一个简单的 lambda 函数如下
var AWS = require("aws-sdk");
exports.handler = (event, context, callback) => {
var ec2 = new AWS.EC2({region:'us-east-1'});
return ec2.describeRegions({}).promise()
.then(function(regionResponse) {
console.log(regionResponse.Regions)
callback(null, regionResponse.Regions);
})
.catch(
function (err) {
console.log({"error" : err});
callback(err, null);
}
)
};
我可以在 VPC 之外成功运行此功能。
我使用 VPC 向导创建了一个 VPC,并创建了一个具有单个公有子网和 Internet 网关的 VPC。我将函数放在 VPC 中,并赋予它一个具有 Lambda VPC 执行权限的执行角色。 它现在因超时而失败,我已将其设置为 10 秒(正常执行 1 秒)
我的配置中缺少什么会阻止函数访问 VPC 内的 AWS 开发工具包?
【问题讨论】:
-
这个问题每周至少在这里被问一次。请查看其他一些问题的答案,例如:stackoverflow.com/questions/38188532/…stackoverflow.com/questions/35423246/…
-
@MarkB 经常被问到这个事实只是表明它需要亚马逊提供的适当记录用例或示例。我之前已经通过这些其他答案走过了这些路线,所以我可能错过了一些东西或把一些东西弄得一团糟。我会重新开始,看看我能不能取得一些成功
-
AWS 已经在很多地方记录了这一点,比如这里:docs.aws.amazon.com/lambda/latest/dg/vpc.html 和这里的官方 Lambda VPC 公告:aws.amazon.com/blogs/aws/… 你想从他们那里得到什么他们没有提供给你?无论如何,这是您需要向亚马逊提供的反馈,而不是将其发布在他们永远看不到的地方。
-
另外,我在您发布的代码中没有看到任何需要在 VPC 中运行的内容。如果您只是从 VPC 中删除 Lambda 函数,它将能够访问 AWS API。
-
@MarkB 我发布的代码只是我从一个更大的应用程序中获取的一个示例,该应用程序使用无服务器框架和一个以 API 网关为前端的 NodeJS ExpressJS API 构建。
标签: node.js amazon-web-services aws-lambda aws-sdk amazon-vpc