aws-sdk-s3 1.114.0 → 1.125.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 +4 -4
- data/CHANGELOG.md +94 -0
- data/VERSION +1 -1
- data/lib/aws-sdk-s3/bucket.rb +51 -28
- data/lib/aws-sdk-s3/bucket_acl.rb +9 -3
- data/lib/aws-sdk-s3/bucket_cors.rb +12 -4
- data/lib/aws-sdk-s3/bucket_lifecycle.rb +12 -4
- data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +12 -4
- data/lib/aws-sdk-s3/bucket_logging.rb +9 -3
- data/lib/aws-sdk-s3/bucket_notification.rb +9 -3
- data/lib/aws-sdk-s3/bucket_policy.rb +12 -4
- data/lib/aws-sdk-s3/bucket_request_payment.rb +9 -3
- data/lib/aws-sdk-s3/bucket_tagging.rb +12 -4
- data/lib/aws-sdk-s3/bucket_versioning.rb +15 -5
- data/lib/aws-sdk-s3/bucket_website.rb +12 -4
- data/lib/aws-sdk-s3/client.rb +1721 -1457
- data/lib/aws-sdk-s3/client_api.rb +189 -189
- data/lib/aws-sdk-s3/customizations/bucket.rb +23 -47
- data/lib/aws-sdk-s3/customizations/errors.rb +27 -0
- data/lib/aws-sdk-s3/customizations/object.rb +32 -19
- data/lib/aws-sdk-s3/customizations/types/permanent_redirect.rb +26 -0
- data/lib/aws-sdk-s3/customizations.rb +2 -0
- data/lib/aws-sdk-s3/encryption/client.rb +6 -2
- data/lib/aws-sdk-s3/encryption/kms_cipher_provider.rb +13 -9
- data/lib/aws-sdk-s3/encryptionV2/client.rb +6 -2
- data/lib/aws-sdk-s3/encryptionV2/decrypt_handler.rb +1 -0
- data/lib/aws-sdk-s3/encryptionV2/kms_cipher_provider.rb +10 -6
- data/lib/aws-sdk-s3/endpoint_parameters.rb +142 -0
- data/lib/aws-sdk-s3/endpoint_provider.rb +733 -0
- data/lib/aws-sdk-s3/endpoints.rb +2150 -0
- data/lib/aws-sdk-s3/file_downloader.rb +28 -24
- data/lib/aws-sdk-s3/file_uploader.rb +8 -6
- data/lib/aws-sdk-s3/multipart_stream_uploader.rb +41 -13
- data/lib/aws-sdk-s3/multipart_upload.rb +12 -4
- data/lib/aws-sdk-s3/multipart_upload_part.rb +10 -4
- data/lib/aws-sdk-s3/object.rb +86 -57
- data/lib/aws-sdk-s3/object_acl.rb +9 -3
- data/lib/aws-sdk-s3/object_copier.rb +7 -5
- data/lib/aws-sdk-s3/object_multipart_copier.rb +11 -5
- data/lib/aws-sdk-s3/object_summary.rb +72 -46
- data/lib/aws-sdk-s3/object_version.rb +21 -9
- data/lib/aws-sdk-s3/plugins/accelerate.rb +3 -50
- data/lib/aws-sdk-s3/plugins/arn.rb +0 -184
- data/lib/aws-sdk-s3/plugins/bucket_dns.rb +3 -39
- data/lib/aws-sdk-s3/plugins/bucket_name_restrictions.rb +1 -6
- data/lib/aws-sdk-s3/plugins/dualstack.rb +1 -49
- data/lib/aws-sdk-s3/plugins/endpoints.rb +262 -0
- data/lib/aws-sdk-s3/plugins/expect_100_continue.rb +2 -1
- data/lib/aws-sdk-s3/plugins/iad_regional_endpoint.rb +0 -29
- data/lib/aws-sdk-s3/plugins/s3_signer.rb +32 -126
- data/lib/aws-sdk-s3/presigned_post.rb +9 -16
- data/lib/aws-sdk-s3/presigner.rb +20 -33
- data/lib/aws-sdk-s3/resource.rb +7 -3
- data/lib/aws-sdk-s3/types.rb +406 -3903
- data/lib/aws-sdk-s3.rb +5 -1
- metadata +10 -9
- data/lib/aws-sdk-s3/arn/access_point_arn.rb +0 -69
- data/lib/aws-sdk-s3/arn/multi_region_access_point_arn.rb +0 -68
- data/lib/aws-sdk-s3/arn/object_lambda_arn.rb +0 -69
- data/lib/aws-sdk-s3/arn/outpost_access_point_arn.rb +0 -74
- data/lib/aws-sdk-s3/plugins/object_lambda_endpoint.rb +0 -25
@@ -5,22 +5,6 @@ require 'uri'
|
|
5
5
|
module Aws
|
6
6
|
module S3
|
7
7
|
class Bucket
|
8
|
-
# Save the old initialize method so that we can call 'super'.
|
9
|
-
old_initialize = instance_method(:initialize)
|
10
|
-
# Make the method redefinable
|
11
|
-
alias_method :initialize, :initialize
|
12
|
-
# Define a new initialize method that extracts out a bucket ARN.
|
13
|
-
define_method(:initialize) do |*args|
|
14
|
-
old_initialize.bind(self).call(*args)
|
15
|
-
resolved_region, arn = Plugins::ARN.resolve_arn!(
|
16
|
-
name,
|
17
|
-
client.config.region,
|
18
|
-
client.config.s3_use_arn_region
|
19
|
-
)
|
20
|
-
@resolved_region = resolved_region
|
21
|
-
@arn = arn
|
22
|
-
end
|
23
|
-
|
24
8
|
# Deletes all objects and versioned objects from this bucket
|
25
9
|
#
|
26
10
|
# @example
|
@@ -105,14 +89,27 @@ module Aws
|
|
105
89
|
if options[:virtual_host]
|
106
90
|
scheme = options.fetch(:secure, true) ? 'https' : 'http'
|
107
91
|
"#{scheme}://#{name}"
|
108
|
-
elsif @arn
|
109
|
-
Plugins::ARN.resolve_url!(
|
110
|
-
client.config.endpoint.dup,
|
111
|
-
@arn,
|
112
|
-
@resolved_region
|
113
|
-
).to_s
|
114
92
|
else
|
115
|
-
|
93
|
+
# Taken from Aws::S3::Endpoints module
|
94
|
+
unless client.config.regional_endpoint
|
95
|
+
endpoint = client.config.endpoint.to_s
|
96
|
+
end
|
97
|
+
params = Aws::S3::EndpointParameters.new(
|
98
|
+
bucket: name,
|
99
|
+
region: client.config.region,
|
100
|
+
use_fips: client.config.use_fips_endpoint,
|
101
|
+
use_dual_stack: client.config.use_dualstack_endpoint,
|
102
|
+
endpoint: endpoint,
|
103
|
+
force_path_style: client.config.force_path_style,
|
104
|
+
accelerate: client.config.use_accelerate_endpoint,
|
105
|
+
use_global_endpoint: client.config.s3_us_east_1_regional_endpoint == 'legacy',
|
106
|
+
use_object_lambda_endpoint: nil,
|
107
|
+
disable_access_points: nil,
|
108
|
+
disable_multi_region_access_points: client.config.s3_disable_multiregion_access_points,
|
109
|
+
use_arn_region: client.config.s3_use_arn_region,
|
110
|
+
)
|
111
|
+
endpoint = Aws::S3::EndpointProvider.new.resolve_endpoint(params)
|
112
|
+
endpoint.url
|
116
113
|
end
|
117
114
|
end
|
118
115
|
|
@@ -137,34 +134,13 @@ module Aws
|
|
137
134
|
|
138
135
|
# @api private
|
139
136
|
def load
|
140
|
-
@data =
|
137
|
+
@data = Aws::Plugins::UserAgent.feature('resource') do
|
138
|
+
client.list_buckets.buckets.find { |b| b.name == name }
|
139
|
+
end
|
141
140
|
raise "unable to load bucket #{name}" if @data.nil?
|
142
141
|
|
143
142
|
self
|
144
143
|
end
|
145
|
-
|
146
|
-
private
|
147
|
-
|
148
|
-
def s3_bucket_url
|
149
|
-
url = client.config.endpoint.dup
|
150
|
-
if bucket_as_hostname?(url.scheme == 'https')
|
151
|
-
url.host = "#{name}.#{url.host}"
|
152
|
-
else
|
153
|
-
url.path += '/' unless url.path[-1] == '/'
|
154
|
-
url.path += Seahorse::Util.uri_escape(name)
|
155
|
-
end
|
156
|
-
if (client.config.region == 'us-east-1') &&
|
157
|
-
(client.config.s3_us_east_1_regional_endpoint == 'legacy')
|
158
|
-
url.host = Plugins::IADRegionalEndpoint.legacy_host(url.host)
|
159
|
-
end
|
160
|
-
url.to_s
|
161
|
-
end
|
162
|
-
|
163
|
-
def bucket_as_hostname?(https)
|
164
|
-
Plugins::BucketDns.dns_compatible?(name, https) &&
|
165
|
-
!client.config.force_path_style
|
166
|
-
end
|
167
|
-
|
168
144
|
end
|
169
145
|
end
|
170
146
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Aws
|
4
|
+
module S3
|
5
|
+
module Errors
|
6
|
+
# Hijack PermanentRedirect dynamic error to also include endpoint
|
7
|
+
# and bucket.
|
8
|
+
class PermanentRedirect < ServiceError
|
9
|
+
# @param [Seahorse::Client::RequestContext] context
|
10
|
+
# @param [String] message
|
11
|
+
# @param [Aws::S3::Types::PermanentRedirect] data
|
12
|
+
def initialize(context, message, _data = Aws::EmptyStructure.new)
|
13
|
+
data = Aws::S3::Types::PermanentRedirect.new(message: message)
|
14
|
+
body = context.http_response.body_contents
|
15
|
+
if (endpoint = body.match(/<Endpoint>(.+?)<\/Endpoint>/))
|
16
|
+
data.endpoint = endpoint[1]
|
17
|
+
end
|
18
|
+
if (bucket = body.match(/<Bucket>(.+?)<\/Bucket>/))
|
19
|
+
data.bucket = bucket[1]
|
20
|
+
end
|
21
|
+
data.region = context.http_response.headers['x-amz-bucket-region']
|
22
|
+
super(context, message, data)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -27,10 +27,13 @@ module Aws
|
|
27
27
|
# necessary for objects larger than 5GB and can provide
|
28
28
|
# performance improvements on large objects. Amazon S3 does
|
29
29
|
# not accept multipart copies for objects smaller than 5MB.
|
30
|
+
# Object metadata such as Content-Type will be copied, however,
|
31
|
+
# Checksums are not copied.
|
30
32
|
#
|
31
33
|
# @option options [Integer] :content_length Only used when
|
32
34
|
# `:multipart_copy` is `true`. Passing this options avoids a HEAD
|
33
|
-
# request to query the source object size
|
35
|
+
# request to query the source object size but prevents object metadata
|
36
|
+
# from being copied. Raises an `ArgumentError` if
|
34
37
|
# this option is provided when `:multipart_copy` is `false` or not set.
|
35
38
|
#
|
36
39
|
# @option options [S3::Client] :copy_source_client Only used when
|
@@ -65,11 +68,13 @@ module Aws
|
|
65
68
|
# @see #copy_to
|
66
69
|
#
|
67
70
|
def copy_from(source, options = {})
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
71
|
+
Aws::Plugins::UserAgent.feature('resource') do
|
72
|
+
if Hash === source && source[:copy_source]
|
73
|
+
# for backwards compatibility
|
74
|
+
@client.copy_object(source.merge(bucket: bucket_name, key: key))
|
75
|
+
else
|
76
|
+
ObjectCopier.new(self, options).copy_from(source, options)
|
77
|
+
end
|
73
78
|
end
|
74
79
|
end
|
75
80
|
|
@@ -106,7 +111,9 @@ module Aws
|
|
106
111
|
# object.copy_to('src-bucket/src-key', multipart_copy: true)
|
107
112
|
#
|
108
113
|
def copy_to(target, options = {})
|
109
|
-
|
114
|
+
Aws::Plugins::UserAgent.feature('resource') do
|
115
|
+
ObjectCopier.new(self, options).copy_to(target, options)
|
116
|
+
end
|
110
117
|
end
|
111
118
|
|
112
119
|
# Copies and deletes the current object. The object will only be deleted
|
@@ -368,10 +375,12 @@ module Aws
|
|
368
375
|
tempfile: uploading_options.delete(:tempfile),
|
369
376
|
part_size: uploading_options.delete(:part_size)
|
370
377
|
)
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
378
|
+
Aws::Plugins::UserAgent.feature('resource') do
|
379
|
+
uploader.upload(
|
380
|
+
uploading_options.merge(bucket: bucket_name, key: key),
|
381
|
+
&block
|
382
|
+
)
|
383
|
+
end
|
375
384
|
true
|
376
385
|
end
|
377
386
|
|
@@ -437,10 +446,12 @@ module Aws
|
|
437
446
|
multipart_threshold: uploading_options.delete(:multipart_threshold),
|
438
447
|
client: client
|
439
448
|
)
|
440
|
-
response =
|
441
|
-
|
442
|
-
|
443
|
-
|
449
|
+
response = Aws::Plugins::UserAgent.feature('resource') do
|
450
|
+
uploader.upload(
|
451
|
+
source,
|
452
|
+
uploading_options.merge(bucket: bucket_name, key: key)
|
453
|
+
)
|
454
|
+
end
|
444
455
|
yield response if block_given?
|
445
456
|
true
|
446
457
|
end
|
@@ -477,10 +488,12 @@ module Aws
|
|
477
488
|
# any errors.
|
478
489
|
def download_file(destination, options = {})
|
479
490
|
downloader = FileDownloader.new(client: client)
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
491
|
+
Aws::Plugins::UserAgent.feature('resource') do
|
492
|
+
downloader.download(
|
493
|
+
destination,
|
494
|
+
options.merge(bucket: bucket_name, key: key)
|
495
|
+
)
|
496
|
+
end
|
484
497
|
true
|
485
498
|
end
|
486
499
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Aws
|
4
|
+
module S3
|
5
|
+
module Types
|
6
|
+
# This error is not modeled.
|
7
|
+
#
|
8
|
+
# The bucket you are attempting to access must be addressed using the
|
9
|
+
# specified endpoint. Please send all future requests to this endpoint.
|
10
|
+
#
|
11
|
+
# @!attribute [rw] endpoint
|
12
|
+
# @return [String]
|
13
|
+
#
|
14
|
+
# @!attribute [rw] bucket
|
15
|
+
# @return [String]
|
16
|
+
#
|
17
|
+
# @!attribute [rw] message
|
18
|
+
# @return [String]
|
19
|
+
#
|
20
|
+
class PermanentRedirect < Struct.new(:endpoint, :bucket, :region, :message)
|
21
|
+
SENSITIVE = []
|
22
|
+
include Aws::Structure
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -18,10 +18,12 @@ require 'aws-sdk-s3/presigner'
|
|
18
18
|
|
19
19
|
# customizations to generated classes
|
20
20
|
require 'aws-sdk-s3/customizations/bucket'
|
21
|
+
require 'aws-sdk-s3/customizations/errors'
|
21
22
|
require 'aws-sdk-s3/customizations/object'
|
22
23
|
require 'aws-sdk-s3/customizations/object_summary'
|
23
24
|
require 'aws-sdk-s3/customizations/multipart_upload'
|
24
25
|
require 'aws-sdk-s3/customizations/types/list_object_versions_output'
|
26
|
+
require 'aws-sdk-s3/customizations/types/permanent_redirect'
|
25
27
|
|
26
28
|
[
|
27
29
|
Aws::S3::Object::Collection,
|
@@ -270,7 +270,9 @@ module Aws
|
|
270
270
|
envelope_location: @envelope_location,
|
271
271
|
instruction_file_suffix: @instruction_file_suffix,
|
272
272
|
}
|
273
|
-
|
273
|
+
Aws::Plugins::UserAgent.feature('S3CryptoV1n') do
|
274
|
+
req.send_request
|
275
|
+
end
|
274
276
|
end
|
275
277
|
|
276
278
|
# Gets an object from Amazon S3, decrypting data locally.
|
@@ -298,7 +300,9 @@ module Aws
|
|
298
300
|
envelope_location: envelope_location,
|
299
301
|
instruction_file_suffix: instruction_file_suffix,
|
300
302
|
}
|
301
|
-
|
303
|
+
Aws::Plugins::UserAgent.feature('S3CryptoV1n') do
|
304
|
+
req.send_request(target: block)
|
305
|
+
end
|
302
306
|
end
|
303
307
|
|
304
308
|
private
|
@@ -17,11 +17,13 @@ module Aws
|
|
17
17
|
# envelope and encryption cipher.
|
18
18
|
def encryption_cipher
|
19
19
|
encryption_context = { "kms_cmk_id" => @kms_key_id }
|
20
|
-
key_data =
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
key_data = Aws::Plugins::UserAgent.feature('S3CryptoV1n') do
|
21
|
+
@kms_client.generate_data_key(
|
22
|
+
key_id: @kms_key_id,
|
23
|
+
encryption_context: encryption_context,
|
24
|
+
key_spec: 'AES_256'
|
25
|
+
)
|
26
|
+
end
|
25
27
|
cipher = Utils.aes_encryption_cipher(:CBC)
|
26
28
|
cipher.key = key_data.plaintext
|
27
29
|
envelope = {
|
@@ -58,10 +60,12 @@ module Aws
|
|
58
60
|
"#{envelope['x-amz-wrap-alg']}"
|
59
61
|
end
|
60
62
|
|
61
|
-
key =
|
62
|
-
|
63
|
-
|
64
|
-
|
63
|
+
key = Aws::Plugins::UserAgent.feature('S3CryptoV1n') do
|
64
|
+
@kms_client.decrypt(
|
65
|
+
ciphertext_blob: decode64(envelope['x-amz-key-v2']),
|
66
|
+
encryption_context: encryption_context
|
67
|
+
).plaintext
|
68
|
+
end
|
65
69
|
|
66
70
|
iv = decode64(envelope['x-amz-iv'])
|
67
71
|
block_mode =
|
@@ -361,7 +361,9 @@ module Aws
|
|
361
361
|
instruction_file_suffix: @instruction_file_suffix,
|
362
362
|
kms_encryption_context: kms_encryption_context
|
363
363
|
}
|
364
|
-
|
364
|
+
Aws::Plugins::UserAgent.feature('S3CryptoV2') do
|
365
|
+
req.send_request
|
366
|
+
end
|
365
367
|
end
|
366
368
|
|
367
369
|
# Gets an object from Amazon S3, decrypting data locally.
|
@@ -414,7 +416,9 @@ module Aws
|
|
414
416
|
kms_allow_decrypt_with_any_cmk: kms_any_cmk_mode,
|
415
417
|
security_profile: security_profile
|
416
418
|
}
|
417
|
-
|
419
|
+
Aws::Plugins::UserAgent.feature('S3CryptoV2') do
|
420
|
+
req.send_request(target: block)
|
421
|
+
end
|
418
422
|
end
|
419
423
|
|
420
424
|
private
|
@@ -24,11 +24,13 @@ module Aws
|
|
24
24
|
def encryption_cipher(options = {})
|
25
25
|
validate_key_for_encryption
|
26
26
|
encryption_context = build_encryption_context(@content_encryption_schema, options)
|
27
|
-
key_data =
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
27
|
+
key_data = Aws::Plugins::UserAgent.feature('S3CryptoV2') do
|
28
|
+
@kms_client.generate_data_key(
|
29
|
+
key_id: @kms_key_id,
|
30
|
+
encryption_context: encryption_context,
|
31
|
+
key_spec: 'AES_256'
|
32
|
+
)
|
33
|
+
end
|
32
34
|
cipher = Utils.aes_encryption_cipher(:GCM)
|
33
35
|
cipher.key = key_data.plaintext
|
34
36
|
envelope = {
|
@@ -83,7 +85,9 @@ module Aws
|
|
83
85
|
decrypt_options[:key_id] = @kms_key_id
|
84
86
|
end
|
85
87
|
|
86
|
-
key =
|
88
|
+
key = Aws::Plugins::UserAgent.feature('S3CryptoV2') do
|
89
|
+
@kms_client.decrypt(decrypt_options).plaintext
|
90
|
+
end
|
87
91
|
iv = decode64(envelope['x-amz-iv'])
|
88
92
|
block_mode =
|
89
93
|
case cek_alg
|
@@ -0,0 +1,142 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# WARNING ABOUT GENERATED CODE
|
4
|
+
#
|
5
|
+
# This file is generated. See the contributing guide for more information:
|
6
|
+
# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
|
7
|
+
#
|
8
|
+
# WARNING ABOUT GENERATED CODE
|
9
|
+
|
10
|
+
module Aws::S3
|
11
|
+
# Endpoint parameters used to influence endpoints per request.
|
12
|
+
#
|
13
|
+
# @!attribute bucket
|
14
|
+
# The S3 bucket used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 bucket.
|
15
|
+
#
|
16
|
+
# @return [String]
|
17
|
+
#
|
18
|
+
# @!attribute region
|
19
|
+
# The AWS region used to dispatch the request.
|
20
|
+
#
|
21
|
+
# @return [String]
|
22
|
+
#
|
23
|
+
# @!attribute use_fips
|
24
|
+
# When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
|
25
|
+
#
|
26
|
+
# @return [Boolean]
|
27
|
+
#
|
28
|
+
# @!attribute use_dual_stack
|
29
|
+
# When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
|
30
|
+
#
|
31
|
+
# @return [Boolean]
|
32
|
+
#
|
33
|
+
# @!attribute endpoint
|
34
|
+
# Override the endpoint used to send this request
|
35
|
+
#
|
36
|
+
# @return [String]
|
37
|
+
#
|
38
|
+
# @!attribute force_path_style
|
39
|
+
# When true, force a path-style endpoint to be used where the bucket name is part of the path.
|
40
|
+
#
|
41
|
+
# @return [Boolean]
|
42
|
+
#
|
43
|
+
# @!attribute accelerate
|
44
|
+
# When true, use S3 Accelerate. NOTE: Not all regions support S3 accelerate.
|
45
|
+
#
|
46
|
+
# @return [Boolean]
|
47
|
+
#
|
48
|
+
# @!attribute use_global_endpoint
|
49
|
+
# Whether the global endpoint should be used, rather then the regional endpoint for us-east-1.
|
50
|
+
#
|
51
|
+
# @return [Boolean]
|
52
|
+
#
|
53
|
+
# @!attribute use_object_lambda_endpoint
|
54
|
+
# Internal parameter to use object lambda endpoint for an operation (eg: WriteGetObjectResponse)
|
55
|
+
#
|
56
|
+
# @return [Boolean]
|
57
|
+
#
|
58
|
+
# @!attribute disable_access_points
|
59
|
+
# Internal parameter to disable Access Point Buckets
|
60
|
+
#
|
61
|
+
# @return [Boolean]
|
62
|
+
#
|
63
|
+
# @!attribute disable_multi_region_access_points
|
64
|
+
# Whether multi-region access points (MRAP) should be disabled.
|
65
|
+
#
|
66
|
+
# @return [Boolean]
|
67
|
+
#
|
68
|
+
# @!attribute use_arn_region
|
69
|
+
# When an Access Point ARN is provided and this flag is enabled, the SDK MUST use the ARN's region when constructing the endpoint instead of the client's configured region.
|
70
|
+
#
|
71
|
+
# @return [Boolean]
|
72
|
+
#
|
73
|
+
EndpointParameters = Struct.new(
|
74
|
+
:bucket,
|
75
|
+
:region,
|
76
|
+
:use_fips,
|
77
|
+
:use_dual_stack,
|
78
|
+
:endpoint,
|
79
|
+
:force_path_style,
|
80
|
+
:accelerate,
|
81
|
+
:use_global_endpoint,
|
82
|
+
:use_object_lambda_endpoint,
|
83
|
+
:disable_access_points,
|
84
|
+
:disable_multi_region_access_points,
|
85
|
+
:use_arn_region,
|
86
|
+
) do
|
87
|
+
include Aws::Structure
|
88
|
+
|
89
|
+
# @api private
|
90
|
+
class << self
|
91
|
+
PARAM_MAP = {
|
92
|
+
'Bucket' => :bucket,
|
93
|
+
'Region' => :region,
|
94
|
+
'UseFIPS' => :use_fips,
|
95
|
+
'UseDualStack' => :use_dual_stack,
|
96
|
+
'Endpoint' => :endpoint,
|
97
|
+
'ForcePathStyle' => :force_path_style,
|
98
|
+
'Accelerate' => :accelerate,
|
99
|
+
'UseGlobalEndpoint' => :use_global_endpoint,
|
100
|
+
'UseObjectLambdaEndpoint' => :use_object_lambda_endpoint,
|
101
|
+
'DisableAccessPoints' => :disable_access_points,
|
102
|
+
'DisableMultiRegionAccessPoints' => :disable_multi_region_access_points,
|
103
|
+
'UseArnRegion' => :use_arn_region,
|
104
|
+
}.freeze
|
105
|
+
end
|
106
|
+
|
107
|
+
def initialize(options = {})
|
108
|
+
self[:bucket] = options[:bucket]
|
109
|
+
self[:region] = options[:region]
|
110
|
+
self[:use_fips] = options[:use_fips]
|
111
|
+
self[:use_fips] = false if self[:use_fips].nil?
|
112
|
+
if self[:use_fips].nil?
|
113
|
+
raise ArgumentError, "Missing required EndpointParameter: :use_fips"
|
114
|
+
end
|
115
|
+
self[:use_dual_stack] = options[:use_dual_stack]
|
116
|
+
self[:use_dual_stack] = false if self[:use_dual_stack].nil?
|
117
|
+
if self[:use_dual_stack].nil?
|
118
|
+
raise ArgumentError, "Missing required EndpointParameter: :use_dual_stack"
|
119
|
+
end
|
120
|
+
self[:endpoint] = options[:endpoint]
|
121
|
+
self[:force_path_style] = options[:force_path_style]
|
122
|
+
self[:accelerate] = options[:accelerate]
|
123
|
+
self[:accelerate] = false if self[:accelerate].nil?
|
124
|
+
if self[:accelerate].nil?
|
125
|
+
raise ArgumentError, "Missing required EndpointParameter: :accelerate"
|
126
|
+
end
|
127
|
+
self[:use_global_endpoint] = options[:use_global_endpoint]
|
128
|
+
self[:use_global_endpoint] = false if self[:use_global_endpoint].nil?
|
129
|
+
if self[:use_global_endpoint].nil?
|
130
|
+
raise ArgumentError, "Missing required EndpointParameter: :use_global_endpoint"
|
131
|
+
end
|
132
|
+
self[:use_object_lambda_endpoint] = options[:use_object_lambda_endpoint]
|
133
|
+
self[:disable_access_points] = options[:disable_access_points]
|
134
|
+
self[:disable_multi_region_access_points] = options[:disable_multi_region_access_points]
|
135
|
+
self[:disable_multi_region_access_points] = false if self[:disable_multi_region_access_points].nil?
|
136
|
+
if self[:disable_multi_region_access_points].nil?
|
137
|
+
raise ArgumentError, "Missing required EndpointParameter: :disable_multi_region_access_points"
|
138
|
+
end
|
139
|
+
self[:use_arn_region] = options[:use_arn_region]
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|