AWS - 创建 EC2 快照并自动重命名它们的脚本

Nic*_*las 4 rename parsing amazon-ec2 amazon-web-services

我目前正在尝试设置一个脚本(使用来自 Ubuntu 服务器的 AWS CLI),它将执行以下操作:

  • 创建每个现有卷的快照。这些卷已经有一个 NAME 标签(如 SERVER1、SERVER1DATA、SERVER2、SERVER2DATA 等)。

  • 重命名那些使用相同标签 NAMES 拍摄的快照(这样,在 AWS 控制台上,我可以按日期过滤它们并能够轻松识别它们)。

自动重命名是我在这里的主要问题。

我一直在玩弄 ec2-describe-volumes 、 ec2-create-snapshot 和 ec2addtag 命令,但我的脚本不是那么好。到目前为止,我已经能够通过创建一个带有 VOLUME NAME 和 NAME TAG 的列表来设置它(这些参数然后由 ec2addtag 获取),但是每次我在环境中添加或删除卷时,我都必须手动更新该列表.

任何帮助将不胜感激。

vjo*_*nes 5

我不确定我完全理解你的问题,但如果你想要的是能够生成你的卷列表以及名称标签,这样的事情可能会起作用:

aws ec2 describe-tags --query "Tags[*].{Name:Value,ResourceId:ResourceId}" --filters "Name=key,Values=Name"  --filters "Name=resource-type,Values=volume" --output json
Run Code Online (Sandbox Code Playgroud)

基本上说的是“给我资源 id 和标签“名称”的值,为每个“卷”类型的资源。在这种情况下,我指定 json 作为输出。你也可以指定“文本”或“表” "看你的需要。

另一种方法:

aws ec2 describe-volumes --query "Volumes[*].{ID:VolumeId}" --output text
Run Code Online (Sandbox Code Playgroud)

这将返回您的卷列表。如果您将其通过管道传输到文本文件,该文件将只包含一个卷标识符列表 - 每行一个。

然后,您可以获得列表中每个卷的名称标签,如下所示:

aws ec2 describe-tags --query "Tags[*].{Name:Value,ResourceId:ResourceId}" --filters "Name=key,Values=Name"  --filters "Name=resource-type,Values=volume" --filters "Name=resource-id,Values=vol-2e293949" --output json
Run Code Online (Sandbox Code Playgroud)

这基本上是在说“给我资源 id 和指定 id vol-2e293949 的标签名称的值。

如您所见,CLI 命令可能难以阅读,过滤和查询也有点困难。(这些示例使用最新版本的 AWS CLI