aws-sdk-s3 1.235.0 → 1.236.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 +1 -1
- data/lib/aws-sdk-s3/express_credentials.rb +4 -1
- data/lib/aws-sdk-s3/express_credentials_provider.rb +23 -12
- data/lib/aws-sdk-s3/plugins/express_session_auth.rb +10 -2
- data/lib/aws-sdk-s3.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 977da30326e0ec75cdd7a56efb408b900106b9dfbdd9ac0645375551dfecccaa
|
|
4
|
+
data.tar.gz: b829179ce40ee29a93b2b366b2607f2cfa6a1cfdb96580657b6238b685c95040
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2a0ccbc0478fd7441a437ae2de8b93b9b3115e1df80c56ad0a17c9f9e11ab8da89e465287f0e55b5bff639b6070b58290aa01622cd82c15fa98b3dbb45ec9f54
|
|
7
|
+
data.tar.gz: ec282ef84b7c70f7f374af7611f2ef2ee016a809bc4a6d046a9e766f362fcd5a85725cec33c709041527ad93a888ff6b060f8be0bcaabf052a47c728e44b9361
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
Unreleased Changes
|
|
2
2
|
------------------
|
|
3
3
|
|
|
4
|
+
1.236.0 (2026-10-28)
|
|
5
|
+
------------------
|
|
6
|
+
|
|
7
|
+
* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
|
|
8
|
+
|
|
9
|
+
* Issue - Create and cache S3 Express sessions using the credentials of the requesting client.
|
|
10
|
+
|
|
4
11
|
1.235.0 (2026-10-20)
|
|
5
12
|
------------------
|
|
6
13
|
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.236.0
|
data/lib/aws-sdk-s3/client.rb
CHANGED
|
@@ -24216,7 +24216,7 @@ module Aws::S3
|
|
|
24216
24216
|
tracer: tracer
|
|
24217
24217
|
)
|
|
24218
24218
|
context[:gem_name] = 'aws-sdk-s3'
|
|
24219
|
-
context[:gem_version] = '1.
|
|
24219
|
+
context[:gem_version] = '1.236.0'
|
|
24220
24220
|
Seahorse::Client::Request.new(handlers, context)
|
|
24221
24221
|
end
|
|
24222
24222
|
|
|
@@ -14,6 +14,7 @@ module Aws
|
|
|
14
14
|
|
|
15
15
|
def initialize(options = {})
|
|
16
16
|
@client = options[:client]
|
|
17
|
+
@base_credentials = options[:base_credentials]
|
|
17
18
|
@create_session_params = {}
|
|
18
19
|
options.each_pair do |key, value|
|
|
19
20
|
if self.class.create_session_options.include?(key)
|
|
@@ -30,7 +31,9 @@ module Aws
|
|
|
30
31
|
private
|
|
31
32
|
|
|
32
33
|
def refresh
|
|
33
|
-
|
|
34
|
+
request = @client.build_request(:create_session, @create_session_params)
|
|
35
|
+
request.context[:sigv4_credentials] = @base_credentials if @base_credentials
|
|
36
|
+
c = request.send_request.credentials
|
|
34
37
|
@credentials = Credentials.new(
|
|
35
38
|
c.access_key_id,
|
|
36
39
|
c.secret_access_key,
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'securerandom'
|
|
4
|
+
|
|
3
5
|
module Aws
|
|
4
6
|
module S3
|
|
5
7
|
# @api private
|
|
@@ -10,9 +12,12 @@ module Aws
|
|
|
10
12
|
# Returns Credentials class for S3 Express. Accepts CreateSession
|
|
11
13
|
# params as options. See {Client#create_session} for details.
|
|
12
14
|
class ExpressCredentialsProvider
|
|
15
|
+
CACHE_KEY_SECRET = SecureRandom.random_bytes(64)
|
|
16
|
+
private_constant :CACHE_KEY_SECRET
|
|
17
|
+
|
|
13
18
|
# @param [Hash] options
|
|
14
19
|
# @option options [Client] :client The S3 client used to create the
|
|
15
|
-
# session.
|
|
20
|
+
# session when one is not given to {#express_credentials_for}.
|
|
16
21
|
# @option options [String] :session_mode (see: {Client#create_session})
|
|
17
22
|
# @option options [Boolean] :caching (true) When true, credentials will
|
|
18
23
|
# be cached.
|
|
@@ -27,11 +32,12 @@ module Aws
|
|
|
27
32
|
@cache = Aws::S3.express_credentials_cache
|
|
28
33
|
end
|
|
29
34
|
|
|
30
|
-
def express_credentials_for(bucket)
|
|
35
|
+
def express_credentials_for(bucket, client = @client)
|
|
36
|
+
credentials = client.config.credentials&.credentials
|
|
31
37
|
if @caching
|
|
32
|
-
cached_credentials_for(bucket)
|
|
38
|
+
cached_credentials_for(bucket, client, credentials)
|
|
33
39
|
else
|
|
34
|
-
new_credentials_for(bucket)
|
|
40
|
+
new_credentials_for(bucket, client, credentials)
|
|
35
41
|
end
|
|
36
42
|
end
|
|
37
43
|
|
|
@@ -39,18 +45,23 @@ module Aws
|
|
|
39
45
|
|
|
40
46
|
private
|
|
41
47
|
|
|
42
|
-
def cached_credentials_for(bucket)
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
+
def cached_credentials_for(bucket, client, credentials)
|
|
49
|
+
@cache[cache_key(bucket, credentials)] ||= new_credentials_for(bucket, client, credentials)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def cache_key(bucket, credentials)
|
|
53
|
+
identity = "#{credentials&.access_key_id}#{credentials&.secret_access_key}"
|
|
54
|
+
"#{OpenSSL::HMAC.hexdigest('SHA256', CACHE_KEY_SECRET, identity)}#{bucket}"
|
|
48
55
|
end
|
|
49
56
|
|
|
50
|
-
def new_credentials_for(bucket)
|
|
57
|
+
def new_credentials_for(bucket, client, credentials)
|
|
58
|
+
# Sign with this snapshot, but report the provider's UserAgent metrics.
|
|
59
|
+
credentials = credentials&.dup
|
|
60
|
+
credentials&.metrics = client.config.credentials.metrics
|
|
51
61
|
ExpressCredentials.new(
|
|
52
62
|
bucket: bucket,
|
|
53
|
-
client:
|
|
63
|
+
client: client,
|
|
64
|
+
base_credentials: credentials,
|
|
54
65
|
**@options
|
|
55
66
|
)
|
|
56
67
|
end
|
|
@@ -35,8 +35,7 @@ for different buckets.
|
|
|
35
35
|
if context[:auth_scheme]['name'] == 'sigv4-s3express' &&
|
|
36
36
|
!context.config.disable_s3_express_session_auth
|
|
37
37
|
bucket = context.params[:bucket]
|
|
38
|
-
|
|
39
|
-
credentials = credentials_provider.express_credentials_for(bucket)
|
|
38
|
+
credentials = express_credentials_for(context, bucket)
|
|
40
39
|
context[:sigv4_credentials] = credentials # Sign will use this
|
|
41
40
|
end
|
|
42
41
|
|
|
@@ -45,6 +44,15 @@ for different buckets.
|
|
|
45
44
|
|
|
46
45
|
private
|
|
47
46
|
|
|
47
|
+
def express_credentials_for(context, bucket)
|
|
48
|
+
provider = context.config.express_credentials_provider
|
|
49
|
+
if provider.is_a?(ExpressCredentialsProvider)
|
|
50
|
+
provider.express_credentials_for(bucket, context.client)
|
|
51
|
+
else
|
|
52
|
+
provider.express_credentials_for(bucket)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
48
56
|
def with_metric(credentials, &block)
|
|
49
57
|
return block.call unless credentials
|
|
50
58
|
|
data/lib/aws-sdk-s3.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: aws-sdk-s3
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.236.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Amazon Web Services
|
|
@@ -46,7 +46,7 @@ dependencies:
|
|
|
46
46
|
version: '3'
|
|
47
47
|
- - ">="
|
|
48
48
|
- !ruby/object:Gem::Version
|
|
49
|
-
version: 3.
|
|
49
|
+
version: 3.262.0
|
|
50
50
|
type: :runtime
|
|
51
51
|
prerelease: false
|
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -56,7 +56,7 @@ dependencies:
|
|
|
56
56
|
version: '3'
|
|
57
57
|
- - ">="
|
|
58
58
|
- !ruby/object:Gem::Version
|
|
59
|
-
version: 3.
|
|
59
|
+
version: 3.262.0
|
|
60
60
|
description: Official AWS Ruby gem for Amazon Simple Storage Service (Amazon S3).
|
|
61
61
|
This gem is part of the AWS SDK for Ruby.
|
|
62
62
|
email:
|