aws-sdk-s3 1.116.0 → 1.117.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|