fog-aws 3.13.0 → 3.21.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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +123 -2
  3. data/README.md +57 -0
  4. data/lib/fog/aws/auto_scaling.rb +1 -1
  5. data/lib/fog/aws/beanstalk.rb +1 -1
  6. data/lib/fog/aws/cdn.rb +1 -1
  7. data/lib/fog/aws/cloud_formation.rb +1 -1
  8. data/lib/fog/aws/cloud_watch.rb +1 -1
  9. data/lib/fog/aws/compute.rb +1 -1
  10. data/lib/fog/aws/credential_fetcher.rb +9 -1
  11. data/lib/fog/aws/data_pipeline.rb +1 -1
  12. data/lib/fog/aws/dns.rb +1 -1
  13. data/lib/fog/aws/dynamodb.rb +1 -1
  14. data/lib/fog/aws/ecs.rb +1 -1
  15. data/lib/fog/aws/elasticache.rb +1 -1
  16. data/lib/fog/aws/elb.rb +1 -1
  17. data/lib/fog/aws/elbv2.rb +1 -1
  18. data/lib/fog/aws/emr.rb +1 -1
  19. data/lib/fog/aws/glacier.rb +1 -1
  20. data/lib/fog/aws/iam.rb +1 -1
  21. data/lib/fog/aws/kinesis.rb +1 -1
  22. data/lib/fog/aws/kms.rb +1 -1
  23. data/lib/fog/aws/lambda.rb +1 -1
  24. data/lib/fog/aws/models/compute/flavors.rb +2144 -754
  25. data/lib/fog/aws/models/storage/directories.rb +1 -0
  26. data/lib/fog/aws/models/storage/file.rb +24 -8
  27. data/lib/fog/aws/parsers/iam/get_group_policy.rb +1 -1
  28. data/lib/fog/aws/parsers/iam/get_role_policy.rb +1 -1
  29. data/lib/fog/aws/parsers/iam/get_user_policy.rb +1 -1
  30. data/lib/fog/aws/parsers/iam/policy_version.rb +1 -1
  31. data/lib/fog/aws/rds.rb +1 -1
  32. data/lib/fog/aws/redshift.rb +1 -1
  33. data/lib/fog/aws/requests/rds/add_tags_to_resource.rb +12 -10
  34. data/lib/fog/aws/requests/rds/list_tags_for_resource.rb +10 -7
  35. data/lib/fog/aws/requests/rds/remove_tags_from_resource.rb +9 -8
  36. data/lib/fog/aws/requests/storage/get_service.rb +1 -1
  37. data/lib/fog/aws/requests/storage/sync_clock.rb +9 -1
  38. data/lib/fog/aws/ses.rb +1 -1
  39. data/lib/fog/aws/simpledb.rb +1 -1
  40. data/lib/fog/aws/sns.rb +1 -1
  41. data/lib/fog/aws/sqs.rb +1 -1
  42. data/lib/fog/aws/storage.rb +20 -2
  43. data/lib/fog/aws/support.rb +1 -1
  44. data/lib/fog/aws/version.rb +1 -1
  45. data/lib/fog/aws.rb +3 -3
  46. metadata +3 -3
@@ -11,6 +11,7 @@ module Fog
11
11
  load(data)
12
12
  end
13
13
 
14
+ # Warning! This retrieves and caches meta data for the first 10,000 objects in the bucket, which can be very expensive. When possible use directories.new
14
15
  def get(key, options = {})
15
16
  remap_attributes(options, {
16
17
  :delimiter => 'delimiter',
@@ -180,7 +180,8 @@ module Fog
180
180
 
181
181
  remove_method :metadata
182
182
  def metadata
183
- attributes.reject {|key, value| !(key.to_s =~ /^x-amz-/)}
183
+ attributes.reject {|key, value| !(key.to_s =~ /^x-amz-/) }
184
+ .reject {|key, value| ['x-amz-id-2', 'x-amz-request-id'].include?(key) }
184
185
  end
185
186
 
186
187
  remove_method :metadata=
@@ -335,12 +336,12 @@ module Fog
335
336
  body.rewind rescue nil
336
337
  end
337
338
  while (chunk = body.read(multipart_chunk_size)) do
338
- part_upload = service.upload_part(directory.key, key, upload_id, part_tags.size + 1, chunk, part_headers(chunk, options))
339
+ part_upload = service.upload_part(directory.key, key, upload_id, part_tags.size + 1, chunk, part_headers(chunk))
339
340
  part_tags << part_upload.headers["ETag"]
340
341
  end
341
342
 
342
343
  if part_tags.empty? #it is an error to have a multipart upload with no parts
343
- part_upload = service.upload_part(directory.key, key, upload_id, 1, '', part_headers('', options))
344
+ part_upload = service.upload_part(directory.key, key, upload_id, 1, '', part_headers(''))
344
345
  part_tags << part_upload.headers["ETag"]
345
346
  end
346
347
 
@@ -387,11 +388,18 @@ module Fog
387
388
  end
388
389
  end
389
390
 
390
- def part_headers(chunk, options)
391
- md5 = Base64.encode64(OpenSSL::Digest::MD5.digest(chunk)).strip
392
- encryption_keys = encryption_customer_key_headers.keys
393
- encryption_headers = options.select { |key| encryption_keys.include?(key) }
394
- { 'Content-MD5' => md5 }.merge(encryption_headers)
391
+ def part_headers(chunk)
392
+ base_headers = part_checksum_headers(chunk)
393
+
394
+ # Only SSE-C headers needed in the UploadPart request. [1]
395
+ # x-amz-server-side-encryption and
396
+ # x-amz-server-side-encryption-aws-kms-key-id are only needed
397
+ # in the CreateMultipartUpload request. [2]
398
+ # [1] https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html
399
+ # [2] https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html
400
+ base_headers.merge!(encryption_customer_key_headers) if encryption && encryption_key
401
+
402
+ base_headers
395
403
  end
396
404
 
397
405
  def encryption_customer_key_headers
@@ -402,6 +410,14 @@ module Fog
402
410
  }
403
411
  end
404
412
 
413
+ def part_checksum_headers(chunk)
414
+ if service.disable_content_md5_validation
415
+ {}
416
+ else
417
+ { 'Content-MD5' => Base64.encode64(OpenSSL::Digest::MD5.digest(chunk)).strip }
418
+ end
419
+ end
420
+
405
421
  def create_part_list(upload_part_options)
406
422
  current_pos = 0
407
423
  count = 0
@@ -14,7 +14,7 @@ module Fog
14
14
  when 'GroupName', 'PolicyName'
15
15
  @response[name] = value
16
16
  when 'PolicyDocument'
17
- @response['Policy'][name] = if decoded_string = URI.decode(value)
17
+ @response['Policy'][name] = if decoded_string = URI.decode_www_form_component(value)
18
18
  Fog::JSON.decode(decoded_string) rescue value
19
19
  else
20
20
  value
@@ -12,7 +12,7 @@ module Fog
12
12
  when 'RoleName', 'PolicyName'
13
13
  @response['Policy'][name] = value
14
14
  when 'PolicyDocument'
15
- @response['Policy'][name] = if decoded_string = URI.decode(value)
15
+ @response['Policy'][name] = if decoded_string = URI.decode_www_form_component(value)
16
16
  Fog::JSON.decode(decoded_string) rescue value
17
17
  else
18
18
  value
@@ -14,7 +14,7 @@ module Fog
14
14
  when 'UserName', 'PolicyName'
15
15
  @response['Policy'][name] = value
16
16
  when 'PolicyDocument'
17
- @response['Policy'][name] = if decoded_string = URI.decode(value)
17
+ @response['Policy'][name] = if decoded_string = URI.decode_www_form_component(value)
18
18
  Fog::JSON.decode(decoded_string) rescue value
19
19
  else
20
20
  value
@@ -18,7 +18,7 @@ module Fog
18
18
  when 'IsDefaultVersion'
19
19
  @version[name] = (value == 'true')
20
20
  when 'Document'
21
- @version[name] = if decoded_string = URI.decode(value)
21
+ @version[name] = if decoded_string = URI.decode_www_form_component(value)
22
22
  Fog::JSON.decode(decoded_string) rescue value
23
23
  else
24
24
  value
data/lib/fog/aws/rds.rb CHANGED
@@ -9,7 +9,7 @@ module Fog
9
9
  class AuthorizationAlreadyExists < Fog::Errors::Error; end
10
10
 
11
11
  requires :aws_access_key_id, :aws_secret_access_key
12
- recognizes :region, :host, :path, :port, :scheme, :persistent, :use_iam_profile, :aws_session_token, :aws_credentials_expire_at, :version, :instrumentor, :instrumentor_name
12
+ recognizes :region, :host, :path, :port, :scheme, :persistent, :use_iam_profile, :aws_session_token, :aws_credentials_expire_at, :version, :instrumentor, :instrumentor_name, :sts_endpoint
13
13
 
14
14
  request_path 'fog/aws/requests/rds'
15
15
  request :describe_events
@@ -4,7 +4,7 @@ module Fog
4
4
  extend Fog::AWS::CredentialFetcher::ServiceMethods
5
5
 
6
6
  requires :aws_access_key_id, :aws_secret_access_key
7
- recognizes :region, :host, :path, :port, :scheme, :persistent, :use_iam_profile, :aws_session_token, :aws_credentials_expire_at, :instrumentor, :instrumentor_name
7
+ recognizes :region, :host, :path, :port, :scheme, :persistent, :use_iam_profile, :aws_session_token, :aws_credentials_expire_at, :instrumentor, :instrumentor_name, :sts_endpoint
8
8
 
9
9
  request_path 'fog/aws/requests/redshift'
10
10
 
@@ -12,28 +12,30 @@ module Fog
12
12
  # * body<~Hash>:
13
13
  def add_tags_to_resource(rds_id, tags)
14
14
  keys = tags.keys.sort
15
- values = keys.map {|key| tags[key]}
15
+ values = keys.map { |key| tags[key] }
16
+ resource_name = "arn:aws:rds:#{@region}:#{owner_id}:db:#{rds_id}"
17
+ %w[us-gov-west-1 us-gov-east-1].include?(@region) ? resource_name.insert(7, '-us-gov') : resource_name
16
18
  request({
17
- 'Action' => 'AddTagsToResource',
18
- 'ResourceName' => "arn:aws:rds:#{@region}:#{owner_id}:db:#{rds_id}",
19
- :parser => Fog::Parsers::AWS::RDS::Base.new,
20
- }.merge(Fog::AWS.indexed_param('Tags.member.%d.Key', keys)).
21
- merge(Fog::AWS.indexed_param('Tags.member.%d.Value', values)))
19
+ 'Action' => 'AddTagsToResource',
20
+ 'ResourceName' => resource_name,
21
+ :parser => Fog::Parsers::AWS::RDS::Base.new
22
+ }.merge(Fog::AWS.indexed_param('Tags.member.%d.Key', keys))
23
+ .merge(Fog::AWS.indexed_param('Tags.member.%d.Value', values)))
22
24
  end
