aws-sdk-s3 1.104.0 → 1.105.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 603b3a962fd1dd0ee129fb2989e3dca151121bbbe529bf86561d7a0ffed5641b
4
- data.tar.gz: c2407aecd41f0c81cbafdac1de0ef83196c66b0f7a97c688fbe7c04c94e77679
3
+ metadata.gz: 24f59e973ff598dd26d05f76e33a018f25996a1c2d1861212ed76df16bbebf88
4
+ data.tar.gz: b8cfed10b315b31359357ddf6f8553a1e3c8192923a2049cbba6e118e407c308
5
5
  SHA512:
6
- metadata.gz: f1b83a39dedcdd62ab5a62ba727b60df00cd66ec3fad4cf3a4f357d049b596b30d69b8e47661be52020527841abb8bfbd076b1436e22c274c902a6d56d995701
7
- data.tar.gz: ee7cdd1a1519e64f404cb3c6000e397ddd025746095f7238b643624ad6c7c789229986a6194eaf6d010425c170440c6806ebdeeb1bae8efa51a87c9235d945f1
6
+ metadata.gz: 247d21d067a9fcc852d51aabb5b0e835faf9e1b4a34cee7686d74ce9f246eea7d6860174aa0f47a61ea7e871a8f0343b259d710d324f9b05c189fa905101dd7f
7
+ data.tar.gz: 1ba3f24ac417148c81370a9d2d760c232a52ee4041c76ae17c3702fade8d56127791219c5153303b6f251a69b9931261e0db3dc81f8f0e7fdde53f904264e1e0
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.105.1 (2021-11-05)
5
+ ------------------
6
+
7
+ * Issue - Raise error when `use_fips_endpoint` is used with `use_accelerate_endpoint`.
8
+
9
+ 1.105.0 (2021-11-04)
10
+ ------------------
11
+
12
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
13
+
4
14
  1.104.0 (2021-10-18)
5
15
  ------------------
6
16
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.104.0
1
+ 1.105.1
@@ -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.1'
14065
14070
  Seahorse::Client::Request.new(handlers, context)
14066
14071
  end
14067
14072
 
@@ -41,11 +41,17 @@ 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'
48
48
  end
49
+ # Raise if :use_fips_endpoint and accelerate are both provided
50
+ if accelerate && context.config.use_fips_endpoint
51
+ raise ArgumentError,
52
+ 'Cannot use both :use_accelerate_endpoint and '\
53
+ ':use_fips_endpoint'
54
+ end
49
55
  context[:use_accelerate_endpoint] = accelerate
50
56
  @handler.call(context)
51
57
  end
@@ -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.1'
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.1
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-05 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: