使用AWS Lambda自动创建快照

时间:2016-12-28 08:52:00

标签: amazon-web-services aws-lambda snapshot

我已使用以下链接完成了快照的自动创建:

https://blog.powerupcloud.com/2016/02/15/automate-ebs-snapshots-using-lambda-function/

如代码中所述,过滤是基于VM的 标记 完成的。我想创建除了某些名称之外的所有快照,而不是创建具有备份或备份标记的VM。

我不想为VM添加额外的标签。相反,我想在我的过滤器中写一个if条件。我会提供测试虚拟机的名称,如果虚拟机标签与之匹配,则不会创建快照。如果不匹配,则必须创建快照。我能这样做吗?

例如:我的帐户中有四个虚拟机。

{{1}}

例如,我需要能够写一个if条件,其中包括我的测试VM标签' Test1'。如果标记与此匹配,则不应创建快照。如果不匹配,则必须创建快照。

因此,为此,我应该如何更改代码?

3 个答案:

答案 0 :(得分:1)

您只需使用密钥'备份'为您的所有三台服务器创建一个标记。该脚本仅过滤键名称上的实例。

答案 1 :(得分:1)

需要备份哪些VM的代码是:

reservations = ec.describe_instances(
        Filters=[
            {'Name': 'tag-key', 'Values': ['Backup', 'True']},
        ]
    ).get(
        'Reservations', []
    )

如您所见,它使用boto的describe_instances,过滤器限制了将要处理的实例数。如果您想备份除环境中非产品之外的所有内容,则应考虑使用Backup = NO标记非prod实例。

答案 2 :(得分:0)

备份所有服务器,但标记为标记的服务器

  • 获取所有服务器
  • 的列表
  • 获取服务器的列表,其中包含“请勿备份”标记,并将其从第一个列表中删除
  • 执行备份

这需要两次拨打describe_instances()