aws-sdk-s3 1.104.0 → 1.105.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 603b3a962fd1dd0ee129fb2989e3dca151121bbbe529bf86561d7a0ffed5641b
4
- data.tar.gz: c2407aecd41f0c81cbafdac1de0ef83196c66b0f7a97c688fbe7c04c94e77679
3
+ metadata.gz: 3570e4d131d777fc468050c52e0c742650eac6f7ba0642303a09a62cca1e0c03
4
+ data.tar.gz: f9bbe42b3c4c7f772d499a83334ce234c62eeed8fd3e752a4b3dcbc70972f1d4
5
5
  SHA512:
6
- metadata.gz: f1b83a39dedcdd62ab5a62ba727b60df00cd66ec3fad4cf3a4f357d049b596b30d69b8e47661be52020527841abb8bfbd076b1436e22c274c902a6d56d995701
7
- data.tar.gz: ee7cdd1a1519e64f404cb3c6000e397ddd025746095f7238b643624ad6c7c789229986a6194eaf6d010425c170440c6806ebdeeb1bae8efa51a87c9235d945f1
6
+ metadata.gz: 023fc37fe1dd4f1315892fa933c5095e55c2a70cfb170ef195c62024a8e1533688dfec9f09550127937434f28acbfe618968c302eafb6a0deeeb700de2a22a8e
7
+ data.tar.gz: 9949a6da8a8ce2ebc73415516a3344398a90b14c0d55c013360e4ecfac488cdef3550b950777738baebd999a3ccc41091e5a1d6704893fe9f32a29af7a61bed1
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.105.0 (2021-11-04)
5
+ ------------------
6
+
7
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
8
+
4
9
  1.104.0 (2021-10-18)
5
10
  ------------------
6
11
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.104.0
1
+ 1.105.0
@@ -25,25 +25,25 @@ module Aws
25
25
  if @region.empty? || @account_id.empty?
26
26
  raise ArgumentError,
27
27
  'S3 Access Point ARNs must contain both a region '\
28
- 'and an account id.'
28
+ 'and an account ID.'
29
29
  end
30
30
 
31
31
  if @region.include?('-fips') || @region.include?('fips-')
32
32
  raise ArgumentError,
33
- 'S3 Access Point ARNs cannot contain a FIPS region'
33
+ 'S3 Access Point ARNs cannot contain a FIPS region.'
34
34
  end
35
35
 
36
36
  if @type != 'accesspoint'
37
- raise ArgumentError, 'Invalid ARN, resource format is not correct'
37
+ raise ArgumentError, 'Invalid ARN, resource format is not correct.'
38
38
  end
39
39
 
40
40
  if @access_point_name.nil? || @access_point_name.empty?
41
- raise ArgumentError, 'Missing ARN accesspoint name.'
41
+ raise ArgumentError, 'Missing ARN Access Point name.'
42
42
  end
43
43
 
44
44
  if @extra
45
45
  raise ArgumentError,
46
- 'ARN accesspoint resource must be a single value.'
46
+ 'ARN Access Point resource must be a single value.'
47
47
  end
48
48
 
