鲁比(人名)是否有一种方法来构造一个命令并将其发送到执行



下面的代码不时地给我AWS API超时错误。它将aws卷标签逐个传输到快照标签。我认为这个+其他api请求重载api队列。我想知道是否有任何方法来构建ec2Client。create_tags命令与所有标签在其中,并执行它,而不是循环它为每个标签如下?

    inst.tags.each do |tag|
    puts "Tag Key : #{tag.key} , Tag Value : #{tag.value}n"
    if tag.key.downcase != "backup"
            ec2Client.create_tags({
              dry_run: $dry_run,
               resources: [newImage.image_id],
                    tags: [{
                            key: "#{tag.key}",
                            value: "#{tag.value}",
                        },],
      })
    end
    sleep (1.0/2.0)
    end

我还没有测试过这个,但是类似这样的东西应该返回所有标记的数组并将其传递给create_tags方法。

def create_tags(tags)
  tag_list = []
  tags.each do |tag|
   puts "Tag Key : #{tag.key} , Tag Value : #{tag.value}n"
    unless tag.key.casecmp('backup').zero?
      tag_list << { key: tag.key.to_s, value: tag.value.to_s }
    end
  end
end
ec2Client.create_tags(dry_run: $dry_run,
                      resources: [newImage.image_id],
                      tags: create_tags(inst.tags))

最新更新