23
25
  end
24
26
 
25
27
  class Mock
26
28
  def add_tags_to_resource(rds_id, tags)
27
29
  response = Excon::Response.new
28
- if server = self.data[:servers][rds_id]
29
- self.data[:tags][rds_id].merge! tags
30
+ if server = data[:servers][rds_id]
31
+ data[:tags][rds_id].merge! tags
30
32
  response.status = 200
31
33
  response.body = {
32
- "ResponseMetadata"=>{ "RequestId"=> Fog::AWS::Mock.request_id }
34
+ 'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
33
35
  }
34
36
  response
35
37
  else
36
- raise Fog::AWS::RDS::NotFound.new("DBInstance #{rds_id} not found")
38
+ raise Fog::AWS::RDS::NotFound, "DBInstance #{rds_id} not found"
37
39
  end
38
40
  end
39
41
  end
@@ -11,11 +11,14 @@ module Fog
11
11
  # ==== Returns
12
12
  # * response<~Excon::Response>:
13
13
  # * body<~Hash>:
14
+
14
15
  def list_tags_for_resource(rds_id)
16
+ resource_name = "arn:aws:rds:#{@region}:#{owner_id}:db:#{rds_id}"
17
+ %w[us-gov-west-1 us-gov-east-1].include?(@region) ? resource_name.insert(7, '-us-gov') : resource_name
15
18
  request(
16
- 'Action' => 'ListTagsForResource',
17
- 'ResourceName' => "arn:aws:rds:#{@region}:#{owner_id}:db:#{rds_id}",
18
- :parser => Fog::Parsers::AWS::RDS::TagListParser.new
19
+ 'Action' => 'ListTagsForResource',
20
+ 'ResourceName' => resource_name,
21
+ :parser => Fog::Parsers::AWS::RDS::TagListParser.new
19
22
  )
20
23
  end
21
24
  end
@@ -23,15 +26,15 @@ module Fog
23
26
  class Mock
24
27
  def list_tags_for_resource(rds_id)
25
28
  response = Excon::Response.new
