本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
您可以使用 Amazon EBS 和 Amazon EventBridge 来自动执行数据备份工作流程。这要求您创建 IAM 策略、处理事件的 AWS Lambda 函数以及匹配传入事件并将其路由到 Lambda 函数的 EventBridge规则。
以下过程使用 createSnapshot
事件自动将已完成的快照复制到其他区域,以用于灾难恢复。
将已完成的快照复制到其他区域
-
创建一个 IAM 策略(如以下示例所示的策略),以提供使用该
CopySnapshot
操作和写入 EventBridge 日志的权限。将策略分配给将处理 EventBridge 事件的用户。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "ec2:CopySnapshot" ], "Resource": "*" } ] }
-
在 Lambda 中定义一个可在控制台中使用的函数。 EventBridge 下面用 Node.js 编写的示例 Lambda 函数是在亚马逊 EBS 发出匹配
createSnapshot
的事件(表示快照已完成) EventBridge 时调用的。该函数被调用后,它会将快照从us-east-2
复制到us-east-1
。// Sample Lambda function to copy an EBS snapshot to a different Region var AWS = require('aws-sdk'); var ec2 = new AWS.EC2(); // define variables var destinationRegion = '
us-east-1
'; var sourceRegion = 'us-east-2
'; console.log ('Loading function'); //main function exports.handler = (event, context, callback) => { // Get the EBS snapshot ID from the event details var snapshotArn = event.detail.snapshot_id.split('/'); const snapshotId = snapshotArn[1]; const description = `Snapshot copy from ${snapshotId} in ${sourceRegion}.`; console.log ("snapshotId:", snapshotId); // Load EC2 class and update the configuration to use destination Region to initiate the snapshot. AWS.config.update({region: destinationRegion}); var ec2 = new AWS.EC2(); // Prepare variables for ec2.modifySnapshotAttribute call const copySnapshotParams = { Description: description, DestinationRegion: destinationRegion, SourceRegion: sourceRegion, SourceSnapshotId: snapshotId }; // Execute the copy snapshot and log any errors ec2.copySnapshot(copySnapshotParams, (err, data) => { if (err) { const errorMessage = `Error copying snapshot ${snapshotId} to Region ${destinationRegion}.`; console.log(errorMessage); console.log(err); callback(errorMessage); } else { const successMessage = `Successfully started copy of snapshot ${snapshotId} to Region ${destinationRegion}.`; console.log(successMessage); console.log(data); callback(null, successMessage); } }); };为确保您的 Lambda 函数可在 EventBridge 控制台中使用,请在 EventBridge 事件发生的区域创建该函数。有关更多信息,请参见AWS Lambda 开发人员指南。
打开亚马逊 EventBridge 控制台,网址为https://console.aws.amazon.com/events/
。 -
在导航窗格中,选择规则,然后选择创建规则。
-
对于 Step 1: Define rule detail(步骤 1:定义规则详细信息),请执行以下操作:
-
为 Name(名称)和 Description(描述)输入值。
-
对于 Event bus(事件总线),保持 default(默认)。
-
确保 Enable the rule on the selected event bus(在选定的事件总线上启用该规则)已开启。
-
对于 Event type(事件类型),选择 Rule with an event pattern(具有事件模式的规则)。
-
选择下一步。
-
-
对于 Step 2: Build event pattern(步骤 2:构建事件模式),执行以下操作:
-
在事件源中,选择AWS 事件或 EventBridge 合作伙伴事件。
-
在事件模式部分中,对于事件源,确保选择了AWS 服务,对于AWS 服务,请选择EC2。
-
对于事件类型,选择 EBS 快照通知,选择特定事件,然后选择 createSnapshot。
-
选择特定结果,然后选择已成功。
-
选择下一步。
-
-
对于 Step 3: Select targets(步骤 3:选择目标),请执行以下操作:
-
对于目标类型,选择AWS 服务。
-
对于 Select target(选择目标),选择 Lambda function(Lambda 函数),对于 Function(函数),选择之前创建的函数。
-
选择 Next(下一步)。
-
-
对于 Step 4: Configure tags(步骤 4:配置标签),如果需要,为规则指定标签,然后选择 Next(下一步)。
-
对于 Step 5: Review and create(步骤 5:查看并创建),查看规则,然后选择 Create rule(创建规则)。
现在,您的规则应该会显示在规则选项卡中。在所示的示例中,当您下次复制快照时,EBS 应该会发送您所配置的事件。