代码之家  ›  专栏  ›  技术社区  ›  Fluffy

如何允许实例删除已连接卷的旧快照?

  •  3
  • Fluffy  · 技术社区  · 12 年前

    我正在尝试创建一个cloudformation模板,该模板将创建一个EC2实例,装载2GB卷并进行定期快照,同时删除一周或更长时间的快照。

    虽然我可以获得并集成访问密钥和密钥,但删除快照似乎需要签名证书。我找不到用cloudformation创建新证书的方法,所以我似乎应该手动创建一个新用户和证书,并将其放入模板参数中?在这种情况下,用户能够删除所有快照,包括不来自该实例的快照,这正确吗?

    是否有办法将快照删除限制为仅限于具有匹配描述的快照?或者,处理删除旧快照的正确方法是什么?

    1 回复  |  直到 12 年前
        1
  •  5
  •   Eric Hammond    12 年前

    我的建议是用CloudFormation创建一个IAM角色(而不是IAM用户),并将此角色分配给实例(再次使用CloudFormation)。应允许该角色根据需要删除快照。

    使用实例上的IAM角色删除快照的最简单方法之一是使用boto-Python AWS库。如果您在具有指定IAM角色的实例上运行Boto,它会自动查找并使用正确的凭据。

    这是一个简单的僵尸脚本,我刚刚用来删除快照 snap-51930522 在里面 us-east-1 以下为:

    #!/usr/bin/python
    import boto.ec2
    boto.ec2.connect_to_region('us-east-1').delete_snapshot('snap-51930522')
    

    或者,您可以让外部服务器运行快照清理,而不是在实例本身上运行。除了简化凭据管理和cron作业分发之外,它还允许您在停止或终止实例后进行清理。