49
49
  unless Seahorse::Util.host_label?(
@@ -60,7 +60,7 @@ module Aws
60
60
  if custom_endpoint
61
61
  "#{pfx}.#{custom_endpoint}"
62
62
  else
63
- sfx = Aws::Partitions::EndpointProvider.dns_suffix_for(region)
63
+ sfx = Aws::Partitions::EndpointProvider.dns_suffix_for(region, 's3')
64
64
  "#{pfx}.s3-accesspoint#{'-fips' if fips}#{'.dualstack' if dualstack}.#{region}.#{sfx}"
65
65
  end
66
66
  end
@@ -55,12 +55,11 @@ module Aws
55
55
  end
56
56
  end
57
57
 
58
- def host_url(region, fips = false, dualstack = false, custom_endpoint = nil)
58
+ def host_url(_region, _fips = false, _dualstack = false, custom_endpoint = nil)
59
59
  if custom_endpoint
60
60
  "#{@mrap_alias}.#{custom_endpoint}"
61
61
  else
62
-
63
- sfx = Aws::Partitions::EndpointProvider.dns_suffix_for(@partition)
62
+ sfx = Aws::Partitions::EndpointProvider.dns_suffix_for(@partition, 's3')
64
63
  "#{@mrap_alias}.accesspoint.s3-global.#{sfx}"
65
64
  end
66
65
  end
@@ -19,18 +19,18 @@ module Aws
19
19
 
20
20
  def validate_arn!
21
21
  unless @service == 's3-object-lambda'
22
- raise ArgumentError, 'Must provide a valid S3 Object Lambdas ARN.'
22
+ raise ArgumentError, 'Must provide a valid S3 Object Lambda ARN.'
23
23
  end
24
24
 
25
25
  if @region.empty? || @account_id.empty?
26
26
  raise ArgumentError,
27
27
  'S3 Object Lambdas ARNs must contain both a region '\
28
- 'and an account id.'
28
+ 'and an account ID.'
29
29
  end
30
30
 
31
31
  if @region.include?('-fips') || @region.include?('fips-')
32
32
  raise ArgumentError,
33
- 'S3 Access Point ARNs cannot contain a FIPS region'
33
+ 'S3 Object Lambda ARNs cannot contain a FIPS region'
34
34
  end
35
35
 
36
36
  if @type != 'accesspoint'
@@ -38,12 +38,12 @@ module Aws
38
38
  end
39
39
 
40
40
  if @access_point_name.nil? || @access_point_name.empty?
41
- raise ArgumentError, 'Missing ARN accesspoint name.'
41
+ raise ArgumentError, 'Missing ARN Access Point name.'
42
42
  end
43
43
 
44
44
  if @extra
45
45
  raise ArgumentError,
46
- 'ARN accesspoint resource must be a single value.'
46
+ 'ARN Access Point resource must be a single value.'
47
47
  end
48
48
 
49
49
  unless Seahorse::Util.host_label?(
@@ -60,7 +60,7 @@ module Aws
60
60
  if custom_endpoint
61
61
  "#{pfx}.#{custom_endpoint}"
62
62
  else
63
- sfx = Aws::Partitions::EndpointProvider.dns_suffix_for(region)
63
+ sfx = Aws::Partitions::EndpointProvider.dns_suffix_for(region, 's3')
64
64
  "#{pfx}.s3-object-lambda#{'-fips' if fips}.#{region}.#{sfx}"
65
65
  end
66
66
  end
@@ -20,13 +20,14 @@ module Aws
20
20
 
21
21
  def validate_arn!
22
22
  unless @service == 's3-outposts'
23
- raise ArgumentError, 'Must provide a valid S3 Outposts ARN.'
23
+ raise ArgumentError, 'Must provide a valid S3 Outpost Access '\
24
+ 'Point ARN.'
24
25
  end
25
26
 
26
27
  if @region.empty? || @account_id.empty?
27
28
  raise ArgumentError,
28
- 'S3 Outpost ARNs must contain both a region '\
29
- 'and an account id.'
29
+ 'S3 Outpost Access Point ARNs must contain both a region '\
30
+ 'and an account ID.'
30
31
  end
31
32
 
32
33
  if @type != 'outpost' && @subtype != 'accesspoint'
@@ -34,16 +35,16 @@ module Aws
34
35
  end
35
36
 
36
37
  if @outpost_id.nil? || @outpost_id.empty?
37
- raise ArgumentError, 'Missing ARN outpost id.'
38
+ raise ArgumentError, 'Missing ARN Outpost ID.'
38
39
  end
39
40
 
40
41
  if @access_point_name.nil? || @access_point_name.empty?
41
- raise ArgumentError, 'Missing ARN accesspoint name.'
42
+ raise ArgumentError, 'Missing ARN Access Point name.'
42
43
  end
43
44
 
44
45
  if @extra
45
46
  raise ArgumentError,
46
- 'ARN accesspoint resource must be a single value.'
47
+ 'ARN Access Point resource must be a single value.'
47
48
  end
48
49
 
49
50
  unless Seahorse::Util.host_label?(
@@ -359,9 +359,14 @@ module Aws::S3
359
359
  # for all object operations. You must first enable accelerate for
360
360
  # each bucket. [Go here for more information](http://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html).
361
361
  #
362
- # @option options [Boolean] :use_dualstack_endpoint (false)
363
- # When set to `true`, IPv6-compatible bucket endpoints will be used
364
- # for all operations.
362
+ # @option options [Boolean] :use_dualstack_endpoint
363
+ # When set to `true`, dualstack enabled endpoints (with `.aws` TLD)
364
+ # will be used if available.
365
+ #
366
+ # @option options [Boolean] :use_fips_endpoint
367
+ # When set to `true`, fips compatible endpoints will be used if available.
368
+ # When a `fips` region is used, the region is normalized and this config
369
+ # is set to `true`.
365
370
  #
366
371
  # @option options [Boolean] :validate_params (true)
367
372
  # When `true`, request parameters are validated before
@@ -14061,7 +14066,7 @@ module Aws::S3
14061
14066
  params: params,
14062
14067
  config: config)
14063
14068
  context[:gem_name] = 'aws-sdk-s3'
14064
- context[:gem_version] = '1.104.0'
14069
+ context[:gem_version] = '1.105.0'
14065
14070
  Seahorse::Client::Request.new(handlers, context)
14066
14071
  end
14067
14072
 
@@ -41,7 +41,7 @@ each bucket. [Go here for more information](http://docs.aws.amazon.com/AmazonS3/
41
41
  accelerate = context.params.delete(:use_accelerate_endpoint)
42
42
  end
43
43
  accelerate = context.config.use_accelerate_endpoint if accelerate.nil?
44
- # Raise if :endpoint and dualstack are both provided
44
+ # Raise if :endpoint and accelerate are both provided
45
45
  if accelerate && !context.config.regional_endpoint
46
46
  raise ArgumentError,
47
47
  'Cannot use both :use_accelerate_endpoint and :endpoint'
@@ -77,17 +77,10 @@ result in cross region requests.
77
77
  if arn
78
78
  validate_config!(context, arn)
79
79
 
80
- fips = false
81
- if resolved_region.include?('fips')
82
- fips = true
83
- resolved_region = resolved_region.gsub('fips-', '')
84
- .gsub('-fips', '')
85
- end
86
-
87
80
  context.metadata[:s3_arn] = {
88
81
  arn: arn,
89
82
  resolved_region: resolved_region,
90
- fips: fips,
83
+ fips: context.config.use_fips_endpoint,
91
84
  dualstack: extract_dualstack_config!(context)
92
85
  }
93
86
  end
@@ -126,7 +119,8 @@ result in cross region requests.
126
119
 
127
120
  if !arn.support_dualstack? && context[:use_dualstack_endpoint]
128
121
  raise ArgumentError,
129
- 'Cannot provide an Outpost Access Point or Multi-region Access Point ARN'\
122
+ 'Cannot provide an Outpost Access Point, Object Lambda, '\
123
+ 'or Multi-region Access Point ARN'\
130
124
  ' when `:use_dualstack_endpoint` is set to true.'
131
125
  end
132
126
 
@@ -135,6 +129,12 @@ result in cross region requests.
135
129
  'Cannot provide a Multi-region Access Point ARN with '\
136
130
  '`:s3_disable_multiregion_access_points` set to true'
137
131
  end
132
+
133
+ if context.config.use_fips_endpoint && !arn.support_fips?
134
+ raise ArgumentError,
135
+ 'FIPS client regions are not supported for this type '\
136
+ 'of ARN.'
137
+ end
138
138
  end
139
139
  end
140
140
 
@@ -146,7 +146,7 @@ result in cross region requests.
146
146
  s3_arn = resolve_arn_type!(arn)
147
147
  s3_arn.validate_arn!
148
148
  validate_region_config!(s3_arn, region, use_arn_region)
149
- region = s3_arn.region if use_arn_region && !region.include?('fips')
149
+ region = s3_arn.region if use_arn_region
150
150
  [region, s3_arn]
151
151
  else
152
152
  [region]
@@ -231,19 +231,6 @@ result in cross region requests.
231
231
  raise Aws::Errors::InvalidARNPartitionError
232
232
  end
233
233
  else
234
- if region.include?('fips')
235
- # If ARN type doesn't support FIPS but the client region is FIPS
236
- unless arn.support_fips?
237
- raise ArgumentError,
238
- 'FIPS client regions are not supported for this type '\
239
- 'of ARN.'
240
- end
241
-
242
- fips = true
243
- # Normalize the region so we can compare partition and regions
244
- region = region.gsub('fips-', '').gsub('-fips', '')
245
- end
246
-
247
234
  # use_arn_region does not apply to MRAP (global) arns
248
235
  unless arn.region.empty?
249
236
  # Raise if the ARN and client regions are in different partitions
@@ -254,7 +241,7 @@ result in cross region requests.
254
241
 
255
242
  # Raise if regions mismatch
256
243
  # Either when it's a fips client or not using the ARN region
257
- if (!use_arn_region || fips) && region != arn.region
244
+ if !use_arn_region && region != arn.region
258
245
  raise Aws::Errors::InvalidARNRegionError
259
246
  end
260
247
  end
@@ -24,7 +24,7 @@ request URI and never moved to the host as a sub-domain.
24
24
  DOCS
25
25
 
26
26
  def add_handlers(handlers, config)
27
- handlers.add(Handler) unless config.force_path_style
27
+ handlers.add(Handler, priority: 48) unless config.force_path_style
28
28
  end
29
29
 
30
30
  # @api private
@@ -5,18 +5,9 @@ module Aws
5
5
  module Plugins
6
6
  # @api private
7
7
  class Dualstack < Seahorse::Client::Plugin
8
-
9
- option(:use_dualstack_endpoint,
10
- default: false,
11
- doc_type: 'Boolean',
12
- docstring: <<-DOCS)
13
- When set to `true`, IPv6-compatible bucket endpoints will be used
14
- for all operations.
15
- DOCS
16
-
17
8
  def add_handlers(handlers, config)
18
9
  handlers.add(OptionHandler, step: :initialize)
19
- handlers.add(DualstackHandler, step: :build, priority: 11)
10
+ handlers.add(DualstackHandler, step: :build, priority: 49)
20
11
  end
21
12
 
22
13
  # @api private
@@ -40,38 +31,41 @@ for all operations.
40
31
  # @api private
41
32
  class DualstackHandler < Seahorse::Client::Handler
42
33
  def call(context)
43
- if context.config.regional_endpoint && use_dualstack_endpoint?(context)
34
+ # only rewrite the endpoint if it's not a custom endpoint
35
+ # accelerate/ARN already handle dualstack cases, so ignore these
36
+ # check to see if dualstack is on but configured off via operation
37
+ if context.config.regional_endpoint &&
38
+ use_dualstack_endpoint?(context)
44
39
  apply_dualstack_endpoint(context)
45
40
  end
46
41
  @handler.call(context)
47
42
  end
48
43
 
49
44
  private
50
- def apply_dualstack_endpoint(context)
51
- bucket_name = context.params[:bucket]
52
- region = context.config.region
53
- dns_suffix = Aws::Partitions::EndpointProvider.dns_suffix_for(region)
54
45
 
55
- if use_bucket_dns?(bucket_name, context)
56
- host = "#{bucket_name}.s3.dualstack.#{region}.#{dns_suffix}"
57
- else
58
- host = "s3.dualstack.#{region}.#{dns_suffix}"
59
- end
46
+ def apply_dualstack_endpoint(context)
47
+ new_endpoint = Aws::Partitions::EndpointProvider.resolve(
48
+ context.config.region,
49
+ 's3',
50
+ 'regional',
51
+ {
52
+ dualstack: context[:use_dualstack_endpoint],
53
+ fips: context.config.use_fips_endpoint
54
+ }
55
+ )
60
56
  endpoint = URI.parse(context.http_request.endpoint.to_s)
61
- endpoint.scheme = context.http_request.endpoint.scheme
62
- endpoint.port = context.http_request.endpoint.port
63
- endpoint.host = host
64
- context.http_request.endpoint = endpoint.to_s
65
- end
66
-
67
- def use_bucket_dns?(bucket_name, context)
68
- ssl = context.http_request.endpoint.scheme == "https"
69
- bucket_name && BucketDns.dns_compatible?(bucket_name, ssl) &&
70
- !context.config.force_path_style
57
+ endpoint.host = URI.parse(new_endpoint).host
58
+ context.http_request.endpoint = endpoint
71
59
  end
72
60
 
73
61
  def use_dualstack_endpoint?(context)
74
- context[:use_dualstack_endpoint] && !context[:use_accelerate_endpoint]
62
+ # case when dualstack is turned off via operation
63
+ (context[:use_dualstack_endpoint] ||
64
+ context.config.use_dualstack_endpoint) &&
65
+ # accelerate plugin already applies dualstack
66
+ !context[:use_accelerate_endpoint] &&
67
+ # arns handle dualstack
68
+ !context.metadata[:s3_arn]
75
69
  end
76
70
  end
77
71
 
@@ -22,7 +22,9 @@ module Aws
22
22
  # S3 removes core's signature_v4 plugin that checks for this
23
23
  raise Aws::Errors::MissingRegionError if cfg.region.nil?
24
24
 
25
- Aws::Partitions::EndpointProvider.signing_region(cfg.region, 's3')
25
+ Aws::Partitions::EndpointProvider.signing_region(
26
+ cfg.region, 's3'
27
+ )
26
28
  end
27
29
 
28
30
  def add_handlers(handlers, cfg)
@@ -162,7 +164,12 @@ module Aws
162
164
 
163
165
  def custom_endpoint?(resp)
164
166
  resolved_suffix = Aws::Partitions::EndpointProvider.dns_suffix_for(
165
- resp.context.config.region
167
+ resp.context.config.region,
168
+ 's3',
169
+ {
170
+ dualstack: resp.context[:use_dualstack_endpoint],
171
+ fips: resp.context.config.use_fips_endpoint
172
+ }
166
173
  )
167
174
  !resp.context.http_request.endpoint.hostname.include?(resolved_suffix)
168
175
  end
@@ -234,12 +241,20 @@ module Aws
234
241
  # Otherwise it will retry with the ARN as the bucket name.
235
242
  def new_hostname(context, region)
236
243
  uri = URI.parse(
237
- Aws::Partitions::EndpointProvider.resolve(region, 's3')
244
+ Aws::Partitions::EndpointProvider.resolve(
245
+ region, 's3', 'regional',
246
+ {
247
+ dualstack: context[:use_dualstack_endpoint],
248
+ fips: context.config.use_fips_endpoint
249
+ }
250
+ )
238
251
  )
239
252
 
240
253
  if (arn = context.metadata[:s3_arn])
241
254
  # Retry with the response region and not the ARN resolved one
242
- ARN.resolve_url!(uri, arn[:arn], region).host
255
+ ARN.resolve_url!(
256
+ uri, arn[:arn], region, arn[:fips], arn[:dualstack]
257
+ ).host
243
258
  else
244
259
  "#{context.params[:bucket]}.#{uri.host}"
245
260
  end
data/lib/aws-sdk-s3.rb CHANGED
@@ -69,6 +69,6 @@ require_relative 'aws-sdk-s3/event_streams'
69
69
  # @!group service
70
70
  module Aws::S3
71
71
 
72
- GEM_VERSION = '1.104.0'
72
+ GEM_VERSION = '1.105.0'
73
73
 
74
74
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-s3
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.104.0
4
+ version: 1.105.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-18 00:00:00.000000000 Z
11
+ date: 2021-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-kms
@@ -47,7 +47,7 @@ dependencies:
47
47
  version: '3'
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
- version: 3.121.2
50
+ version: 3.122.0
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
@@ -57,7 +57,7 @@ dependencies:
57
57
  version: '3'
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: 3.121.2
60
+ version: 3.122.0
61
61
  description: Official AWS Ruby gem for Amazon Simple Storage Service (Amazon S3).
62
62
  This gem is part of the AWS SDK for Ruby.
63
63
  email: