aws-sdk-core 3.46.0 → 3.94.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 +5 -5
- data/VERSION +1 -1
- data/lib/aws-sdk-core.rb +7 -0
- data/lib/aws-sdk-core/arn.rb +77 -0
- data/lib/aws-sdk-core/arn_parser.rb +38 -0
- data/lib/aws-sdk-core/assume_role_web_identity_credentials.rb +102 -0
- data/lib/aws-sdk-core/async_client_stubs.rb +80 -0
- data/lib/aws-sdk-core/binary.rb +3 -0
- data/lib/aws-sdk-core/binary/decode_handler.rb +9 -1
- data/lib/aws-sdk-core/binary/encode_handler.rb +32 -0
- data/lib/aws-sdk-core/binary/event_builder.rb +122 -0
- data/lib/aws-sdk-core/binary/event_parser.rb +48 -18
- data/lib/aws-sdk-core/binary/event_stream_decoder.rb +5 -2
- data/lib/aws-sdk-core/binary/event_stream_encoder.rb +53 -0
- data/lib/aws-sdk-core/client_side_monitoring/publisher.rb +9 -1
- data/lib/aws-sdk-core/client_stubs.rb +10 -9
- data/lib/aws-sdk-core/credential_provider.rb +0 -31
- data/lib/aws-sdk-core/credential_provider_chain.rb +79 -39
- data/lib/aws-sdk-core/deprecations.rb +16 -10
- data/lib/aws-sdk-core/ecs_credentials.rb +12 -8
- data/lib/aws-sdk-core/endpoint_cache.rb +14 -11
- data/lib/aws-sdk-core/errors.rb +94 -6
- data/lib/aws-sdk-core/event_emitter.rb +42 -0
- data/lib/aws-sdk-core/instance_profile_credentials.rb +120 -38
- data/lib/aws-sdk-core/json.rb +13 -14
- data/lib/aws-sdk-core/json/error_handler.rb +19 -2
- data/lib/aws-sdk-core/json/handler.rb +19 -1
- data/lib/aws-sdk-core/log/formatter.rb +7 -1
- data/lib/aws-sdk-core/log/param_filter.rb +3 -3
- data/lib/aws-sdk-core/pageable_response.rb +34 -20
- data/lib/aws-sdk-core/param_validator.rb +11 -5
- data/lib/aws-sdk-core/plugins/client_metrics_plugin.rb +26 -1
- data/lib/aws-sdk-core/plugins/endpoint_discovery.rb +1 -1
- data/lib/aws-sdk-core/plugins/event_stream_configuration.rb +14 -0
- data/lib/aws-sdk-core/plugins/invocation_id.rb +33 -0
- data/lib/aws-sdk-core/plugins/regional_endpoint.rb +8 -1
- data/lib/aws-sdk-core/plugins/retries/client_rate_limiter.rb +137 -0
- data/lib/aws-sdk-core/plugins/retries/clock_skew.rb +98 -0
- data/lib/aws-sdk-core/plugins/retries/error_inspector.rb +142 -0
- data/lib/aws-sdk-core/plugins/retries/retry_quota.rb +57 -0
- data/lib/aws-sdk-core/plugins/retry_errors.rb +290 -106
- data/lib/aws-sdk-core/plugins/signature_v4.rb +13 -2
- data/lib/aws-sdk-core/plugins/stub_responses.rb +20 -7
- data/lib/aws-sdk-core/plugins/transfer_encoding.rb +51 -0
- data/lib/aws-sdk-core/plugins/user_agent.rb +4 -8
- data/lib/aws-sdk-core/process_credentials.rb +9 -3
- data/lib/aws-sdk-core/shared_config.rb +95 -125
- data/lib/aws-sdk-core/structure.rb +1 -2
- data/lib/aws-sdk-core/stubbing/protocols/rest.rb +19 -0
- data/lib/aws-sdk-core/stubbing/stub_data.rb +13 -4
- data/lib/aws-sdk-core/util.rb +4 -0
- data/lib/aws-sdk-core/waiters/waiter.rb +2 -2
- data/lib/aws-sdk-core/xml/error_handler.rb +26 -3
- data/lib/aws-sdk-sts.rb +7 -4
- data/lib/aws-sdk-sts/client.rb +1109 -459
- data/lib/aws-sdk-sts/client_api.rb +67 -0
- data/lib/aws-sdk-sts/customizations.rb +2 -0
- data/lib/aws-sdk-sts/errors.rb +150 -0
- data/lib/aws-sdk-sts/plugins/sts_regional_endpoints.rb +32 -0
- data/lib/aws-sdk-sts/presigner.rb +67 -0
- data/lib/aws-sdk-sts/resource.rb +1 -0
- data/lib/aws-sdk-sts/types.rb +736 -176
- data/lib/seahorse.rb +9 -0
- data/lib/seahorse/client/async_base.rb +50 -0
- data/lib/seahorse/client/async_response.rb +62 -0
- data/lib/seahorse/client/base.rb +4 -2
- data/lib/seahorse/client/configuration.rb +4 -2
- data/lib/seahorse/client/events.rb +1 -1
- data/lib/seahorse/client/h2/connection.rb +246 -0
- data/lib/seahorse/client/h2/handler.rb +151 -0
- data/lib/seahorse/client/handler_list_entry.rb +2 -2
- data/lib/seahorse/client/http/async_response.rb +42 -0
- data/lib/seahorse/client/http/response.rb +13 -8
- data/lib/seahorse/client/logging/formatter.rb +4 -2
- data/lib/seahorse/client/net_http/connection_pool.rb +19 -20
- data/lib/seahorse/client/net_http/handler.rb +7 -1
- data/lib/seahorse/client/net_http/patches.rb +7 -1
- data/lib/seahorse/client/networking_error.rb +28 -0
- data/lib/seahorse/client/plugin.rb +5 -4
- data/lib/seahorse/client/plugins/content_length.rb +5 -2
- data/lib/seahorse/client/plugins/h2.rb +64 -0
- data/lib/seahorse/client/response.rb +3 -5
- data/lib/seahorse/model/api.rb +4 -0
- data/lib/seahorse/model/operation.rb +4 -0
- data/lib/seahorse/model/shapes.rb +2 -2
- metadata +43 -10
@@ -6,10 +6,14 @@ module Aws
|
|
6
6
|
include Seahorse::Model::Shapes
|
7
7
|
|
8
8
|
# @param [Class] parser_class
|
9
|
-
# @param [Seahorse::Model::ShapeRef] rules
|
10
|
-
|
9
|
+
# @param [Seahorse::Model::ShapeRef] rules (of eventstream member)
|
10
|
+
# @param [Array] error_refs array of errors ShapeRef
|
11
|
+
# @param [Seahorse::Model::ShapeRef] output_ref
|
12
|
+
def initialize(parser_class, rules, error_refs, output_ref)
|
11
13
|
@parser_class = parser_class
|
12
14
|
@rules = rules
|
15
|
+
@error_refs = error_refs
|
16
|
+
@output_ref = output_ref
|
13
17
|
end
|
14
18
|
|
15
19
|
# Parse raw event message into event struct
|
@@ -31,9 +35,7 @@ module Aws
|
|
31
35
|
when 'event'
|
32
36
|
parse_event(raw_event)
|
33
37
|
when 'exception'
|
34
|
-
|
35
|
-
raise Aws::Errors::EventStreamParserError.new(
|
36
|
-
':exception event parsing is not supported')
|
38
|
+
parse_exception(raw_event)
|
37
39
|
else
|
38
40
|
raise Aws::Errors::EventStreamParserError.new(
|
39
41
|
'Unrecognized :message-type value for the event')
|
@@ -44,6 +46,15 @@ module Aws
|
|
44
46
|
end
|
45
47
|
end
|
46
48
|
|
49
|
+
def parse_exception(raw_event)
|
50
|
+
exception_type = raw_event.headers.delete(":exception-type").value
|
51
|
+
name, ref = @rules.shape.member_by_location_name(exception_type)
|
52
|
+
# exception lives in payload implictly
|
53
|
+
exception = parse_payload(raw_event.payload.read, ref)
|
54
|
+
exception.event_type = name
|
55
|
+
exception
|
56
|
+
end
|
57
|
+
|
47
58
|
def parse_error_event(raw_event)
|
48
59
|
error_code = raw_event.headers.delete(":error-code")
|
49
60
|
error_message = raw_event.headers.delete(":error-message")
|
@@ -58,35 +69,54 @@ module Aws
|
|
58
69
|
event_type = raw_event.headers.delete(":event-type").value
|
59
70
|
# content_type = raw_event.headers.delete(":content-type").value
|
60
71
|
|
61
|
-
# Pending
|
62
72
|
if event_type == 'initial-response'
|
63
|
-
|
64
|
-
|
65
|
-
)
|
73
|
+
event = Struct.new(:event_type, :response).new
|
74
|
+
event.event_type = :initial_response
|
75
|
+
event.response = parse_payload(raw_event.payload.read, @output_ref)
|
76
|
+
return event
|
66
77
|
end
|
67
78
|
|
68
79
|
# locate event from eventstream
|
69
80
|
name, ref = @rules.shape.member_by_location_name(event_type)
|
70
|
-
|
81
|
+
unless ref.event
|
82
|
+
raise Aws::Errors::EventStreamParserError.new(
|
83
|
+
"Failed to locate event shape for the event")
|
84
|
+
end
|
71
85
|
|
72
86
|
event = ref.shape.struct_class.new
|
87
|
+
|
88
|
+
explicit_payload = false
|
89
|
+
implicit_payload_members = {}
|
90
|
+
ref.shape.members.each do |member_name, member_ref|
|
91
|
+
unless member_ref.eventheader
|
92
|
+
if member_ref.eventpayload
|
93
|
+
explicit_payload = true
|
94
|
+
else
|
95
|
+
implicit_payload_members[member_name] = member_ref
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
# implicit payload
|
101
|
+
if !explicit_payload && !implicit_payload_members.empty?
|
102
|
+
event = parse_payload(raw_event.payload.read, ref)
|
103
|
+
end
|
73
104
|
event.event_type = name
|
105
|
+
|
74
106
|
# locate payload and headers in the event
|
75
107
|
ref.shape.members.each do |member_name, member_ref|
|
76
|
-
if member_ref.
|
77
|
-
eventpayload_streaming?(member_ref) ?
|
78
|
-
event.send("#{member_name}=", raw_event.payload) :
|
79
|
-
event.send("#{member_name}=", parse_payload(raw_event.payload.read, member_ref))
|
80
|
-
elsif member_ref.eventheader
|
108
|
+
if member_ref.eventheader
|
81
109
|
# allow incomplete event members in response
|
82
110
|
if raw_event.headers.key?(member_ref.location_name)
|
83
111
|
event.send("#{member_name}=", raw_event.headers[member_ref.location_name].value)
|
84
112
|
end
|
85
|
-
|
86
|
-
|
113
|
+
elsif member_ref.eventpayload
|
114
|
+
# explicit payload
|
115
|
+
eventpayload_streaming?(member_ref) ?
|
116
|
+
event.send("#{member_name}=", raw_event.payload) :
|
117
|
+
event.send("#{member_name}=", parse_payload(raw_event.payload.read, member_ref))
|
87
118
|
end
|
88
119
|
end
|
89
|
-
|
90
120
|
event
|
91
121
|
end
|
92
122
|
|
@@ -7,11 +7,13 @@ module Aws
|
|
7
7
|
|
8
8
|
# @param [String] protocol
|
9
9
|
# @param [ShapeRef] rules ShapeRef of the eventstream member
|
10
|
+
# @param [ShapeRef] output_ref ShapeRef of output shape
|
11
|
+
# @param [Array] error_refs array of ShapeRefs for errors
|
10
12
|
# @param [EventStream|nil] event_stream_handler A Service EventStream object
|
11
13
|
# that registered with callbacks for processing events when they arrive
|
12
|
-
def initialize(protocol, rules, io, event_stream_handler = nil)
|
14
|
+
def initialize(protocol, rules, output_ref, error_refs, io, event_stream_handler = nil)
|
13
15
|
@decoder = Aws::EventStream::Decoder.new
|
14
|
-
@event_parser = EventParser.new(parser_class(protocol), rules)
|
16
|
+
@event_parser = EventParser.new(parser_class(protocol), rules, error_refs, output_ref)
|
15
17
|
@stream_class = extract_stream_class(rules.shape.struct_class)
|
16
18
|
@emitter = event_stream_handler.event_emitter
|
17
19
|
@events = []
|
@@ -42,6 +44,7 @@ module Aws
|
|
42
44
|
case protocol
|
43
45
|
when 'rest-xml' then Aws::Xml::Parser
|
44
46
|
when 'rest-json' then Aws::Json::Parser
|
47
|
+
when 'json' then Aws::Json::Parser
|
45
48
|
else raise "unsupported protocol #{protocol} for event stream"
|
46
49
|
end
|
47
50
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'aws-eventstream'
|
2
|
+
|
3
|
+
module Aws
|
4
|
+
module Binary
|
5
|
+
# @api private
|
6
|
+
class EventStreamEncoder
|
7
|
+
|
8
|
+
# @param [String] protocol
|
9
|
+
# @param [ShapeRef] rules ShapeRef of the eventstream member
|
10
|
+
# @param [ShapeRef] input_ref ShapeRef of the input shape
|
11
|
+
# @param [Aws::Sigv4::Signer] signer
|
12
|
+
def initialize(protocol, rules, input_ref, signer)
|
13
|
+
@encoder = Aws::EventStream::Encoder.new
|
14
|
+
@event_builder = EventBuilder.new(serializer_class(protocol), rules)
|
15
|
+
@input_ref = input_ref
|
16
|
+
@rules = rules
|
17
|
+
@signer = signer
|
18
|
+
@prior_signature = nil
|
19
|
+
end
|
20
|
+
|
21
|
+
attr_reader :rules
|
22
|
+
|
23
|
+
attr_accessor :prior_signature
|
24
|
+
|
25
|
+
def encode(event_type, params)
|
26
|
+
if event_type == :end_stream
|
27
|
+
payload = ''
|
28
|
+
else
|
29
|
+
payload = @encoder.encode(@event_builder.apply(event_type, params))
|
30
|
+
end
|
31
|
+
headers, signature = @signer.sign_event(@prior_signature, payload, @encoder)
|
32
|
+
@prior_signature = signature
|
33
|
+
message = Aws::EventStream::Message.new(
|
34
|
+
headers: headers,
|
35
|
+
payload: StringIO.new(payload)
|
36
|
+
)
|
37
|
+
@encoder.encode(message)
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def serializer_class(protocol)
|
43
|
+
case protocol
|
44
|
+
when 'rest-xml' then Xml::Builder
|
45
|
+
when 'rest-json' then Json::Builder
|
46
|
+
when 'json' then Json::Builder
|
47
|
+
else raise "unsupported protocol #{protocol} for event stream"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -6,8 +6,10 @@ module Aws
|
|
6
6
|
# @api private
|
7
7
|
class Publisher
|
8
8
|
attr_reader :agent_port
|
9
|
+
attr_reader :agent_host
|
9
10
|
|
10
11
|
def initialize(opts = {})
|
12
|
+
@agent_host = opts[:agent_host] || "127.0.0.1"
|
11
13
|
@agent_port = opts[:agent_port]
|
12
14
|
@mutex = Mutex.new
|
13
15
|
end
|
@@ -18,6 +20,12 @@ module Aws
|
|
18
20
|
end
|
19
21
|
end
|
20
22
|
|
23
|
+
def agent_host=(value)
|
24
|
+
@mutex.synchronize do
|
25
|
+
@agent_host = value
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
21
29
|
def publish(request_metrics)
|
22
30
|
send_datagram(request_metrics.api_call.to_json)
|
23
31
|
request_metrics.api_call_attempts.each do |attempt|
|
@@ -29,7 +37,7 @@ module Aws
|
|
29
37
|
if @agent_port
|
30
38
|
socket = UDPSocket.new
|
31
39
|
begin
|
32
|
-
socket.connect(
|
40
|
+
socket.connect(@agent_host, @agent_port)
|
33
41
|
socket.send(msg, 0)
|
34
42
|
rescue Errno::ECONNREFUSED
|
35
43
|
# Drop on the floor
|
@@ -171,7 +171,6 @@ module Aws
|
|
171
171
|
# @raise [RuntimeError] Raises a runtime error when called
|
172
172
|
# on a client that has not enabled response stubbing via
|
173
173
|
# `:stub_responses => true`.
|
174
|
-
#
|
175
174
|
def stub_responses(operation_name, *stubs)
|
176
175
|
if config.stub_responses
|
177
176
|
apply_stubs(operation_name, stubs.flatten)
|
@@ -182,13 +181,15 @@ module Aws
|
|
182
181
|
end
|
183
182
|
end
|
184
183
|
|
185
|
-
# Allows you to access all of the requests that the stubbed client has made
|
186
|
-
#
|
187
|
-
# @
|
188
|
-
#
|
189
|
-
#
|
190
|
-
#
|
191
|
-
#
|
184
|
+
# Allows you to access all of the requests that the stubbed client has made.
|
185
|
+
#
|
186
|
+
# @param [Hash] options The options for the api requests.
|
187
|
+
# @option options [Boolean] :exclude_presign (false) Set to true to filter
|
188
|
+
# out unsent requests from generated presigned urls.
|
189
|
+
# @return [Array] Returns an array of the api requests made. Each request
|
190
|
+
# object contains the :operation_name, :params, and :context.
|
191
|
+
# @raise [NotImplementedError] Raises `NotImplementedError` when the client
|
192
|
+
# is not stubbed.
|
192
193
|
def api_requests(options = {})
|
193
194
|
if config.stub_responses
|
194
195
|
if options[:exclude_presign]
|
@@ -291,7 +292,7 @@ module Aws
|
|
291
292
|
def data_to_http_resp(operation_name, data)
|
292
293
|
api = config.api
|
293
294
|
operation = api.operation(operation_name)
|
294
|
-
ParamValidator.
|
295
|
+
ParamValidator.new(operation.output, input: false).validate!(data)
|
295
296
|
protocol_helper.stub_data(api, operation, data)
|
296
297
|
end
|
297
298
|
|
@@ -1,10 +1,6 @@
|
|
1
|
-
require_relative 'deprecations'
|
2
|
-
|
3
1
|
module Aws
|
4
2
|
module CredentialProvider
|
5
3
|
|
6
|
-
extend Deprecations
|
7
|
-
|
8
4
|
# @return [Credentials]
|
9
5
|
attr_reader :credentials
|
10
6
|
|
@@ -13,32 +9,5 @@ module Aws
|
|
13
9
|
!!credentials && credentials.set?
|
14
10
|
end
|
15
11
|
|
16
|
-
# @deprecated Deprecated in 2.1.0. This method is subject to errors
|
17
|
-
# from a race condition when called against refreshable credential
|
18
|
-
# objects. Will be removed in 2.2.0.
|
19
|
-
# @see #credentials
|
20
|
-
def access_key_id
|
21
|
-
credentials ? credentials.access_key_id : nil
|
22
|
-
end
|
23
|
-
deprecated(:access_key_id, use: '#credentials')
|
24
|
-
|
25
|
-
# @deprecated Deprecated in 2.1.0. This method is subject to errors
|
26
|
-
# from a race condition when called against refreshable credential
|
27
|
-
# objects. Will be removed in 2.2.0.
|
28
|
-
# @see #credentials
|
29
|
-
def secret_access_key
|
30
|
-
credentials ? credentials.secret_access_key : nil
|
31
|
-
end
|
32
|
-
deprecated(:secret_access_key, use: '#credentials')
|
33
|
-
|
34
|
-
# @deprecated Deprecated in 2.1.0. This method is subject to errors
|
35
|
-
# from a race condition when called against refreshable credential
|
36
|
-
# objects. Will be removed in 2.2.0.
|
37
|
-
# @see #credentials
|
38
|
-
def session_token
|
39
|
-
credentials ? credentials.session_token : nil
|
40
|
-
end
|
41
|
-
deprecated(:session_token, use: '#credentials')
|
42
|
-
|
43
12
|
end
|
44
13
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
module Aws
|
2
2
|
# @api private
|
3
3
|
class CredentialProviderChain
|
4
|
-
|
5
4
|
def initialize(config = nil)
|
6
5
|
@config = config
|
7
6
|
end
|
@@ -20,15 +19,20 @@ module Aws
|
|
20
19
|
def providers
|
21
20
|
[
|
22
21
|
[:static_credentials, {}],
|
22
|
+
[:static_profile_assume_role_web_identity_credentials, {}],
|
23
|
+
[:static_profile_assume_role_credentials, {}],
|
24
|
+
[:static_profile_credentials, {}],
|
25
|
+
[:static_profile_process_credentials, {}],
|
23
26
|
[:env_credentials, {}],
|
27
|
+
[:assume_role_web_identity_credentials, {}],
|
24
28
|
[:assume_role_credentials, {}],
|
25
29
|
[:shared_credentials, {}],
|
26
30
|
[:process_credentials, {}],
|
27
31
|
[:instance_profile_credentials, {
|
28
32
|
retries: @config ? @config.instance_profile_credentials_retries : 0,
|
29
33
|
http_open_timeout: @config ? @config.instance_profile_credentials_timeout : 1,
|
30
|
-
http_read_timeout: @config ? @config.instance_profile_credentials_timeout : 1
|
31
|
-
}]
|
34
|
+
http_read_timeout: @config ? @config.instance_profile_credentials_timeout : 1
|
35
|
+
}]
|
32
36
|
]
|
33
37
|
end
|
34
38
|
|
@@ -37,48 +41,73 @@ module Aws
|
|
37
41
|
Credentials.new(
|
38
42
|
options[:config].access_key_id,
|
39
43
|
options[:config].secret_access_key,
|
40
|
-
options[:config].session_token
|
41
|
-
|
42
|
-
|
44
|
+
options[:config].session_token
|
45
|
+
)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def static_profile_assume_role_web_identity_credentials(options)
|
50
|
+
if Aws.shared_config.config_enabled? && options[:config] && options[:config].profile
|
51
|
+
Aws.shared_config.assume_role_web_identity_credentials_from_config(
|
52
|
+
profile: options[:config].profile,
|
53
|
+
region: options[:config].region
|
54
|
+
)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def static_profile_assume_role_credentials(options)
|
59
|
+
if Aws.shared_config.config_enabled? && options[:config] && options[:config].profile
|
60
|
+
assume_role_with_profile(options, options[:config].profile)
|
43
61
|
end
|
44
62
|
end
|
45
63
|
|
46
|
-
def
|
47
|
-
|
48
|
-
|
49
|
-
|
64
|
+
def static_profile_credentials(options)
|
65
|
+
if options[:config] && options[:config].profile
|
66
|
+
SharedCredentials.new(profile_name: options[:config].profile)
|
67
|
+
end
|
68
|
+
rescue Errors::NoSuchProfileError
|
69
|
+
nil
|
70
|
+
end
|
71
|
+
|
72
|
+
def static_profile_process_credentials(options)
|
73
|
+
if Aws.shared_config.config_enabled? && options[:config] && options[:config].profile
|
74
|
+
process_provider = Aws.shared_config.credential_process(profile: options[:config].profile)
|
75
|
+
ProcessCredentials.new(process_provider) if process_provider
|
76
|
+
end
|
77
|
+
rescue Errors::NoSuchProfileError
|
78
|
+
nil
|
79
|
+
end
|
80
|
+
|
81
|
+
def env_credentials(_options)
|
82
|
+
key = %w[AWS_ACCESS_KEY_ID AMAZON_ACCESS_KEY_ID AWS_ACCESS_KEY]
|
83
|
+
secret = %w[AWS_SECRET_ACCESS_KEY AMAZON_SECRET_ACCESS_KEY AWS_SECRET_KEY]
|
84
|
+
token = %w[AWS_SESSION_TOKEN AMAZON_SESSION_TOKEN]
|
50
85
|
Credentials.new(envar(key), envar(secret), envar(token))
|
51
86
|
end
|
52
87
|
|
53
88
|
def envar(keys)
|
54
89
|
keys.each do |key|
|
55
|
-
if ENV.key?(key)
|
56
|
-
return ENV[key]
|
57
|
-
end
|
90
|
+
return ENV[key] if ENV.key?(key)
|
58
91
|
end
|
59
92
|
nil
|
60
93
|
end
|
61
94
|
|
95
|
+
def determine_profile_name(options)
|
96
|
+
(options[:config] && options[:config].profile) || ENV['AWS_PROFILE'] || ENV['AWS_DEFAULT_PROFILE'] || 'default'
|
97
|
+
end
|
98
|
+
|
62
99
|
def shared_credentials(options)
|
63
|
-
|
64
|
-
|
65
|
-
else
|
66
|
-
SharedCredentials.new(
|
67
|
-
profile_name: ENV['AWS_PROFILE'].nil? ? 'default' : ENV['AWS_PROFILE'])
|
68
|
-
end
|
100
|
+
profile_name = determine_profile_name(options)
|
101
|
+
SharedCredentials.new(profile_name: profile_name)
|
69
102
|
rescue Errors::NoSuchProfileError
|
70
103
|
nil
|
71
104
|
end
|
72
105
|
|
73
106
|
def process_credentials(options)
|
74
|
-
profile_name = options
|
75
|
-
|
76
|
-
|
77
|
-
config = Aws.shared_config
|
78
|
-
if config.config_enabled? && process_provider = config.credentials_process(profile_name)
|
107
|
+
profile_name = determine_profile_name(options)
|
108
|
+
if Aws.shared_config.config_enabled? &&
|
109
|
+
(process_provider = Aws.shared_config.credential_process(profile: profile_name))
|
79
110
|
ProcessCredentials.new(process_provider)
|
80
|
-
else
|
81
|
-
nil
|
82
111
|
end
|
83
112
|
rescue Errors::NoSuchProfileError
|
84
113
|
nil
|
@@ -86,33 +115,44 @@ module Aws
|
|
86
115
|
|
87
116
|
def assume_role_credentials(options)
|
88
117
|
if Aws.shared_config.config_enabled?
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
118
|
+
assume_role_with_profile(options, determine_profile_name(options))
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
def assume_role_web_identity_credentials(options)
|
123
|
+
region = options[:config].region if options[:config]
|
124
|
+
if (role_arn = ENV['AWS_ROLE_ARN']) && (token_file = ENV['AWS_WEB_IDENTITY_TOKEN_FILE'])
|
125
|
+
cfg = {
|
126
|
+
role_arn: role_arn,
|
127
|
+
web_identity_token_file: token_file,
|
128
|
+
role_session_name: ENV['AWS_ROLE_SESSION_NAME']
|
129
|
+
}
|
130
|
+
cfg[:region] = region if region
|
131
|
+
AssumeRoleWebIdentityCredentials.new(cfg)
|
132
|
+
elsif Aws.shared_config.config_enabled?
|
133
|
+
profile = options[:config].profile if options[:config]
|
134
|
+
Aws.shared_config.assume_role_web_identity_credentials_from_config(
|
135
|
+
profile: profile,
|
136
|
+
region: region
|
137
|
+
)
|
98
138
|
end
|
99
139
|
end
|
100
140
|
|
101
141
|
def instance_profile_credentials(options)
|
102
|
-
if ENV[
|
142
|
+
if ENV['AWS_CONTAINER_CREDENTIALS_RELATIVE_URI']
|
103
143
|
ECSCredentials.new(options)
|
104
144
|
else
|
105
145
|
InstanceProfileCredentials.new(options)
|
106
146
|
end
|
107
147
|
end
|
108
148
|
|
109
|
-
def assume_role_with_profile(
|
149
|
+
def assume_role_with_profile(options, profile_name)
|
150
|
+
region = (options[:config] && options[:config].region)
|
110
151
|
Aws.shared_config.assume_role_credentials_from_config(
|
111
|
-
profile:
|
152
|
+
profile: profile_name,
|
112
153
|
region: region,
|
113
154
|
chain_config: @config
|
114
155
|
)
|
115
156
|
end
|
116
|
-
|
117
157
|
end
|
118
158
|
end
|