You are viewing documentation for version 2 of the AWS SDK for Ruby. Version 3 documentation can be found here.

Class: Aws::Resources::Batch

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
aws-sdk-resources/lib/aws-sdk-resources/batch.rb

Overview

A batch provides array like access to a list of resources. Batches also provide the ability to invoke certain operations against the entire batch.

Getting a Batch

You should normally not need to construct a batch. Anywhere a list of resources is returned, they are returned as a batch:

# security_groups is a batch
security_groups = ec2.instance('i-12345678').security_groups

When the possible number of resources is unknown or large, the resources will be returned in a collection. Collections can enumerate individual resources or batches. They manage paging over the AWS request/responses to produce batches.

# objects is a collection
objects = s3.bucket('aws-sdk').objects

You can invoke batch operations against collections and they will invoke them on each batch.

# delete all objects in this bucket in batches of 1k
objects = s3.bucket('aws-sdk').objects
objects.delete

Batch Operations

Batches provide operations that operate on the entire batch. These operations are only defined for resources where the AWS API accepts multiple inputs. This means a batch operation for n resources will only make one request.

Resource classes document each of their own batch operations. See S3::Object for an example.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(resource_class, resources, options = {}) ⇒ Batch

Returns a new instance of Batch.

Parameters:

  • resources (Array<Resource>)
  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):



47
48
49
50
51
52
53
# File 'aws-sdk-resources/lib/aws-sdk-resources/batch.rb', line 47

def initialize(resource_class, resources, options = {})
  @resource_class = resource_class
  @resources = resources
  @response = options[:response]
  @size = resources.size
  @options = options
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args, &block) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



109
110
111
112
113
114
115
# File 'aws-sdk-resources/lib/aws-sdk-resources/batch.rb', line 109

def method_missing(method_name, *args, &block)
  if respond_to?(method_name)
    invoke_batch_operation(method_name, args, block) unless empty?
  else
    super
  end
end

Instance Attribute Details

#resource_classClass<Resource> (readonly)

Returns:



56
57
58
# File 'aws-sdk-resources/lib/aws-sdk-resources/batch.rb', line 56

def resource_class
  @resource_class
end

#responseSeahorse::Client::Response? (readonly)

Returns:



59
60
61
# File 'aws-sdk-resources/lib/aws-sdk-resources/batch.rb', line 59

def response
  @response
end

#sizeInteger (readonly) Also known as: count

Returns:

  • (Integer)


62
63
64
# File 'aws-sdk-resources/lib/aws-sdk-resources/batch.rb', line 62

def size
  @size
end

Instance Method Details

#[](index) ⇒ Resource

Parameters:

  • index (Integer)

Returns:



68
69
70
# File 'aws-sdk-resources/lib/aws-sdk-resources/batch.rb', line 68

def [](index)
  @resources[index]
end

#each(&block) ⇒ Object

Yields each resource of the batch, one at a time.



73
74
75
76
77
# File 'aws-sdk-resources/lib/aws-sdk-resources/batch.rb', line 73

def each(&block)
  enum = @resources.to_enum
  enum.each(&block) if block_given?
  enum
end

#empty?Boolean

Returns:

  • (Boolean)


90
91
92
# File 'aws-sdk-resources/lib/aws-sdk-resources/batch.rb', line 90

def empty?
  @resources.empty?
end

#first(count = nil) ⇒ Resource, Batch

Parameters:

  • count (Integer) (defaults to: nil)

Returns:



81
82
83
84
85
86
87
# File 'aws-sdk-resources/lib/aws-sdk-resources/batch.rb', line 81

def first(count = nil)
  if count
    self.class.new(@resource_class, @resources.first(count), @options)
  else
    @resources.first
  end
end