Amazon web services 尝试自动化EC2实例的AMI备份

Amazon web services 尝试自动化EC2实例的AMI备份,amazon-web-services,amazon-ec2,aws-lambda,amazon-cloudwatch,Amazon Web Services,Amazon Ec2,Aws Lambda,Amazon Cloudwatch,我已经尝试使用lambda函数自动备份AWS ec2实例,并触发cloudwatch事件。我使用的是免费的分层服务 我计划每5分钟备份一次,但是在第一次备份(即创建AMI)之后,没有进一步创建AMI 我们可以创建同一实例的多个AMI吗? 下面是使用的lambda函数 问候 莫妮卡 var aws=require('aws-sdk'); aws.config.region='us-east-1'; var ec2=新的aws.ec2(); var now=新日期(); var date=now.

我已经尝试使用lambda函数自动备份AWS ec2实例,并触发cloudwatch事件。我使用的是免费的分层服务

我计划每5分钟备份一次,但是在第一次备份(即创建AMI)之后,没有进一步创建AMI

我们可以创建同一实例的多个AMI吗? 下面是使用的lambda函数

问候 莫妮卡

var aws=require('aws-sdk');
aws.config.region='us-east-1';
var ec2=新的aws.ec2();
var now=新日期();
var date=now.toISOString().substring(0,10);
var hours=now.getHours();
var minutes=now.getMinutes();
exports.handler=函数(事件、上下文){
var instanceparams={
过滤器:[{
名称:“标记:备份”,
价值观:[
“是的”
]
}]
};
ec2.描述实例(实例参数、函数(错误、数据){
if(err)console.log(err,err.stack);
否则{
for(数据保留中的var i){
for(data.Reservations[i].实例中的var j){
var instanceid=data.Reservations[i].Instances[j].instanceid;
var nametag=data.Reservations[i].实例[j].标记;
for(data.Reservations[i].实例[j].标记中的var k){
if(data.Reservations[i].Instances[j].Tags[k].Key==“Name”){
var name=data.Reservations[i]。实例[j]。标记[k]。值;
}
}
log(“创建实例的AMI:”,name);
变量imageparams={
InstanceId:InstanceId,
姓名:姓名+日期+小时+分钟,
诺雷博特:没错
};
ec2.createImage(imageparams,函数(错误,数据){
if(err)console.log(err,err.stack);
否则{
var image=data.ImageId;
console.log(图像);
var tagparams={
参考资料:[图片],
标签:[{
键:“DeleteOn”,
值:“是”
}]
};
ec2.createTags(标记参数,函数(错误,数据){
if(err)console.log(err,err.stack);
else console.log(“添加到创建的AMI中的标记”);
});
}
});
}
}
}
});

};AMI与快照相同,只是它也可以用于启动新实例。AMI还可以包含多个快照(多个驱动器)

如果您的系统从一个卷(启动卷)运行,那么拥有一个AMI是一种使用完全相同的数据启动新实例的简单方法。这通常是为了启动带有预装软件的实例(从而使其处于已知状态),但也可以用于备份目的

将快照作为备份当然会在创建快照时提供卷的副本,但要恢复快照,实际上必须将快照恢复到新的EBS卷,将快照转换为AMI,然后从中启动实例。(如果是Windows启动卷,则会有点困难。)

快照和AMI是增量的,只需要复制自上一个快照/AMI创建以来添加或更改的块。因此,它们可以非常快地创建

您的代码为什么不能正常运行,现在还不清楚。我建议在每个API调用之前和回调中添加调试语句,以获得更多信息


有关参考信息,请参见。

AMI与快照相同,只是它也可用于启动新实例。AMI还可以包含多个快照(多个驱动器)

如果您的系统从一个卷(启动卷)运行,那么拥有一个AMI是一种使用完全相同的数据启动新实例的简单方法。这通常是为了启动带有预装软件的实例(从而使其处于已知状态),但也可以用于备份目的

将快照作为备份当然会在创建快照时提供卷的副本,但要恢复快照,实际上必须将快照恢复到新的EBS卷,将快照转换为AMI,然后从中启动实例。(如果是Windows启动卷,则会有点困难。)

快照和AMI是增量的,只需要复制自上一个快照/AMI创建以来添加或更改的块。因此,它们可以非常快地创建

您的代码为什么不能正常运行,现在还不清楚。我建议在每个API调用之前和回调中添加调试语句,以获得更多信息


有关参考信息,请参见。

您可以自动执行AMI备份。我不是Lambda专家,但这是可以做到的——确保IAM角色具有正确的权限,并且您的功能查找EC2备份和保留标记。然后,您可以通过管理控制台进行计划。下面是关于创建此函数的详细信息。如果有兴趣,可以在AWS中自动执行快照/备份

您可以自动执行AMI备份。我不是Lambda专家,但这是可以做到的——确保IAM角色具有正确的权限,并且您的功能查找EC2备份和保留标记。然后,您可以通过管理控制台进行计划。下面是关于创建此函数的详细信息。如果有兴趣,可以在AWS中自动执行快照/备份

它没有被创建