aws-sdk 1.7.1 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +4 -4
- data/lib/aws-sdk.rb +60 -1
- data/lib/aws.rb +1 -50
- data/lib/aws/api_config/CloudFront-2012-05-05.yml +864 -899
- data/lib/aws/api_config/DataPipeline-2012-10-29.yml +422 -0
- data/lib/aws/api_config/EC2-2012-07-20.yml +0 -2
- data/lib/aws/api_config/Glacier-2012-06-01.yml +622 -0
- data/lib/aws/api_config/ImportExport-2010-06-01.yml +109 -0
- data/lib/aws/api_config/{SQS-2011-10-01.yml → SQS-2012-11-05.yml} +3 -1
- data/lib/aws/api_config/StorageGateway-2012-06-30.yml +748 -0
- data/lib/aws/cloud_front.rb +71 -0
- data/lib/aws/cloud_front/client.rb +1307 -0
- data/lib/aws/cloud_front/config.rb +18 -0
- data/lib/aws/cloud_front/errors.rb +22 -0
- data/lib/aws/cloud_front/request.rb +44 -0
- data/lib/aws/core.rb +19 -1
- data/lib/aws/core/client.rb +7 -0
- data/lib/aws/core/collection.rb +1 -1
- data/lib/aws/core/configuration.rb +12 -0
- data/lib/aws/core/data.rb +13 -8
- data/lib/aws/core/json_client.rb +3 -4
- data/lib/aws/core/json_parser.rb +76 -0
- data/lib/aws/core/json_request_builder.rb +4 -3
- data/lib/aws/core/json_response_parser.rb +1 -3
- data/lib/aws/core/managed_file.rb +32 -0
- data/lib/aws/core/options/json_serializer.rb +82 -0
- data/lib/aws/core/options/validator.rb +5 -1
- data/lib/aws/core/options/xml_serializer.rb +18 -4
- data/lib/aws/core/{rest_client.rb → rest_json_client.rb} +5 -6
- data/lib/aws/core/rest_request_builder.rb +59 -35
- data/lib/aws/core/rest_response_parser.rb +13 -4
- data/lib/aws/core/rest_xml_client.rb +47 -0
- data/lib/aws/core/signature/version_4.rb +22 -8
- data/lib/aws/data_pipeline.rb +30 -0
- data/lib/aws/data_pipeline/client.rb +392 -0
- data/lib/aws/data_pipeline/config.rb +18 -0
- data/lib/aws/data_pipeline/errors.rb +20 -0
- data/lib/aws/data_pipeline/request.rb +26 -0
- data/lib/aws/ec2/instance_collection.rb +11 -3
- data/lib/aws/ec2/security_group.rb +5 -5
- data/lib/aws/ec2/security_group/{egress_ip_permission_collection.rb → ip_permission_collection.rb} +33 -14
- data/lib/aws/glacier.rb +50 -0
- data/lib/aws/glacier/archive.rb +54 -0
- data/lib/aws/glacier/archive_collection.rb +141 -0
- data/lib/aws/glacier/client.rb +286 -0
- data/lib/aws/glacier/config.rb +19 -0
- data/lib/aws/glacier/errors.rb +22 -0
- data/lib/aws/glacier/request.rb +34 -0
- data/lib/aws/glacier/resource.rb +30 -0
- data/lib/aws/glacier/vault.rb +137 -0
- data/lib/aws/glacier/vault_collection.rb +75 -0
- data/lib/aws/glacier/vault_notification_configuration.rb +27 -0
- data/lib/aws/import_export.rb +71 -0
- data/lib/aws/import_export/client.rb +109 -0
- data/lib/aws/import_export/config.rb +19 -0
- data/lib/aws/import_export/errors.rb +22 -0
- data/lib/aws/import_export/request.rb +23 -0
- data/lib/aws/route_53/client.rb +1 -1
- data/lib/aws/s3/bucket_lifecycle_configuration.rb +160 -63
- data/lib/aws/s3/client.rb +43 -0
- data/lib/aws/s3/client/xml.rb +6 -0
- data/lib/aws/s3/cors_rule_collection.rb +1 -1
- data/lib/aws/s3/data_options.rb +1 -3
- data/lib/aws/s3/request.rb +1 -1
- data/lib/aws/s3/s3_object.rb +52 -10
- data/lib/aws/sqs/client.rb +9 -3
- data/lib/aws/sqs/queue.rb +44 -5
- data/lib/aws/storage_gateway.rb +71 -0
- data/lib/aws/storage_gateway/client.rb +472 -0
- data/lib/aws/storage_gateway/config.rb +18 -0
- data/lib/aws/storage_gateway/errors.rb +22 -0
- data/lib/aws/storage_gateway/request.rb +28 -0
- data/lib/aws/version.rb +1 -1
- metadata +45 -10
- data/lib/aws/ec2/security_group/ingress_ip_permission_collection.rb +0 -61
@@ -0,0 +1,75 @@
|
|
1
|
+
# Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
5
|
+
# the License is located at
|
6
|
+
#
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
8
|
+
#
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
12
|
+
# language governing permissions and limitations under the License.
|
13
|
+
|
14
|
+
module AWS
|
15
|
+
class Glacier
|
16
|
+
|
17
|
+
class VaultCollection
|
18
|
+
|
19
|
+
include Core::Collection::WithLimitAndNextToken
|
20
|
+
|
21
|
+
# @param [Hash] options
|
22
|
+
# @option options [String] :account_id
|
23
|
+
def initialize options = {}
|
24
|
+
@account_id = options[:account_id] || '-'
|
25
|
+
super
|
26
|
+
end
|
27
|
+
|
28
|
+
# @return [String]
|
29
|
+
attr_reader :account_id
|
30
|
+
|
31
|
+
# @param [String] name
|
32
|
+
def create name
|
33
|
+
|
34
|
+
options = {}
|
35
|
+
options[:vault_name] = name
|
36
|
+
options[:account_id] = account_id
|
37
|
+
client.create_vault(options)
|
38
|
+
|
39
|
+
self[name]
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
# @param [String] name The name of the vault.
|
44
|
+
# @return [Vault] Returns a vault with the given name.
|
45
|
+
def [] name
|
46
|
+
Vault.new(name, :config => config, :account_id => account_id)
|
47
|
+
end
|
48
|
+
|
49
|
+
protected
|
50
|
+
|
51
|
+
def _each_item next_token, limit, options, &block
|
52
|
+
|
53
|
+
options[:limit] = limit if limit
|
54
|
+
options[:marker] = next_token if next_token
|
55
|
+
options[:account_id] = account_id
|
56
|
+
|
57
|
+
resp = client.list_vaults(options)
|
58
|
+
resp[:vault_list].each do |v|
|
59
|
+
|
60
|
+
vault = Vault.new_from(:list_vaults, v,
|
61
|
+
v[:vault_name],
|
62
|
+
:config => config,
|
63
|
+
:account_id => account_id)
|
64
|
+
|
65
|
+
yield(vault)
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
resp[:marker]
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
5
|
+
# the License is located at
|
6
|
+
#
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
8
|
+
#
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
12
|
+
# language governing permissions and limitations under the License.
|
13
|
+
|
14
|
+
module AWS
|
15
|
+
class Glacier
|
16
|
+
class VaultNotificationConfiguration
|
17
|
+
|
18
|
+
# @return [SNS::Topic] The SNS topic Glacier will publish events to.
|
19
|
+
attr_accessor :sns_topic
|
20
|
+
|
21
|
+
# @return [Array<String>] events An array of one or more events for
|
22
|
+
# which Amazon Glacier will send notifications.
|
23
|
+
attr_accessor :events
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
5
|
+
# the License is located at
|
6
|
+
#
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
8
|
+
#
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
12
|
+
# language governing permissions and limitations under the License.
|
13
|
+
|
14
|
+
require 'aws/core'
|
15
|
+
require 'aws/import_export/config'
|
16
|
+
|
17
|
+
module AWS
|
18
|
+
|
19
|
+
# This class is the starting point for working with AWS Import/Export.
|
20
|
+
#
|
21
|
+
# To use AWS Import/Export you must first
|
22
|
+
# {sign up here}[http://aws.amazon.com/importexport/].
|
23
|
+
#
|
24
|
+
# For more information about AWS Import/Export:
|
25
|
+
#
|
26
|
+
# * {AWS Import/Export}[http://aws.amazon.com/importexport/]
|
27
|
+
# * {AWS Import/Export Documentation}[http://aws.amazon.com/documentation/importexport/]
|
28
|
+
#
|
29
|
+
# = Credentials
|
30
|
+
#
|
31
|
+
# You can setup default credentials for all AWS services via
|
32
|
+
# AWS.config:
|
33
|
+
#
|
34
|
+
# AWS.config(
|
35
|
+
# :access_key_id => 'YOUR_ACCESS_KEY_ID',
|
36
|
+
# :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')
|
37
|
+
#
|
38
|
+
# Or you can set them directly on the AWS::ImportExport interface:
|
39
|
+
#
|
40
|
+
# ie = AWS::ImportExport.new(
|
41
|
+
# :access_key_id => 'YOUR_ACCESS_KEY_ID',
|
42
|
+
# :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')
|
43
|
+
#
|
44
|
+
# = Using the Client
|
45
|
+
#
|
46
|
+
# AWS::ImportExport does not provide higher level abstractions for Import/Export at
|
47
|
+
# this time. You can still access all of the API methods using
|
48
|
+
# {AWS::ImportExport::Client}. Here is how you access the client and make
|
49
|
+
# a simple request:
|
50
|
+
#
|
51
|
+
# ie = AWS::ImportExport.new
|
52
|
+
#
|
53
|
+
# resp = ie.client.list_hosted_zones
|
54
|
+
# resp[:hosted_zones].each do |zone|
|
55
|
+
# # ...
|
56
|
+
# end
|
57
|
+
#
|
58
|
+
# See {Client} for documentation on all of the supported operations.
|
59
|
+
#
|
60
|
+
class ImportExport
|
61
|
+
|
62
|
+
AWS.register_autoloads(self, 'aws/import_export') do
|
63
|
+
autoload :Client, 'client'
|
64
|
+
autoload :Errors, 'errors'
|
65
|
+
autoload :Request, 'request'
|
66
|
+
end
|
67
|
+
|
68
|
+
include Core::ServiceInterface
|
69
|
+
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
# Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
5
|
+
# the License is located at
|
6
|
+
#
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
8
|
+
#
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
12
|
+
# language governing permissions and limitations under the License.
|
13
|
+
|
14
|
+
module AWS
|
15
|
+
class ImportExport
|
16
|
+
|
17
|
+
# Client class for AWS Import/Export.
|
18
|
+
class Client < Core::QueryClient
|
19
|
+
|
20
|
+
define_client_methods('2010-06-01')
|
21
|
+
|
22
|
+
# @private
|
23
|
+
CACHEABLE_REQUESTS = Set[]
|
24
|
+
|
25
|
+
## client methods ##
|
26
|
+
|
27
|
+
# @!method cancel_job(options = {})
|
28
|
+
# Calls the CancelJob API operation.
|
29
|
+
# @param [Hash] options
|
30
|
+
# * +:job_id+ - *required* - (String)
|
31
|
+
# @return [Core::Response]
|
32
|
+
# The #data method of the response object returns
|
33
|
+
# a hash with the following structure:
|
34
|
+
# * +:success+ - (Boolean)
|
35
|
+
|
36
|
+
# @!method create_job(options = {})
|
37
|
+
# Calls the CreateJob API operation.
|
38
|
+
# @param [Hash] options
|
39
|
+
# * +:job_type+ - *required* - (String)
|
40
|
+
# * +:manifest+ - *required* - (String)
|
41
|
+
# * +:manifest_addendum+ - (String)
|
42
|
+
# * +:validate_only+ - *required* - (Boolean)
|
43
|
+
# @return [Core::Response]
|
44
|
+
# The #data method of the response object returns
|
45
|
+
# a hash with the following structure:
|
46
|
+
# * +:job_id+ - (String)
|
47
|
+
# * +:job_type+ - (String)
|
48
|
+
# * +:aws_shipping_address+ - (String)
|
49
|
+
# * +:signature+ - (String)
|
50
|
+
# * +:signature_file_contents+ - (String)
|
51
|
+
# * +:warning_message+ - (String)
|
52
|
+
|
53
|
+
# @!method get_status(options = {})
|
54
|
+
# Calls the GetStatus API operation.
|
55
|
+
# @param [Hash] options
|
56
|
+
# * +:job_id+ - *required* - (String)
|
57
|
+
# @return [Core::Response]
|
58
|
+
# The #data method of the response object returns
|
59
|
+
# a hash with the following structure:
|
60
|
+
# * +:job_id+ - (String)
|
61
|
+
# * +:job_type+ - (String)
|
62
|
+
# * +:aws_shipping_address+ - (String)
|
63
|
+
# * +:location_code+ - (String)
|
64
|
+
# * +:location_message+ - (String)
|
65
|
+
# * +:progress_code+ - (String)
|
66
|
+
# * +:progress_message+ - (String)
|
67
|
+
# * +:carrier+ - (String)
|
68
|
+
# * +:tracking_number+ - (String)
|
69
|
+
# * +:log_bucket+ - (String)
|
70
|
+
# * +:log_key+ - (String)
|
71
|
+
# * +:error_count+ - (Integer)
|
72
|
+
# * +:signature+ - (String)
|
73
|
+
# * +:signature_file_contents+ - (String)
|
74
|
+
# * +:current_manifest+ - (String)
|
75
|
+
# * +:creation_date+ - (Time)
|
76
|
+
|
77
|
+
# @!method list_jobs(options = {})
|
78
|
+
# Calls the ListJobs API operation.
|
79
|
+
# @param [Hash] options
|
80
|
+
# * +:max_jobs+ - (Integer)
|
81
|
+
# * +:marker+ - (String)
|
82
|
+
# @return [Core::Response]
|
83
|
+
# The #data method of the response object returns
|
84
|
+
# a hash with the following structure:
|
85
|
+
# * +:jobs+ - (Array<Hash>)
|
86
|
+
# * +:job_id+ - (String)
|
87
|
+
# * +:creation_date+ - (Time)
|
88
|
+
# * +:is_canceled+ - (Boolean)
|
89
|
+
# * +:job_type+ - (String)
|
90
|
+
# * +:is_truncated+ - (Boolean)
|
91
|
+
|
92
|
+
# @!method update_job(options = {})
|
93
|
+
# Calls the UpdateJob API operation.
|
94
|
+
# @param [Hash] options
|
95
|
+
# * +:job_id+ - *required* - (String)
|
96
|
+
# * +:manifest+ - *required* - (String)
|
97
|
+
# * +:job_type+ - *required* - (String)
|
98
|
+
# * +:validate_only+ - *required* - (Boolean)
|
99
|
+
# @return [Core::Response]
|
100
|
+
# The #data method of the response object returns
|
101
|
+
# a hash with the following structure:
|
102
|
+
# * +:success+ - (Boolean)
|
103
|
+
# * +:warning_message+ - (String)
|
104
|
+
|
105
|
+
## end client methods ##
|
106
|
+
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
|
2
|
+
# Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
5
|
+
# may not use this file except in compliance with the License. A copy of
|
6
|
+
# the License is located at
|
7
|
+
#
|
8
|
+
# http://aws.amazon.com/apache2.0/
|
9
|
+
#
|
10
|
+
# or in the "license" file accompanying this file. This file is
|
11
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
12
|
+
# ANY KIND, either express or implied. See the License for the specific
|
13
|
+
# language governing permissions and limitations under the License.
|
14
|
+
|
15
|
+
AWS::Core::Configuration.module_eval do
|
16
|
+
|
17
|
+
add_service 'ImportExport', 'import_export', 'importexport.amazonaws.com'
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
5
|
+
# the License is located at
|
6
|
+
#
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
8
|
+
#
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
12
|
+
# language governing permissions and limitations under the License.
|
13
|
+
|
14
|
+
module AWS
|
15
|
+
class ImportExport
|
16
|
+
module Errors
|
17
|
+
|
18
|
+
extend Core::LazyErrorClasses
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
5
|
+
# the License is located at
|
6
|
+
#
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
8
|
+
#
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
12
|
+
# language governing permissions and limitations under the License.
|
13
|
+
|
14
|
+
module AWS
|
15
|
+
class ImportExport
|
16
|
+
|
17
|
+
# @private
|
18
|
+
class Request < Core::Http::Request
|
19
|
+
include Core::Signature::Version2
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
data/lib/aws/route_53/client.rb
CHANGED
@@ -17,62 +17,74 @@ require 'uuidtools'
|
|
17
17
|
module AWS
|
18
18
|
class S3
|
19
19
|
|
20
|
-
# A lifecycle configuration
|
21
|
-
#
|
22
|
-
#
|
20
|
+
# A lifecycle configuration specify {Rule rules} that manage the way
|
21
|
+
# Amazon S3 stores objects. The rules apply to objects whose keys match
|
22
|
+
# the rule's prefix.
|
23
23
|
#
|
24
24
|
# == Rules
|
25
25
|
#
|
26
|
-
#
|
27
|
-
#
|
26
|
+
# A rule is comprised primarily of an id, prefix and set of
|
27
|
+
# configuration options. Configuration options on the rules can specify:
|
28
28
|
#
|
29
|
-
# *
|
30
|
-
# *
|
31
|
-
# *
|
32
|
-
# * +#id+
|
33
|
-
#
|
34
|
-
# Objects with keys matching a rule prefix will be deleted after
|
35
|
-
# #expiration_days have passed.
|
36
|
-
#
|
37
|
-
# A rule is comprised primarily of a prefix and number of expiration days.
|
38
|
-
# Objects with keys that start with the given prefix will be automatically
|
39
|
-
# deleted after "expiration days" have passed. Rules also have an
|
40
|
-
# ID and a status (they can be disabled).
|
29
|
+
# * When to expire an object
|
30
|
+
# * When to transition an object to Glacier
|
31
|
+
# * Whether the rule is enabled or disabled
|
41
32
|
#
|
42
33
|
# See {Rule} for more information on all of the attributes and methods
|
43
34
|
# available for rules.
|
44
35
|
#
|
45
|
-
# ==
|
36
|
+
# == Expiring Objects
|
37
|
+
#
|
38
|
+
# You can add a rule to a bucket lifecycle configuration using {#add_rule}
|
39
|
+
# inside of an {#update} block that will expire an object after a given
|
40
|
+
# number of days:
|
41
|
+
#
|
42
|
+
# # delete backups after they are 1 year old
|
43
|
+
# bucket.lifecycle_configuration.update do
|
44
|
+
# add_rule('backups/', :expiration_time => 365)
|
45
|
+
# end
|
46
|
+
#
|
47
|
+
# You can also define the rule to expire objects at a specific date:
|
48
|
+
#
|
49
|
+
# # delete backups on January 1st of next year
|
50
|
+
# bucket.lifecycle_configuration.update do
|
51
|
+
# date = Date.new(Time.now.year + 1, 01, 01)
|
52
|
+
# add_rule('backups/', :expiration_time => date)
|
53
|
+
# end
|
54
|
+
#
|
55
|
+
# == Transitioning Objects to Glacier
|
46
56
|
#
|
47
|
-
# You can add a rule to a bucket lifecycle configuration using {#add_rule}
|
57
|
+
# You can add a rule to a bucket lifecycle configuration using {#add_rule}
|
58
|
+
# inside of an {#update} block that will transition objects to Glacier
|
59
|
+
# after a given number of days:
|
48
60
|
#
|
49
|
-
# #
|
61
|
+
# # move backups to Glacier after 3 days
|
50
62
|
# bucket.lifecycle_configuration.update do
|
51
|
-
# add_rule('backups/',
|
63
|
+
# add_rule('backups/', :glacier_transition_time => 3)
|
52
64
|
# end
|
53
65
|
#
|
54
|
-
#
|
55
|
-
# you can do this with {#add_rule}.
|
66
|
+
# You can also define the rule to transition objects at a specific date:
|
56
67
|
#
|
57
|
-
# #
|
68
|
+
# # transition all backups on January 1st of next year
|
58
69
|
# bucket.lifecycle_configuration.update do
|
59
|
-
#
|
70
|
+
# date = Date.new(Time.now.year + 1, 01, 01)
|
71
|
+
# add_rule('backups/', :glacier_transition_time => date)
|
60
72
|
# end
|
61
73
|
#
|
62
74
|
# == Replacing Rules
|
63
75
|
#
|
64
76
|
# If you prefer to completely replace a lifecycle configuration, call
|
65
|
-
# {#add_rule} inside a #replace block instead of an
|
77
|
+
# {#add_rule} inside a {#replace} block instead of an +#update+ block:
|
66
78
|
#
|
67
79
|
# # replace all existing rules with the following
|
68
80
|
# bucket.lifecycle_configuration.replace do
|
69
|
-
# add_rule('backups/',
|
70
|
-
# add_rule('temp/',
|
81
|
+
# add_rule('backups/', :glacier_transition_time => 10)
|
82
|
+
# add_rule('temp/', :expiration_time => 30)
|
71
83
|
# end
|
72
84
|
#
|
73
85
|
# == Removing Rules
|
74
86
|
#
|
75
|
-
# You can delete specific rules with #remove_rule.
|
87
|
+
# You can delete specific rules with {#remove_rule}.
|
76
88
|
#
|
77
89
|
# # delete all disabled rules
|
78
90
|
# bucket.lifecycle_configuration.update do
|
@@ -81,7 +93,7 @@ module AWS
|
|
81
93
|
# end
|
82
94
|
# end
|
83
95
|
#
|
84
|
-
# You can also remove all rules in a single call:
|
96
|
+
# You can also remove all rules in a single call with {#clear}:
|
85
97
|
#
|
86
98
|
# # remove all rules from this lifecycle configuration
|
87
99
|
# bucket.lifecycle_configuration.clear
|
@@ -93,12 +105,12 @@ module AWS
|
|
93
105
|
# # change the expiration days to 10 for EVERY rule
|
94
106
|
# bucket.lifecycle_configuration.update do
|
95
107
|
# rules.each do |rule|
|
96
|
-
# rule.
|
108
|
+
# rule.expiration_time = 10
|
97
109
|
# end
|
98
110
|
# end
|
99
111
|
#
|
100
112
|
# Please be aware, if you add, remove or edit rules outside of an
|
101
|
-
# #update or #replace block, then you must call
|
113
|
+
# {#update} or {#replace} block, then you must call +#update+ yourself
|
102
114
|
# or the changes will not be persisted.
|
103
115
|
#
|
104
116
|
class BucketLifecycleConfiguration
|
@@ -127,26 +139,39 @@ module AWS
|
|
127
139
|
end
|
128
140
|
end
|
129
141
|
|
130
|
-
# @
|
131
|
-
#
|
132
|
-
#
|
133
|
-
# matching the given prefix.
|
142
|
+
# @overload add_rule(prefix, options = {})
|
143
|
+
# @param [String] prefix objects whose keys begin with this prefix
|
144
|
+
# will be affected by the rule.
|
134
145
|
#
|
135
|
-
#
|
146
|
+
# @option options [String] :id A unique ID for this rule. If an ID
|
147
|
+
# is not provided, one will be generated.
|
136
148
|
#
|
137
|
-
#
|
138
|
-
#
|
149
|
+
# @option options [Boolean] :disabled (false) By default, all rules
|
150
|
+
# will have the status of enabled. You can override this default
|
151
|
+
# by passing +:disabled+ => true.
|
139
152
|
#
|
140
|
-
#
|
141
|
-
#
|
142
|
-
# by passing +:disabled+ => true.
|
153
|
+
# @option options [Date, Integer] :expiration_time (nil) Indicates
|
154
|
+
# the lifetime for objects matching the given prefix.
|
143
155
|
#
|
144
|
-
#
|
156
|
+
# @option options [Date, Integer] :glacier_transition_time (nil)
|
157
|
+
# Indicates the time before objects matching the given prefix will
|
158
|
+
# be transitioned into the Amazon Glacier storage tier.
|
145
159
|
#
|
146
|
-
|
160
|
+
# @return [Rule] Returns the rule that was added, as a {Rule} object.
|
161
|
+
def add_rule prefix, expiration_time = nil, options = {}
|
162
|
+
if Hash === expiration_time
|
163
|
+
options = expiration_time
|
164
|
+
else
|
165
|
+
options[:expiration_time] = expiration_time
|
166
|
+
end
|
167
|
+
|
147
168
|
id = options[:id] || UUIDTools::UUID.random_create.to_s
|
148
|
-
|
149
|
-
|
169
|
+
opts = {
|
170
|
+
:status => options[:disabled] == true ? 'Disabled' : 'Enabled',
|
171
|
+
:expiration_time => options[:expiration_time],
|
172
|
+
:glacier_transition_time => options[:glacier_transition_time]
|
173
|
+
}
|
174
|
+
rule = Rule.new(self, id, prefix, opts)
|
150
175
|
self.rules << rule
|
151
176
|
rule
|
152
177
|
end
|
@@ -188,7 +213,7 @@ module AWS
|
|
188
213
|
# # set the number of days before expiration for all rules to 10
|
189
214
|
# config = bucket.lifecycle_configuration
|
190
215
|
# config.rules.each do |rule|
|
191
|
-
# rule.
|
216
|
+
# rule.expiration_time = 10
|
192
217
|
# end
|
193
218
|
# config.update
|
194
219
|
#
|
@@ -197,7 +222,7 @@ module AWS
|
|
197
222
|
#
|
198
223
|
# # shorter version of the example above
|
199
224
|
# bucket.lifecycle_configuration.update do
|
200
|
-
# rules.each {|rule| rule.
|
225
|
+
# rules.each {|rule| rule.expiration_time = 10 }
|
201
226
|
# end
|
202
227
|
#
|
203
228
|
# A block method for updating a BucketLifecycleConfiguration.
|
@@ -265,8 +290,22 @@ module AWS
|
|
265
290
|
xml.Prefix rule.prefix
|
266
291
|
xml.Status rule.status
|
267
292
|
xml.Expiration do
|
268
|
-
|
269
|
-
|
293
|
+
if Integer === rule.expiration_time
|
294
|
+
xml.Days rule.expiration_time
|
295
|
+
else
|
296
|
+
date = rule.expiration_time.to_s
|
297
|
+
xml.Date "#{date}T00:00:00Z"
|
298
|
+
end
|
299
|
+
end if rule.expiration_time
|
300
|
+
xml.Transition do
|
301
|
+
xml.StorageClass 'GLACIER'
|
302
|
+
if Integer === rule.glacier_transition_time
|
303
|
+
xml.Days rule.glacier_transition_time
|
304
|
+
else
|
305
|
+
date = rule.glacier_transition_time.to_s
|
306
|
+
xml.Date "#{date}T00:00:00Z"
|
307
|
+
end
|
308
|
+
end if rule.glacier_transition_time
|
270
309
|
end
|
271
310
|
end
|
272
311
|
end
|
@@ -284,13 +323,6 @@ module AWS
|
|
284
323
|
end
|
285
324
|
end
|
286
325
|
|
287
|
-
protected
|
288
|
-
def parse_xml xml
|
289
|
-
Client::XML::GetBucketLifecycleConfiguration.parse(xml).rules.map do |r|
|
290
|
-
Rule.new(self, r.id, r.prefix, r.expiration.days, r.status)
|
291
|
-
end
|
292
|
-
end
|
293
|
-
|
294
326
|
# Represents a single rule from an Amazon S3 bucket lifecycle
|
295
327
|
# configuration.
|
296
328
|
#
|
@@ -303,12 +335,21 @@ module AWS
|
|
303
335
|
#
|
304
336
|
class Rule
|
305
337
|
|
306
|
-
|
338
|
+
# @private
|
339
|
+
def initialize configuration, id, prefix, expiration_time = nil, status = nil
|
307
340
|
@configuration = configuration
|
308
341
|
@id = id
|
309
342
|
@prefix = prefix
|
310
|
-
|
311
|
-
|
343
|
+
|
344
|
+
if Hash === expiration_time
|
345
|
+
options = expiration_time
|
346
|
+
options.each do |key, value|
|
347
|
+
send("#{key}=", value) if respond_to?("#{key}=")
|
348
|
+
end
|
349
|
+
else
|
350
|
+
self.expiration_time = expiration_time
|
351
|
+
self.status = status
|
352
|
+
end
|
312
353
|
end
|
313
354
|
|
314
355
|
# @return [BucketLifecycleConfiguration]
|
@@ -320,8 +361,30 @@ module AWS
|
|
320
361
|
# @return [String]
|
321
362
|
attr_accessor :prefix
|
322
363
|
|
323
|
-
# @return [
|
324
|
-
|
364
|
+
# @return [Date] the date the objects will expire
|
365
|
+
# @return [Integer] if the value is an integer, returns the number
|
366
|
+
# of days before the object will expire.
|
367
|
+
attr_reader :expiration_time
|
368
|
+
|
369
|
+
# Converts any time values to Date objects
|
370
|
+
def expiration_time=(value)
|
371
|
+
@expiration_time = convert_time_value(value)
|
372
|
+
end
|
373
|
+
|
374
|
+
alias expiration_days expiration_time
|
375
|
+
alias expiration_days= expiration_time=
|
376
|
+
|
377
|
+
# @return [Date] the date the objects will be
|
378
|
+
# transitioned into the Amazon Glacier storage tier.
|
379
|
+
# @return [Integer] if the value is an integer, returns the number
|
380
|
+
# of days before the object is transitioned into the Amazon Glacier
|
381
|
+
# storage tier.
|
382
|
+
attr_reader :glacier_transition_time
|
383
|
+
|
384
|
+
# Converts any time values to Date objects
|
385
|
+
def glacier_transition_time=(value)
|
386
|
+
@glacier_transition_time = convert_time_value(value)
|
387
|
+
end
|
325
388
|
|
326
389
|
# @return [String] Returns the rule status, 'Enabled' or 'Disabled'
|
327
390
|
attr_accessor :status
|
@@ -348,11 +411,45 @@ module AWS
|
|
348
411
|
other.configuration.bucket == configuration.bucket and
|
349
412
|
other.id == id and
|
350
413
|
other.prefix == prefix and
|
351
|
-
other.
|
414
|
+
other.expiration_time == expiration_time and
|
415
|
+
other.glacier_transition_time == glacier_transition_time and
|
352
416
|
other.status == status
|
353
417
|
end
|
354
418
|
alias_method :==, :eql?
|
355
419
|
|
420
|
+
private
|
421
|
+
|
422
|
+
# If an integer, returns the integer as days, otherwise
|
423
|
+
# converts any time-like values into Date objects
|
424
|
+
# @return [Integer] if the value is an integer
|
425
|
+
# @return [Date] if the value is a time-like object
|
426
|
+
# @return [nil] if the value is nil
|
427
|
+
def convert_time_value(value)
|
428
|
+
return nil if value.nil?
|
429
|
+
return value if value.is_a?(Integer)
|
430
|
+
Date.parse(value.to_s)
|
431
|
+
end
|
432
|
+
|
433
|
+
end
|
434
|
+
|
435
|
+
protected
|
436
|
+
|
437
|
+
def parse_xml xml
|
438
|
+
Client::XML::GetBucketLifecycleConfiguration.parse(xml).rules.map do |r|
|
439
|
+
opts = { :status => r[:status] }
|
440
|
+
|
441
|
+
if r[:expiration]
|
442
|
+
opts[:expiration_time] =
|
443
|
+
r[:expiration][:days] || r[:expiration][:date]
|
444
|
+
end
|
445
|
+
|
446
|
+
if r[:transition]
|
447
|
+
opts[:glacier_transition_time] =
|
448
|
+
r[:transition][:days] || r[:transition][:date]
|
449
|
+
end
|
450
|
+
|
451
|
+
Rule.new(self, r[:id], r[:prefix], opts)
|
452
|
+
end
|
356
453
|
end
|
357
454
|
|
358
455
|
end
|