aws-sdk-s3control 1.53.0 → 1.55.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 +10 -0
- data/VERSION +1 -1
- data/lib/aws-sdk-s3control/client.rb +146 -119
- data/lib/aws-sdk-s3control/client_api.rb +66 -116
- data/lib/aws-sdk-s3control/endpoint_parameters.rb +114 -0
- data/lib/aws-sdk-s3control/endpoint_provider.rb +545 -0
- data/lib/aws-sdk-s3control/endpoints.rb +1195 -0
- data/lib/aws-sdk-s3control/plugins/arn.rb +1 -162
- data/lib/aws-sdk-s3control/plugins/dualstack.rb +2 -31
- data/lib/aws-sdk-s3control/plugins/endpoints.rb +186 -0
- data/lib/aws-sdk-s3control/types.rb +121 -68
- data/lib/aws-sdk-s3control.rb +5 -1
- metadata +8 -5
- data/lib/aws-sdk-s3control/plugins/s3_control_signer.rb +0 -97
@@ -6,8 +6,7 @@ require_relative '../arn/outpost_bucket_arn'
|
|
6
6
|
module Aws
|
7
7
|
module S3Control
|
8
8
|
module Plugins
|
9
|
-
#
|
10
|
-
# this plugin resolves the request endpoint from the ARN when possible.
|
9
|
+
# Deprecated in favor of new endpoint generation.
|
11
10
|
# @api private
|
12
11
|
class ARN < Seahorse::Client::Plugin
|
13
12
|
option(
|
@@ -23,156 +22,7 @@ client's region instead.
|
|
23
22
|
resolve_s3_use_arn_region(cfg)
|
24
23
|
end
|
25
24
|
|
26
|
-
# param validator is validate:50 (required to add account_id from arn)
|
27
|
-
# endpoint is build:90 (populates the URI for the first time)
|
28
|
-
# endpoint pattern is build:10 (prefix account id to host)
|
29
|
-
def add_handlers(handlers, _config)
|
30
|
-
handlers.add(ARNHandler, step: :validate, priority: 75)
|
31
|
-
handlers.add(UrlHandler)
|
32
|
-
end
|
33
|
-
|
34
|
-
# After extracting out any ARN input, resolve a new URL with it.
|
35
|
-
class UrlHandler < Seahorse::Client::Handler
|
36
|
-
def call(context)
|
37
|
-
if context.metadata[:s3_arn]
|
38
|
-
ARN.resolve_url!(
|
39
|
-
context.http_request.endpoint,
|
40
|
-
context.metadata[:s3_arn][:arn],
|
41
|
-
context.metadata[:s3_arn][:resolved_region],
|
42
|
-
context.metadata[:s3_arn][:fips],
|
43
|
-
context.metadata[:s3_arn][:dualstack],
|
44
|
-
# if regional_endpoint is false, a custom endpoint was provided
|
45
|
-
# in this case, we want to prefix the endpoint using the ARN
|
46
|
-
!context.config.regional_endpoint
|
47
|
-
)
|
48
|
-
end
|
49
|
-
@handler.call(context)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
# This plugin will extract out any ARN input and set context for other
|
54
|
-
# plugins to use without having to translate the ARN again.
|
55
|
-
class ARNHandler < Seahorse::Client::Handler
|
56
|
-
def call(context)
|
57
|
-
arn_member = _arn_member(context.operation.input.shape)
|
58
|
-
if arn_member && (bucket = context.params[arn_member])
|
59
|
-
resolved_region, arn = ARN.resolve_arn!(
|
60
|
-
bucket,
|
61
|
-
context.config.region,
|
62
|
-
context.config.s3_use_arn_region
|
63
|
-
)
|
64
|
-
validate_outpost_dualstack!(context)
|
65
|
-
if arn
|
66
|
-
validate_config!(context, arn)
|
67
|
-
|
68
|
-
if arn.is_a?(OutpostAccessPointARN) ||
|
69
|
-
arn.is_a?(OutpostBucketARN)
|
70
|
-
set_outpost_header!(context, arn)
|
71
|
-
# disable account_id prefix for outposts urls
|
72
|
-
context.config.disable_host_prefix_injection = true
|
73
|
-
end
|
74
|
-
set_account_param!(context, arn)
|
75
|
-
|
76
|
-
# depending on the ARN's resource type, put the resource value
|
77
|
-
# back onto params
|
78
|
-
context.params[arn_member] = arn.input_member
|
79
|
-
context.metadata[:s3_arn] = {
|
80
|
-
arn: arn,
|
81
|
-
resolved_region: resolved_region,
|
82
|
-
fips: context.config.use_fips_endpoint,
|
83
|
-
dualstack: extract_dualstack_config!(context)
|
84
|
-
}
|
85
|
-
end
|
86
|
-
end
|
87
|
-
@handler.call(context)
|
88
|
-
end
|
89
|
-
|
90
|
-
private
|
91
|
-
|
92
|
-
# this validation has nothing to do with ARNs (can't be in
|
93
|
-
# validate_config!) outposts does not support dualstack, so operations
|
94
|
-
# using an outpost id should be validated too.
|
95
|
-
def validate_outpost_dualstack!(context)
|
96
|
-
if context.params[:outpost_id] && context[:use_dualstack_endpoint]
|
97
|
-
raise ArgumentError,
|
98
|
-
'Cannot provide an Outpost ID when '\
|
99
|
-
'`:use_dualstack_endpoint` is set to true.'
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
# This looks for BucketName or AccessPointName, but prefers BucketName
|
104
|
-
# for CreateAccessPoint because it contains both but should not have
|
105
|
-
# an Access Point ARN as AccessPointName.
|
106
|
-
def _arn_member(input)
|
107
|
-
input.members.each do |member, ref|
|
108
|
-
if ref.shape.name == 'BucketName' ||
|
109
|
-
(ref.shape.name == 'AccessPointName' &&
|
110
|
-
input.name != 'CreateAccessPointRequest')
|
111
|
-
return member
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
# other plugins use dualstack so disable it when we're done
|
117
|
-
def extract_dualstack_config!(context)
|
118
|
-
dualstack = context[:use_dualstack_endpoint]
|
119
|
-
context[:use_dualstack_endpoint] = false if dualstack
|
120
|
-
dualstack
|
121
|
-
end
|
122
|
-
|
123
|
-
def validate_config!(context, arn)
|
124
|
-
if !arn.support_dualstack? && context[:use_dualstack_endpoint]
|
125
|
-
raise ArgumentError,
|
126
|
-
'Cannot provide an Outpost Access Point or Bucket ARN '\
|
127
|
-
'when `:use_dualstack_endpoint` is set to true.'
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
def set_outpost_header!(context, arn)
|
132
|
-
context.http_request.headers['x-amz-outpost-id'] = arn.outpost_id
|
133
|
-
end
|
134
|
-
|
135
|
-
def set_account_param!(context, arn)
|
136
|
-
if context.params[:account_id] &&
|
137
|
-
context.params[:account_id] != arn.account_id
|
138
|
-
raise ArgumentError,
|
139
|
-
'Cannot provide an Account ID that is different from the '\
|
140
|
-
'Account ID in the ARN.'
|
141
|
-
end
|
142
|
-
context.params[:account_id] = arn.account_id
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
25
|
class << self
|
147
|
-
# @api private
|
148
|
-
def resolve_arn!(member_value, region, use_arn_region)
|
149
|
-
if Aws::ARNParser.arn?(member_value)
|
150
|
-
arn = Aws::ARNParser.parse(member_value)
|
151
|
-
if arn.resource.include?('bucket')
|
152
|
-
s3_arn = Aws::S3Control::OutpostBucketARN.new(arn.to_h)
|
153
|
-
elsif arn.resource.include?('accesspoint')
|
154
|
-
s3_arn = Aws::S3Control::OutpostAccessPointARN.new(arn.to_h)
|
155
|
-
else
|
156
|
-
raise ArgumentError,
|
157
|
-
'Only Outpost Bucket and Outpost Access Point ARNs are '\
|
158
|
-
'currently supported.'
|
159
|
-
end
|
160
|
-
s3_arn.validate_arn!
|
161
|
-
validate_region_config!(s3_arn, region, use_arn_region)
|
162
|
-
region = s3_arn.region if use_arn_region
|
163
|
-
[region, s3_arn]
|
164
|
-
else
|
165
|
-
[region]
|
166
|
-
end
|
167
|
-
end
|
168
|
-
|
169
|
-
# @api private
|
170
|
-
def resolve_url!(url, arn, region, fips = false, dualstack = false, has_custom_endpoint = false)
|
171
|
-
custom_endpoint = url.host if has_custom_endpoint
|
172
|
-
url.host = arn.host_url(region, fips, dualstack, custom_endpoint)
|
173
|
-
url
|
174
|
-
end
|
175
|
-
|
176
26
|
private
|
177
27
|
|
178
28
|
def resolve_s3_use_arn_region(cfg)
|
@@ -189,17 +39,6 @@ client's region instead.
|
|
189
39
|
end
|
190
40
|
value
|
191
41
|
end
|
192
|
-
|
193
|
-
def validate_region_config!(arn, region, use_arn_region)
|
194
|
-
if use_arn_region &&
|
195
|
-
!Aws::Partitions.partition(arn.partition).region?(region)
|
196
|
-
raise Aws::Errors::InvalidARNPartitionError
|
197
|
-
end
|
198
|
-
|
199
|
-
if !use_arn_region && region != arn.region
|
200
|
-
raise Aws::Errors::InvalidARNRegionError
|
201
|
-
end
|
202
|
-
end
|
203
42
|
end
|
204
43
|
end
|
205
44
|
end
|
@@ -3,11 +3,11 @@
|
|
3
3
|
module Aws
|
4
4
|
module S3Control
|
5
5
|
module Plugins
|
6
|
+
# Deprecated in favor of new endpoint generation.
|
6
7
|
# @api private
|
7
8
|
class Dualstack < Seahorse::Client::Plugin
|
8
|
-
def add_handlers(handlers,
|
9
|
+
def add_handlers(handlers, _config)
|
9
10
|
handlers.add(OptionHandler, step: :initialize)
|
10
|
-
handlers.add(DualstackHandler, step: :build, priority: 11)
|
11
11
|
end
|
12
12
|
|
13
13
|
# @api private
|
@@ -18,39 +18,10 @@ module Aws
|
|
18
18
|
dualstack = context.params.delete(:use_dualstack_endpoint)
|
19
19
|
end
|
20
20
|
dualstack = context.config.use_dualstack_endpoint if dualstack.nil?
|
21
|
-
# Raise if :endpoint and dualstack are both provided
|
22
|
-
if dualstack && !context.config.regional_endpoint
|
23
|
-
raise ArgumentError,
|
24
|
-
'Cannot use both :use_dualstack_endpoint and :endpoint'
|
25
|
-
end
|
26
21
|
context[:use_dualstack_endpoint] = dualstack
|
27
22
|
@handler.call(context)
|
28
23
|
end
|
29
24
|
end
|
30
|
-
|
31
|
-
# @api private
|
32
|
-
class DualstackHandler < Seahorse::Client::Handler
|
33
|
-
def call(context)
|
34
|
-
# if it's a regional endpoint and not an ARN, then construct the
|
35
|
-
# endpoint. regional endpoint plugin uses the dualstack config
|
36
|
-
if context.config.regional_endpoint && !context.metadata[:s3_arn]
|
37
|
-
new_endpoint = Aws::Partitions::EndpointProvider.resolve(
|
38
|
-
context.config.region,
|
39
|
-
's3-control',
|
40
|
-
'regional',
|
41
|
-
{
|
42
|
-
dualstack: context[:use_dualstack_endpoint],
|
43
|
-
fips: context.config.use_fips_endpoint
|
44
|
-
}
|
45
|
-
)
|
46
|
-
endpoint = URI.parse(context.http_request.endpoint.to_s)
|
47
|
-
endpoint.host = URI.parse(new_endpoint).host
|
48
|
-
context.http_request.endpoint = endpoint
|
49
|
-
end
|
50
|
-
@handler.call(context)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
25
|
end
|
55
26
|
end
|
56
27
|
end
|
@@ -0,0 +1,186 @@
|
|
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
|
+
|
11
|
+
module Aws::S3Control
|
12
|
+
module Plugins
|
13
|
+
class Endpoints < Seahorse::Client::Plugin
|
14
|
+
option(
|
15
|
+
:endpoint_provider,
|
16
|
+
doc_type: 'Aws::S3Control::EndpointProvider',
|
17
|
+
docstring: 'The endpoint provider used to resolve endpoints. Any '\
|
18
|
+
'object that responds to `#resolve_endpoint(parameters)` '\
|
19
|
+
'where `parameters` is a Struct similar to '\
|
20
|
+
'`Aws::S3Control::EndpointParameters`'
|
21
|
+
) do |cfg|
|
22
|
+
Aws::S3Control::EndpointProvider.new
|
23
|
+
end
|
24
|
+
|
25
|
+
# @api private
|
26
|
+
class Handler < Seahorse::Client::Handler
|
27
|
+
def call(context)
|
28
|
+
# If endpoint was discovered, do not resolve or apply the endpoint.
|
29
|
+
unless context[:discovered_endpoint]
|
30
|
+
params = parameters_for_operation(context)
|
31
|
+
endpoint = context.config.endpoint_provider.resolve_endpoint(params)
|
32
|
+
|
33
|
+
context.http_request.endpoint = endpoint.url
|
34
|
+
apply_endpoint_headers(context, endpoint.headers)
|
35
|
+
end
|
36
|
+
|
37
|
+
context[:endpoint_params] = params
|
38
|
+
context[:auth_scheme] =
|
39
|
+
Aws::Endpoints.resolve_auth_scheme(context, endpoint)
|
40
|
+
|
41
|
+
@handler.call(context)
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def apply_endpoint_headers(context, headers)
|
47
|
+
headers.each do |key, values|
|
48
|
+
value = values
|
49
|
+
.compact
|
50
|
+
.map { |s| Seahorse::Util.escape_header_list_string(s.to_s) }
|
51
|
+
.join(',')
|
52
|
+
|
53
|
+
context.http_request.headers[key] = value
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def parameters_for_operation(context)
|
58
|
+
case context.operation_name
|
59
|
+
when :create_access_point
|
60
|
+
Aws::S3Control::Endpoints::CreateAccessPoint.build(context)
|
61
|
+
when :create_access_point_for_object_lambda
|
62
|
+
Aws::S3Control::Endpoints::CreateAccessPointForObjectLambda.build(context)
|
63
|
+
when :create_bucket
|
64
|
+
Aws::S3Control::Endpoints::CreateBucket.build(context)
|
65
|
+
when :create_job
|
66
|
+
Aws::S3Control::Endpoints::CreateJob.build(context)
|
67
|
+
when :create_multi_region_access_point
|
68
|
+
Aws::S3Control::Endpoints::CreateMultiRegionAccessPoint.build(context)
|
69
|
+
when :delete_access_point
|
70
|
+
Aws::S3Control::Endpoints::DeleteAccessPoint.build(context)
|
71
|
+
when :delete_access_point_for_object_lambda
|
72
|
+
Aws::S3Control::Endpoints::DeleteAccessPointForObjectLambda.build(context)
|
73
|
+
when :delete_access_point_policy
|
74
|
+
Aws::S3Control::Endpoints::DeleteAccessPointPolicy.build(context)
|
75
|
+
when :delete_access_point_policy_for_object_lambda
|
76
|
+
Aws::S3Control::Endpoints::DeleteAccessPointPolicyForObjectLambda.build(context)
|
77
|
+
when :delete_bucket
|
78
|
+
Aws::S3Control::Endpoints::DeleteBucket.build(context)
|
79
|
+
when :delete_bucket_lifecycle_configuration
|
80
|
+
Aws::S3Control::Endpoints::DeleteBucketLifecycleConfiguration.build(context)
|
81
|
+
when :delete_bucket_policy
|
82
|
+
Aws::S3Control::Endpoints::DeleteBucketPolicy.build(context)
|
83
|
+
when :delete_bucket_tagging
|
84
|
+
Aws::S3Control::Endpoints::DeleteBucketTagging.build(context)
|
85
|
+
when :delete_job_tagging
|
86
|
+
Aws::S3Control::Endpoints::DeleteJobTagging.build(context)
|
87
|
+
when :delete_multi_region_access_point
|
88
|
+
Aws::S3Control::Endpoints::DeleteMultiRegionAccessPoint.build(context)
|
89
|
+
when :delete_public_access_block
|
90
|
+
Aws::S3Control::Endpoints::DeletePublicAccessBlock.build(context)
|
91
|
+
when :delete_storage_lens_configuration
|
92
|
+
Aws::S3Control::Endpoints::DeleteStorageLensConfiguration.build(context)
|
93
|
+
when :delete_storage_lens_configuration_tagging
|
94
|
+
Aws::S3Control::Endpoints::DeleteStorageLensConfigurationTagging.build(context)
|
95
|
+
when :describe_job
|
96
|
+
Aws::S3Control::Endpoints::DescribeJob.build(context)
|
97
|
+
when :describe_multi_region_access_point_operation
|
98
|
+
Aws::S3Control::Endpoints::DescribeMultiRegionAccessPointOperation.build(context)
|
99
|
+
when :get_access_point
|
100
|
+
Aws::S3Control::Endpoints::GetAccessPoint.build(context)
|
101
|
+
when :get_access_point_configuration_for_object_lambda
|
102
|
+
Aws::S3Control::Endpoints::GetAccessPointConfigurationForObjectLambda.build(context)
|
103
|
+
when :get_access_point_for_object_lambda
|
104
|
+
Aws::S3Control::Endpoints::GetAccessPointForObjectLambda.build(context)
|
105
|
+
when :get_access_point_policy
|
106
|
+
Aws::S3Control::Endpoints::GetAccessPointPolicy.build(context)
|
107
|
+
when :get_access_point_policy_for_object_lambda
|
108
|
+
Aws::S3Control::Endpoints::GetAccessPointPolicyForObjectLambda.build(context)
|
109
|
+
when :get_access_point_policy_status
|
110
|
+
Aws::S3Control::Endpoints::GetAccessPointPolicyStatus.build(context)
|
111
|
+
when :get_access_point_policy_status_for_object_lambda
|
112
|
+
Aws::S3Control::Endpoints::GetAccessPointPolicyStatusForObjectLambda.build(context)
|
113
|
+
when :get_bucket
|
114
|
+
Aws::S3Control::Endpoints::GetBucket.build(context)
|
115
|
+
when :get_bucket_lifecycle_configuration
|
116
|
+
Aws::S3Control::Endpoints::GetBucketLifecycleConfiguration.build(context)
|
117
|
+
when :get_bucket_policy
|
118
|
+
Aws::S3Control::Endpoints::GetBucketPolicy.build(context)
|
119
|
+
when :get_bucket_tagging
|
120
|
+
Aws::S3Control::Endpoints::GetBucketTagging.build(context)
|
121
|
+
when :get_bucket_versioning
|
122
|
+
Aws::S3Control::Endpoints::GetBucketVersioning.build(context)
|
123
|
+
when :get_job_tagging
|
124
|
+
Aws::S3Control::Endpoints::GetJobTagging.build(context)
|
125
|
+
when :get_multi_region_access_point
|
126
|
+
Aws::S3Control::Endpoints::GetMultiRegionAccessPoint.build(context)
|
127
|
+
when :get_multi_region_access_point_policy
|
128
|
+
Aws::S3Control::Endpoints::GetMultiRegionAccessPointPolicy.build(context)
|
129
|
+
when :get_multi_region_access_point_policy_status
|
130
|
+
Aws::S3Control::Endpoints::GetMultiRegionAccessPointPolicyStatus.build(context)
|
131
|
+
when :get_public_access_block
|
132
|
+
Aws::S3Control::Endpoints::GetPublicAccessBlock.build(context)
|
133
|
+
when :get_storage_lens_configuration
|
134
|
+
Aws::S3Control::Endpoints::GetStorageLensConfiguration.build(context)
|
135
|
+
when :get_storage_lens_configuration_tagging
|
136
|
+
Aws::S3Control::Endpoints::GetStorageLensConfigurationTagging.build(context)
|
137
|
+
when :list_access_points
|
138
|
+
Aws::S3Control::Endpoints::ListAccessPoints.build(context)
|
139
|
+
when :list_access_points_for_object_lambda
|
140
|
+
Aws::S3Control::Endpoints::ListAccessPointsForObjectLambda.build(context)
|
141
|
+
when :list_jobs
|
142
|
+
Aws::S3Control::Endpoints::ListJobs.build(context)
|
143
|
+
when :list_multi_region_access_points
|
144
|
+
Aws::S3Control::Endpoints::ListMultiRegionAccessPoints.build(context)
|
145
|
+
when :list_regional_buckets
|
146
|
+
Aws::S3Control::Endpoints::ListRegionalBuckets.build(context)
|
147
|
+
when :list_storage_lens_configurations
|
148
|
+
Aws::S3Control::Endpoints::ListStorageLensConfigurations.build(context)
|
149
|
+
when :put_access_point_configuration_for_object_lambda
|
150
|
+
Aws::S3Control::Endpoints::PutAccessPointConfigurationForObjectLambda.build(context)
|
151
|
+
when :put_access_point_policy
|
152
|
+
Aws::S3Control::Endpoints::PutAccessPointPolicy.build(context)
|
153
|
+
when :put_access_point_policy_for_object_lambda
|
154
|
+
Aws::S3Control::Endpoints::PutAccessPointPolicyForObjectLambda.build(context)
|
155
|
+
when :put_bucket_lifecycle_configuration
|
156
|
+
Aws::S3Control::Endpoints::PutBucketLifecycleConfiguration.build(context)
|
157
|
+
when :put_bucket_policy
|
158
|
+
Aws::S3Control::Endpoints::PutBucketPolicy.build(context)
|
159
|
+
when :put_bucket_tagging
|
160
|
+
Aws::S3Control::Endpoints::PutBucketTagging.build(context)
|
161
|
+
when :put_bucket_versioning
|
162
|
+
Aws::S3Control::Endpoints::PutBucketVersioning.build(context)
|
163
|
+
when :put_job_tagging
|
164
|
+
Aws::S3Control::Endpoints::PutJobTagging.build(context)
|
165
|
+
when :put_multi_region_access_point_policy
|
166
|
+
Aws::S3Control::Endpoints::PutMultiRegionAccessPointPolicy.build(context)
|
167
|
+
when :put_public_access_block
|
168
|
+
Aws::S3Control::Endpoints::PutPublicAccessBlock.build(context)
|
169
|
+
when :put_storage_lens_configuration
|
170
|
+
Aws::S3Control::Endpoints::PutStorageLensConfiguration.build(context)
|
171
|
+
when :put_storage_lens_configuration_tagging
|
172
|
+
Aws::S3Control::Endpoints::PutStorageLensConfigurationTagging.build(context)
|
173
|
+
when :update_job_priority
|
174
|
+
Aws::S3Control::Endpoints::UpdateJobPriority.build(context)
|
175
|
+
when :update_job_status
|
176
|
+
Aws::S3Control::Endpoints::UpdateJobStatus.build(context)
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
def add_handlers(handlers, _config)
|
182
|
+
handlers.add(Handler, step: :build, priority: 75)
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|