26
- if server = self.data[:servers][rds_id]
29
+ if server = data[:servers][rds_id]
27
30
  response.status = 200
28
31
  response.body = {
29
- "ListTagsForResourceResult" =>
30
- {"TagList" => self.data[:tags][rds_id]}
32
+ 'ListTagsForResourceResult' =>
33
+ { 'TagList' => data[:tags][rds_id] }
31
34
  }
32
35
  response
33
36
  else
34
- raise Fog::AWS::RDS::NotFound.new("DBInstance #{rds_id} not found")
37
+ raise Fog::AWS::RDS::NotFound, "DBInstance #{rds_id} not found"
35
38
  end
36
39
  end
37
40
  end
@@ -11,11 +11,12 @@ module Fog
11
11
  # * response<~Excon::Response>:
12
12
  # * body<~Hash>:
13
13
  def remove_tags_from_resource(rds_id, keys)
14
+ resource_name = "arn:aws:rds:#{@region}:#{owner_id}:db:#{rds_id}"
15
+ %w[us-gov-west-1 us-gov-east-1].include?(@region) ? resource_name.insert(7, '-us-gov') : resource_name
14
16
  request(
15
- { 'Action' => 'RemoveTagsFromResource',
16
- 'ResourceName' => "arn:aws:rds:#{@region}:#{owner_id}:db:#{rds_id}",
17
- :parser => Fog::Parsers::AWS::RDS::Base.new,
18
- }.merge(Fog::AWS.indexed_param('TagKeys.member.%d', keys))
17
+ { 'Action' => 'RemoveTagsFromResource',
18
+ 'ResourceName' => resource_name,
19
+ :parser => Fog::Parsers::AWS::RDS::Base.new }.merge(Fog::AWS.indexed_param('TagKeys.member.%d', keys))
19
20
  )
20
21
  end
21
22
  end
@@ -23,15 +24,15 @@ module Fog
23
24
  class Mock
24
25
  def remove_tags_from_resource(rds_id, keys)
25
26
  response = Excon::Response.new
26
- if server = self.data[:servers][rds_id]
27
- keys.each {|key| self.data[:tags][rds_id].delete key}
27
+ if server = data[:servers][rds_id]
28
+ keys.each { |key| data[:tags][rds_id].delete key }
28
29
  response.status = 200
29
30
  response.body = {
30
- "ResponseMetadata"=>{ "RequestId"=> Fog::AWS::Mock.request_id }
31
+ 'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
31
32
  }
32
33
  response
33
34
  else
34
- raise Fog::AWS::RDS::NotFound.new("DBInstance #{rds_id} not found")
35
+ raise Fog::AWS::RDS::NotFound, "DBInstance #{rds_id} not found"
35
36
  end
36
37
  end
37
38
  end
