Class: Aws::Glacier::Job

Inherits:
Object
  • Object
show all
Defined in:
gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb

Defined Under Namespace

Classes: Collection

Read-Only Attributes collapse

Actions collapse

Associations collapse

Instance Method Summary collapse

Constructor Details

#initialize(account_id, vault_name, id, options = {}) ⇒ Job #initialize(options = {}) ⇒ Job

Returns a new instance of Job.

Overloads:

  • #initialize(account_id, vault_name, id, options = {}) ⇒ Job

    Parameters:

    • account_id (String)
    • vault_name (String)
    • id (String)

    Options Hash (options):

  • #initialize(options = {}) ⇒ Job

    Options Hash (options):

    • :account_id (required, String)
    • :vault_name (required, String)
    • :id (required, String)
    • :client (Client)


26
27
28
29
30
31
32
33
34
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 26

def initialize(*args)
  options = Hash === args.last ? args.pop.dup : {}
  @account_id = (args, options)
  @vault_name = extract_vault_name(args, options)
  @id = extract_id(args, options)
  @data = options.delete(:data)
  @client = options.delete(:client) || Client.new(options)
  @waiter_block_warned = false
end

Instance Method Details

#account_idString

Returns:

  • (String)


39
40
41
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 39

def 
  @account_id
end

#actionString

The job type. This value is either ArchiveRetrieval, InventoryRetrieval, or Select.

Returns:

  • (String)


63
64
65
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 63

def action
  data[:action]
end

#archive_idString

The archive ID requested for a select job or archive retrieval. Otherwise, this field is null.

Returns:

  • (String)


70
71
72
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 70

def archive_id
  data[:archive_id]
end

#archive_sha256_tree_hashString

The SHA256 tree hash of the entire archive for an archive retrieval. For inventory retrieval or select jobs, this field is null.

Returns:

  • (String)


173
174
175
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 173

def archive_sha256_tree_hash
  data[:archive_sha256_tree_hash]
end

#archive_size_in_bytesInteger

For an archive retrieval job, this value is the size in bytes of the archive being requested for download. For an inventory retrieval or select job, this value is null.

Returns:

  • (Integer)


113
114
115
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 113

def archive_size_in_bytes
  data[:archive_size_in_bytes]
end

#clientClient

Returns:



222
223
224
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 222

def client
  @client
end

#completedBoolean

The job status. When a job is completed, you get the job's output using Get Job Output (GET output).

Returns:

  • (Boolean)


92
93
94
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 92

def completed
  data[:completed]
end

#completion_dateTime

The UTC time that the job request completed. While the job is in progress, the value is null.

Returns:

  • (Time)


134
135
136
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 134

def completion_date
  data[:completion_date]
end

#creation_dateTime

The UTC date when the job was created. This value is a string representation of ISO 8601 date format, for example "2012-03-20T17:03:43.221Z".

Returns:

  • (Time)


85
86
87
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 85

def creation_date
  data[:creation_date]
end

#dataTypes::GlacierJobDescription

Returns the data for this Aws::Glacier::Job. Calls Client#describe_job if #data_loaded? is false.

Returns:



246
247
248
249
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 246

def data
  load unless @data
  @data
end

#data_loaded?Boolean

Returns true if this resource is loaded. Accessing attributes or #data on an unloaded resource will trigger a call to #load.

Returns:

  • (Boolean)

    Returns true if this resource is loaded. Accessing attributes or #data on an unloaded resource will trigger a call to #load.



254
255
256
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 254

def data_loaded?
  !!@data
end

#get_output(options = {}, &block) ⇒ Types::GetJobOutputOutput

Examples:

Request syntax with placeholder values


