aws-sdk 1.7.1 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|