aws-sdk-s3 1.116.0 → 1.117.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 +7 -0
- data/VERSION +1 -1
- data/lib/aws-sdk-s3/client.rb +20 -3
- data/lib/aws-sdk-s3/client_api.rb +95 -95
- data/lib/aws-sdk-s3/customizations/bucket.rb +20 -46
- data/lib/aws-sdk-s3/endpoint_parameters.rb +142 -0
- data/lib/aws-sdk-s3/endpoint_provider.rb +2020 -0
- data/lib/aws-sdk-s3/endpoints.rb +2149 -0
- data/lib/aws-sdk-s3/multipart_stream_uploader.rb +25 -6
- 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 +27 -123
- data/lib/aws-sdk-s3/presigned_post.rb +9 -16
- data/lib/aws-sdk-s3/presigner.rb +19 -34
- data/lib/aws-sdk-s3.rb +5 -1
- metadata +8 -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
|
|
@@ -142,29 +139,6 @@ module Aws
|
|
142
139
|
|
143
140
|
self
|
144
141
|
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
142
|
end
|
169
143
|
end
|
170
144
|
end
|
@@ -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
|