javascript - 带有节点问题的 AWS Lambda 函数
问题描述
我一直在使用 Node 8.10 开发 AWS Lambda 函数。我注意到我能够导入 aws-sdk,但在触发一些 EC2 函数时遇到了一些问题。我有一个角色设置了允许我的功能访问的策略。这是我想要一些额外理解的地方。
我试图启动一个这样的实例......
let params = { InstanceIds: ["i-31112345d325"] };
try{
let response = ec2.startInstances(params);
response.send();
}catch(ex){
console.log(ex);
}
像这样...
...
try{
let response = ec2.startInstances(params, function(err, data){
if(err) console.log(err);
else //do something else
});
);
}catch(ex){
console.log(ex);
}
这些方法中的任何一种似乎都不会触发 EC2 机器启动。我做了一些挖掘并取出了 promise() 并且它似乎有效。
try{
await ec2.startInstances(params).promise().then((response)=> {
console.log("Success with ", response);
})
}
catch(ex){
console.log(ex);
}
我没有改变其他任何东西。我在互联网上看到的大多数代码都是前两种方式。有人可以解释为什么这对我不起作用吗?该文档似乎没有解决它,并且文档中的示例似乎对我不起作用。(https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#startInstances-property)
解决方案
对于 Node 8.10,处理函数支持一个callback
方法。您可以使用它callback
来告诉 Lambda 何时从回调函数或承诺中终止
'use strict';
const AWS = require('aws-sdk');
var ec2 = new AWS.EC2();
exports.handler = (event, context, callback) => {
var params = { InstanceIds: ["i-1234567890abcdef0"]}
ec2.startInstances(params, function(err, data) {
if (err) callback(err.stack); // an error occurred
else callback(null, data); // successful response
});
}
推荐阅读
- macos - PyCharm:使用 SIFT 和 opencv-contrib (Mac)
- python - 如何获取numpy中唯一值计数的返回值?
- c# - 使用 streamreader 在文本文件中查找特定用户条目并在标签中显示第 5 个组件
- python - How to execute python file from other directory?
- excel - 将文件保存在超链接后面
- github - 如何在 Red Hat OpenShift 中配置 GitHub Webhook URL?
- docker - 将当前本地 ip 传递给 docker-compose 中的 dnsmasq 命令
- android - Android,Qt,如何启动“hello world”服务
- python - 按级别顺序打印树的内容,使用 eval 函数读取 python 中的输入树
- daml - 访问 DAML 模板中的变量,就像在对象中一样