@@ -21,7 +21,7 @@ module Fog
21
21
  request({
22
22
  :expects => 200,
23
23
  :headers => {},
24
- :host => 's3.amazonaws.com',
24
+ :host => @host || region_to_host(DEFAULT_REGION),
25
25
  :idempotent => true,
26
26
  :method => 'GET',
27
27
  :parser => Fog::Parsers::AWS::Storage::GetService.new
@@ -6,12 +6,20 @@ module Fog
6
6
  #
7
7
  def sync_clock
8
8
  response = begin
9
- get_service
9
+ Excon.get(sync_clock_url)
10
10
  rescue Excon::Errors::HTTPStatusError => error
11
11
  error.response
12
12
  end
13
13
  Fog::Time.now = Time.parse(response.headers['Date'])
14
14
  end
15
+
16
+ private
17
+
18
+ def sync_clock_url
19
+ host = @acceleration ? region_to_host(@region) : @host
20
+
21
+ "#{@scheme}://#{host}:#{@port}"
22
+ end
15
23
  end # Real
16
24
 
17
25
  class Mock # :nodoc:all
data/lib/fog/aws/ses.rb CHANGED
@@ -7,7 +7,7 @@ module Fog
7
7
  class MessageRejected < Fog::Errors::Error; end
8
8
 
9
9
  requires :aws_access_key_id, :aws_secret_access_key
10
- recognizes :region, :host, :path, :port, :scheme, :persistent, :use_iam_profile, :aws_session_token, :aws_credentials_expire_at, :instrumentor, :instrumentor_name
10
+ recognizes :region, :host, :path, :port, :scheme, :persistent, :use_iam_profile, :aws_session_token, :aws_credentials_expire_at, :instrumentor, :instrumentor_name, :sts_endpoint
11
11
 
12
12
  request_path 'fog/aws/requests/ses'
13
13
  request :delete_verified_email_address
@@ -4,7 +4,7 @@ module Fog
4
4
  extend Fog::AWS::CredentialFetcher::ServiceMethods
5
5
 
6
6
  requires :aws_access_key_id, :aws_secret_access_key
7
- recognizes :host, :nil_string, :path, :port, :scheme, :persistent, :region, :aws_session_token, :use_iam_profile, :aws_credentials_expire_at, :instrumentor, :instrumentor_name
7
+ recognizes :host, :nil_string, :path, :port, :scheme, :persistent, :region, :aws_session_token, :use_iam_profile, :aws_credentials_expire_at, :instrumentor, :instrumentor_name, :sts_endpoint
8
8
 
9
9
  request_path 'fog/aws/requests/simpledb'
10
10
  request :batch_put_attributes
data/lib/fog/aws/sns.rb CHANGED
@@ -4,7 +4,7 @@ module Fog
4
4
  extend Fog::AWS::CredentialFetcher::ServiceMethods
5
5
 
6
6
  requires :aws_access_key_id, :aws_secret_access_key
7
- recognizes :host, :path, :port, :scheme, :persistent, :region, :use_iam_profile, :aws_session_token, :aws_credentials_expire_at, :instrumentor, :instrumentor_name
7
+ recognizes :host, :path, :port, :scheme, :persistent, :region, :use_iam_profile, :aws_session_token, :aws_credentials_expire_at, :instrumentor, :instrumentor_name, :sts_endpoint
8
8
 
9
9
  request_path 'fog/aws/requests/sns'
10
10
  request :add_permission
data/lib/fog/aws/sqs.rb CHANGED
@@ -4,7 +4,7 @@ module Fog
4
4
  extend Fog::AWS::CredentialFetcher::ServiceMethods
5
5
 
6
6
  requires :aws_access_key_id, :aws_secret_access_key
7
- recognizes :region, :host, :path, :port, :scheme, :persistent, :aws_session_token, :use_iam_profile, :aws_credentials_expire_at, :instrumentor, :instrumentor_name
7
+ recognizes :region, :host, :path, :port, :scheme, :persistent, :aws_session_token, :use_iam_profile, :aws_credentials_expire_at, :instrumentor, :instrumentor_name, :sts_endpoint
8
8
 
9
9
  request_path 'fog/aws/requests/sqs'
10
10
  request :change_message_visibility
@@ -14,6 +14,14 @@ module Fog
14
14
  'https' => 443
15
15
  }
16
16
 
17
+ DEFAULT_CONNECTION_OPTIONS = {
18
+ retry_limit: 5,
19
+ retry_interval: 1,
20
+ retry_errors: [
21
+ Excon::Error::Timeout, Excon::Error::Socket, Excon::Error::Server
22
+ ]
23
+ }
24
+
17
25
  MIN_MULTIPART_CHUNK_SIZE = 5242880
18
26
  MAX_SINGLE_PUT_SIZE = 5368709120
19
27
 
@@ -46,7 +54,7 @@ module Fog
46
54
  ]
47
55
 
48
56
  requires :aws_access_key_id, :aws_secret_access_key
49
- 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, :max_put_chunk_size, :max_copy_chunk_size
57
+ 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, :max_put_chunk_size, :max_copy_chunk_size, :aws_credentials_refresh_threshold_seconds, :disable_content_md5_validation, :sts_endpoint
50
58
 
51
59
  secrets :aws_secret_access_key, :hmac
52
60
 
@@ -119,6 +127,7 @@ module Fog
119
127
 
120
128
  module Utils
121
129
  attr_accessor :region
130
+ attr_accessor :disable_content_md5_validation
122
131
 
123
132
  # Amazon S3 limits max chunk size that can be uploaded/copied in a single request to 5GB.
124
133
  # Other S3-compatible storages (like, Ceph) do not have such limit.
@@ -486,6 +495,8 @@ module Fog
486
495
  init_max_put_chunk_size!(options)
487
496
  init_max_copy_chunk_size!(options)
488
497
 
498
+ @disable_content_md5_validation = options[:disable_content_md5_validation] || false
499
+
489
500
  @signature_version = options.fetch(:aws_signature_version, 4)
490
501
  validate_signature_version!