job.get_output({
  range: "string",
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :range (String)

    The range of bytes to retrieve from the output. For example, if you want to download the first 1,048,576 bytes, specify the range as bytes=0-1048575. By default, this operation downloads the entire output.

    If the job output is large, then you can use a range to retrieve a portion of the output. This allows you to download the entire output in smaller chunks of bytes. For example, suppose you have 1 GB of job output you want to download and you decide to download 128 MB chunks of data at a time, which is a total of eight Get Job Output requests. You use the following process to download the job output:

    1. Download a 128 MB chunk of output by specifying the appropriate byte range. Verify that all 128 MB of data was received.

    2. Along with the data, the response includes a SHA256 tree hash of the payload. You compute the checksum of the payload on the client and compare it with the checksum you received in the response to ensure you received all the expected data.

    3. Repeat steps 1 and 2 for all the eight 128 MB chunks of output data, each time specifying the appropriate byte range.

    4. After downloading all the parts of the job output, you have a list of eight checksum values. Compute the tree hash of these values to find the checksum of the entire output. Using the DescribeJob API, obtain job information of the job that provided you the output. The response includes the checksum of the entire archive stored in Amazon S3 Glacier. You compare this value with the checksum you computed to ensure you have downloaded the entire archive content with no errors.

Returns:



396
397
398
399
400
401
402
403
404
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 396

def get_output(options = {}, &block)
  options = options.merge(
    account_id: @account_id,
    vault_name: @vault_name,
    job_id: @id
  )
  resp = @client.get_job_output(options, &block)
  resp.data
end

#idString Also known as: job_id

Returns:

  • (String)


49
50
51
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 49

def id
  @id
end

#inventory_retrieval_parametersTypes::InventoryRetrievalJobDescription

Parameters used for range inventory retrieval.



197
198
199
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 197

def inventory_retrieval_parameters
  data[:inventory_retrieval_parameters]
end

#inventory_size_in_bytesInteger

For an inventory retrieval job, this value is the size in bytes of the inventory requested for download. For an archive retrieval or select job, this value is null.

Returns:

  • (Integer)


121
122
123
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 121

def inventory_size_in_bytes
  data[:inventory_size_in_bytes]
end

#job_descriptionString

The job description provided when initiating the job.

Returns:

  • (String)


56
57
58
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 56

def job_description
  data[:job_description]
end

#job_output_pathString

Contains the job output location.

Returns:

  • (String)


203
204
205
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 203

def job_output_path
  data[:job_output_path]
end

#loadself Also known as: reload

Loads, or reloads #data for the current Aws::Glacier::Job. Returns self making it possible to chain methods.

job.reload.data

Returns:

  • (self)


232
233
234
235
236
237
238
239
240
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 232

def load
  resp = @client.describe_job(
    account_id: @account_id,
    vault_name: @vault_name,
    job_id: @id
  )
  @data = resp.data
  self
end

#output_locationTypes::OutputLocation

Contains the location where the data from the select job is stored.



215
216
217
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 215

def output_location
  data[:output_location]
end

#retrieval_byte_rangeString

The retrieved byte range for archive retrieval jobs in the form StartByteValue-EndByteValue. If no range was specified in the archive retrieval, then the whole archive is retrieved. In this case, StartByteValue equals 0 and EndByteValue equals the size of the archive minus 1. For inventory retrieval or select jobs, this field is null.

Returns:

  • (String)


184
185
186
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 184

def retrieval_byte_range
  data[:retrieval_byte_range]
end

#select_parametersTypes::SelectParameters

Contains the parameters used for a select.



209
210
211
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 209

def select_parameters
  data[:select_parameters]
end

#sha256_tree_hashString

For an archive retrieval job, this value is the checksum of the archive. Otherwise, this value is null.

The SHA256 tree hash value for the requested range of an archive. If the InitiateJob request for an archive specified a tree-hash aligned range, then this field returns a value.

If the whole archive is retrieved, this value is the same as the ArchiveSHA256TreeHash value.

This field is null for the following:

  • Archive retrieval jobs that specify a range that is not tree-hash aligned

^ ^

  • Archival jobs that specify a range that is equal to the whole archive, when the job status is InProgress

^ ^

  • Inventory jobs

  • Select jobs

Returns:

  • (String)


166
167
168
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 166

def sha256_tree_hash
  data[:sha256_tree_hash]
end

#sns_topicString

An Amazon SNS topic that receives notification.

Returns:

  • (String)


127
128
129
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 127

def sns_topic
  data[:sns_topic]
end

#status_codeString

The status code can be InProgress, Succeeded, or Failed, and indicates the status of the job.

Returns:

  • (String)


99
100
101
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 99

def status_code
  data[:status_code]
end

#status_messageString

A friendly message that describes the job status.

Returns:

  • (String)


105
106
107
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 105

def status_message
  data[:status_message]
end

#tierString

The tier to use for a select or an archive retrieval. Valid values are Expedited, Standard, or Bulk. Standard is the default.

Returns:

  • (String)


191
192
193
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 191

def tier
  data[:tier]
end

#vaultVault

Returns:



409
410
411
412
413
414
415
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 409

def vault
  Vault.new(
    account_id: @account_id,
    name: @vault_name,
    client: @client
  )
end

#vault_arnString

The Amazon Resource Name (ARN) of the vault from which an archive retrieval was requested.

Returns:

  • (String)


77
78
79
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 77

def vault_arn
  data[:vault_arn]
end

#vault_nameString

Returns:

  • (String)


44
45
46
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 44

def vault_name
  @vault_name
end

#wait_until(options = {}) {|resource| ... } ⇒ Resource

Deprecated.

Use [Aws::Glacier::Client] #wait_until instead

Note:

The waiting operation is performed on a copy. The original resource remains unchanged.

Waiter polls an API operation until a resource enters a desired state.

Basic Usage

Waiter will polls until it is successful, it fails by entering a terminal state, or until a maximum number of attempts are made.

# polls in a loop until condition is true
resource.wait_until(options) {|resource| condition}

Example

instance.wait_until(max_attempts:10, delay:5) do |instance|
  instance.state.name == 'running'
end

Configuration

You can configure the maximum number of polling attempts, and the delay (in seconds) between each polling attempt. The waiting condition is set by passing a block to #wait_until:

# poll for ~25 seconds
resource.wait_until(max_attempts:5,delay:5) {|resource|...}

Callbacks

You can be notified before each polling attempt and before each delay. If you throw :success or :failure from these callbacks, it will terminate the waiter.

started_at = Time.now
# poll for 1 hour, instead of a number of attempts
proc = Proc.new do |attempts, response|
  throw :failure if Time.now - started_at > 3600
end

  # disable max attempts
instance.wait_until(before_wait:proc, max_attempts:nil) {...}

Handling Errors

When a waiter is successful, it returns the Resource. When a waiter fails, it raises an error.

begin
  resource.wait_until(...)
rescue Aws::Waiters::Errors::WaiterFailed
  # resource did not enter the desired state in time
end

attempts attempt in seconds invoked before each attempt invoked before each wait

Parameters:

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :max_attempts (Integer) — default: 10

    Maximum number of

  • :delay (Integer) — default: 10

    Delay between each

  • :before_attempt (Proc) — default: nil

    Callback

  • :before_wait (Proc) — default: nil

    Callback

Yield Parameters:

  • resource (Resource)

    to be used in the waiting condition.

Returns:

  • (Resource)

    if the waiter was successful

Raises:

  • (Aws::Waiters::Errors::FailureStateError)

    Raised when the waiter terminates because the waiter has entered a state that it will not transition out of, preventing success.

    yet successful.

  • (Aws::Waiters::Errors::UnexpectedError)

    Raised when an error is encountered while polling for a resource that is not expected.

  • (NotImplementedError)

    Raised when the resource does not



338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
# File 'gems/aws-sdk-glacier/lib/aws-sdk-glacier/job.rb', line 338

def wait_until(options = {}, &block)
  self_copy = self.dup
  attempts = 0
  options[:max_attempts] = 10 unless options.key?(:max_attempts)
  options[:delay] ||= 10
  options[:poller] = Proc.new do
    attempts += 1
    if block.call(self_copy)
      [:success, self_copy]
    else
      self_copy.reload unless attempts == options[:max_attempts]
      :retry
    end
  end
  Aws::Waiters::Waiter.new(options).wait({})
end