aws-sdk 1.5.6 → 1.5.7
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/aws.rb +2 -0
- data/lib/aws/api_config/CloudWatch-2010-08-01.yml +424 -0
- data/lib/aws/api_config/STS-2011-06-15.yml +4 -0
- data/lib/aws/auto_scaling/activity.rb +2 -2
- data/lib/aws/auto_scaling/activity_collection.rb +1 -1
- data/lib/aws/auto_scaling/group_collection.rb +1 -1
- data/lib/aws/auto_scaling/instance_collection.rb +1 -1
- data/lib/aws/auto_scaling/launch_configuration_collection.rb +1 -1
- data/lib/aws/auto_scaling/notification_configuration_collection.rb +1 -1
- data/lib/aws/auto_scaling/scaling_policy_collection.rb +1 -1
- data/lib/aws/auto_scaling/scheduled_action_collection.rb +1 -1
- data/lib/aws/auto_scaling/tag_collection.rb +1 -1
- data/lib/aws/cloud_watch.rb +75 -0
- data/lib/aws/cloud_watch/alarm.rb +272 -0
- data/lib/aws/cloud_watch/alarm_collection.rb +153 -0
- data/lib/aws/cloud_watch/alarm_history_item.rb +50 -0
- data/lib/aws/cloud_watch/alarm_history_item_collection.rb +84 -0
- data/lib/aws/cloud_watch/client.rb +333 -0
- data/lib/aws/cloud_watch/config.rb +18 -0
- data/lib/aws/cloud_watch/errors.rb +22 -0
- data/lib/aws/cloud_watch/metric.rb +135 -0
- data/lib/aws/cloud_watch/metric_alarm_collection.rb +160 -0
- data/lib/aws/cloud_watch/metric_collection.rb +131 -0
- data/lib/aws/cloud_watch/metric_statistics.rb +69 -0
- data/lib/aws/cloud_watch/request.rb +23 -0
- data/lib/aws/core.rb +1 -1
- data/lib/aws/core/client.rb +2 -2
- data/lib/aws/core/client/query_json.rb +2 -0
- data/lib/aws/core/collection.rb +58 -25
- data/lib/aws/core/collection/simple.rb +18 -26
- data/lib/aws/core/collection/with_limit_and_next_token.rb +71 -0
- data/lib/aws/core/collection/with_next_token.rb +97 -0
- data/lib/aws/core/credential_providers.rb +36 -0
- data/lib/aws/core/option_grammar.rb +19 -0
- data/lib/aws/core/page_result.rb +5 -3
- data/lib/aws/dynamo_db/client.rb +0 -16
- data/lib/aws/dynamo_db/item_collection.rb +1 -1
- data/lib/aws/dynamo_db/request.rb +5 -1
- data/lib/aws/dynamo_db/table_collection.rb +1 -1
- data/lib/aws/iam/collection.rb +1 -1
- data/lib/aws/s3/client.rb +1 -1
- data/lib/aws/s3/paginated_collection.rb +1 -1
- data/lib/aws/simple_db/domain_collection.rb +14 -41
- data/lib/aws/simple_db/item_collection.rb +2 -2
- data/lib/aws/simple_email_service/identity_collection.rb +1 -1
- data/lib/aws/simple_workflow/domain_collection.rb +1 -1
- data/lib/aws/simple_workflow/history_event_collection.rb +1 -1
- data/lib/aws/simple_workflow/type_collection.rb +1 -1
- data/lib/aws/simple_workflow/workflow_execution_collection.rb +1 -1
- data/lib/aws/sns/topic.rb +1 -1
- data/lib/aws/sts.rb +9 -1
- data/lib/aws/sts/client.rb +31 -14
- data/lib/net/http/connection_pool.rb +11 -5
- metadata +19 -4
- data/lib/aws/core/collection/limitable.rb +0 -99
@@ -390,6 +390,42 @@ module AWS
|
|
390
390
|
|
391
391
|
end
|
392
392
|
|
393
|
+
# Returns a set of fake credentials, should only be used for testing.
|
394
|
+
class FakeProvider < StaticProvider
|
395
|
+
|
396
|
+
# @param [Hash] options
|
397
|
+
# @option options [Boolean] :with_session_token (false) When +true+ a
|
398
|
+
# fake session token will also be provided.
|
399
|
+
def initialize options = {}
|
400
|
+
options[:access_key_id] ||= fake_access_key_id
|
401
|
+
options[:secret_access_key] ||= fake_secret_access_key
|
402
|
+
if options.delete(:with_session_token)
|
403
|
+
options[:session_token] ||= fake_session_token
|
404
|
+
end
|
405
|
+
super
|
406
|
+
end
|
407
|
+
|
408
|
+
protected
|
409
|
+
|
410
|
+
def fake_access_key_id
|
411
|
+
"AKIA" + random_chars(16).upcase
|
412
|
+
end
|
413
|
+
|
414
|
+
def fake_secret_access_key
|
415
|
+
random_chars(40)
|
416
|
+
end
|
417
|
+
|
418
|
+
def fake_session_token
|
419
|
+
random_chars(260)
|
420
|
+
end
|
421
|
+
|
422
|
+
def random_chars count
|
423
|
+
chars = ('0'..'9').to_a + ('a'..'z').to_a + ('A'..'Z').to_a
|
424
|
+
(1..count).map{ chars[rand(chars.size)] }.join
|
425
|
+
end
|
426
|
+
|
427
|
+
end
|
428
|
+
|
393
429
|
end
|
394
430
|
end
|
395
431
|
end
|
@@ -157,6 +157,25 @@ module AWS
|
|
157
157
|
def required?; true; end
|
158
158
|
end
|
159
159
|
|
160
|
+
# @private
|
161
|
+
module Float
|
162
|
+
|
163
|
+
extend NoArgs
|
164
|
+
|
165
|
+
def validate(value, context = nil)
|
166
|
+
raise format_error("float value", context) unless
|
167
|
+
value.kind_of?(Numeric) or
|
168
|
+
value.respond_to? :to_f
|
169
|
+
end
|
170
|
+
|
171
|
+
def encode_value(value)
|
172
|
+
value.to_f.to_s
|
173
|
+
end
|
174
|
+
|
175
|
+
end
|
176
|
+
|
177
|
+
Double = Float
|
178
|
+
|
160
179
|
# @private
|
161
180
|
module Rename
|
162
181
|
def self.apply(option, new_name)
|
data/lib/aws/core/page_result.rb
CHANGED
@@ -13,7 +13,6 @@
|
|
13
13
|
|
14
14
|
module AWS
|
15
15
|
module Core
|
16
|
-
|
17
16
|
class PageResult < Array
|
18
17
|
|
19
18
|
# @return [Collection] Returns the collection that was used to
|
@@ -51,6 +50,9 @@ module AWS
|
|
51
50
|
super(items)
|
52
51
|
end
|
53
52
|
|
53
|
+
# @return [PageResult]
|
54
|
+
# @raise [RuntimeError] Raises a runtime error when called against
|
55
|
+
# a collection that has no more results (i.e. #last_page? == true).
|
54
56
|
def next_page
|
55
57
|
if last_page?
|
56
58
|
raise 'unable to get the next page, already at the last page'
|
@@ -58,12 +60,12 @@ module AWS
|
|
58
60
|
collection.page(:per_page => per_page, :next_token => next_token)
|
59
61
|
end
|
60
62
|
|
61
|
-
# @return [Boolean] Returns true if this is the last page of results.
|
63
|
+
# @return [Boolean] Returns +true+ if this is the last page of results.
|
62
64
|
def last_page?
|
63
65
|
next_token.nil?
|
64
66
|
end
|
65
67
|
|
66
|
-
# @return [Boolean] Returns true if there are more pages of results.
|
68
|
+
# @return [Boolean] Returns +true+ if there are more pages of results.
|
67
69
|
def more?
|
68
70
|
!!next_token
|
69
71
|
end
|
data/lib/aws/dynamo_db/client.rb
CHANGED
@@ -30,22 +30,6 @@ module AWS
|
|
30
30
|
# @private
|
31
31
|
CACHEABLE_REQUESTS = Set[:list_tables, :describe_table]
|
32
32
|
|
33
|
-
# @private
|
34
|
-
def initialize *args
|
35
|
-
|
36
|
-
super
|
37
|
-
|
38
|
-
# Replaces the current credential provider with a SessionProvider
|
39
|
-
# that provides refreshable STS session credentials. DynamoDB
|
40
|
-
# requires session credentials.
|
41
|
-
if credential_provider.session_token.nil?
|
42
|
-
long_term_credentials = credential_provider.credentials
|
43
|
-
@credential_provider = Core::CredentialProviders::SessionProvider.for(
|
44
|
-
long_term_credentials)
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
|
49
33
|
## client methods ##
|
50
34
|
|
51
35
|
# Calls the BatchGetItem API operation.
|
data/lib/aws/iam/collection.rb
CHANGED
data/lib/aws/s3/client.rb
CHANGED
@@ -1169,7 +1169,7 @@ module AWS
|
|
1169
1169
|
end
|
1170
1170
|
|
1171
1171
|
# @param [String] possible_xml
|
1172
|
-
# @
|
1172
|
+
# @return [Boolean] Returns +true+ if the given string is a valid xml
|
1173
1173
|
# document.
|
1174
1174
|
def is_xml? possible_xml
|
1175
1175
|
begin
|
@@ -34,10 +34,11 @@ module AWS
|
|
34
34
|
# puts domain.name
|
35
35
|
# end
|
36
36
|
#
|
37
|
+
# @see Core::Collection
|
38
|
+
#
|
37
39
|
class DomainCollection
|
38
40
|
|
39
|
-
include Core::
|
40
|
-
include Enumerable
|
41
|
+
include Core::Collection::WithLimitAndNextToken
|
41
42
|
|
42
43
|
# Creates a domain in SimpleDB and returns a domain object.
|
43
44
|
#
|
@@ -50,7 +51,7 @@ module AWS
|
|
50
51
|
# @return [Domain] Returns a new domain with the given name.
|
51
52
|
def create(domain_name)
|
52
53
|
client.create_domain(:domain_name => domain_name)
|
53
|
-
|
54
|
+
self[domain_name]
|
54
55
|
end
|
55
56
|
|
56
57
|
# Returns a domain object with the given name.
|
@@ -61,51 +62,23 @@ module AWS
|
|
61
62
|
# @param [String] domain_name The name of the domain to return.
|
62
63
|
# @return [Domain] Returns the domain with the given name.
|
63
64
|
def [] domain_name
|
64
|
-
|
65
|
+
Domain.new(domain_name.to_s, :config => config)
|
65
66
|
end
|
66
67
|
|
67
|
-
|
68
|
-
# @yield [domain] Yields once for every domain in your account.
|
69
|
-
# @yieldparam [Domain] domain
|
70
|
-
# @param [Hash] options
|
71
|
-
# @option options [Integer] :limit (nil) The maximum number of
|
72
|
-
# domains to yield.
|
73
|
-
# @option options [Integer] :batch_size (100) The number of domains to
|
74
|
-
# fetch each request to SimpleDB. Maximum is 100.
|
75
|
-
# @return [nil]
|
76
|
-
def each options = {}, &block
|
77
|
-
|
78
|
-
total_limit = options[:limit]
|
79
|
-
batch_size = options[:batch_size] || 100
|
80
|
-
received = 0
|
81
|
-
next_token = nil
|
82
|
-
|
83
|
-
begin
|
68
|
+
protected
|
84
69
|
|
85
|
-
|
86
|
-
[total_limit - received, batch_size].min :
|
87
|
-
batch_size
|
70
|
+
def _each_item next_token, limit, options = {}
|
88
71
|
|
89
|
-
|
90
|
-
|
91
|
-
list = client.list_domains(list_options)
|
72
|
+
options[:next_token] = next_token if next_token
|
73
|
+
options[:max_number_of_domains] = limit if limit
|
92
74
|
|
93
|
-
|
94
|
-
|
75
|
+
resp = client.list_domains(options)
|
76
|
+
resp.data[:domain_names].each do |name|
|
77
|
+
yield(self[name])
|
78
|
+
end
|
95
79
|
|
96
|
-
|
97
|
-
yield(domain_named(name))
|
98
|
-
end
|
99
|
-
|
100
|
-
end while next_token and (total_limit.nil? or received < total_limit)
|
101
|
-
nil
|
102
|
-
end
|
80
|
+
resp.data[:next_token]
|
103
81
|
|
104
|
-
# @return [Domain] Returns a domain with the given name.
|
105
|
-
# @private
|
106
|
-
protected
|
107
|
-
def domain_named name
|
108
|
-
Domain.new(name.to_s, :config => config)
|
109
82
|
end
|
110
83
|
|
111
84
|
end
|
@@ -30,7 +30,7 @@ module AWS
|
|
30
30
|
|
31
31
|
include ConsistentReadOption
|
32
32
|
|
33
|
-
include Core::Collection::
|
33
|
+
include Core::Collection::WithLimitAndNextToken
|
34
34
|
|
35
35
|
# @return [Domain] The domain the items belong to.
|
36
36
|
attr_reader :domain
|
@@ -447,7 +447,7 @@ module AWS
|
|
447
447
|
return @limit if args.empty?
|
448
448
|
collection_with(:limit => Integer(args.first))
|
449
449
|
end
|
450
|
-
alias_method :_limit, :limit # for Collection::
|
450
|
+
alias_method :_limit, :limit # for Collection::WithLimitAndNextToken
|
451
451
|
|
452
452
|
# Applies standard scope options (e.g. :where => 'foo') and removes them from
|
453
453
|
# the options hash by calling their method (e.g. by calling #where('foo')).
|
data/lib/aws/sns/topic.rb
CHANGED
@@ -126,7 +126,7 @@ module AWS
|
|
126
126
|
# @param [Hash] options Additional options for confirming the
|
127
127
|
# subscription.
|
128
128
|
#
|
129
|
-
# @option
|
129
|
+
# @option options [Boolean] :authenticate_on_unsubscribe
|
130
130
|
# Indicates that you want to disable unauthenticated
|
131
131
|
# unsubsciption of the subscription.
|
132
132
|
#
|
data/lib/aws/sts.rb
CHANGED
@@ -67,6 +67,14 @@ module AWS
|
|
67
67
|
# account owners are restricted to a maximum of 3600s (one
|
68
68
|
# hour).
|
69
69
|
#
|
70
|
+
# @option opts [String] :serial_nubmer The identification number of the
|
71
|
+
# Multi-Factor Authentication (MFA) device for the user.
|
72
|
+
#
|
73
|
+
# @option opts [String] :token_code The value provided by the MFA device.
|
74
|
+
# If the user has an access policy requiring an MFA code, provide the
|
75
|
+
# value here to get permission to resources as specified in the access
|
76
|
+
# policy.
|
77
|
+
#
|
70
78
|
# @return [Session]
|
71
79
|
def new_session(opts = {})
|
72
80
|
get_session(:get_session_token, opts) do |resp, session_opts|
|
@@ -129,8 +137,8 @@ module AWS
|
|
129
137
|
end
|
130
138
|
end
|
131
139
|
|
132
|
-
# @private
|
133
140
|
protected
|
141
|
+
|
134
142
|
def get_session(method, opts = {})
|
135
143
|
opts[:duration_seconds] = opts.delete(:duration) if
|
136
144
|
opts[:duration]
|
data/lib/aws/sts/client.rb
CHANGED
@@ -43,18 +43,19 @@ module AWS
|
|
43
43
|
# === Options:
|
44
44
|
#
|
45
45
|
# * +:name+ - *required* - (String) The name of the federated user
|
46
|
-
# associated with the
|
47
|
-
#
|
48
|
-
#
|
49
|
-
#
|
50
|
-
#
|
51
|
-
#
|
52
|
-
#
|
53
|
-
#
|
46
|
+
# associated with the credentials. For information about limitations on
|
47
|
+
# user names, go to Limitations on IAM Entities in Using AWS Identity
|
48
|
+
# and Access Management.
|
49
|
+
# * +:policy+ - (String) A policy specifying the permissions to associate
|
50
|
+
# with the credentials. The caller can delegate their own permissions
|
51
|
+
# by specifying a policy, and both policies will be checked when a
|
52
|
+
# service call is made. For more information about how permissions work
|
53
|
+
# in the context of temporary credentials, see Controlling Permissions
|
54
|
+
# in Temporary Credentials in Using AWS Identity and Access Management.
|
54
55
|
# * +:duration_seconds+ - (Integer) The duration, in seconds, that the
|
55
56
|
# session should last. Acceptable durations for federation sessions
|
56
|
-
# range from 3600s (
|
57
|
-
# default.
|
57
|
+
# range from 3600s (one hour) to 129600s (36 hours), with 43200s (12
|
58
|
+
# hours) as the default.
|
58
59
|
#
|
59
60
|
# === Response Structure:
|
60
61
|
#
|
@@ -78,10 +79,26 @@ module AWS
|
|
78
79
|
# === Options:
|
79
80
|
#
|
80
81
|
# * +:duration_seconds+ - (Integer) The duration, in seconds, that the
|
81
|
-
#
|
82
|
-
# from 3600s (
|
83
|
-
# Sessions
|
84
|
-
# 3600s.
|
82
|
+
# credentials should remain valid. Acceptable durations for IAM user
|
83
|
+
# sessions range from 3600s (one hour) to 129600s (36 hours), with
|
84
|
+
# 43200s (12 hours) as the default. Sessions for AWS account owners are
|
85
|
+
# restricted to a maximum of 3600s (one hour).
|
86
|
+
# * +:serial_number+ - (String) The identification number of the
|
87
|
+
# Multi-Factor Authentication (MFA) device for the user. If the user
|
88
|
+
# has an access policy requiring MFA to access resources, provide the
|
89
|
+
# value here. The number is in the Security Credentials tab of the
|
90
|
+
# user's details pane in the IAM console. If the user has an active MFA
|
91
|
+
# device, the details pane displays a Multi-Factor Authentication
|
92
|
+
# Device value such as arn:aws:iam::123456789012:mfa/user for a virtual
|
93
|
+
# device or the device serial number for a hardware device.
|
94
|
+
# * +:token_code+ - (String) The value provided by the MFA device. If the
|
95
|
+
# user has an access policy requiring an MFA code, provide the value
|
96
|
+
# here to get permission to resources as specified in the access
|
97
|
+
# policy. If MFA is required, and a code not provided while requesting
|
98
|
+
# a set of temporary security credentials, the user will receive an
|
99
|
+
# "access denied" response when requesting resources that require MFA.
|
100
|
+
# For more information, see Using Multi-Factor Authentication (MFA)
|
101
|
+
# Devices with AWS in Using IAM.
|
85
102
|
#
|
86
103
|
# === Response Structure:
|
87
104
|
#
|
@@ -48,8 +48,12 @@ class Net::HTTP::ConnectionPool
|
|
48
48
|
@pool_mutex = Mutex.new
|
49
49
|
@open_timeout = options[:http_open_timeout] || 15
|
50
50
|
@idle_timeout = options[:http_idle_timeout] || 60
|
51
|
-
@
|
52
|
-
|
51
|
+
@http_wire_trace = !!options[:http_wire_trace]
|
52
|
+
if logger = options[:logger]
|
53
|
+
@logger = logger
|
54
|
+
elsif http_wire_trace?
|
55
|
+
@logger = Logger.new($stdout)
|
56
|
+
end
|
53
57
|
end
|
54
58
|
|
55
59
|
# @return [Integer]
|
@@ -60,9 +64,11 @@ class Net::HTTP::ConnectionPool
|
|
60
64
|
|
61
65
|
# @return [Boolean] Returns +true+ when HTTP debug output (wire traces)
|
62
66
|
# will be logged.
|
63
|
-
attr_reader :
|
67
|
+
attr_reader :http_wire_trace
|
64
68
|
|
65
|
-
alias_method :
|
69
|
+
alias_method :http_wire_trace?, :http_wire_trace
|
70
|
+
alias_method :log_wire_trace?, :http_wire_trace
|
71
|
+
alias_method :log_wire_trace, :http_wire_trace
|
66
72
|
|
67
73
|
# @return [Logger] Where debug output is sent.
|
68
74
|
attr_reader :logger
|
@@ -208,7 +214,7 @@ class Net::HTTP::ConnectionPool
|
|
208
214
|
end
|
209
215
|
|
210
216
|
if session.nil?
|
211
|
-
logger =
|
217
|
+
logger = http_wire_trace? ? self.logger : nil
|
212
218
|
session = Session.for(connection, open_timeout, logger)
|
213
219
|
end
|
214
220
|
|