fog-aws 3.5.1 → 3.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/fog/aws.rb +1 -0
- data/lib/fog/aws/dns.rb +136 -0
- data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +0 -133
- data/lib/fog/aws/requests/storage/shared_mock_methods.rb +1 -1
- data/lib/fog/aws/storage.rb +14 -9
- data/lib/fog/aws/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5fc7b96fe4f26c5af84de803e8af393cee43b14b070a70be68b910da92cb61a
|
4
|
+
data.tar.gz: 2002ebf924fb5108475c69fbde9a0861455bb2087a237135781ae9e217adbe40
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 76ee4f98fea0588666c18c65060d063b8a86215c2abcab505ad891411fd0639f449e54806d198973b6d117fc15be2b921b2e8932bc42d57ea11e89068f66b818
|
7
|
+
data.tar.gz: 005214de385e9474d415bb3780fbffddce311a552b81c60f3fcbaa67dc7116720d099e76cd69ffa6a41284d021e9b2cb53b14d129ecdc9be735a7128ca7295f6
|
data/lib/fog/aws.rb
CHANGED
data/lib/fog/aws/dns.rb
CHANGED
@@ -25,7 +25,10 @@ module Fog
|
|
25
25
|
request :list_resource_record_sets
|
26
26
|
request :get_change
|
27
27
|
|
28
|
+
|
28
29
|
class Mock
|
30
|
+
include Fog::AWS::CredentialFetcher::ConnectionMethods
|
31
|
+
|
29
32
|
def self.data
|
30
33
|
@data ||= Hash.new do |hash, region|
|
31
34
|
hash[region] = Hash.new do |region_hash, key|
|
@@ -70,6 +73,7 @@ module Fog
|
|
70
73
|
|
71
74
|
class Real
|
72
75
|
include Fog::AWS::CredentialFetcher::ConnectionMethods
|
76
|
+
|
73
77
|
# Initialize connection to Route 53 DNS service
|
74
78
|
#
|
75
79
|
# ==== Notes
|
@@ -160,6 +164,138 @@ module Fog
|
|
160
164
|
Base64.encode64(signed_string).chomp!
|
161
165
|
end
|
162
166
|
end
|
167
|
+
|
168
|
+
def self.hosted_zone_for_alias_target(dns_name)
|
169
|
+
hosted_zones = if dns_name.match(/^dualstack\./)
|
170
|
+
elb_dualstack_hosted_zone_mapping
|
171
|
+
else
|
172
|
+
elb_hosted_zone_mapping
|
173
|
+
end
|
174
|
+
|
175
|
+
Hash[hosted_zones.select { |k, _|
|
176
|
+
dns_name =~ /\A.+\.#{k}\.elb\.amazonaws\.com\.?\z/
|
177
|
+
}].values.last
|
178
|
+
end
|
179
|
+
|
180
|
+
def self.elb_hosted_zone_mapping
|
181
|
+
@elb_hosted_zone_mapping ||= {
|
182
|
+
"ap-northeast-1" => "Z2YN17T5R711GT",
|
183
|
+
"ap-southeast-1" => "Z1WI8VXHPB1R38",
|
184
|
+
"ap-southeast-2" => "Z2999QAZ9SRTIC",
|
185
|
+
"eu-west-1" => "Z3NF1Z3NOM5OY2",
|
186
|
+
"eu-central-1" => "Z215JYRZR1TBD5",
|
187
|
+
"sa-east-1" => "Z2ES78Y61JGQKS",
|
188
|
+
"us-east-1" => "Z3DZXE0Q79N41H",
|
189
|
+
"us-west-1" => "Z1M58G0W56PQJA",
|
190
|
+
"us-west-2" => "Z33MTJ483KN6FU",
|
191
|
+
}
|
192
|
+
end
|
193
|
+
|
194
|
+
# See https://docs.aws.amazon.com/general/latest/gr/rande.html#elb_region
|
195
|
+
# This needs to be kept in sync manually sadly for now as seemingly this data is not available via an API
|
196
|
+
def self.elb_dualstack_hosted_zone_mapping
|
197
|
+
@elb_dualstack_hosted_zone_mapping ||= {
|
198
|
+
"ap-northeast-1" => "Z14GRHDCWA56QT",
|
199
|
+
"ap-northeast-2" => "ZWKZPGTI48KDX",
|
200
|
+
"ap-northeast-3" => "Z5LXEXXYW11ES",
|
201
|
+
"ap-south-1" => "ZP97RAFLXTNZK",
|
202
|
+
"ap-southeast-1" => "Z1LMS91P8CMLE5",
|
203
|
+
"ap-southeast-2" => "Z1GM3OXH4ZPM65",
|
204
|
+
"ca-central-1" => "ZQSVJUPU6J1EY",
|
205
|
+
"eu-central-1" => "Z215JYRZR1TBD5",
|
206
|
+
"eu-west-1" => "Z32O12XQLNTSW2",
|
207
|
+
"eu-west-2" => "ZHURV8PSTC4K8",
|
208
|
+
"eu-west-3" => "Z3Q77PNBQS71R4",
|
209
|
+
"us-east-1" => "Z35SXDOTRQ7X7K",
|
210
|
+
"us-east-2" => "Z3AADJGX6KTTL2",
|
211
|
+
"us-west-1" => "Z368ELLRRE2KJ0",
|
212
|
+
"us-west-2" => "Z1H1FL5HABSF5",
|
213
|
+
"sa-east-1" => "Z2P70J7HTTTPLU",
|
214
|
+
}
|
215
|
+
end
|
216
|
+
|
217
|
+
# Returns the xml request for a given changeset
|
218
|
+
def self.change_resource_record_sets_data(zone_id, change_batch, version, options = {})
|
219
|
+
# AWS methods return zone_ids that looks like '/hostedzone/id'. Let the caller either use
|
220
|
+
# that form or just the actual id (which is what this request needs)
|
221
|
+
zone_id = zone_id.sub('/hostedzone/', '')
|
222
|
+
|
223
|
+
optional_tags = ''
|
224
|
+
options.each do |option, value|
|
225
|
+
case option
|
226
|
+
when :comment
|
227
|
+
optional_tags += "<Comment>#{value}</Comment>"
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
#build XML
|
232
|
+
if change_batch.count > 0
|
233
|
+
|
234
|
+
changes = "<ChangeBatch>#{optional_tags}<Changes>"
|
235
|
+
|
236
|
+
change_batch.each do |change_item|
|
237
|
+
action_tag = %Q{<Action>#{change_item[:action]}</Action>}
|
238
|
+
name_tag = %Q{<Name>#{change_item[:name]}</Name>}
|
239
|
+
type_tag = %Q{<Type>#{change_item[:type]}</Type>}
|
240
|
+
|
241
|
+
# TTL must be omitted if using an alias record
|
242
|
+
ttl_tag = ''
|
243
|
+
ttl_tag += %Q{<TTL>#{change_item[:ttl]}</TTL>} unless change_item[:alias_target]
|
244
|
+
|
245
|
+
weight_tag = ''
|
246
|
+
set_identifier_tag = ''
|
247
|
+
region_tag = ''
|
248
|
+
if change_item[:set_identifier]
|
249
|
+
set_identifier_tag += %Q{<SetIdentifier>#{change_item[:set_identifier]}</SetIdentifier>}
|
250
|
+
if change_item[:weight] # Weighted Record
|
251
|
+
weight_tag += %Q{<Weight>#{change_item[:weight]}</Weight>}
|
252
|
+
elsif change_item[:region] # Latency record
|
253
|
+
region_tag += %Q{<Region>#{change_item[:region]}</Region>}
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
failover_tag = if change_item[:failover]
|
258
|
+
%Q{<Failover>#{change_item[:failover]}</Failover>}
|
259
|
+
end
|
260
|
+
|
261
|
+
geolocation_tag = if change_item[:geo_location]
|
262
|
+
xml_geo = change_item[:geo_location].map { |k,v| "<#{k}>#{v}</#{k}>" }.join
|
263
|
+
%Q{<GeoLocation>#{xml_geo}</GeoLocation>}
|
264
|
+
end
|
265
|
+
|
266
|
+
resource_records = change_item[:resource_records] || []
|
267
|
+
resource_record_tags = ''
|
268
|
+
resource_records.each do |record|
|
269
|
+
resource_record_tags += %Q{<ResourceRecord><Value>#{record}</Value></ResourceRecord>}
|
270
|
+
end
|
271
|
+
|
272
|
+
# ResourceRecords must be omitted if using an alias record
|
273
|
+
resource_tag = ''
|
274
|
+
resource_tag += %Q{<ResourceRecords>#{resource_record_tags}</ResourceRecords>} if resource_records.any?
|
275
|
+
|
276
|
+
alias_target_tag = ''
|
277
|
+
if change_item[:alias_target]
|
278
|
+
# Accept either underscore or camel case for hash keys.
|
279
|
+
dns_name = change_item[:alias_target][:dns_name] || change_item[:alias_target][:DNSName]
|
280
|
+
hosted_zone_id = change_item[:alias_target][:hosted_zone_id] || change_item[:alias_target][:HostedZoneId] || AWS.hosted_zone_for_alias_target(dns_name)
|
281
|
+
evaluate_target_health = change_item[:alias_target][:evaluate_target_health] || change_item[:alias_target][:EvaluateTargetHealth] || false
|
282
|
+
evaluate_target_health_xml = !evaluate_target_health.nil? ? %Q{<EvaluateTargetHealth>#{evaluate_target_health}</EvaluateTargetHealth>} : ''
|
283
|
+
alias_target_tag += %Q{<AliasTarget><HostedZoneId>#{hosted_zone_id}</HostedZoneId><DNSName>#{dns_name}</DNSName>#{evaluate_target_health_xml}</AliasTarget>}
|
284
|
+
end
|
285
|
+
|
286
|
+
health_check_id_tag = if change_item[:health_check_id]
|
287
|
+
%Q{<HealthCheckId>#{change_item[:health_check_id]}</HealthCheckId>}
|
288
|
+
end
|
289
|
+
|
290
|
+
change_tags = %Q{<Change>#{action_tag}<ResourceRecordSet>#{name_tag}#{type_tag}#{set_identifier_tag}#{weight_tag}#{region_tag}#{failover_tag}#{geolocation_tag}#{ttl_tag}#{resource_tag}#{alias_target_tag}#{health_check_id_tag}</ResourceRecordSet></Change>}
|
291
|
+
changes += change_tags
|
292
|
+
end
|
293
|
+
|
294
|
+
changes += '</Changes></ChangeBatch>'
|
295
|
+
end
|
296
|
+
|
297
|
+
%Q{<?xml version="1.0" encoding="UTF-8"?><ChangeResourceRecordSetsRequest xmlns="https://route53.amazonaws.com/doc/#{version}/">#{changes}</ChangeResourceRecordSetsRequest>}
|
298
|
+
end
|
163
299
|
end
|
164
300
|
end
|
165
301
|
|
@@ -1,139 +1,6 @@
|
|
1
1
|
module Fog
|
2
2
|
module AWS
|
3
3
|
class DNS
|
4
|
-
|
5
|
-
def self.hosted_zone_for_alias_target(dns_name)
|
6
|
-
hosted_zones = if dns_name.match(/^dualstack\./)
|
7
|
-
elb_dualstack_hosted_zone_mapping
|
8
|
-
else
|
9
|
-
elb_hosted_zone_mapping
|
10
|
-
end
|
11
|
-
|
12
|
-
Hash[hosted_zones.select { |k, _|
|
13
|
-
dns_name =~ /\A.+\.#{k}\.elb\.amazonaws\.com\.?\z/
|
14
|
-
}].values.last
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.elb_hosted_zone_mapping
|
18
|
-
@elb_hosted_zone_mapping ||= {
|
19
|
-
"ap-northeast-1" => "Z2YN17T5R711GT",
|
20
|
-
"ap-southeast-1" => "Z1WI8VXHPB1R38",
|
21
|
-
"ap-southeast-2" => "Z2999QAZ9SRTIC",
|
22
|
-
"eu-west-1" => "Z3NF1Z3NOM5OY2",
|
23
|
-
"eu-central-1" => "Z215JYRZR1TBD5",
|
24
|
-
"sa-east-1" => "Z2ES78Y61JGQKS",
|
25
|
-
"us-east-1" => "Z3DZXE0Q79N41H",
|
26
|
-
"us-west-1" => "Z1M58G0W56PQJA",
|
27
|
-
"us-west-2" => "Z33MTJ483KN6FU",
|
28
|
-
}
|
29
|
-
end
|
30
|
-
|
31
|
-
# See https://docs.aws.amazon.com/general/latest/gr/rande.html#elb_region
|
32
|
-
# This needs to be kept in sync manually sadly for now as seemingly this data is not available via an API
|
33
|
-
def self.elb_dualstack_hosted_zone_mapping
|
34
|
-
@elb_dualstack_hosted_zone_mapping ||= {
|
35
|
-
"ap-northeast-1" => "Z14GRHDCWA56QT",
|
36
|
-
"ap-northeast-2" => "ZWKZPGTI48KDX",
|
37
|
-
"ap-northeast-3" => "Z5LXEXXYW11ES",
|
38
|
-
"ap-south-1" => "ZP97RAFLXTNZK",
|
39
|
-
"ap-southeast-1" => "Z1LMS91P8CMLE5",
|
40
|
-
"ap-southeast-2" => "Z1GM3OXH4ZPM65",
|
41
|
-
"ca-central-1" => "ZQSVJUPU6J1EY",
|
42
|
-
"eu-central-1" => "Z215JYRZR1TBD5",
|
43
|
-
"eu-west-1" => "Z32O12XQLNTSW2",
|
44
|
-
"eu-west-2" => "ZHURV8PSTC4K8",
|
45
|
-
"eu-west-3" => "Z3Q77PNBQS71R4",
|
46
|
-
"us-east-1" => "Z35SXDOTRQ7X7K",
|
47
|
-
"us-east-2" => "Z3AADJGX6KTTL2",
|
48
|
-
"us-west-1" => "Z368ELLRRE2KJ0",
|
49
|
-
"us-west-2" => "Z1H1FL5HABSF5",
|
50
|
-
"sa-east-1" => "Z2P70J7HTTTPLU",
|
51
|
-
}
|
52
|
-
end
|
53
|
-
|
54
|
-
# Returns the xml request for a given changeset
|
55
|
-
def self.change_resource_record_sets_data(zone_id, change_batch, version, options = {})
|
56
|
-
# AWS methods return zone_ids that looks like '/hostedzone/id'. Let the caller either use
|
57
|
-
# that form or just the actual id (which is what this request needs)
|
58
|
-
zone_id = zone_id.sub('/hostedzone/', '')
|
59
|
-
|
60
|
-
optional_tags = ''
|
61
|
-
options.each do |option, value|
|
62
|
-
case option
|
63
|
-
when :comment
|
64
|
-
optional_tags += "<Comment>#{value}</Comment>"
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
#build XML
|
69
|
-
if change_batch.count > 0
|
70
|
-
|
71
|
-
changes = "<ChangeBatch>#{optional_tags}<Changes>"
|
72
|
-
|
73
|
-
change_batch.each do |change_item|
|
74
|
-
action_tag = %Q{<Action>#{change_item[:action]}</Action>}
|
75
|
-
name_tag = %Q{<Name>#{change_item[:name]}</Name>}
|
76
|
-
type_tag = %Q{<Type>#{change_item[:type]}</Type>}
|
77
|
-
|
78
|
-
# TTL must be omitted if using an alias record
|
79
|
-
ttl_tag = ''
|
80
|
-
ttl_tag += %Q{<TTL>#{change_item[:ttl]}</TTL>} unless change_item[:alias_target]
|
81
|
-
|
82
|
-
weight_tag = ''
|
83
|
-
set_identifier_tag = ''
|
84
|
-
region_tag = ''
|
85
|
-
if change_item[:set_identifier]
|
86
|
-
set_identifier_tag += %Q{<SetIdentifier>#{change_item[:set_identifier]}</SetIdentifier>}
|
87
|
-
if change_item[:weight] # Weighted Record
|
88
|
-
weight_tag += %Q{<Weight>#{change_item[:weight]}</Weight>}
|
89
|
-
elsif change_item[:region] # Latency record
|
90
|
-
region_tag += %Q{<Region>#{change_item[:region]}</Region>}
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
failover_tag = if change_item[:failover]
|
95
|
-
%Q{<Failover>#{change_item[:failover]}</Failover>}
|
96
|
-
end
|
97
|
-
|
98
|
-
geolocation_tag = if change_item[:geo_location]
|
99
|
-
xml_geo = change_item[:geo_location].map { |k,v| "<#{k}>#{v}</#{k}>" }.join
|
100
|
-
%Q{<GeoLocation>#{xml_geo}</GeoLocation>}
|
101
|
-
end
|
102
|
-
|
103
|
-
resource_records = change_item[:resource_records] || []
|
104
|
-
resource_record_tags = ''
|
105
|
-
resource_records.each do |record|
|
106
|
-
resource_record_tags += %Q{<ResourceRecord><Value>#{record}</Value></ResourceRecord>}
|
107
|
-
end
|
108
|
-
|
109
|
-
# ResourceRecords must be omitted if using an alias record
|
110
|
-
resource_tag = ''
|
111
|
-
resource_tag += %Q{<ResourceRecords>#{resource_record_tags}</ResourceRecords>} if resource_records.any?
|
112
|
-
|
113
|
-
alias_target_tag = ''
|
114
|
-
if change_item[:alias_target]
|
115
|
-
# Accept either underscore or camel case for hash keys.
|
116
|
-
dns_name = change_item[:alias_target][:dns_name] || change_item[:alias_target][:DNSName]
|
117
|
-
hosted_zone_id = change_item[:alias_target][:hosted_zone_id] || change_item[:alias_target][:HostedZoneId] || AWS.hosted_zone_for_alias_target(dns_name)
|
118
|
-
evaluate_target_health = change_item[:alias_target][:evaluate_target_health] || change_item[:alias_target][:EvaluateTargetHealth] || false
|
119
|
-
evaluate_target_health_xml = !evaluate_target_health.nil? ? %Q{<EvaluateTargetHealth>#{evaluate_target_health}</EvaluateTargetHealth>} : ''
|
120
|
-
alias_target_tag += %Q{<AliasTarget><HostedZoneId>#{hosted_zone_id}</HostedZoneId><DNSName>#{dns_name}</DNSName>#{evaluate_target_health_xml}</AliasTarget>}
|
121
|
-
end
|
122
|
-
|
123
|
-
health_check_id_tag = if change_item[:health_check_id]
|
124
|
-
%Q{<HealthCheckId>#{change_item[:health_check_id]}</HealthCheckId>}
|
125
|
-
end
|
126
|
-
|
127
|
-
change_tags = %Q{<Change>#{action_tag}<ResourceRecordSet>#{name_tag}#{type_tag}#{set_identifier_tag}#{weight_tag}#{region_tag}#{failover_tag}#{geolocation_tag}#{ttl_tag}#{resource_tag}#{alias_target_tag}#{health_check_id_tag}</ResourceRecordSet></Change>}
|
128
|
-
changes += change_tags
|
129
|
-
end
|
130
|
-
|
131
|
-
changes += '</Changes></ChangeBatch>'
|
132
|
-
end
|
133
|
-
|
134
|
-
%Q{<?xml version="1.0" encoding="UTF-8"?><ChangeResourceRecordSetsRequest xmlns="https://route53.amazonaws.com/doc/#{version}/">#{changes}</ChangeResourceRecordSetsRequest>}
|
135
|
-
end
|
136
|
-
|
137
4
|
class Real
|
138
5
|
require 'fog/aws/parsers/dns/change_resource_record_sets'
|
139
6
|
|
@@ -4,7 +4,7 @@ module Fog
|
|
4
4
|
module SharedMockMethods
|
5
5
|
def define_mock_acl(bucket_name, object_name, options)
|
6
6
|
acl = options['x-amz-acl'] || 'private'
|
7
|
-
if !['private', 'public-read', 'public-read-write', 'authenticated-read'].include?(acl)
|
7
|
+
if !['private', 'public-read', 'public-read-write', 'authenticated-read', 'bucket-owner-read', 'bucket-owner-full-control'].include?(acl)
|
8
8
|
raise Excon::Errors::BadRequest.new('invalid x-amz-acl')
|
9
9
|
else
|
10
10
|
self.data[:acls][:object][bucket_name] ||= {}
|
data/lib/fog/aws/storage.rb
CHANGED
@@ -43,7 +43,7 @@ module Fog
|
|
43
43
|
]
|
44
44
|
|
45
45
|
requires :aws_access_key_id, :aws_secret_access_key
|
46
|
-
recognizes :endpoint, :region, :host, :port, :scheme, :persistent, :use_iam_profile, :aws_session_token, :aws_credentials_expire_at, :path_style, :acceleration, :instrumentor, :instrumentor_name, :aws_signature_version, :virtual_host, :cname
|
46
|
+
recognizes :endpoint, :region, :host, :port, :scheme, :persistent, :use_iam_profile, :aws_session_token, :aws_credentials_expire_at, :path_style, :acceleration, :instrumentor, :instrumentor_name, :aws_signature_version, :enable_signature_v4_streaming, :virtual_host, :cname
|
47
47
|
|
48
48
|
secrets :aws_secret_access_key, :hmac
|
49
49
|
|
@@ -506,6 +506,7 @@ module Fog
|
|
506
506
|
@persistent = options.fetch(:persistent, false)
|
507
507
|
@acceleration = options.fetch(:acceleration, false)
|
508
508
|
@signature_version = options.fetch(:aws_signature_version, 4)
|
509
|
+
@enable_signature_v4_streaming = options.fetch(:enable_signature_v4_streaming, true)
|
509
510
|
validate_signature_version!
|
510
511
|
@path_style = options[:path_style] || false
|
511
512
|
|
@@ -587,20 +588,24 @@ module Fog
|
|
587
588
|
if @signature_version == 4
|
588
589
|
params[:headers]['x-amz-date'] = date.to_iso8601_basic
|
589
590
|
if params[:body].respond_to?(:read)
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
591
|
+
if @enable_signature_v4_streaming
|
592
|
+
# See http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-streaming.html
|
593
|
+
# We ignore the bit about setting the content-encoding to aws-chunked because
|
594
|
+
# this can cause s3 to serve files with a blank content encoding which causes problems with some CDNs
|
595
|
+
# AWS have confirmed that s3 can infer that the content-encoding is aws-chunked from the x-amz-content-sha256 header
|
596
|
+
#
|
597
|
+
params[:headers]['x-amz-content-sha256'] = 'STREAMING-AWS4-HMAC-SHA256-PAYLOAD'
|
598
|
+
params[:headers]['x-amz-decoded-content-length'] = params[:headers].delete 'Content-Length'
|
599
|
+
else
|
600
|
+
params[:headers]['x-amz-content-sha256'] = 'UNSIGNED-PAYLOAD'
|
601
|
+
end
|
597
602
|
else
|
598
603
|
params[:headers]['x-amz-content-sha256'] ||= OpenSSL::Digest::SHA256.hexdigest(params[:body] || '')
|
599
604
|
end
|
600
605
|
signature_components = @signer.signature_components(params, date, params[:headers]['x-amz-content-sha256'])
|
601
606
|
params[:headers]['Authorization'] = @signer.components_to_header(signature_components)
|
602
607
|
|
603
|
-
if params[:body].respond_to?(:read)
|
608
|
+
if params[:body].respond_to?(:read) && @enable_signature_v4_streaming
|
604
609
|
body = params.delete :body
|
605
610
|
params[:request_block] = S3Streamer.new(body, signature_components['X-Amz-Signature'], @signer, date)
|
606
611
|
end
|
data/lib/fog/aws/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fog-aws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.5.
|
4
|
+
version: 3.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Lane
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-07-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -1718,7 +1718,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1718
1718
|
- !ruby/object:Gem::Version
|
1719
1719
|
version: '0'
|
1720
1720
|
requirements: []
|
1721
|
-
rubygems_version: 3.0.
|
1721
|
+
rubygems_version: 3.0.4
|
1722
1722
|
signing_key:
|
1723
1723
|
specification_version: 4
|
1724
1724
|
summary: Module for the 'fog' gem to support Amazon Web Services.
|