491
502
  setup_credentials(options)
@@ -500,6 +511,8 @@ module Fog
500
511
  end
501
512
 
502
513
  def setup_credentials(options)
514
+ @aws_credentials_refresh_threshold_seconds = options[:aws_credentials_refresh_threshold_seconds]
515
+
503
516
  @aws_access_key_id = options[:aws_access_key_id]
504
517
  @aws_secret_access_key = options[:aws_secret_access_key]
505
518
  @aws_session_token = options[:aws_session_token]
@@ -541,7 +554,8 @@ module Fog
541
554
  @use_iam_profile = options[:use_iam_profile]
542
555
  @instrumentor = options[:instrumentor]
543
556
  @instrumentor_name = options[:instrumentor_name] || 'fog.aws.storage'
544
- @connection_options = options[:connection_options] || {}
557
+ @connection_options =
558
+ DEFAULT_CONNECTION_OPTIONS.merge(options[:connection_options] || {})
545
559
  @persistent = options.fetch(:persistent, false)
546
560
  @acceleration = options.fetch(:acceleration, false)
547
561
  @signature_version = options.fetch(:aws_signature_version, 4)
@@ -552,6 +566,8 @@ module Fog
552
566
  init_max_put_chunk_size!(options)
553
567
  init_max_copy_chunk_size!(options)
554
568
 
569
+ @disable_content_md5_validation = options[:disable_content_md5_validation] || false
570
+
555
571
  @region = options[:region] || DEFAULT_REGION
556
572
 
557
573
  if @endpoint = options[:endpoint]
@@ -577,6 +593,8 @@ module Fog
577
593
 
578
594
 
579
595
  def setup_credentials(options)
596
+ @aws_credentials_refresh_threshold_seconds = options[:aws_credentials_refresh_threshold_seconds]
597
+
580
598
  @aws_access_key_id = options[:aws_access_key_id]
581
599
  @aws_secret_access_key = options[:aws_secret_access_key]
582
600
  @aws_session_token = options[:aws_session_token]
@@ -4,7 +4,7 @@ module Fog
4
4
  extend Fog::AWS::CredentialFetcher::ServiceMethods
5
5
 
6
6
  requires :aws_access_key_id, :aws_secret_access_key
7
- recognizes :host, :path, :port, :scheme, :instrumentor, :instrumentor_name, :region, :persistent, :aws_session_token
7
+ recognizes :host, :path, :port, :scheme, :instrumentor, :instrumentor_name, :region, :persistent, :aws_session_token, :aws_credentials_expire_at, :sts_endpoint
8
8
 
9
9
  model_path 'fog/aws/models/support'
10
10
  request_path 'fog/aws/requests/support'
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module AWS
3
- VERSION = "3.13.0"
3
+ VERSION = "3.21.0"
4
4
  end
5
5
  end
data/lib/fog/aws.rb CHANGED
@@ -224,14 +224,14 @@ module Fog
224
224
  'ap-east-1',
225
225
  'ap-northeast-1', 'ap-northeast-2', 'ap-northeast-3',
226
226
  'ap-south-1',
227
- 'ap-southeast-1', 'ap-southeast-2',
227
+ 'ap-southeast-1', 'ap-southeast-2', 'ap-southeast-3', 'ap-southeast-4',
228
228
  'ca-central-1',
229
229
  'cn-north-1',
230
230
  'cn-northwest-1',
231
231
  'eu-central-1',
232
232
  'eu-north-1',
233
- 'eu-west-1', 'eu-west-2', 'eu-west-3', 'eu-south-1',
234
- 'me-south-1',
233
+ 'eu-west-1', 'eu-west-2', 'eu-west-3', 'eu-south-1', 'eu-south-2',
234
+ 'me-south-1','me-central-1',
235
235
  'us-east-1', 'us-east-2',
236
236
  'us-west-1', 'us-west-2',
237
237
  'sa-east-1',
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.13.0
4
+ version: 3.21.0
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: 2022-02-13 00:00:00.000000000 Z
12
+ date: 2023-09-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -1458,7 +1458,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1458
1458
  - !ruby/object:Gem::Version
1459
1459
  version: '0'
1460
1460
  requirements: []
1461
- rubygems_version: 3.3.5
1461
+ rubygems_version: 3.3.26
1462
1462
  signing_key:
1463
1463
  specification_version: 4
1464
1464
  summary: Module for the 'fog' gem to support Amazon Web Services.