class Fog::AWS::Glacier::Real
Public Class Methods
Initialize connection to Glacier
Notes¶ ↑
options parameter must include values for :aws_access_key_id and :aws_secret_access_key in order to create a connection
Examples¶ ↑
ses = SES.new( :aws_access_key_id => your_aws_access_key_id, :aws_secret_access_key => your_aws_secret_access_key )
Parameters¶ ↑
-
options<~Hash> - config arguments for connection. Defaults to {}.
-
region<~String> - optional region to use. For instance, 'us-east-1' and etc.
-
Returns¶ ↑
# File lib/fog/aws/glacier.rb, line 179 def initialize(options={}) @use_iam_profile = options[:use_iam_profile] @region = options[:region] || 'us-east-1' setup_credentials(options) @instrumentor = options[:instrumentor] @instrumentor_name = options[:instrumentor_name] || 'fog.aws.glacier' @connection_options = options[:connection_options] || {} @host = options[:host] || "glacier.#{@region}.amazonaws.com" @version = '2012-06-01' @path = options[:path] || '/' @persistent = options[:persistent] || false @port = options[:port] || 443 @scheme = options[:scheme] || 'https' @connection = Fog::XML::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", @persistent, @connection_options) end
Public Instance Methods
Abort an upload
Parameters¶ ↑
-
name<~String> Name of the vault to upload to
-
upload_id<~String> The id of the upload to complete
-
options<~Hash>
-
account_id<~String> - The
AWS
account id. Defaults to the account owning the credentials making the request
-
Returns¶ ↑
-
response<~Excon::Response>:
See Also¶ ↑
docs.amazonwebservices.com/amazonglacier/latest/dev/api-multipart-abort-upload.html
# File lib/fog/aws/requests/glacier/abort_multipart_upload.rb, line 18 def abort_multipart_upload(vault_name, upload_id, options={}) account_id = options['account_id'] || '-' path = "/#{account_id}/vaults/#{Fog::AWS.escape(vault_name)}/multipart-uploads/#{upload_id}" request( :expects => 204, :idempotent => true, :headers => {}, :method => :delete, :path => path ) end
Complete an upload
Parameters¶ ↑
-
name<~String> Name of the vault to upload to
-
upload_id<~String> The id of the upload to complete
-
total_size<~Integer> The total archive size
-
tree_hash<~String> the treehash for the archive
-
options<~Hash>
-
account_id<~String> - The
AWS
account id. Defaults to the account owning the credentials making the request
-
Returns¶ ↑
-
response<~Excon::Response>:
See Also¶ ↑
docs.amazonwebservices.com/amazonglacier/latest/dev/api-multipart-complete-upload.html
# File lib/fog/aws/requests/glacier/complete_multipart_upload.rb, line 20 def complete_multipart_upload(vault_name, upload_id, total_size, tree_hash, options={}) account_id = options['account_id'] || '-' path = "/#{account_id}/vaults/#{Fog::AWS.escape(vault_name)}/multipart-uploads/#{upload_id}" headers = { 'x-amz-archive-size' => total_size.to_s, 'x-amz-sha256-tree-hash' => tree_hash } request( :expects => 201, :idempotent => true, :headers => headers, :method => :post, :path => path ) end
Upload an archive
Parameters¶ ↑
-
name<~String> Name of the vault to upload to
-
body<~String> The data to upload
-
options<~Hash>
-
description<~String> - The archive description
-
account_id<~String> - The
AWS
account id. Defaults to the account owning the credentials making the request
-
Returns¶ ↑
-
response<~Excon::Response>:
See Also¶ ↑
docs.amazonwebservices.com/amazonglacier/latest/dev/api-archive-post.html
# File lib/fog/aws/requests/glacier/create_archive.rb, line 19 def create_archive(vault_name, body, options={}) account_id = options['account_id'] || '-' path = "/#{account_id}/vaults/#{Fog::AWS.escape(vault_name)}/archives" headers = { 'Content-Length' => body.bytesize.to_s, 'x-amz-content-sha256' => OpenSSL::Digest::SHA256.hexdigest(body), 'x-amz-sha256-tree-hash' => Fog::AWS::Glacier::TreeHash.digest(body) } headers['x-amz-archive-description'] = Fog::AWS.escape(options['description']) if options['description'] request( :expects => 201, :headers => headers, :method => :post, :path => path, :body => body ) end
This operation creates a new vault with the specified name. .
Parameters¶ ↑
-
name<~String> 1-255 characters. must be unique within a region for an
AWS
account -
options<~Hash>
-
account_id<~String> - The
AWS
account id. Defaults to the account owning the credentials making the request
-
Returns¶ ↑
-
response<~Excon::Response>:
-
body<~Hash>:
-
See Also¶ ↑
docs.amazonwebservices.com/amazonglacier/latest/dev/api-vault-put.html
# File lib/fog/aws/requests/glacier/create_vault.rb, line 18 def create_vault(name,options={}) account_id = options['account_id'] || '-' path = "/#{account_id}/vaults/#{Fog::AWS.escape(name)}" request(options.merge({ :expects => 201, :idempotent => true, :headers => {}, :method => :put, :path => path, })) end
Delete an archive
Parameters¶ ↑
-
name<~String> Name of the vault to delete
-
options<~Hash>
-
account_id<~String> - The
AWS
account id. Defaults to the account owning the credentials making the request
-
Returns¶ ↑
-
response<~Excon::Response>:
-
body<~Hash>:
-
'RequestId'<~String> - Id of the request
-
-
See Also¶ ↑
docs.amazonwebservices.com/amazonglacier/latest/dev/api-vault-delete.html
# File lib/fog/aws/requests/glacier/delete_archive.rb, line 19 def delete_archive(name,archive_id,options={}) account_id = options['account_id'] || '-' path = "/#{account_id}/vaults/#{Fog::AWS.escape(name)}/archives/#{archive_id}" request( :expects => 204, :idempotent => true, :headers => {}, :method => :delete, :path => path ) end
Delete a vault. Amazon Glacier
will delete a vault only if there are no archives in the vault as per the last inventory and there have been no writes to the vault since the last inventory
Parameters¶ ↑
-
name<~String> Name of the vault to delete
-
options<~Hash>
-
account_id<~String> - The
AWS
account id. Defaults to the account owning the credentials making the request
-
Returns¶ ↑
-
response<~Excon::Response>:
See Also¶ ↑
docs.amazonwebservices.com/amazonglacier/latest/dev/api-vault-delete.html
# File lib/fog/aws/requests/glacier/delete_vault.rb, line 18 def delete_vault(name,options={}) account_id = options['account_id'] || '-' path = "/#{account_id}/vaults/#{Fog::AWS.escape(name)}" request( :expects => 204, :idempotent => true, :headers => {}, :method => :delete, :path => path ) end
Delete vault's notification configuration
Parameters¶ ↑
-
name<~String> Name of the vault
-
options<~Hash>
-
account_id<~String> - The
AWS
account id. Defaults to the account owning the credentials making the request
-
Returns¶ ↑
-
response<~Excon::Response>:
See Also¶ ↑
docs.amazonwebservices.com/amazonglacier/latest/dev/api-vault-notifications-delete.html
# File lib/fog/aws/requests/glacier/delete_vault_notification_configuration.rb, line 17 def delete_vault_notification_configuration(name,options={}) account_id = options['account_id'] || '-' path = "/#{account_id}/vaults/#{Fog::AWS.escape(name)}/notification-configuration" request( :expects => 204, :idempotent => true, :headers => {}, :method => :delete, :path => path ) end
Complete an upload
Parameters¶ ↑
-
name<~String> Name of the vault
-
job_id<~String> The id of the job
-
options<~Hash>
-
account_id<~String> - The
AWS
account id. Defaults to the account owning the credentials making the request
-
Returns¶ ↑
-
response<~Excon::Response>:
See Also¶ ↑
docs.amazonwebservices.com/amazonglacier/latest/dev/api-describe-job-get.html
# File lib/fog/aws/requests/glacier/describe_job.rb, line 18 def describe_job(vault_name, job_id, options={}) account_id = options['account_id'] || '-' path = "/#{account_id}/vaults/#{Fog::AWS.escape(vault_name)}/jobs/#{job_id}" request( :expects => 200, :idempotent => true, :headers => {}, :method => :get, :path => path ) end
This operation returns information about a vault
Parameters¶ ↑
-
name<~String>
Vault
name -
options<~Hash>
-
account_id<~String> - The
AWS
account id. Defaults to the account owning the credentials making the request
-
Returns¶ ↑
-
response<~Excon::Response>:
-
body<~Hash>:
-
See Also¶ ↑
docs.amazonwebservices.com/amazonglacier/latest/dev/api-vault-get.html
# File lib/fog/aws/requests/glacier/describe_vault.rb, line 18 def describe_vault(name,options={}) account_id = options['account_id'] || '-' path = "/#{account_id}/vaults/#{Fog::AWS.escape(name)}" request( :expects => 200, :idempotent => true, :headers => {}, :method => :get, :path => path ) end
Get the output from a job
Parameters¶ ↑
-
name<~String> Name of the vault
-
job_id<~String> The id of the job
-
options<~Hash>
-
Range<~Range> The range to retrieve
-
account_id<~String> - The
AWS
account id. Defaults to the account owning the credentials making the request -
response_block<~Proc> Proc to use for streaming the response
-
Returns¶ ↑
-
response<~Excon::Response>:
See Also¶ ↑
docs.amazonwebservices.com/amazonglacier/latest/dev/api-job-output-get.html
# File lib/fog/aws/requests/glacier/get_job_output.rb, line 20 def get_job_output(vault_name, job_id, options={}) account_id = options.delete('account_id') || '-' path = "/#{account_id}/vaults/#{Fog::AWS.escape(vault_name)}/jobs/#{job_id}/output" headers = {} if range = options.delete('Range') headers['Range'] = "bytes=#{range.begin}-#{range.end}" end request( options.merge( :expects => [200,206], :idempotent => true, :headers => headers, :method => :get, :path => path )) end
Get a vault's notification configuration
Parameters¶ ↑
-
name<~String> Name of the vault
-
options<~Hash>
-
account_id<~String> - The
AWS
account id. Defaults to the account owning the credentials making the request
-
Returns¶ ↑
-
response<~Excon::Response>:
-
body<~Hash>:
-
See Also¶ ↑
docs.amazonwebservices.com/amazonglacier/latest/dev/api-vault-notifications-get.html
# File lib/fog/aws/requests/glacier/get_vault_notification_configuration.rb, line 18 def get_vault_notification_configuration(name,options={}) account_id = options['account_id'] || '-' path = "/#{account_id}/vaults/#{Fog::AWS.escape(name)}/notification-configuration" request( :expects => 200, :idempotent => true, :headers => {}, :method => :get, :path => path ) end
This operation initates a multipart upload of an archive to a vault
Parameters¶ ↑
-
name<~String> The vault name
-
job_specification<~Hash> A specification of the job
* Type<~String> The job type. Mandatory. Values: archive-retrieval, inventory-retrieval * Description<~String> The job description * ArchiveId<~String> The id of the archive to retrieve (only for Type==archive-retrieval) * Format<~String> The format to return (only for inventory retrieval). Values: CSV, JSON * SNSTopic<String> ARN of a topic to publish to when the job is complete
-
options<~Hash>
-
account_id<~String> - The
AWS
account id. Defaults to the account owning the credentials making the request
-
Returns¶ ↑
-
response<~Excon::Response>:
-
body<~Hash>:
-
See Also¶ ↑
docs.amazonwebservices.com/amazonglacier/latest/dev/api-initiate-job-post.html
# File lib/fog/aws/requests/glacier/initiate_job.rb, line 24 def initiate_job(name, job_specification, options={}) account_id = options['account_id'] || '-' path = "/#{account_id}/vaults/#{Fog::AWS.escape(name)}/jobs" request({ :expects => 202, :headers => {}, :method => 'POST', :path => path, :body => Fog::JSON.encode(job_specification) }) end
This operation initates a multipart upload of an archive to a vault
Parameters¶ ↑
-
name<~String> The vault name
-
part_size<~Integer> The part size to use. Must be a power of 2 multiple of 1MB (1,2,4,8,16,…)
-
options<~Hash>
-
description<~String> - The archive description
-
account_id<~String> - The
AWS
account id. Defaults to the account owning the credentials making the request
-
Returns¶ ↑
-
response<~Excon::Response>:
-
body<~Hash>:
-
See Also¶ ↑
docs.amazonwebservices.com/amazonglacier/latest/dev/api-multipart-initiate-upload.html
# File lib/fog/aws/requests/glacier/initiate_multipart_upload.rb, line 20 def initiate_multipart_upload(name, part_size, options={}) account_id = options['account_id'] || '-' path = "/#{account_id}/vaults/#{Fog::AWS.escape(name)}/multipart-uploads" headers = {'x-amz-part-size' => part_size.to_s} headers['x-amz-archive-description'] = Fog::AWS.escape(options['description']) if options['description'] request( :expects => 201, :headers => headers, :method => 'POST', :path => path ) end
lists in-progress and recently jobs for the specified vault ==== Parameters * name<~String> Name of the vault * options<~Hash> * completed<~Boolean>Specifies the state of the jobs to return. You can specify true or false * statuscode<~String> Filter returned jobs by status (InProgress, Succeeded, or Failed) * limit<~Integer> - The maximum number of items returned in the response. (default 1000) * marker<~String> - marker used for pagination * account_id<~String> - The AWS account id. Defaults to the account owning the credentials making the request ==== Returns * response<~Excon::Response>: ==== See Also
docs.amazonwebservices.com/amazonglacier/latest/dev/api-jobs-get.html
# File lib/fog/aws/requests/glacier/list_jobs.rb, line 20 def list_jobs(vault_name, options={}) account_id = options.delete('account_id') || '-' path = "/#{account_id}/vaults/#{Fog::AWS.escape(vault_name)}/jobs" request( :expects => 200, :idempotent => true, :headers => {}, :method => :get, :path => path, :query => options ) end
lists in-progress multipart uploads for the specified vault
Parameters¶ ↑
-
name<~String> Name of the vault
-
options<~Hash>
-
limit<~Integer> - The maximum number of items returned in the response. (default 1000)
-
marker<~String> - marker used for pagination
-
account_id<~String> - The
AWS
account id. Defaults to the account owning the credentials making the request
-
Returns¶ ↑
-
response<~Excon::Response>:
See Also¶ ↑
docs.amazonwebservices.com/amazonglacier/latest/dev/api-multipart-list-uploads.html
# File lib/fog/aws/requests/glacier/list_multipart_uploads.rb, line 18 def list_multipart_uploads(vault_name, options={}) account_id = options.delete('account_id') || '-' path = "/#{account_id}/vaults/#{Fog::AWS.escape(vault_name)}/multipart-uploads" request( :expects => 200, :idempotent => true, :headers => {}, :method => :get, :path => path, :query => options ) end
lists the parts of an archive that have been uploaded in a specific multipart upload
Parameters¶ ↑
-
name<~String> Name of the vault
-
upload_id<~String> The id of the upload
-
options<~Hash>
-
limit<~Integer> - The maximum number of items returned in the response. (default 1000)
-
marker<~String> - marker used for pagination
-
account_id<~String> - The
AWS
account id. Defaults to the account owning the credentials making the request
-
Returns¶ ↑
-
response<~Excon::Response>:
See Also¶ ↑
docs.amazonwebservices.com/amazonglacier/latest/dev/api-multipart-list-parts.html
# File lib/fog/aws/requests/glacier/list_parts.rb, line 19 def list_parts(vault_name, upload_id, options={}) account_id = options.delete('account_id') || '-' path = "/#{account_id}/vaults/#{Fog::AWS.escape(vault_name)}/multipart-uploads/#{Fog::AWS.escape(upload_id)}" request( :expects => 200, :idempotent => true, :headers => {}, :method => :get, :path => path, :query => options ) end
This operation lists all vaults owned by the calling user’s account.
Parameters¶ ↑
-
options<~Hash>
-
limit<~Integer> - The maximum number of items returned in the response. (default 1000)
-
marker<~String> - marker used for pagination
-
account_id<~String> - The
AWS
account id. Defaults to the account owning the credentials making the request
-
Returns¶ ↑
-
response<~Excon::Response>:
-
body<~Hash>:
-
See Also¶ ↑
docs.amazonwebservices.com/amazonglacier/latest/dev/api-vaults-get.html
# File lib/fog/aws/requests/glacier/list_vaults.rb, line 19 def list_vaults(options={}) account_id = options.delete('account_id') || '-' path = "/#{account_id}/vaults" request( :expects => 200, :idempotent => true, :headers => {}, :method => 'GET', :path => path, :query => options ) end
Set a vault's notification configuration
Parameters¶ ↑
-
name<~String> Name of the vault
-
SnsTopic<~String> ARN of the topic to notify
-
events<~Array> Events you wish to receive. Valid events are ArchiveRetrievalCompleted, InventoryRetrievalCompleted
-
options<~Hash>
-
account_id<~String> - The
AWS
account id. Defaults to the account owning the credentials making the request
-
Returns¶ ↑
-
response<~Excon::Response>:
-
body<~Hash>:
-
See Also¶ ↑
docs.amazonwebservices.com/amazonglacier/latest/dev/api-vault-notifications-put.html
# File lib/fog/aws/requests/glacier/set_vault_notification_configuration.rb, line 20 def set_vault_notification_configuration(name,sns_topic, events, options={}) account_id = options['account_id'] || '-' path = "/#{account_id}/vaults/#{Fog::AWS.escape(name)}/notification-configuration" request( :expects => 204, :idempotent => true, :headers => {}, :method => :put, :path => path, :body => Fog::JSON.encode('SNSTopic' => sns_topic, 'Events' => events) ) end
Upload an archive
Parameters¶ ↑
-
name<~String> Name of the vault to upload to
-
uploadId<~String> Id of the upload
-
body<~String> The data to upload
-
offset<~Integer> The offset of the data within the archive
-
hash<~String> The tree hash for this part
-
options<~Hash>
-
account_id<~String> - The
AWS
account id. Defaults to the account owning the credentials making the request
-
Returns¶ ↑
-
response<~Excon::Response>:
See Also¶ ↑
docs.amazonwebservices.com/amazonglacier/latest/dev/api-upload-part.html
# File lib/fog/aws/requests/glacier/upload_part.rb, line 21 def upload_part(vault_name, upload_id, body, offset, hash, options={}) account_id = options['account_id'] || '-' path = "/#{account_id}/vaults/#{Fog::AWS.escape(vault_name)}/multipart-uploads/#{Fog::AWS.escape(upload_id)}" headers = { 'Content-Length' => body.bytesize.to_s, 'Content-Range' => "bytes #{offset}-#{offset+body.bytesize-1}/*", 'x-amz-content-sha256' => OpenSSL::Digest::SHA256.hexdigest(body), 'x-amz-sha256-tree-hash' => hash } request( :expects => 204, :idempotent => true, :headers => headers, :method => :put, :path => path, :body => body ) end
Private Instance Methods
# File lib/fog/aws/glacier.rb, line 229 def _request(params, &block) response = @connection.request(params, &block) if response.headers['Content-Type'] == 'application/json' && response.body.size > 0 #body will be empty if the streaming form has been used response.body = Fog::JSON.decode(response.body) end response end
# File lib/fog/aws/glacier.rb, line 208 def request(params, &block) refresh_credentials_if_expired date = Fog::Time.now params[:headers]['Date'] = date.to_date_header params[:headers]['x-amz-date'] = date.to_iso8601_basic params[:headers]['Host'] = @host params[:headers]['x-amz-glacier-version'] = @version params[:headers]['x-amz-security-token'] = @aws_session_token if @aws_session_token params[:headers]['Authorization'] = @signer.sign params, date if @instrumentor @instrumentor.instrument("#{@instrumentor_name}.request", params) do _request(params, &block) end else _request(params, &block) end end
# File lib/fog/aws/glacier.rb, line 199 def setup_credentials(options) @aws_access_key_id = options[:aws_access_key_id] @aws_secret_access_key = options[:aws_secret_access_key] @aws_session_token = options[:aws_session_token] @aws_credentials_expire_at = options[:aws_credentials_expire_at] @signer = Fog::AWS::SignatureV4.new( @aws_access_key_id, @aws_secret_access_key,@region,'glacier') end