簡體   English   中英

嘗試自動執行EC2實例的AMI備份

[英]Trying to automate AMI backup of EC2 instance

我嘗試使用lambda函數自動執行AWS ec2實例的備份並觸發cloudwatch事件。 我正在使用免費套餐服務。

我已安排每5分鍾進行一次備份,但是,在第一次備份(即AMI創建)之后,將不再創建AMI。

我們可以創建同一實例的多個AMI嗎? 以下是使用的lambda函數。

問候莫妮卡

 var aws = require('aws-sdk'); aws.config.region = 'us-east-1'; var ec2 = new aws.EC2(); var now = new Date(); var date = now.toISOString().substring(0, 10); var hours = now.getHours() ; var minutes = now.getMinutes() ; exports.handler = function(event, context) { var instanceparams = { Filters: [{ Name: 'tag:Backup', Values: [ 'yes' ] }] }; ec2.describeInstances(instanceparams, function(err, data) { if (err) console.log(err, err.stack); else { for (var i in data.Reservations) { for (var j in data.Reservations[i].Instances) { var instanceid = data.Reservations[i].Instances[j].InstanceId; var nametag = data.Reservations[i].Instances[j].Tags; for (var k in data.Reservations[i].Instances[j].Tags) { if (data.Reservations[i].Instances[j].Tags[k].Key == 'Name') { var name = data.Reservations[i].Instances[j].Tags[k].Value; } } console.log("Creating AMIs of the Instance: ", name); var imageparams = { InstanceId: instanceid, Name: name + "_" + date + "_" + hours + "-" + minutes, NoReboot: true }; ec2.createImage(imageparams, function(err, data) { if (err) console.log(err, err.stack); else { var image = data.ImageId; console.log(image); var tagparams = { Resources: [image], Tags: [{ Key: 'DeleteOn', Value: 'yes' }] }; ec2.createTags(tagparams, function(err, data) { if (err) console.log(err, err.stack); else console.log("Tags added to the created AMIs"); }); } }); } } } }); }; 

AMI與快照相同,除了它還可用於啟動新實例。 AMI也可以包含多個快照(多個驅動器)。

如果您的系統是從一個卷(引導卷)運行的,那么使用AMI是啟動具有完全相同數據的新實例的簡便方法。 通常,這樣做是為了啟動帶有預裝軟件的實例(從而使其處於已知狀態),但是也可以用於備份目的。

使用快照作為備份肯定會在創建快照時提供該卷的副本,但是要還原快照,您實際上必須將快照還原到新的EBS卷,將快照轉換為AMI,然后啟動實例從中。 (如果它是Windows啟動卷,則要難一些。)

快照和AMI是增量的,只需要復制自創建上一個快照/ AMI后添加或更改的塊即可。 因此,它們可以非常快速地創建。

目前尚不清楚為什么您的代碼無法正常運行。 我建議在每個API調用之前和回調中添加調試語句,以獲取更多信息。

作為參考,另請參見Python中的EBS Snapshotter

您可以自動執行AMI備份。 我不是Lambda專家,但是可以做到-確保IAM角色具有正確的權限,並且您的功能正在尋找EC2備份和保留標簽。 然后,您可以通過管理控制台安排它。 這是一篇有關創建此功能的詳細內容的文章 如果有興趣,還有其他方法可以在AWS中自動執行快照/備份。

未創建它是因為不可能為多個實例使用相同的AMI名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM