aws-sdk-core 3.0.0.rc2 → 3.0.0.rc3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4231d08283aa109096c98fd0229868c31d33c2d2
4
- data.tar.gz: 0b2b655f8efc8018152d22ea594b78a98ebfd3f7
3
+ metadata.gz: 2b367b9513d10af431235298f76327b90144a1fd
4
+ data.tar.gz: 921ca14ca28f4c5ef0a946eb3b3730bba5355f88
5
5
  SHA512:
6
- metadata.gz: 756a7b9463f304c0683952010fe8ae32381768c9450f9fb3e95b78d1453b950f75d91c6a6d8264760d4f9423b57128fa29e43a0125e2d5fdb7ca56691ce80748
7
- data.tar.gz: 881b851bab028471e49efb823c31bf52016c4564550e8aab4e094b98ccf4490e23efbb6d0395c83934b3babc37be6344781bc53d53c66c17ec2972176d6c7438
6
+ metadata.gz: 994e0954d23f6130188b8b2087fffaf6c99cb8e0db2c6efd9dabb7ff62f4f4047a3923ce2a9a85270c34d696742cd752ce77b1573901b807d49941e632e8602d
7
+ data.tar.gz: 113c307ce0841a5bd8218d840c9da85ea26f75b8944f27a98d1820c3d237aac5b87cf8622bd6c31b33571b3a7d07edd4827fb8d97347984792fd6d7fccadd1f9
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.0.0.rc2
1
+ 3.0.0.rc3
@@ -11,7 +11,7 @@ module Aws
11
11
  #
12
12
  # @api private
13
13
  # begin
14
- SENSITIVE = [:access_token, :admin_contact, :artifact_credentials, :auth_code, :base_32_string_seed, :client_id, :client_secret, :copy_source_sse_customer_key, :credentials, :id_token, :local_console_password, :message, :name, :new_password, :old_password, :owner_information, :parameters, :password, :payload, :plaintext, :previous_password, :private_key, :proposed_password, :public_key, :qr_code_png, :refresh_token, :registrant_contact, :secret_access_key, :secret_hash, :shared_secret, :sse_customer_key, :ssekms_key_id, :task_parameters, :tech_contact, :temporary_password, :trust_password, :upload_credentials, :username, :value, :values, :variables, :zip_file]
14
+ SENSITIVE = [:access_token, :admin_contact, :artifact_credentials, :auth_code, :base_32_string_seed, :client_id, :client_secret, :copy_source_sse_customer_key, :credentials, :id_token, :local_console_password, :message, :name, :new_password, :old_password, :owner_information, :parameters, :password, :payload, :plaintext, :previous_password, :private_key, :proposed_password, :public_key, :qr_code_png, :refresh_token, :registrant_contact, :secret_access_key, :secret_hash, :service_password, :shared_secret, :sse_customer_key, :ssekms_key_id, :task_parameters, :tech_contact, :temporary_password, :trust_password, :upload_credentials, :username, :value, :values, :variables, :zip_file]
15
15
  # end
16
16
 
17
17
  def initialize(options = {})
@@ -35,6 +35,7 @@ errors from expired credentials.
35
35
  'ProvisionedThroughputExceededException', # dynamodb
36
36
  'RequestLimitExceeded', # ec2
37
37
  'BandwidthLimitExceeded', # cloud search
38
+ 'LimitExceededException', # kinesis
38
39
  ])
39
40
 
40
41
  CHECKSUM_ERRORS = Set.new([
@@ -80,7 +80,7 @@ module Aws
80
80
  service: cfg.sigv4_name,
81
81
  region: cfg.sigv4_region,
82
82
  credentials_provider: cfg.credentials,
83
- unsigned_headers: ['content-length', 'user-agent']
83
+ unsigned_headers: ['content-length', 'user-agent', 'x-amzn-trace-id']
84
84
  )
85
85
  elsif cfg.credentials
86
86
  raise Errors::MissingRegionError
@@ -29,7 +29,7 @@ module Aws
29
29
 
30
30
  def apply_path_params(uri, params)
31
31
  path = uri.path.sub(/\/$/, '') + @path_pattern.split('?')[0]
32
- uri.path = path.gsub(/{\w+\+?}/) do |placeholder|
32
+ uri.path = path.gsub(/{.+?}/) do |placeholder|
33
33
  param_value_for_placeholder(placeholder, params)
34
34
  end
35
35
  end
@@ -1,3 +1,3 @@
1
1
  module Aws
2
- VERSION = '2.6.28'
2
+ VERSION = '2.6.44'
3
3
  end
@@ -1,6 +1,6 @@
1
1
  # WARNING ABOUT GENERATED CODE
2
2
  #
3
- # This file is generated. See the contributing for info on making contributions:
3
+ # This file is generated. See the contributing guide for more information:
4
4
  # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
5
5
  #
6
6
  # WARNING ABOUT GENERATED CODE
@@ -1,6 +1,6 @@
1
1
  # WARNING ABOUT GENERATED CODE
2
2
  #
3
- # This file is generated. See the contributing for info on making contributions:
3
+ # This file is generated. See the contributing guide for more information:
4
4
  # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
5
5
  #
6
6
  # WARNING ABOUT GENERATED CODE
@@ -23,1177 +23,1238 @@ require 'aws-sdk-core/plugins/protocols/query.rb'
23
23
 
24
24
  Aws::Plugins::GlobalConfiguration.add_identifier(:sts)
25
25
 
26
- module Aws
27
- module STS
28
- class Client < Seahorse::Client::Base
26
+ module Aws::STS
27
+ class Client < Seahorse::Client::Base
29
28
 
30
- include Aws::ClientStubs
29
+ include Aws::ClientStubs
31
30
 
32
- @identifier = :sts
31
+ @identifier = :sts
33
32
 
34
- set_api(ClientApi::API)
33
+ set_api(ClientApi::API)
35
34
 
36
- add_plugin(Seahorse::Client::Plugins::ContentLength)
37
- add_plugin(Aws::Plugins::CredentialsConfiguration)
38
- add_plugin(Aws::Plugins::Logging)
39
- add_plugin(Aws::Plugins::ParamConverter)
40
- add_plugin(Aws::Plugins::ParamValidator)
41
- add_plugin(Aws::Plugins::UserAgent)
42
- add_plugin(Aws::Plugins::HelpfulSocketErrors)
43
- add_plugin(Aws::Plugins::RetryErrors)
44
- add_plugin(Aws::Plugins::GlobalConfiguration)
45
- add_plugin(Aws::Plugins::RegionalEndpoint)
46
- add_plugin(Aws::Plugins::ResponsePaging)
47
- add_plugin(Aws::Plugins::StubResponses)
48
- add_plugin(Aws::Plugins::IdempotencyToken)
49
- add_plugin(Aws::Plugins::SignatureV4)
50
- add_plugin(Aws::Plugins::Protocols::Query)
35
+ add_plugin(Seahorse::Client::Plugins::ContentLength)
36
+ add_plugin(Aws::Plugins::CredentialsConfiguration)
37
+ add_plugin(Aws::Plugins::Logging)
38
+ add_plugin(Aws::Plugins::ParamConverter)
39
+ add_plugin(Aws::Plugins::ParamValidator)
40
+ add_plugin(Aws::Plugins::UserAgent)
41
+ add_plugin(Aws::Plugins::HelpfulSocketErrors)
42
+ add_plugin(Aws::Plugins::RetryErrors)
43
+ add_plugin(Aws::Plugins::GlobalConfiguration)
44
+ add_plugin(Aws::Plugins::RegionalEndpoint)
45
+ add_plugin(Aws::Plugins::ResponsePaging)
46
+ add_plugin(Aws::Plugins::StubResponses)
47
+ add_plugin(Aws::Plugins::IdempotencyToken)
48
+ add_plugin(Aws::Plugins::SignatureV4)
49
+ add_plugin(Aws::Plugins::Protocols::Query)
51
50
 
52
- # @option options [required, Aws::CredentialProvider] :credentials
53
- # Your AWS credentials. This can be an instance of any one of the
54
- # following classes:
55
- #
56
- # * `Aws::Credentials` - Used for configuring static, non-refreshing
57
- # credentials.
58
- #
59
- # * `Aws::InstanceProfileCredentials` - Used for loading credentials
60
- # from an EC2 IMDS on an EC2 instance.
61
- #
62
- # * `Aws::SharedCredentials` - Used for loading credentials from a
63
- # shared file, such as `~/.aws/config`.
64
- #
65
- # * `Aws::AssumeRoleCredentials` - Used when you need to assume a role.
66
- #
67
- # When `:credentials` are not configured directly, the following
68
- # locations will be searched for credentials:
69
- #
70
- # * `Aws.config[:credentials]`
71
- # * The `:access_key_id`, `:secret_access_key`, and `:session_token` options.
72
- # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']
73
- # * `~/.aws/credentials`
74
- # * `~/.aws/config`
75
- # * EC2 IMDS instance profile - When used by default, the timeouts are
76
- # very aggressive. Construct and pass an instance of
77
- # `Aws::InstanceProfileCredentails` to enable retries and extended
78
- # timeouts.
79
- # @option options [required, String] :region
80
- # The AWS region to connect to. The configured `:region` is
81
- # used to determine the service `:endpoint`. When not passed,
82
- # a default `:region` is search for in the following locations:
83
- #
84
- # * `Aws.config[:region]`
85
- # * `ENV['AWS_REGION']`
86
- # * `ENV['AMAZON_REGION']`
87
- # * `ENV['AWS_DEFAULT_REGION']`
88
- # * `~/.aws/credentials`
89
- # * `~/.aws/config`
90
- # @option options [String] :access_key_id
91
- # @option options [Boolean] :convert_params (true)
92
- # When `true`, an attempt is made to coerce request parameters into
93
- # the required types.
94
- # @option options [String] :endpoint
95
- # The client endpoint is normally constructed from the `:region`
96
- # option. You should only configure an `:endpoint` when connecting
97
- # to test endpoints. This should be avalid HTTP(S) URI.
98
- # @option options [Aws::Log::Formatter] :log_formatter (Aws::Log::Formatter.default)
99
- # The log formatter.
100
- # @option options [Symbol] :log_level (:info)
101
- # The log level to send messages to the `:logger` at.
102
- # @option options [Logger] :logger
103
- # The Logger instance to send log messages to. If this option
104
- # is not set, logging will be disabled.
105
- # @option options [String] :profile ("default")
106
- # Used when loading credentials from the shared credentials file
107
- # at HOME/.aws/credentials. When not specified, 'default' is used.
108
- # @option options [Integer] :retry_limit (3)
109
- # The maximum number of times to retry failed requests. Only
110
- # ~ 500 level server errors and certain ~ 400 level client errors
111
- # are retried. Generally, these are throttling errors, data
112
- # checksum errors, networking errors, timeout errors and auth
113
- # errors from expired credentials.
114
- # @option options [String] :secret_access_key
115
- # @option options [String] :session_token
116
- # @option options [Boolean] :stub_responses (false)
117
- # Causes the client to return stubbed responses. By default
118
- # fake responses are generated and returned. You can specify
119
- # the response data to return or errors to raise by calling
120
- # {ClientStubs#stub_responses}. See {ClientStubs} for more information.
121
- #
122
- # ** Please note ** When response stubbing is enabled, no HTTP
123
- # requests are made, and retries are disabled.
124
- # @option options [Boolean] :validate_params (true)
125
- # When `true`, request parameters are validated before
126
- # sending the request.
127
- def initialize(*args)
128
- super
129
- end
130
-
131
- # @!group API Operations
51
+ # @option options [required, Aws::CredentialProvider] :credentials
52
+ # Your AWS credentials. This can be an instance of any one of the
53
+ # following classes:
54
+ #
55
+ # * `Aws::Credentials` - Used for configuring static, non-refreshing
56
+ # credentials.
57
+ #
58
+ # * `Aws::InstanceProfileCredentials` - Used for loading credentials
59
+ # from an EC2 IMDS on an EC2 instance.
60
+ #
61
+ # * `Aws::SharedCredentials` - Used for loading credentials from a
62
+ # shared file, such as `~/.aws/config`.
63
+ #
64
+ # * `Aws::AssumeRoleCredentials` - Used when you need to assume a role.
65
+ #
66
+ # When `:credentials` are not configured directly, the following
67
+ # locations will be searched for credentials:
68
+ #
69
+ # * `Aws.config[:credentials]`
70
+ # * The `:access_key_id`, `:secret_access_key`, and `:session_token` options.
71
+ # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']
72
+ # * `~/.aws/credentials`
73
+ # * `~/.aws/config`
74
+ # * EC2 IMDS instance profile - When used by default, the timeouts are
75
+ # very aggressive. Construct and pass an instance of
76
+ # `Aws::InstanceProfileCredentails` to enable retries and extended
77
+ # timeouts.
78
+ #
79
+ # @option options [required, String] :region
80
+ # The AWS region to connect to. The configured `:region` is
81
+ # used to determine the service `:endpoint`. When not passed,
82
+ # a default `:region` is search for in the following locations:
83
+ #
84
+ # * `Aws.config[:region]`
85
+ # * `ENV['AWS_REGION']`
86
+ # * `ENV['AMAZON_REGION']`
87
+ # * `ENV['AWS_DEFAULT_REGION']`
88
+ # * `~/.aws/credentials`
89
+ # * `~/.aws/config`
90
+ #
91
+ # @option options [String] :access_key_id
92
+ #
93
+ # @option options [Boolean] :convert_params (true)
94
+ # When `true`, an attempt is made to coerce request parameters into
95
+ # the required types.
96
+ #
97
+ # @option options [String] :endpoint
98
+ # The client endpoint is normally constructed from the `:region`
99
+ # option. You should only configure an `:endpoint` when connecting
100
+ # to test endpoints. This should be avalid HTTP(S) URI.
101
+ #
102
+ # @option options [Aws::Log::Formatter] :log_formatter (Aws::Log::Formatter.default)
103
+ # The log formatter.
104
+ #
105
+ # @option options [Symbol] :log_level (:info)
106
+ # The log level to send messages to the `:logger` at.
107
+ #
108
+ # @option options [Logger] :logger
109
+ # The Logger instance to send log messages to. If this option
110
+ # is not set, logging will be disabled.
111
+ #
112
+ # @option options [String] :profile ("default")
113
+ # Used when loading credentials from the shared credentials file
114
+ # at HOME/.aws/credentials. When not specified, 'default' is used.
115
+ #
116
+ # @option options [Integer] :retry_limit (3)
117
+ # The maximum number of times to retry failed requests. Only
118
+ # ~ 500 level server errors and certain ~ 400 level client errors
119
+ # are retried. Generally, these are throttling errors, data
120
+ # checksum errors, networking errors, timeout errors and auth
121
+ # errors from expired credentials.
122
+ #
123
+ # @option options [String] :secret_access_key
124
+ #
125
+ # @option options [String] :session_token
126
+ #
127
+ # @option options [Boolean] :stub_responses (false)
128
+ # Causes the client to return stubbed responses. By default
129
+ # fake responses are generated and returned. You can specify
130
+ # the response data to return or errors to raise by calling
131
+ # {ClientStubs#stub_responses}. See {ClientStubs} for more information.
132
+ #
133
+ # ** Please note ** When response stubbing is enabled, no HTTP
134
+ # requests are made, and retries are disabled.
135
+ #
136
+ # @option options [Boolean] :validate_params (true)
137
+ # When `true`, request parameters are validated before
138
+ # sending the request.
139
+ #
140
+ def initialize(*args)
141
+ super
142
+ end
132
143
 
133
- # Returns a set of temporary security credentials (consisting of an
134
- # access key ID, a secret access key, and a security token) that you can
135
- # use to access AWS resources that you might not normally have access
136
- # to. Typically, you use `AssumeRole` for cross-account access or
137
- # federation. For a comparison of `AssumeRole` with the other APIs that
138
- # produce temporary credentials, see [Requesting Temporary Security
139
- # Credentials][1] and [Comparing the AWS STS APIs][2] in the *IAM User
140
- # Guide*.
141
- #
142
- # **Important:** You cannot call `AssumeRole` by using AWS root account
143
- # credentials; access is denied. You must use credentials for an IAM
144
- # user or an IAM role to call `AssumeRole`.
145
- #
146
- # For cross-account access, imagine that you own multiple accounts and
147
- # need to access resources in each account. You could create long-term
148
- # credentials in each account to access those resources. However,
149
- # managing all those credentials and remembering which one can access
150
- # which account can be time consuming. Instead, you can create one set
151
- # of long-term credentials in one account and then use temporary
152
- # security credentials to access all the other accounts by assuming
153
- # roles in those accounts. For more information about roles, see [IAM
154
- # Roles (Delegation and Federation)][3] in the *IAM User Guide*.
155
- #
156
- # For federation, you can, for example, grant single sign-on access to
157
- # the AWS Management Console. If you already have an identity and
158
- # authentication system in your corporate network, you don't have to
159
- # recreate user identities in AWS in order to grant those user
160
- # identities access to AWS. Instead, after a user has been
161
- # authenticated, you call `AssumeRole` (and specify the role with the
162
- # appropriate permissions) to get temporary security credentials for
163
- # that user. With those temporary security credentials, you construct a
164
- # sign-in URL that users can use to access the console. For more
165
- # information, see [Common Scenarios for Temporary Credentials][4] in
166
- # the *IAM User Guide*.
167
- #
168
- # The temporary security credentials are valid for the duration that you
169
- # specified when calling `AssumeRole`, which can be from 900 seconds (15
170
- # minutes) to a maximum of 3600 seconds (1 hour). The default is 1 hour.
171
- #
172
- # The temporary security credentials created by `AssumeRole` can be used
173
- # to make API calls to any AWS service with the following exception: you
174
- # cannot call the STS service's `GetFederationToken` or
175
- # `GetSessionToken` APIs.
176
- #
177
- # Optionally, you can pass an IAM access policy to this operation. If
178
- # you choose not to pass a policy, the temporary security credentials
179
- # that are returned by the operation have the permissions that are
180
- # defined in the access policy of the role that is being assumed. If you
181
- # pass a policy to this operation, the temporary security credentials
182
- # that are returned by the operation have the permissions that are
183
- # allowed by both the access policy of the role that is being assumed,
184
- # <i> <b>and</b> </i> the policy that you pass. This gives you a way to
185
- # further restrict the permissions for the resulting temporary security
186
- # credentials. You cannot use the passed policy to grant permissions
187
- # that are in excess of those allowed by the access policy of the role
188
- # that is being assumed. For more information, see [Permissions for
189
- # AssumeRole, AssumeRoleWithSAML, and AssumeRoleWithWebIdentity][5] in
190
- # the *IAM User Guide*.
191
- #
192
- # To assume a role, your AWS account must be trusted by the role. The
193
- # trust relationship is defined in the role's trust policy when the
194
- # role is created. That trust policy states which accounts are allowed
195
- # to delegate access to this account's role.
196
- #
197
- # The user who wants to access the role must also have permissions
198
- # delegated from the role's administrator. If the user is in a
199
- # different account than the role, then the user's administrator must
200
- # attach a policy that allows the user to call AssumeRole on the ARN of
201
- # the role in the other account. If the user is in the same account as
202
- # the role, then you can either attach a policy to the user (identical
203
- # to the previous different account user), or you can add the user as a
204
- # principal directly in the role's trust policy
205
- #
206
- # **Using MFA with AssumeRole**
207
- #
208
- # You can optionally include multi-factor authentication (MFA)
209
- # information when you call `AssumeRole`. This is useful for
210
- # cross-account scenarios in which you want to make sure that the user
211
- # who is assuming the role has been authenticated using an AWS MFA
212
- # device. In that scenario, the trust policy of the role being assumed
213
- # includes a condition that tests for MFA authentication; if the caller
214
- # does not include valid MFA information, the request to assume the role
215
- # is denied. The condition in a trust policy that tests for MFA
216
- # authentication might look like the following example.
217
- #
218
- # `"Condition": \{"Bool": \{"aws:MultiFactorAuthPresent": true\}\}`
219
- #
220
- # For more information, see [Configuring MFA-Protected API Access][6] in
221
- # the *IAM User Guide* guide.
222
- #
223
- # To use MFA with `AssumeRole`, you pass values for the `SerialNumber`
224
- # and `TokenCode` parameters. The `SerialNumber` value identifies the
225
- # user's hardware or virtual MFA device. The `TokenCode` is the
226
- # time-based one-time password (TOTP) that the MFA devices produces.
227
- #
228
- #
229
- #
230
- # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html
231
- # [2]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison
232
- # [3]: http://docs.aws.amazon.com/IAM/latest/UserGuide/roles-toplevel.html
233
- # [4]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html#sts-introduction
234
- # [5]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_assumerole.html
235
- # [6]: http://docs.aws.amazon.com/IAM/latest/UserGuide/MFAProtectedAPI.html
236
- # @option params [required, String] :role_arn
237
- # The Amazon Resource Name (ARN) of the role to assume.
238
- # @option params [required, String] :role_session_name
239
- # An identifier for the assumed role session.
240
- #
241
- # Use the role session name to uniquely identify a session when the same
242
- # role is assumed by different principals or for different reasons. In
243
- # cross-account scenarios, the role session name is visible to, and can
244
- # be logged by the account that owns the role. The role session name is
245
- # also used in the ARN of the assumed role principal. This means that
246
- # subsequent cross-account API requests using the temporary security
247
- # credentials will expose the role session name to the external account
248
- # in their CloudTrail logs.
249
- #
250
- # The format for this parameter, as described by its regex pattern, is a
251
- # string of characters consisting of upper- and lower-case alphanumeric
252
- # characters with no spaces. You can also include underscores or any of
253
- # the following characters: =,.@-
254
- # @option params [String] :policy
255
- # An IAM policy in JSON format.
256
- #
257
- # This parameter is optional. If you pass a policy, the temporary
258
- # security credentials that are returned by the operation have the
259
- # permissions that are allowed by both (the intersection of) the access
260
- # policy of the role that is being assumed, *and* the policy that you
261
- # pass. This gives you a way to further restrict the permissions for the
262
- # resulting temporary security credentials. You cannot use the passed
263
- # policy to grant permissions that are in excess of those allowed by the
264
- # access policy of the role that is being assumed. For more information,
265
- # see [Permissions for AssumeRole, AssumeRoleWithSAML, and
266
- # AssumeRoleWithWebIdentity][1] in the *IAM User Guide*.
267
- #
268
- # The format for this parameter, as described by its regex pattern, is a
269
- # string of characters up to 2048 characters in length. The characters
270
- # can be any ASCII character from the space character to the end of the
271
- # valid character list (\\u0020-\\u00FF). It can also include the tab
272
- # (\\u0009), linefeed (\\u000A), and carriage return (\\u000D)
273
- # characters.
274
- #
275
- # <note markdown="1"> The policy plain text must be 2048 bytes or shorter. However, an
276
- # internal conversion compresses it into a packed binary format with a
277
- # separate limit. The PackedPolicySize response element indicates by
278
- # percentage how close to the upper size limit the policy is, with 100%
279
- # equaling the maximum allowed size.
280
- #
281
- # </note>
282
- #
283
- #
284
- #
285
- # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_assumerole.html
286
- # @option params [Integer] :duration_seconds
287
- # The duration, in seconds, of the role session. The value can range
288
- # from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default,
289
- # the value is set to 3600 seconds.
290
- #
291
- # <note markdown="1"> This is separate from the duration of a console session that you might
292
- # request using the returned credentials. The request to the federation
293
- # endpoint for a console sign-in token takes a `SessionDuration`
294
- # parameter that specifies the maximum length of the console session,
295
- # separately from the `DurationSeconds` parameter on this API. For more
296
- # information, see [Creating a URL that Enables Federated Users to
297
- # Access the AWS Management Console][1] in the *IAM User Guide*.
298
- #
299
- # </note>
300
- #
301
- #
302
- #
303
- # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html
304
- # @option params [String] :external_id
305
- # A unique identifier that is used by third parties when assuming roles
306
- # in their customers' accounts. For each role that the third party can
307
- # assume, they should instruct their customers to ensure the role's
308
- # trust policy checks for the external ID that the third party
309
- # generated. Each time the third party assumes the role, they should
310
- # pass the customer's external ID. The external ID is useful in order
311
- # to help third parties bind a role to the customer who created it. For
312
- # more information about the external ID, see [How to Use an External ID
313
- # When Granting Access to Your AWS Resources to a Third Party][1] in the
314
- # *IAM User Guide*.
315
- #
316
- # The format for this parameter, as described by its regex pattern, is a
317
- # string of characters consisting of upper- and lower-case alphanumeric
318
- # characters with no spaces. You can also include underscores or any of
319
- # the following characters: =,.@:\\/-
320
- #
321
- #
322
- #
323
- # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html
324
- # @option params [String] :serial_number
325
- # The identification number of the MFA device that is associated with
326
- # the user who is making the `AssumeRole` call. Specify this value if
327
- # the trust policy of the role being assumed includes a condition that
328
- # requires MFA authentication. The value is either the serial number for
329
- # a hardware device (such as `GAHT12345678`) or an Amazon Resource Name
330
- # (ARN) for a virtual device (such as
331
- # `arn:aws:iam::123456789012:mfa/user`).
332
- #
333
- # The format for this parameter, as described by its regex pattern, is a
334
- # string of characters consisting of upper- and lower-case alphanumeric
335
- # characters with no spaces. You can also include underscores or any of
336
- # the following characters: =,.@-
337
- # @option params [String] :token_code
338
- # The value provided by the MFA device, if the trust policy of the role
339
- # being assumed requires MFA (that is, if the policy includes a
340
- # condition that tests for MFA). If the role being assumed requires MFA
341
- # and if the `TokenCode` value is missing or expired, the `AssumeRole`
342
- # call returns an "access denied" error.
343
- #
344
- # The format for this parameter, as described by its regex pattern, is a
345
- # sequence of six numeric digits.
346
- # @return [Types::AssumeRoleResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
347
- #
348
- # * {Types::AssumeRoleResponse#credentials #Credentials} => Types::Credentials
349
- # * {Types::AssumeRoleResponse#assumed_role_user #AssumedRoleUser} => Types::AssumedRoleUser
350
- # * {Types::AssumeRoleResponse#packed_policy_size #PackedPolicySize} => Integer
351
- #
352
- # @example Request syntax with placeholder values
353
- # resp = client.assume_role({
354
- # role_arn: "arnType", # required
355
- # role_session_name: "roleSessionNameType", # required
356
- # policy: "sessionPolicyDocumentType",
357
- # duration_seconds: 1,
358
- # external_id: "externalIdType",
359
- # serial_number: "serialNumberType",
360
- # token_code: "tokenCodeType",
361
- # })
362
- #
363
- # @example Response structure
364
- # resp.credentials.access_key_id #=> String
365
- # resp.credentials.secret_access_key #=> String
366
- # resp.credentials.session_token #=> String
367
- # resp.credentials.expiration #=> Time
368
- # resp.assumed_role_user.assumed_role_id #=> String
369
- # resp.assumed_role_user.arn #=> String
370
- # resp.packed_policy_size #=> Integer
371
- # @overload assume_role(params = {})
372
- # @param [Hash] params ({})
373
- def assume_role(params = {}, options = {})
374
- req = build_request(:assume_role, params)
375
- req.send_request(options)
376
- end
144
+ # @!group API Operations
377
145
 
378
- # Returns a set of temporary security credentials for users who have
379
- # been authenticated via a SAML authentication response. This operation
380
- # provides a mechanism for tying an enterprise identity store or
381
- # directory to role-based AWS access without user-specific credentials
382
- # or configuration. For a comparison of `AssumeRoleWithSAML` with the
383
- # other APIs that produce temporary credentials, see [Requesting
384
- # Temporary Security Credentials][1] and [Comparing the AWS STS APIs][2]
385
- # in the *IAM User Guide*.
386
- #
387
- # The temporary security credentials returned by this operation consist
388
- # of an access key ID, a secret access key, and a security token.
389
- # Applications can use these temporary security credentials to sign
390
- # calls to AWS services.
391
- #
392
- # The temporary security credentials are valid for the duration that you
393
- # specified when calling `AssumeRole`, or until the time specified in
394
- # the SAML authentication response's `SessionNotOnOrAfter` value,
395
- # whichever is shorter. The duration can be from 900 seconds (15
396
- # minutes) to a maximum of 3600 seconds (1 hour). The default is 1 hour.
397
- #
398
- # The temporary security credentials created by `AssumeRoleWithSAML` can
399
- # be used to make API calls to any AWS service with the following
400
- # exception: you cannot call the STS service's `GetFederationToken` or
401
- # `GetSessionToken` APIs.
402
- #
403
- # Optionally, you can pass an IAM access policy to this operation. If
404
- # you choose not to pass a policy, the temporary security credentials
405
- # that are returned by the operation have the permissions that are
406
- # defined in the access policy of the role that is being assumed. If you
407
- # pass a policy to this operation, the temporary security credentials
408
- # that are returned by the operation have the permissions that are
409
- # allowed by the intersection of both the access policy of the role that
410
- # is being assumed, <i> <b>and</b> </i> the policy that you pass. This
411
- # means that both policies must grant the permission for the action to
412
- # be allowed. This gives you a way to further restrict the permissions
413
- # for the resulting temporary security credentials. You cannot use the
414
- # passed policy to grant permissions that are in excess of those allowed
415
- # by the access policy of the role that is being assumed. For more
416
- # information, see [Permissions for AssumeRole, AssumeRoleWithSAML, and
417
- # AssumeRoleWithWebIdentity][3] in the *IAM User Guide*.
418
- #
419
- # Before your application can call `AssumeRoleWithSAML`, you must
420
- # configure your SAML identity provider (IdP) to issue the claims
421
- # required by AWS. Additionally, you must use AWS Identity and Access
422
- # Management (IAM) to create a SAML provider entity in your AWS account
423
- # that represents your identity provider, and create an IAM role that
424
- # specifies this SAML provider in its trust policy.
425
- #
426
- # Calling `AssumeRoleWithSAML` does not require the use of AWS security
427
- # credentials. The identity of the caller is validated by using keys in
428
- # the metadata document that is uploaded for the SAML provider entity
429
- # for your identity provider.
430
- #
431
- # Calling `AssumeRoleWithSAML` can result in an entry in your AWS
432
- # CloudTrail logs. The entry includes the value in the `NameID` element
433
- # of the SAML assertion. We recommend that you use a NameIDType that is
434
- # not associated with any personally identifiable information (PII). For
435
- # example, you could instead use the Persistent Identifier
436
- # (`urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`).
437
- #
438
- # For more information, see the following resources:
439
- #
440
- # * [About SAML 2.0-based Federation][4] in the *IAM User Guide*.
441
- #
442
- # * [Creating SAML Identity Providers][5] in the *IAM User Guide*.
443
- #
444
- # * [Configuring a Relying Party and Claims][6] in the *IAM User Guide*.
445
- #
446
- # * [Creating a Role for SAML 2.0 Federation][7] in the *IAM User
447
- # Guide*.
448
- #
449
- #
450
- #
451
- # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html
452
- # [2]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison
453
- # [3]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_assumerole.html
454
- # [4]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html
455
- # [5]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html
456
- # [6]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_relying-party.html
457
- # [7]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html
458
- # @option params [required, String] :role_arn
459
- # The Amazon Resource Name (ARN) of the role that the caller is
460
- # assuming.
461
- # @option params [required, String] :principal_arn
462
- # The Amazon Resource Name (ARN) of the SAML provider in IAM that
463
- # describes the IdP.
464
- # @option params [required, String] :saml_assertion
465
- # The base-64 encoded SAML authentication response provided by the IdP.
466
- #
467
- # For more information, see [Configuring a Relying Party and Adding
468
- # Claims][1] in the *Using IAM* guide.
469
- #
470
- #
471
- #
472
- # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/create-role-saml-IdP-tasks.html
473
- # @option params [String] :policy
474
- # An IAM policy in JSON format.
475
- #
476
- # The policy parameter is optional. If you pass a policy, the temporary
477
- # security credentials that are returned by the operation have the
478
- # permissions that are allowed by both the access policy of the role
479
- # that is being assumed, <i> <b>and</b> </i> the policy that you pass.
480
- # This gives you a way to further restrict the permissions for the
481
- # resulting temporary security credentials. You cannot use the passed
482
- # policy to grant permissions that are in excess of those allowed by the
483
- # access policy of the role that is being assumed. For more information,
484
- # [Permissions for AssumeRole, AssumeRoleWithSAML, and
485
- # AssumeRoleWithWebIdentity][1] in the *IAM User Guide*.
486
- #
487
- # The format for this parameter, as described by its regex pattern, is a
488
- # string of characters up to 2048 characters in length. The characters
489
- # can be any ASCII character from the space character to the end of the
490
- # valid character list (\\u0020-\\u00FF). It can also include the tab
491
- # (\\u0009), linefeed (\\u000A), and carriage return (\\u000D)
492
- # characters.
493
- #
494
- # <note markdown="1"> The policy plain text must be 2048 bytes or shorter. However, an
495
- # internal conversion compresses it into a packed binary format with a
496
- # separate limit. The PackedPolicySize response element indicates by
497
- # percentage how close to the upper size limit the policy is, with 100%
498
- # equaling the maximum allowed size.
499
- #
500
- # </note>
501
- #
502
- #
503
- #
504
- # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_assumerole.html
505
- # @option params [Integer] :duration_seconds
506
- # The duration, in seconds, of the role session. The value can range
507
- # from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default,
508
- # the value is set to 3600 seconds. An expiration can also be specified
509
- # in the SAML authentication response's `SessionNotOnOrAfter` value.
510
- # The actual expiration time is whichever value is shorter.
511
- #
512
- # <note markdown="1"> This is separate from the duration of a console session that you might
513
- # request using the returned credentials. The request to the federation
514
- # endpoint for a console sign-in token takes a `SessionDuration`
515
- # parameter that specifies the maximum length of the console session,
516
- # separately from the `DurationSeconds` parameter on this API. For more
517
- # information, see [Enabling SAML 2.0 Federated Users to Access the AWS
518
- # Management Console][1] in the *IAM User Guide*.
519
- #
520
- # </note>
521
- #
522
- #
523
- #
524
- # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-saml.html
525
- # @return [Types::AssumeRoleWithSAMLResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
526
- #
527
- # * {Types::AssumeRoleWithSAMLResponse#credentials #Credentials} => Types::Credentials
528
- # * {Types::AssumeRoleWithSAMLResponse#assumed_role_user #AssumedRoleUser} => Types::AssumedRoleUser
529
- # * {Types::AssumeRoleWithSAMLResponse#packed_policy_size #PackedPolicySize} => Integer
530
- # * {Types::AssumeRoleWithSAMLResponse#subject #Subject} => String
531
- # * {Types::AssumeRoleWithSAMLResponse#subject_type #SubjectType} => String
532
- # * {Types::AssumeRoleWithSAMLResponse#issuer #Issuer} => String
533
- # * {Types::AssumeRoleWithSAMLResponse#audience #Audience} => String
534
- # * {Types::AssumeRoleWithSAMLResponse#name_qualifier #NameQualifier} => String
535
- #
536
- # @example Request syntax with placeholder values
537
- # resp = client.assume_role_with_saml({
538
- # role_arn: "arnType", # required
539
- # principal_arn: "arnType", # required
540
- # saml_assertion: "SAMLAssertionType", # required
541
- # policy: "sessionPolicyDocumentType",
542
- # duration_seconds: 1,
543
- # })
544
- #
545
- # @example Response structure
546
- # resp.credentials.access_key_id #=> String
547
- # resp.credentials.secret_access_key #=> String
548
- # resp.credentials.session_token #=> String
549
- # resp.credentials.expiration #=> Time
550
- # resp.assumed_role_user.assumed_role_id #=> String
551
- # resp.assumed_role_user.arn #=> String
552
- # resp.packed_policy_size #=> Integer
553
- # resp.subject #=> String
554
- # resp.subject_type #=> String
555
- # resp.issuer #=> String
556
- # resp.audience #=> String
557
- # resp.name_qualifier #=> String
558
- # @overload assume_role_with_saml(params = {})
559
- # @param [Hash] params ({})
560
- def assume_role_with_saml(params = {}, options = {})
561
- req = build_request(:assume_role_with_saml, params)
562
- req.send_request(options)
563
- end
146
+ # Returns a set of temporary security credentials (consisting of an
147
+ # access key ID, a secret access key, and a security token) that you can
148
+ # use to access AWS resources that you might not normally have access
149
+ # to. Typically, you use `AssumeRole` for cross-account access or
150
+ # federation. For a comparison of `AssumeRole` with the other APIs that
151
+ # produce temporary credentials, see [Requesting Temporary Security
152
+ # Credentials][1] and [Comparing the AWS STS APIs][2] in the *IAM User
153
+ # Guide*.
154
+ #
155
+ # **Important:** You cannot call `AssumeRole` by using AWS root account
156
+ # credentials; access is denied. You must use credentials for an IAM
157
+ # user or an IAM role to call `AssumeRole`.
158
+ #
159
+ # For cross-account access, imagine that you own multiple accounts and
160
+ # need to access resources in each account. You could create long-term
161
+ # credentials in each account to access those resources. However,
162
+ # managing all those credentials and remembering which one can access
163
+ # which account can be time consuming. Instead, you can create one set
164
+ # of long-term credentials in one account and then use temporary
165
+ # security credentials to access all the other accounts by assuming
166
+ # roles in those accounts. For more information about roles, see [IAM
167
+ # Roles (Delegation and Federation)][3] in the *IAM User Guide*.
168
+ #
169
+ # For federation, you can, for example, grant single sign-on access to
170
+ # the AWS Management Console. If you already have an identity and
171
+ # authentication system in your corporate network, you don't have to
172
+ # recreate user identities in AWS in order to grant those user
173
+ # identities access to AWS. Instead, after a user has been
174
+ # authenticated, you call `AssumeRole` (and specify the role with the
175
+ # appropriate permissions) to get temporary security credentials for
176
+ # that user. With those temporary security credentials, you construct a
177
+ # sign-in URL that users can use to access the console. For more
178
+ # information, see [Common Scenarios for Temporary Credentials][4] in
179
+ # the *IAM User Guide*.
180
+ #
181
+ # The temporary security credentials are valid for the duration that you
182
+ # specified when calling `AssumeRole`, which can be from 900 seconds (15
183
+ # minutes) to a maximum of 3600 seconds (1 hour). The default is 1 hour.
184
+ #
185
+ # The temporary security credentials created by `AssumeRole` can be used
186
+ # to make API calls to any AWS service with the following exception: you
187
+ # cannot call the STS service's `GetFederationToken` or
188
+ # `GetSessionToken` APIs.
189
+ #
190
+ # Optionally, you can pass an IAM access policy to this operation. If
191
+ # you choose not to pass a policy, the temporary security credentials
192
+ # that are returned by the operation have the permissions that are
193
+ # defined in the access policy of the role that is being assumed. If you
194
+ # pass a policy to this operation, the temporary security credentials
195
+ # that are returned by the operation have the permissions that are
196
+ # allowed by both the access policy of the role that is being assumed,
197
+ # <i> <b>and</b> </i> the policy that you pass. This gives you a way to
198
+ # further restrict the permissions for the resulting temporary security
199
+ # credentials. You cannot use the passed policy to grant permissions
200
+ # that are in excess of those allowed by the access policy of the role
201
+ # that is being assumed. For more information, see [Permissions for
202
+ # AssumeRole, AssumeRoleWithSAML, and AssumeRoleWithWebIdentity][5] in
203
+ # the *IAM User Guide*.
204
+ #
205
+ # To assume a role, your AWS account must be trusted by the role. The
206
+ # trust relationship is defined in the role's trust policy when the
207
+ # role is created. That trust policy states which accounts are allowed
208
+ # to delegate access to this account's role.
209
+ #
210
+ # The user who wants to access the role must also have permissions
211
+ # delegated from the role's administrator. If the user is in a
212
+ # different account than the role, then the user's administrator must
213
+ # attach a policy that allows the user to call AssumeRole on the ARN of
214
+ # the role in the other account. If the user is in the same account as
215
+ # the role, then you can either attach a policy to the user (identical
216
+ # to the previous different account user), or you can add the user as a
217
+ # principal directly in the role's trust policy
218
+ #
219
+ # **Using MFA with AssumeRole**
220
+ #
221
+ # You can optionally include multi-factor authentication (MFA)
222
+ # information when you call `AssumeRole`. This is useful for
223
+ # cross-account scenarios in which you want to make sure that the user
224
+ # who is assuming the role has been authenticated using an AWS MFA
225
+ # device. In that scenario, the trust policy of the role being assumed
226
+ # includes a condition that tests for MFA authentication; if the caller
227
+ # does not include valid MFA information, the request to assume the role
228
+ # is denied. The condition in a trust policy that tests for MFA
229
+ # authentication might look like the following example.
230
+ #
231
+ # `"Condition": \{"Bool": \{"aws:MultiFactorAuthPresent": true\}\}`
232
+ #
233
+ # For more information, see [Configuring MFA-Protected API Access][6] in
234
+ # the *IAM User Guide* guide.
235
+ #
236
+ # To use MFA with `AssumeRole`, you pass values for the `SerialNumber`
237
+ # and `TokenCode` parameters. The `SerialNumber` value identifies the
238
+ # user's hardware or virtual MFA device. The `TokenCode` is the
239
+ # time-based one-time password (TOTP) that the MFA devices produces.
240
+ #
241
+ #
242
+ #
243
+ # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html
244
+ # [2]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison
245
+ # [3]: http://docs.aws.amazon.com/IAM/latest/UserGuide/roles-toplevel.html
246
+ # [4]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html#sts-introduction
247
+ # [5]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_assumerole.html
248
+ # [6]: http://docs.aws.amazon.com/IAM/latest/UserGuide/MFAProtectedAPI.html
249
+ #
250
+ # @option params [required, String] :role_arn
251
+ # The Amazon Resource Name (ARN) of the role to assume.
252
+ #
253
+ # @option params [required, String] :role_session_name
254
+ # An identifier for the assumed role session.
255
+ #
256
+ # Use the role session name to uniquely identify a session when the same
257
+ # role is assumed by different principals or for different reasons. In
258
+ # cross-account scenarios, the role session name is visible to, and can
259
+ # be logged by the account that owns the role. The role session name is
260
+ # also used in the ARN of the assumed role principal. This means that
261
+ # subsequent cross-account API requests using the temporary security
262
+ # credentials will expose the role session name to the external account
263
+ # in their CloudTrail logs.
264
+ #
265
+ # The regex used to validate this parameter is a string of characters
266
+ # consisting of upper- and lower-case alphanumeric characters with no
267
+ # spaces. You can also include underscores or any of the following
268
+ # characters: =,.@-
269
+ #
270
+ # @option params [String] :policy
271
+ # An IAM policy in JSON format.
272
+ #
273
+ # This parameter is optional. If you pass a policy, the temporary
274
+ # security credentials that are returned by the operation have the
275
+ # permissions that are allowed by both (the intersection of) the access
276
+ # policy of the role that is being assumed, *and* the policy that you
277
+ # pass. This gives you a way to further restrict the permissions for the
278
+ # resulting temporary security credentials. You cannot use the passed
279
+ # policy to grant permissions that are in excess of those allowed by the
280
+ # access policy of the role that is being assumed. For more information,
281
+ # see [Permissions for AssumeRole, AssumeRoleWithSAML, and
282
+ # AssumeRoleWithWebIdentity][1] in the *IAM User Guide*.
283
+ #
284
+ # The format for this parameter, as described by its regex pattern, is a
285
+ # string of characters up to 2048 characters in length. The characters
286
+ # can be any ASCII character from the space character to the end of the
287
+ # valid character list (\\u0020-\\u00FF). It can also include the tab
288
+ # (\\u0009), linefeed (\\u000A), and carriage return (\\u000D)
289
+ # characters.
290
+ #
291
+ # <note markdown="1"> The policy plain text must be 2048 bytes or shorter. However, an
292
+ # internal conversion compresses it into a packed binary format with a
293
+ # separate limit. The PackedPolicySize response element indicates by
294
+ # percentage how close to the upper size limit the policy is, with 100%
295
+ # equaling the maximum allowed size.
296
+ #
297
+ # </note>
298
+ #
299
+ #
300
+ #
301
+ # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_assumerole.html
302
+ #
303
+ # @option params [Integer] :duration_seconds
304
+ # The duration, in seconds, of the role session. The value can range
305
+ # from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default,
306
+ # the value is set to 3600 seconds.
307
+ #
308
+ # <note markdown="1"> This is separate from the duration of a console session that you might
309
+ # request using the returned credentials. The request to the federation
310
+ # endpoint for a console sign-in token takes a `SessionDuration`
311
+ # parameter that specifies the maximum length of the console session,
312
+ # separately from the `DurationSeconds` parameter on this API. For more
313
+ # information, see [Creating a URL that Enables Federated Users to
314
+ # Access the AWS Management Console][1] in the *IAM User Guide*.
315
+ #
316
+ # </note>
317
+ #
318
+ #
319
+ #
320
+ # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html
321
+ #
322
+ # @option params [String] :external_id
323
+ # A unique identifier that is used by third parties when assuming roles
324
+ # in their customers' accounts. For each role that the third party can
325
+ # assume, they should instruct their customers to ensure the role's
326
+ # trust policy checks for the external ID that the third party
327
+ # generated. Each time the third party assumes the role, they should
328
+ # pass the customer's external ID. The external ID is useful in order
329
+ # to help third parties bind a role to the customer who created it. For
330
+ # more information about the external ID, see [How to Use an External ID
331
+ # When Granting Access to Your AWS Resources to a Third Party][1] in the
332
+ # *IAM User Guide*.
333
+ #
334
+ # The regex used to validated this parameter is a string of characters
335
+ # consisting of upper- and lower-case alphanumeric characters with no
336
+ # spaces. You can also include underscores or any of the following
337
+ # characters: =,.@:\\/-
338
+ #
339
+ #
340
+ #
341
+ # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html
342
+ #
343
+ # @option params [String] :serial_number
344
+ # The identification number of the MFA device that is associated with
345
+ # the user who is making the `AssumeRole` call. Specify this value if
346
+ # the trust policy of the role being assumed includes a condition that
347
+ # requires MFA authentication. The value is either the serial number for
348
+ # a hardware device (such as `GAHT12345678`) or an Amazon Resource Name
349
+ # (ARN) for a virtual device (such as
350
+ # `arn:aws:iam::123456789012:mfa/user`).
351
+ #
352
+ # The regex used to validate this parameter is a string of characters
353
+ # consisting of upper- and lower-case alphanumeric characters with no
354
+ # spaces. You can also include underscores or any of the following
355
+ # characters: =,.@-
356
+ #
357
+ # @option params [String] :token_code
358
+ # The value provided by the MFA device, if the trust policy of the role
359
+ # being assumed requires MFA (that is, if the policy includes a
360
+ # condition that tests for MFA). If the role being assumed requires MFA
361
+ # and if the `TokenCode` value is missing or expired, the `AssumeRole`
362
+ # call returns an "access denied" error.
363
+ #
364
+ # The format for this parameter, as described by its regex pattern, is a
365
+ # sequence of six numeric digits.
366
+ #
367
+ # @return [Types::AssumeRoleResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
368
+ #
369
+ # * {Types::AssumeRoleResponse#credentials #credentials} => Types::Credentials
370
+ # * {Types::AssumeRoleResponse#assumed_role_user #assumed_role_user} => Types::AssumedRoleUser
371
+ # * {Types::AssumeRoleResponse#packed_policy_size #packed_policy_size} => Integer
372
+ #
373
+ # @example Request syntax with placeholder values
374
+ #
375
+ # resp = client.assume_role({
376
+ # role_arn: "arnType", # required
377
+ # role_session_name: "roleSessionNameType", # required
378
+ # policy: "sessionPolicyDocumentType",
379
+ # duration_seconds: 1,
380
+ # external_id: "externalIdType",
381
+ # serial_number: "serialNumberType",
382
+ # token_code: "tokenCodeType",
383
+ # })
384
+ #
385
+ # @example Response structure
386
+ #
387
+ # resp.credentials.access_key_id #=> String
388
+ # resp.credentials.secret_access_key #=> String
389
+ # resp.credentials.session_token #=> String
390
+ # resp.credentials.expiration #=> Time
391
+ # resp.assumed_role_user.assumed_role_id #=> String
392
+ # resp.assumed_role_user.arn #=> String
393
+ # resp.packed_policy_size #=> Integer
394
+ #
395
+ # @overload assume_role(params = {})
396
+ # @param [Hash] params ({})
397
+ def assume_role(params = {}, options = {})
398
+ req = build_request(:assume_role, params)
399
+ req.send_request(options)
400
+ end
564
401
 
565
- # Returns a set of temporary security credentials for users who have
566
- # been authenticated in a mobile or web application with a web identity
567
- # provider, such as Amazon Cognito, Login with Amazon, Facebook, Google,
568
- # or any OpenID Connect-compatible identity provider.
569
- #
570
- # <note markdown="1"> For mobile applications, we recommend that you use Amazon Cognito. You
571
- # can use Amazon Cognito with the [AWS SDK for iOS][1] and the [AWS SDK
572
- # for Android][2] to uniquely identify a user and supply the user with a
573
- # consistent identity throughout the lifetime of an application.
574
- #
575
- # To learn more about Amazon Cognito, see [Amazon Cognito Overview][3]
576
- # in the *AWS SDK for Android Developer Guide* guide and [Amazon Cognito
577
- # Overview][4] in the *AWS SDK for iOS Developer Guide*.
578
- #
579
- # </note>
580
- #
581
- # Calling `AssumeRoleWithWebIdentity` does not require the use of AWS
582
- # security credentials. Therefore, you can distribute an application
583
- # (for example, on mobile devices) that requests temporary security
584
- # credentials without including long-term AWS credentials in the
585
- # application, and without deploying server-based proxy services that
586
- # use long-term AWS credentials. Instead, the identity of the caller is
587
- # validated by using a token from the web identity provider. For a
588
- # comparison of `AssumeRoleWithWebIdentity` with the other APIs that
589
- # produce temporary credentials, see [Requesting Temporary Security
590
- # Credentials][5] and [Comparing the AWS STS APIs][6] in the *IAM User
591
- # Guide*.
592
- #
593
- # The temporary security credentials returned by this API consist of an
594
- # access key ID, a secret access key, and a security token. Applications
595
- # can use these temporary security credentials to sign calls to AWS
596
- # service APIs.
597
- #
598
- # The credentials are valid for the duration that you specified when
599
- # calling `AssumeRoleWithWebIdentity`, which can be from 900 seconds (15
600
- # minutes) to a maximum of 3600 seconds (1 hour). The default is 1 hour.
601
- #
602
- # The temporary security credentials created by
603
- # `AssumeRoleWithWebIdentity` can be used to make API calls to any AWS
604
- # service with the following exception: you cannot call the STS
605
- # service's `GetFederationToken` or `GetSessionToken` APIs.
606
- #
607
- # Optionally, you can pass an IAM access policy to this operation. If
608
- # you choose not to pass a policy, the temporary security credentials
609
- # that are returned by the operation have the permissions that are
610
- # defined in the access policy of the role that is being assumed. If you
611
- # pass a policy to this operation, the temporary security credentials
612
- # that are returned by the operation have the permissions that are
613
- # allowed by both the access policy of the role that is being assumed,
614
- # <i> <b>and</b> </i> the policy that you pass. This gives you a way to
615
- # further restrict the permissions for the resulting temporary security
616
- # credentials. You cannot use the passed policy to grant permissions
617
- # that are in excess of those allowed by the access policy of the role
618
- # that is being assumed. For more information, see [Permissions for
619
- # AssumeRole, AssumeRoleWithSAML, and AssumeRoleWithWebIdentity][7] in
620
- # the *IAM User Guide*.
621
- #
622
- # Before your application can call `AssumeRoleWithWebIdentity`, you must
623
- # have an identity token from a supported identity provider and create a
624
- # role that the application can assume. The role that your application
625
- # assumes must trust the identity provider that is associated with the
626
- # identity token. In other words, the identity provider must be
627
- # specified in the role's trust policy.
628
- #
629
- # Calling `AssumeRoleWithWebIdentity` can result in an entry in your AWS
630
- # CloudTrail logs. The entry includes the [Subject][8] of the provided
631
- # Web Identity Token. We recommend that you avoid using any personally
632
- # identifiable information (PII) in this field. For example, you could
633
- # instead use a GUID or a pairwise identifier, as [suggested in the OIDC
634
- # specification][9].
635
- #
636
- # For more information about how to use web identity federation and the
637
- # `AssumeRoleWithWebIdentity` API, see the following resources:
638
- #
639
- # * [Using Web Identity Federation APIs for Mobile Apps][10] and
640
- # [Federation Through a Web-based Identity Provider][11].
641
- #
642
- # * [ Web Identity Federation Playground][12]. This interactive website
643
- # lets you walk through the process of authenticating via Login with
644
- # Amazon, Facebook, or Google, getting temporary security credentials,
645
- # and then using those credentials to make a request to AWS.
646
- #
647
- # * [AWS SDK for iOS][1] and [AWS SDK for Android][2]. These toolkits
648
- # contain sample apps that show how to invoke the identity providers,
649
- # and then how to use the information from these providers to get and
650
- # use temporary security credentials.
651
- #
652
- # * [Web Identity Federation with Mobile Applications][13]. This article
653
- # discusses web identity federation and shows an example of how to use
654
- # web identity federation to get access to content in Amazon S3.
655
- #
656
- #
657
- #
658
- # [1]: http://aws.amazon.com/sdkforios/
659
- # [2]: http://aws.amazon.com/sdkforandroid/
660
- # [3]: http://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/cognito-auth.html#d0e840
661
- # [4]: http://docs.aws.amazon.com/mobile/sdkforios/developerguide/cognito-auth.html#d0e664
662
- # [5]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html
663
- # [6]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison
664
- # [7]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_assumerole.html
665
- # [8]: http://openid.net/specs/openid-connect-core-1_0.html#Claims
666
- # [9]: http://openid.net/specs/openid-connect-core-1_0.html#SubjectIDTypes
667
- # [10]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_manual.html
668
- # [11]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerolewithwebidentity
669
- # [12]: https://web-identity-federation-playground.s3.amazonaws.com/index.html
670
- # [13]: http://aws.amazon.com/articles/4617974389850313
671
- # @option params [required, String] :role_arn
672
- # The Amazon Resource Name (ARN) of the role that the caller is
673
- # assuming.
674
- # @option params [required, String] :role_session_name
675
- # An identifier for the assumed role session. Typically, you pass the
676
- # name or identifier that is associated with the user who is using your
677
- # application. That way, the temporary security credentials that your
678
- # application will use are associated with that user. This session name
679
- # is included as part of the ARN and assumed role ID in the
680
- # `AssumedRoleUser` response element.
681
- #
682
- # The format for this parameter, as described by its regex pattern, is a
683
- # string of characters consisting of upper- and lower-case alphanumeric
684
- # characters with no spaces. You can also include underscores or any of
685
- # the following characters: =,.@-
686
- # @option params [required, String] :web_identity_token
687
- # The OAuth 2.0 access token or OpenID Connect ID token that is provided
688
- # by the identity provider. Your application must get this token by
689
- # authenticating the user who is using your application with a web
690
- # identity provider before the application makes an
691
- # `AssumeRoleWithWebIdentity` call.
692
- # @option params [String] :provider_id
693
- # The fully qualified host component of the domain name of the identity
694
- # provider.
695
- #
696
- # Specify this value only for OAuth 2.0 access tokens. Currently
697
- # `www.amazon.com` and `graph.facebook.com` are the only supported
698
- # identity providers for OAuth 2.0 access tokens. Do not include URL
699
- # schemes and port numbers.
700
- #
701
- # Do not specify this value for OpenID Connect ID tokens.
702
- # @option params [String] :policy
703
- # An IAM policy in JSON format.
704
- #
705
- # The policy parameter is optional. If you pass a policy, the temporary
706
- # security credentials that are returned by the operation have the
707
- # permissions that are allowed by both the access policy of the role
708
- # that is being assumed, <i> <b>and</b> </i> the policy that you pass.
709
- # This gives you a way to further restrict the permissions for the
710
- # resulting temporary security credentials. You cannot use the passed
711
- # policy to grant permissions that are in excess of those allowed by the
712
- # access policy of the role that is being assumed. For more information,
713
- # see [Permissions for AssumeRoleWithWebIdentity][1] in the *IAM User
714
- # Guide*.
715
- #
716
- # The format for this parameter, as described by its regex pattern, is a
717
- # string of characters up to 2048 characters in length. The characters
718
- # can be any ASCII character from the space character to the end of the
719
- # valid character list (\\u0020-\\u00FF). It can also include the tab
720
- # (\\u0009), linefeed (\\u000A), and carriage return (\\u000D)
721
- # characters.
722
- #
723
- # <note markdown="1"> The policy plain text must be 2048 bytes or shorter. However, an
724
- # internal conversion compresses it into a packed binary format with a
725
- # separate limit. The PackedPolicySize response element indicates by
726
- # percentage how close to the upper size limit the policy is, with 100%
727
- # equaling the maximum allowed size.
728
- #
729
- # </note>
730
- #
731
- #
732
- #
733
- # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_assumerole.html
734
- # @option params [Integer] :duration_seconds
735
- # The duration, in seconds, of the role session. The value can range
736
- # from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default,
737
- # the value is set to 3600 seconds.
738
- #
739
- # <note markdown="1"> This is separate from the duration of a console session that you might
740
- # request using the returned credentials. The request to the federation
741
- # endpoint for a console sign-in token takes a `SessionDuration`
742
- # parameter that specifies the maximum length of the console session,
743
- # separately from the `DurationSeconds` parameter on this API. For more
744
- # information, see [Creating a URL that Enables Federated Users to
745
- # Access the AWS Management Console][1] in the *IAM User Guide*.
746
- #
747
- # </note>
748
- #
749
- #
750
- #
751
- # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html
752
- # @return [Types::AssumeRoleWithWebIdentityResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
753
- #
754
- # * {Types::AssumeRoleWithWebIdentityResponse#credentials #Credentials} => Types::Credentials
755
- # * {Types::AssumeRoleWithWebIdentityResponse#subject_from_web_identity_token #SubjectFromWebIdentityToken} => String
756
- # * {Types::AssumeRoleWithWebIdentityResponse#assumed_role_user #AssumedRoleUser} => Types::AssumedRoleUser
757
- # * {Types::AssumeRoleWithWebIdentityResponse#packed_policy_size #PackedPolicySize} => Integer
758
- # * {Types::AssumeRoleWithWebIdentityResponse#provider #Provider} => String
759
- # * {Types::AssumeRoleWithWebIdentityResponse#audience #Audience} => String
760
- #
761
- # @example Request syntax with placeholder values
762
- # resp = client.assume_role_with_web_identity({
763
- # role_arn: "arnType", # required
764
- # role_session_name: "roleSessionNameType", # required
765
- # web_identity_token: "clientTokenType", # required
766
- # provider_id: "urlType",
767
- # policy: "sessionPolicyDocumentType",
768
- # duration_seconds: 1,
769
- # })
770
- #
771
- # @example Response structure
772
- # resp.credentials.access_key_id #=> String
773
- # resp.credentials.secret_access_key #=> String
774
- # resp.credentials.session_token #=> String
775
- # resp.credentials.expiration #=> Time
776
- # resp.subject_from_web_identity_token #=> String
777
- # resp.assumed_role_user.assumed_role_id #=> String
778
- # resp.assumed_role_user.arn #=> String
779
- # resp.packed_policy_size #=> Integer
780
- # resp.provider #=> String
781
- # resp.audience #=> String
782
- # @overload assume_role_with_web_identity(params = {})
783
- # @param [Hash] params ({})
784
- def assume_role_with_web_identity(params = {}, options = {})
785
- req = build_request(:assume_role_with_web_identity, params)
786
- req.send_request(options)
787
- end
402
+ # Returns a set of temporary security credentials for users who have
403
+ # been authenticated via a SAML authentication response. This operation
404
+ # provides a mechanism for tying an enterprise identity store or
405
+ # directory to role-based AWS access without user-specific credentials
406
+ # or configuration. For a comparison of `AssumeRoleWithSAML` with the
407
+ # other APIs that produce temporary credentials, see [Requesting
408
+ # Temporary Security Credentials][1] and [Comparing the AWS STS APIs][2]
409
+ # in the *IAM User Guide*.
410
+ #
411
+ # The temporary security credentials returned by this operation consist
412
+ # of an access key ID, a secret access key, and a security token.
413
+ # Applications can use these temporary security credentials to sign
414
+ # calls to AWS services.
415
+ #
416
+ # The temporary security credentials are valid for the duration that you
417
+ # specified when calling `AssumeRole`, or until the time specified in
418
+ # the SAML authentication response's `SessionNotOnOrAfter` value,
419
+ # whichever is shorter. The duration can be from 900 seconds (15
420
+ # minutes) to a maximum of 3600 seconds (1 hour). The default is 1 hour.
421
+ #
422
+ # The temporary security credentials created by `AssumeRoleWithSAML` can
423
+ # be used to make API calls to any AWS service with the following
424
+ # exception: you cannot call the STS service's `GetFederationToken` or
425
+ # `GetSessionToken` APIs.
426
+ #
427
+ # Optionally, you can pass an IAM access policy to this operation. If
428
+ # you choose not to pass a policy, the temporary security credentials
429
+ # that are returned by the operation have the permissions that are
430
+ # defined in the access policy of the role that is being assumed. If you
431
+ # pass a policy to this operation, the temporary security credentials
432
+ # that are returned by the operation have the permissions that are
433
+ # allowed by the intersection of both the access policy of the role that
434
+ # is being assumed, <i> <b>and</b> </i> the policy that you pass. This
435
+ # means that both policies must grant the permission for the action to
436
+ # be allowed. This gives you a way to further restrict the permissions
437
+ # for the resulting temporary security credentials. You cannot use the
438
+ # passed policy to grant permissions that are in excess of those allowed
439
+ # by the access policy of the role that is being assumed. For more
440
+ # information, see [Permissions for AssumeRole, AssumeRoleWithSAML, and
441
+ # AssumeRoleWithWebIdentity][3] in the *IAM User Guide*.
442
+ #
443
+ # Before your application can call `AssumeRoleWithSAML`, you must
444
+ # configure your SAML identity provider (IdP) to issue the claims
445
+ # required by AWS. Additionally, you must use AWS Identity and Access
446
+ # Management (IAM) to create a SAML provider entity in your AWS account
447
+ # that represents your identity provider, and create an IAM role that
448
+ # specifies this SAML provider in its trust policy.
449
+ #
450
+ # Calling `AssumeRoleWithSAML` does not require the use of AWS security
451
+ # credentials. The identity of the caller is validated by using keys in
452
+ # the metadata document that is uploaded for the SAML provider entity
453
+ # for your identity provider.
454
+ #
455
+ # Calling `AssumeRoleWithSAML` can result in an entry in your AWS
456
+ # CloudTrail logs. The entry includes the value in the `NameID` element
457
+ # of the SAML assertion. We recommend that you use a NameIDType that is
458
+ # not associated with any personally identifiable information (PII). For
459
+ # example, you could instead use the Persistent Identifier
460
+ # (`urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`).
461
+ #
462
+ # For more information, see the following resources:
463
+ #
464
+ # * [About SAML 2.0-based Federation][4] in the *IAM User Guide*.
465
+ #
466
+ # * [Creating SAML Identity Providers][5] in the *IAM User Guide*.
467
+ #
468
+ # * [Configuring a Relying Party and Claims][6] in the *IAM User Guide*.
469
+ #
470
+ # * [Creating a Role for SAML 2.0 Federation][7] in the *IAM User
471
+ # Guide*.
472
+ #
473
+ #
474
+ #
475
+ # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html
476
+ # [2]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison
477
+ # [3]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_assumerole.html
478
+ # [4]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html
479
+ # [5]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html
480
+ # [6]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_relying-party.html
481
+ # [7]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html
482
+ #
483
+ # @option params [required, String] :role_arn
484
+ # The Amazon Resource Name (ARN) of the role that the caller is
485
+ # assuming.
486
+ #
487
+ # @option params [required, String] :principal_arn
488
+ # The Amazon Resource Name (ARN) of the SAML provider in IAM that
489
+ # describes the IdP.
490
+ #
491
+ # @option params [required, String] :saml_assertion
492
+ # The base-64 encoded SAML authentication response provided by the IdP.
493
+ #
494
+ # For more information, see [Configuring a Relying Party and Adding
495
+ # Claims][1] in the *Using IAM* guide.
496
+ #
497
+ #
498
+ #
499
+ # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/create-role-saml-IdP-tasks.html
500
+ #
501
+ # @option params [String] :policy
502
+ # An IAM policy in JSON format.
503
+ #
504
+ # The policy parameter is optional. If you pass a policy, the temporary
505
+ # security credentials that are returned by the operation have the
506
+ # permissions that are allowed by both the access policy of the role
507
+ # that is being assumed, <i> <b>and</b> </i> the policy that you pass.
508
+ # This gives you a way to further restrict the permissions for the
509
+ # resulting temporary security credentials. You cannot use the passed
510
+ # policy to grant permissions that are in excess of those allowed by the
511
+ # access policy of the role that is being assumed. For more information,
512
+ # [Permissions for AssumeRole, AssumeRoleWithSAML, and
513
+ # AssumeRoleWithWebIdentity][1] in the *IAM User Guide*.
514
+ #
515
+ # The format for this parameter, as described by its regex pattern, is a
516
+ # string of characters up to 2048 characters in length. The characters
517
+ # can be any ASCII character from the space character to the end of the
518
+ # valid character list (\\u0020-\\u00FF). It can also include the tab
519
+ # (\\u0009), linefeed (\\u000A), and carriage return (\\u000D)
520
+ # characters.
521
+ #
522
+ # <note markdown="1"> The policy plain text must be 2048 bytes or shorter. However, an
523
+ # internal conversion compresses it into a packed binary format with a
524
+ # separate limit. The PackedPolicySize response element indicates by
525
+ # percentage how close to the upper size limit the policy is, with 100%
526
+ # equaling the maximum allowed size.
527
+ #
528
+ # </note>
529
+ #
530
+ #
531
+ #
532
+ # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_assumerole.html
533
+ #
534
+ # @option params [Integer] :duration_seconds
535
+ # The duration, in seconds, of the role session. The value can range
536
+ # from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default,
537
+ # the value is set to 3600 seconds. An expiration can also be specified
538
+ # in the SAML authentication response's `SessionNotOnOrAfter` value.
539
+ # The actual expiration time is whichever value is shorter.
540
+ #
541
+ # <note markdown="1"> This is separate from the duration of a console session that you might
542
+ # request using the returned credentials. The request to the federation
543
+ # endpoint for a console sign-in token takes a `SessionDuration`
544
+ # parameter that specifies the maximum length of the console session,
545
+ # separately from the `DurationSeconds` parameter on this API. For more
546
+ # information, see [Enabling SAML 2.0 Federated Users to Access the AWS
547
+ # Management Console][1] in the *IAM User Guide*.
548
+ #
549
+ # </note>
550
+ #
551
+ #
552
+ #
553
+ # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-saml.html
554
+ #
555
+ # @return [Types::AssumeRoleWithSAMLResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
556
+ #
557
+ # * {Types::AssumeRoleWithSAMLResponse#credentials #credentials} => Types::Credentials
558
+ # * {Types::AssumeRoleWithSAMLResponse#assumed_role_user #assumed_role_user} => Types::AssumedRoleUser
559
+ # * {Types::AssumeRoleWithSAMLResponse#packed_policy_size #packed_policy_size} => Integer
560
+ # * {Types::AssumeRoleWithSAMLResponse#subject #subject} => String
561
+ # * {Types::AssumeRoleWithSAMLResponse#subject_type #subject_type} => String
562
+ # * {Types::AssumeRoleWithSAMLResponse#issuer #issuer} => String
563
+ # * {Types::AssumeRoleWithSAMLResponse#audience #audience} => String
564
+ # * {Types::AssumeRoleWithSAMLResponse#name_qualifier #name_qualifier} => String
565
+ #
566
+ # @example Request syntax with placeholder values
567
+ #
568
+ # resp = client.assume_role_with_saml({
569
+ # role_arn: "arnType", # required
570
+ # principal_arn: "arnType", # required
571
+ # saml_assertion: "SAMLAssertionType", # required
572
+ # policy: "sessionPolicyDocumentType",
573
+ # duration_seconds: 1,
574
+ # })
575
+ #
576
+ # @example Response structure
577
+ #
578
+ # resp.credentials.access_key_id #=> String
579
+ # resp.credentials.secret_access_key #=> String
580
+ # resp.credentials.session_token #=> String
581
+ # resp.credentials.expiration #=> Time
582
+ # resp.assumed_role_user.assumed_role_id #=> String
583
+ # resp.assumed_role_user.arn #=> String
584
+ # resp.packed_policy_size #=> Integer
585
+ # resp.subject #=> String
586
+ # resp.subject_type #=> String
587
+ # resp.issuer #=> String
588
+ # resp.audience #=> String
589
+ # resp.name_qualifier #=> String
590
+ #
591
+ # @overload assume_role_with_saml(params = {})
592
+ # @param [Hash] params ({})
593
+ def assume_role_with_saml(params = {}, options = {})
594
+ req = build_request(:assume_role_with_saml, params)
595
+ req.send_request(options)
596
+ end
788
597
 
789
- # Decodes additional information about the authorization status of a
790
- # request from an encoded message returned in response to an AWS
791
- # request.
792
- #
793
- # For example, if a user is not authorized to perform an action that he
794
- # or she has requested, the request returns a
795
- # `Client.UnauthorizedOperation` response (an HTTP 403 response). Some
796
- # AWS actions additionally return an encoded message that can provide
797
- # details about this authorization failure.
798
- #
799
- # <note markdown="1"> Only certain AWS actions return an encoded authorization message. The
800
- # documentation for an individual action indicates whether that action
801
- # returns an encoded message in addition to returning an HTTP code.
802
- #
803
- # </note>
804
- #
805
- # The message is encoded because the details of the authorization status
806
- # can constitute privileged information that the user who requested the
807
- # action should not see. To decode an authorization status message, a
808
- # user must be granted permissions via an IAM policy to request the
809
- # `DecodeAuthorizationMessage` (`sts:DecodeAuthorizationMessage`)
810
- # action.
811
- #
812
- # The decoded message includes the following type of information:
813
- #
814
- # * Whether the request was denied due to an explicit deny or due to the
815
- # absence of an explicit allow. For more information, see [Determining
816
- # Whether a Request is Allowed or Denied][1] in the *IAM User Guide*.
817
- #
818
- # * The principal who made the request.
819
- #
820
- # * The requested action.
821
- #
822
- # * The requested resource.
823
- #
824
- # * The values of condition keys in the context of the user's request.
825
- #
826
- #
827
- #
828
- # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow
829
- # @option params [required, String] :encoded_message
830
- # The encoded message that was returned with the response.
831
- # @return [Types::DecodeAuthorizationMessageResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
832
- #
833
- # * {Types::DecodeAuthorizationMessageResponse#decoded_message #DecodedMessage} => String
834
- #
835
- # @example Request syntax with placeholder values
836
- # resp = client.decode_authorization_message({
837
- # encoded_message: "encodedMessageType", # required
838
- # })
839
- #
840
- # @example Response structure
841
- # resp.decoded_message #=> String
842
- # @overload decode_authorization_message(params = {})
843
- # @param [Hash] params ({})
844
- def decode_authorization_message(params = {}, options = {})
845
- req = build_request(:decode_authorization_message, params)
846
- req.send_request(options)
847
- end
598
+ # Returns a set of temporary security credentials for users who have
599
+ # been authenticated in a mobile or web application with a web identity
600
+ # provider, such as Amazon Cognito, Login with Amazon, Facebook, Google,
601
+ # or any OpenID Connect-compatible identity provider.
602
+ #
603
+ # <note markdown="1"> For mobile applications, we recommend that you use Amazon Cognito. You
604
+ # can use Amazon Cognito with the [AWS SDK for iOS][1] and the [AWS SDK
605
+ # for Android][2] to uniquely identify a user and supply the user with a
606
+ # consistent identity throughout the lifetime of an application.
607
+ #
608
+ # To learn more about Amazon Cognito, see [Amazon Cognito Overview][3]
609
+ # in the *AWS SDK for Android Developer Guide* guide and [Amazon Cognito
610
+ # Overview][4] in the *AWS SDK for iOS Developer Guide*.
611
+ #
612
+ # </note>
613
+ #
614
+ # Calling `AssumeRoleWithWebIdentity` does not require the use of AWS
615
+ # security credentials. Therefore, you can distribute an application
616
+ # (for example, on mobile devices) that requests temporary security
617
+ # credentials without including long-term AWS credentials in the
618
+ # application, and without deploying server-based proxy services that
619
+ # use long-term AWS credentials. Instead, the identity of the caller is
620
+ # validated by using a token from the web identity provider. For a
621
+ # comparison of `AssumeRoleWithWebIdentity` with the other APIs that
622
+ # produce temporary credentials, see [Requesting Temporary Security
623
+ # Credentials][5] and [Comparing the AWS STS APIs][6] in the *IAM User
624
+ # Guide*.
625
+ #
626
+ # The temporary security credentials returned by this API consist of an
627
+ # access key ID, a secret access key, and a security token. Applications
628
+ # can use these temporary security credentials to sign calls to AWS
629
+ # service APIs.
630
+ #
631
+ # The credentials are valid for the duration that you specified when
632
+ # calling `AssumeRoleWithWebIdentity`, which can be from 900 seconds (15
633
+ # minutes) to a maximum of 3600 seconds (1 hour). The default is 1 hour.
634
+ #
635
+ # The temporary security credentials created by
636
+ # `AssumeRoleWithWebIdentity` can be used to make API calls to any AWS
637
+ # service with the following exception: you cannot call the STS
638
+ # service's `GetFederationToken` or `GetSessionToken` APIs.
639
+ #
640
+ # Optionally, you can pass an IAM access policy to this operation. If
641
+ # you choose not to pass a policy, the temporary security credentials
642
+ # that are returned by the operation have the permissions that are
643
+ # defined in the access policy of the role that is being assumed. If you
644
+ # pass a policy to this operation, the temporary security credentials
645
+ # that are returned by the operation have the permissions that are
646
+ # allowed by both the access policy of the role that is being assumed,
647
+ # <i> <b>and</b> </i> the policy that you pass. This gives you a way to
648
+ # further restrict the permissions for the resulting temporary security
649
+ # credentials. You cannot use the passed policy to grant permissions
650
+ # that are in excess of those allowed by the access policy of the role
651
+ # that is being assumed. For more information, see [Permissions for
652
+ # AssumeRole, AssumeRoleWithSAML, and AssumeRoleWithWebIdentity][7] in
653
+ # the *IAM User Guide*.
654
+ #
655
+ # Before your application can call `AssumeRoleWithWebIdentity`, you must
656
+ # have an identity token from a supported identity provider and create a
657
+ # role that the application can assume. The role that your application
658
+ # assumes must trust the identity provider that is associated with the
659
+ # identity token. In other words, the identity provider must be
660
+ # specified in the role's trust policy.
661
+ #
662
+ # Calling `AssumeRoleWithWebIdentity` can result in an entry in your AWS
663
+ # CloudTrail logs. The entry includes the [Subject][8] of the provided
664
+ # Web Identity Token. We recommend that you avoid using any personally
665
+ # identifiable information (PII) in this field. For example, you could
666
+ # instead use a GUID or a pairwise identifier, as [suggested in the OIDC
667
+ # specification][9].
668
+ #
669
+ # For more information about how to use web identity federation and the
670
+ # `AssumeRoleWithWebIdentity` API, see the following resources:
671
+ #
672
+ # * [Using Web Identity Federation APIs for Mobile Apps][10] and
673
+ # [Federation Through a Web-based Identity Provider][11].
674
+ #
675
+ # * [ Web Identity Federation Playground][12]. This interactive website
676
+ # lets you walk through the process of authenticating via Login with
677
+ # Amazon, Facebook, or Google, getting temporary security credentials,
678
+ # and then using those credentials to make a request to AWS.
679
+ #
680
+ # * [AWS SDK for iOS][1] and [AWS SDK for Android][2]. These toolkits
681
+ # contain sample apps that show how to invoke the identity providers,
682
+ # and then how to use the information from these providers to get and
683
+ # use temporary security credentials.
684
+ #
685
+ # * [Web Identity Federation with Mobile Applications][13]. This article
686
+ # discusses web identity federation and shows an example of how to use
687
+ # web identity federation to get access to content in Amazon S3.
688
+ #
689
+ #
690
+ #
691
+ # [1]: http://aws.amazon.com/sdkforios/
692
+ # [2]: http://aws.amazon.com/sdkforandroid/
693
+ # [3]: http://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/cognito-auth.html#d0e840
694
+ # [4]: http://docs.aws.amazon.com/mobile/sdkforios/developerguide/cognito-auth.html#d0e664
695
+ # [5]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html
696
+ # [6]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison
697
+ # [7]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_assumerole.html
698
+ # [8]: http://openid.net/specs/openid-connect-core-1_0.html#Claims
699
+ # [9]: http://openid.net/specs/openid-connect-core-1_0.html#SubjectIDTypes
700
+ # [10]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_manual.html
701
+ # [11]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerolewithwebidentity
702
+ # [12]: https://web-identity-federation-playground.s3.amazonaws.com/index.html
703
+ # [13]: http://aws.amazon.com/articles/4617974389850313
704
+ #
705
+ # @option params [required, String] :role_arn
706
+ # The Amazon Resource Name (ARN) of the role that the caller is
707
+ # assuming.
708
+ #
709
+ # @option params [required, String] :role_session_name
710
+ # An identifier for the assumed role session. Typically, you pass the
711
+ # name or identifier that is associated with the user who is using your
712
+ # application. That way, the temporary security credentials that your
713
+ # application will use are associated with that user. This session name
714
+ # is included as part of the ARN and assumed role ID in the
715
+ # `AssumedRoleUser` response element.
716
+ #
717
+ # The regex used to validate this parameter is a string of characters
718
+ # consisting of upper- and lower-case alphanumeric characters with no
719
+ # spaces. You can also include underscores or any of the following
720
+ # characters: =,.@-
721
+ #
722
+ # @option params [required, String] :web_identity_token
723
+ # The OAuth 2.0 access token or OpenID Connect ID token that is provided
724
+ # by the identity provider. Your application must get this token by
725
+ # authenticating the user who is using your application with a web
726
+ # identity provider before the application makes an
727
+ # `AssumeRoleWithWebIdentity` call.
728
+ #
729
+ # @option params [String] :provider_id
730
+ # The fully qualified host component of the domain name of the identity
731
+ # provider.
732
+ #
733
+ # Specify this value only for OAuth 2.0 access tokens. Currently
734
+ # `www.amazon.com` and `graph.facebook.com` are the only supported
735
+ # identity providers for OAuth 2.0 access tokens. Do not include URL
736
+ # schemes and port numbers.
737
+ #
738
+ # Do not specify this value for OpenID Connect ID tokens.
739
+ #
740
+ # @option params [String] :policy
741
+ # An IAM policy in JSON format.
742
+ #
743
+ # The policy parameter is optional. If you pass a policy, the temporary
744
+ # security credentials that are returned by the operation have the
745
+ # permissions that are allowed by both the access policy of the role
746
+ # that is being assumed, <i> <b>and</b> </i> the policy that you pass.
747
+ # This gives you a way to further restrict the permissions for the
748
+ # resulting temporary security credentials. You cannot use the passed
749
+ # policy to grant permissions that are in excess of those allowed by the
750
+ # access policy of the role that is being assumed. For more information,
751
+ # see [Permissions for AssumeRoleWithWebIdentity][1] in the *IAM User
752
+ # Guide*.
753
+ #
754
+ # The format for this parameter, as described by its regex pattern, is a
755
+ # string of characters up to 2048 characters in length. The characters
756
+ # can be any ASCII character from the space character to the end of the
757
+ # valid character list (\\u0020-\\u00FF). It can also include the tab
758
+ # (\\u0009), linefeed (\\u000A), and carriage return (\\u000D)
759
+ # characters.
760
+ #
761
+ # <note markdown="1"> The policy plain text must be 2048 bytes or shorter. However, an
762
+ # internal conversion compresses it into a packed binary format with a
763
+ # separate limit. The PackedPolicySize response element indicates by
764
+ # percentage how close to the upper size limit the policy is, with 100%
765
+ # equaling the maximum allowed size.
766
+ #
767
+ # </note>
768
+ #
769
+ #
770
+ #
771
+ # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_assumerole.html
772
+ #
773
+ # @option params [Integer] :duration_seconds
774
+ # The duration, in seconds, of the role session. The value can range
775
+ # from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default,
776
+ # the value is set to 3600 seconds.
777
+ #
778
+ # <note markdown="1"> This is separate from the duration of a console session that you might
779
+ # request using the returned credentials. The request to the federation
780
+ # endpoint for a console sign-in token takes a `SessionDuration`
781
+ # parameter that specifies the maximum length of the console session,
782
+ # separately from the `DurationSeconds` parameter on this API. For more
783
+ # information, see [Creating a URL that Enables Federated Users to
784
+ # Access the AWS Management Console][1] in the *IAM User Guide*.
785
+ #
786
+ # </note>
787
+ #
788
+ #
789
+ #
790
+ # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html
791
+ #
792
+ # @return [Types::AssumeRoleWithWebIdentityResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
793
+ #
794
+ # * {Types::AssumeRoleWithWebIdentityResponse#credentials #credentials} => Types::Credentials
795
+ # * {Types::AssumeRoleWithWebIdentityResponse#subject_from_web_identity_token #subject_from_web_identity_token} => String
796
+ # * {Types::AssumeRoleWithWebIdentityResponse#assumed_role_user #assumed_role_user} => Types::AssumedRoleUser
797
+ # * {Types::AssumeRoleWithWebIdentityResponse#packed_policy_size #packed_policy_size} => Integer
798
+ # * {Types::AssumeRoleWithWebIdentityResponse#provider #provider} => String
799
+ # * {Types::AssumeRoleWithWebIdentityResponse#audience #audience} => String
800
+ #
801
+ # @example Request syntax with placeholder values
802
+ #
803
+ # resp = client.assume_role_with_web_identity({
804
+ # role_arn: "arnType", # required
805
+ # role_session_name: "roleSessionNameType", # required
806
+ # web_identity_token: "clientTokenType", # required
807
+ # provider_id: "urlType",
808
+ # policy: "sessionPolicyDocumentType",
809
+ # duration_seconds: 1,
810
+ # })
811
+ #
812
+ # @example Response structure
813
+ #
814
+ # resp.credentials.access_key_id #=> String
815
+ # resp.credentials.secret_access_key #=> String
816
+ # resp.credentials.session_token #=> String
817
+ # resp.credentials.expiration #=> Time
818
+ # resp.subject_from_web_identity_token #=> String
819
+ # resp.assumed_role_user.assumed_role_id #=> String
820
+ # resp.assumed_role_user.arn #=> String
821
+ # resp.packed_policy_size #=> Integer
822
+ # resp.provider #=> String
823
+ # resp.audience #=> String
824
+ #
825
+ # @overload assume_role_with_web_identity(params = {})
826
+ # @param [Hash] params ({})
827
+ def assume_role_with_web_identity(params = {}, options = {})
828
+ req = build_request(:assume_role_with_web_identity, params)
829
+ req.send_request(options)
830
+ end
848
831
 
849
- # Returns details about the IAM identity whose credentials are used to
850
- # call the API.
851
- # @return [Types::GetCallerIdentityResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
852
- #
853
- # * {Types::GetCallerIdentityResponse#user_id #UserId} => String
854
- # * {Types::GetCallerIdentityResponse#account #Account} => String
855
- # * {Types::GetCallerIdentityResponse#arn #Arn} => String
856
- #
857
- # @example Request syntax with placeholder values
858
- # resp = client.get_caller_identity()
859
- #
860
- # @example Response structure
861
- # resp.user_id #=> String
862
- # resp.account #=> String
863
- # resp.arn #=> String
864
- # @overload get_caller_identity(params = {})
865
- # @param [Hash] params ({})
866
- def get_caller_identity(params = {}, options = {})
867
- req = build_request(:get_caller_identity, params)
868
- req.send_request(options)
869
- end
832
+ # Decodes additional information about the authorization status of a
833
+ # request from an encoded message returned in response to an AWS
834
+ # request.
835
+ #
836
+ # For example, if a user is not authorized to perform an action that he
837
+ # or she has requested, the request returns a
838
+ # `Client.UnauthorizedOperation` response (an HTTP 403 response). Some
839
+ # AWS actions additionally return an encoded message that can provide
840
+ # details about this authorization failure.
841
+ #
842
+ # <note markdown="1"> Only certain AWS actions return an encoded authorization message. The
843
+ # documentation for an individual action indicates whether that action
844
+ # returns an encoded message in addition to returning an HTTP code.
845
+ #
846
+ # </note>
847
+ #
848
+ # The message is encoded because the details of the authorization status
849
+ # can constitute privileged information that the user who requested the
850
+ # action should not see. To decode an authorization status message, a
851
+ # user must be granted permissions via an IAM policy to request the
852
+ # `DecodeAuthorizationMessage` (`sts:DecodeAuthorizationMessage`)
853
+ # action.
854
+ #
855
+ # The decoded message includes the following type of information:
856
+ #
857
+ # * Whether the request was denied due to an explicit deny or due to the
858
+ # absence of an explicit allow. For more information, see [Determining
859
+ # Whether a Request is Allowed or Denied][1] in the *IAM User Guide*.
860
+ #
861
+ # * The principal who made the request.
862
+ #
863
+ # * The requested action.
864
+ #
865
+ # * The requested resource.
866
+ #
867
+ # * The values of condition keys in the context of the user's request.
868
+ #
869
+ #
870
+ #
871
+ # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow
872
+ #
873
+ # @option params [required, String] :encoded_message
874
+ # The encoded message that was returned with the response.
875
+ #
876
+ # @return [Types::DecodeAuthorizationMessageResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
877
+ #
878
+ # * {Types::DecodeAuthorizationMessageResponse#decoded_message #decoded_message} => String
879
+ #
880
+ # @example Request syntax with placeholder values
881
+ #
882
+ # resp = client.decode_authorization_message({
883
+ # encoded_message: "encodedMessageType", # required
884
+ # })
885
+ #
886
+ # @example Response structure
887
+ #
888
+ # resp.decoded_message #=> String
889
+ #
890
+ # @overload decode_authorization_message(params = {})
891
+ # @param [Hash] params ({})
892
+ def decode_authorization_message(params = {}, options = {})
893
+ req = build_request(:decode_authorization_message, params)
894
+ req.send_request(options)
895
+ end
870
896
 
871
- # Returns a set of temporary security credentials (consisting of an
872
- # access key ID, a secret access key, and a security token) for a
873
- # federated user. A typical use is in a proxy application that gets
874
- # temporary security credentials on behalf of distributed applications
875
- # inside a corporate network. Because you must call the
876
- # `GetFederationToken` action using the long-term security credentials
877
- # of an IAM user, this call is appropriate in contexts where those
878
- # credentials can be safely stored, usually in a server-based
879
- # application. For a comparison of `GetFederationToken` with the other
880
- # APIs that produce temporary credentials, see [Requesting Temporary
881
- # Security Credentials][1] and [Comparing the AWS STS APIs][2] in the
882
- # *IAM User Guide*.
883
- #
884
- # <note markdown="1"> If you are creating a mobile-based or browser-based app that can
885
- # authenticate users using a web identity provider like Login with
886
- # Amazon, Facebook, Google, or an OpenID Connect-compatible identity
887
- # provider, we recommend that you use [Amazon Cognito][3] or
888
- # `AssumeRoleWithWebIdentity`. For more information, see [Federation
889
- # Through a Web-based Identity Provider][4].
890
- #
891
- # </note>
892
- #
893
- # The `GetFederationToken` action must be called by using the long-term
894
- # AWS security credentials of an IAM user. You can also call
895
- # `GetFederationToken` using the security credentials of an AWS root
896
- # account, but we do not recommended it. Instead, we recommend that you
897
- # create an IAM user for the purpose of the proxy application and then
898
- # attach a policy to the IAM user that limits federated users to only
899
- # the actions and resources that they need access to. For more
900
- # information, see [IAM Best Practices][5] in the *IAM User Guide*.
901
- #
902
- # The temporary security credentials that are obtained by using the
903
- # long-term credentials of an IAM user are valid for the specified
904
- # duration, from 900 seconds (15 minutes) up to a maximium of 129600
905
- # seconds (36 hours). The default is 43200 seconds (12 hours). Temporary
906
- # credentials that are obtained by using AWS root account credentials
907
- # have a maximum duration of 3600 seconds (1 hour).
908
- #
909
- # The temporary security credentials created by `GetFederationToken` can
910
- # be used to make API calls to any AWS service with the following
911
- # exceptions:
912
- #
913
- # * You cannot use these credentials to call any IAM APIs.
914
- #
915
- # * You cannot call any STS APIs except `GetCallerIdentity`.
916
- #
917
- # **Permissions**
918
- #
919
- # The permissions for the temporary security credentials returned by
920
- # `GetFederationToken` are determined by a combination of the following:
921
- #
922
- # * The policy or policies that are attached to the IAM user whose
923
- # credentials are used to call `GetFederationToken`.
924
- #
925
- # * The policy that is passed as a parameter in the call.
926
- #
927
- # The passed policy is attached to the temporary security credentials
928
- # that result from the `GetFederationToken` API call--that is, to the
929
- # *federated user*. When the federated user makes an AWS request, AWS
930
- # evaluates the policy attached to the federated user in combination
931
- # with the policy or policies attached to the IAM user whose credentials
932
- # were used to call `GetFederationToken`. AWS allows the federated
933
- # user's request only when both the federated user <i> <b>and</b> </i>
934
- # the IAM user are explicitly allowed to perform the requested action.
935
- # The passed policy cannot grant more permissions than those that are
936
- # defined in the IAM user policy.
937
- #
938
- # A typical use case is that the permissions of the IAM user whose
939
- # credentials are used to call `GetFederationToken` are designed to
940
- # allow access to all the actions and resources that any federated user
941
- # will need. Then, for individual users, you pass a policy to the
942
- # operation that scopes down the permissions to a level that's
943
- # appropriate to that individual user, using a policy that allows only a
944
- # subset of permissions that are granted to the IAM user.
945
- #
946
- # If you do not pass a policy, the resulting temporary security
947
- # credentials have no effective permissions. The only exception is when
948
- # the temporary security credentials are used to access a resource that
949
- # has a resource-based policy that specifically allows the federated
950
- # user to access the resource.
951
- #
952
- # For more information about how permissions work, see [Permissions for
953
- # GetFederationToken][6]. For information about using
954
- # `GetFederationToken` to create temporary security credentials, see
955
- # [GetFederationToken—Federation Through a Custom Identity Broker][7].
956
- #
957
- #
958
- #
959
- # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html
960
- # [2]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison
961
- # [3]: http://aws.amazon.com/cognito/
962
- # [4]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerolewithwebidentity
963
- # [5]: http://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html
964
- # [6]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_getfederationtoken.html
965
- # [7]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getfederationtoken
966
- # @option params [required, String] :name
967
- # The name of the federated user. The name is used as an identifier for
968
- # the temporary security credentials (such as `Bob`). For example, you
969
- # can reference the federated user name in a resource-based policy, such
970
- # as in an Amazon S3 bucket policy.
971
- #
972
- # The format for this parameter, as described by its regex pattern, is a
973
- # string of characters consisting of upper- and lower-case alphanumeric
974
- # characters with no spaces. You can also include underscores or any of
975
- # the following characters: =,.@-
976
- # @option params [String] :policy
977
- # An IAM policy in JSON format that is passed with the
978
- # `GetFederationToken` call and evaluated along with the policy or
979
- # policies that are attached to the IAM user whose credentials are used
980
- # to call `GetFederationToken`. The passed policy is used to scope down
981
- # the permissions that are available to the IAM user, by allowing only a
982
- # subset of the permissions that are granted to the IAM user. The passed
983
- # policy cannot grant more permissions than those granted to the IAM
984
- # user. The final permissions for the federated user are the most
985
- # restrictive set based on the intersection of the passed policy and the
986
- # IAM user policy.
987
- #
988
- # If you do not pass a policy, the resulting temporary security
989
- # credentials have no effective permissions. The only exception is when
990
- # the temporary security credentials are used to access a resource that
991
- # has a resource-based policy that specifically allows the federated
992
- # user to access the resource.
993
- #
994
- # The format for this parameter, as described by its regex pattern, is a
995
- # string of characters up to 2048 characters in length. The characters
996
- # can be any ASCII character from the space character to the end of the
997
- # valid character list (\\u0020-\\u00FF). It can also include the tab
998
- # (\\u0009), linefeed (\\u000A), and carriage return (\\u000D)
999
- # characters.
1000
- #
1001
- # <note markdown="1"> The policy plain text must be 2048 bytes or shorter. However, an
1002
- # internal conversion compresses it into a packed binary format with a
1003
- # separate limit. The PackedPolicySize response element indicates by
1004
- # percentage how close to the upper size limit the policy is, with 100%
1005
- # equaling the maximum allowed size.
1006
- #
1007
- # </note>
1008
- #
1009
- # For more information about how permissions work, see [Permissions for
1010
- # GetFederationToken][1].
1011
- #
1012
- #
1013
- #
1014
- # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_getfederationtoken.html
1015
- # @option params [Integer] :duration_seconds
1016
- # The duration, in seconds, that the session should last. Acceptable
1017
- # durations for federation sessions range from 900 seconds (15 minutes)
1018
- # to 129600 seconds (36 hours), with 43200 seconds (12 hours) as the
1019
- # default. Sessions obtained using AWS account (root) credentials are
1020
- # restricted to a maximum of 3600 seconds (one hour). If the specified
1021
- # duration is longer than one hour, the session obtained by using AWS
1022
- # account (root) credentials defaults to one hour.
1023
- # @return [Types::GetFederationTokenResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1024
- #
1025
- # * {Types::GetFederationTokenResponse#credentials #Credentials} => Types::Credentials
1026
- # * {Types::GetFederationTokenResponse#federated_user #FederatedUser} => Types::FederatedUser
1027
- # * {Types::GetFederationTokenResponse#packed_policy_size #PackedPolicySize} => Integer
1028
- #
1029
- # @example Request syntax with placeholder values
1030
- # resp = client.get_federation_token({
1031
- # name: "userNameType", # required
1032
- # policy: "sessionPolicyDocumentType",
1033
- # duration_seconds: 1,
1034
- # })
1035
- #
1036
- # @example Response structure
1037
- # resp.credentials.access_key_id #=> String
1038
- # resp.credentials.secret_access_key #=> String
1039
- # resp.credentials.session_token #=> String
1040
- # resp.credentials.expiration #=> Time
1041
- # resp.federated_user.federated_user_id #=> String
1042
- # resp.federated_user.arn #=> String
1043
- # resp.packed_policy_size #=> Integer
1044
- # @overload get_federation_token(params = {})
1045
- # @param [Hash] params ({})
1046
- def get_federation_token(params = {}, options = {})
1047
- req = build_request(:get_federation_token, params)
1048
- req.send_request(options)
1049
- end
897
+ # Returns details about the IAM identity whose credentials are used to
898
+ # call the API.
899
+ #
900
+ # @return [Types::GetCallerIdentityResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
901
+ #
902
+ # * {Types::GetCallerIdentityResponse#user_id #user_id} => String
903
+ # * {Types::GetCallerIdentityResponse#account #account} => String
904
+ # * {Types::GetCallerIdentityResponse#arn #arn} => String
905
+ #
906
+ # @example Response structure
907
+ #
908
+ # resp.user_id #=> String
909
+ # resp.account #=> String
910
+ # resp.arn #=> String
911
+ #
912
+ # @overload get_caller_identity(params = {})
913
+ # @param [Hash] params ({})
914
+ def get_caller_identity(params = {}, options = {})
915
+ req = build_request(:get_caller_identity, params)
916
+ req.send_request(options)
917
+ end
1050
918
 
1051
- # Returns a set of temporary credentials for an AWS account or IAM user.
1052
- # The credentials consist of an access key ID, a secret access key, and
1053
- # a security token. Typically, you use `GetSessionToken` if you want to
1054
- # use MFA to protect programmatic calls to specific AWS APIs like Amazon
1055
- # EC2 `StopInstances`. MFA-enabled IAM users would need to call
1056
- # `GetSessionToken` and submit an MFA code that is associated with their
1057
- # MFA device. Using the temporary security credentials that are returned
1058
- # from the call, IAM users can then make programmatic calls to APIs that
1059
- # require MFA authentication. If you do not supply a correct MFA code,
1060
- # then the API returns an access denied error. For a comparison of
1061
- # `GetSessionToken` with the other APIs that produce temporary
1062
- # credentials, see [Requesting Temporary Security Credentials][1] and
1063
- # [Comparing the AWS STS APIs][2] in the *IAM User Guide*.
1064
- #
1065
- # The `GetSessionToken` action must be called by using the long-term AWS
1066
- # security credentials of the AWS account or an IAM user. Credentials
1067
- # that are created by IAM users are valid for the duration that you
1068
- # specify, from 900 seconds (15 minutes) up to a maximum of 129600
1069
- # seconds (36 hours), with a default of 43200 seconds (12 hours);
1070
- # credentials that are created by using account credentials can range
1071
- # from 900 seconds (15 minutes) up to a maximum of 3600 seconds (1
1072
- # hour), with a default of 1 hour.
1073
- #
1074
- # The temporary security credentials created by `GetSessionToken` can be
1075
- # used to make API calls to any AWS service with the following
1076
- # exceptions:
1077
- #
1078
- # * You cannot call any IAM APIs unless MFA authentication information
1079
- # is included in the request.
1080
- #
1081
- # * You cannot call any STS API *except* `AssumeRole` or
1082
- # `GetCallerIdentity`.
1083
- #
1084
- # <note markdown="1"> We recommend that you do not call `GetSessionToken` with root account
1085
- # credentials. Instead, follow our [best practices][3] by creating one
1086
- # or more IAM users, giving them the necessary permissions, and using
1087
- # IAM users for everyday interaction with AWS.
1088
- #
1089
- # </note>
1090
- #
1091
- # The permissions associated with the temporary security credentials
1092
- # returned by `GetSessionToken` are based on the permissions associated
1093
- # with account or IAM user whose credentials are used to call the
1094
- # action. If `GetSessionToken` is called using root account credentials,
1095
- # the temporary credentials have root account permissions. Similarly, if
1096
- # `GetSessionToken` is called using the credentials of an IAM user, the
1097
- # temporary credentials have the same permissions as the IAM user.
1098
- #
1099
- # For more information about using `GetSessionToken` to create temporary
1100
- # credentials, go to [Temporary Credentials for Users in Untrusted
1101
- # Environments][4] in the *IAM User Guide*.
1102
- #
1103
- #
1104
- #
1105
- # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html
1106
- # [2]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison
1107
- # [3]: http://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#create-iam-users
1108
- # [4]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getsessiontoken
1109
- # @option params [Integer] :duration_seconds
1110
- # The duration, in seconds, that the credentials should remain valid.
1111
- # Acceptable durations for IAM user sessions range from 900 seconds (15
1112
- # minutes) to 129600 seconds (36 hours), with 43200 seconds (12 hours)
1113
- # as the default. Sessions for AWS account owners are restricted to a
1114
- # maximum of 3600 seconds (one hour). If the duration is longer than one
1115
- # hour, the session for AWS account owners defaults to one hour.
1116
- # @option params [String] :serial_number
1117
- # The identification number of the MFA device that is associated with
1118
- # the IAM user who is making the `GetSessionToken` call. Specify this
1119
- # value if the IAM user has a policy that requires MFA authentication.
1120
- # The value is either the serial number for a hardware device (such as
1121
- # `GAHT12345678`) or an Amazon Resource Name (ARN) for a virtual device
1122
- # (such as `arn:aws:iam::123456789012:mfa/user`). You can find the
1123
- # device for an IAM user by going to the AWS Management Console and
1124
- # viewing the user's security credentials.
1125
- #
1126
- # The format for this parameter, as described by its regex pattern, is a
1127
- # string of characters consisting of upper- and lower-case alphanumeric
1128
- # characters with no spaces. You can also include underscores or any of
1129
- # the following characters: =,.@-
1130
- # @option params [String] :token_code
1131
- # The value provided by the MFA device, if MFA is required. If any
1132
- # policy requires the IAM user to submit an MFA code, specify this
1133
- # value. If MFA authentication is required, and the user does not
1134
- # provide a code when requesting a set of temporary security
1135
- # credentials, the user will receive an "access denied" response when
1136
- # requesting resources that require MFA authentication.
1137
- #
1138
- # The format for this parameter, as described by its regex pattern, is a
1139
- # sequence of six numeric digits.
1140
- # @return [Types::GetSessionTokenResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1141
- #
1142
- # * {Types::GetSessionTokenResponse#credentials #Credentials} => Types::Credentials
1143
- #
1144
- # @example Request syntax with placeholder values
1145
- # resp = client.get_session_token({
1146
- # duration_seconds: 1,
1147
- # serial_number: "serialNumberType",
1148
- # token_code: "tokenCodeType",
1149
- # })
1150
- #
1151
- # @example Response structure
1152
- # resp.credentials.access_key_id #=> String
1153
- # resp.credentials.secret_access_key #=> String
1154
- # resp.credentials.session_token #=> String
1155
- # resp.credentials.expiration #=> Time
1156
- # @overload get_session_token(params = {})
1157
- # @param [Hash] params ({})
1158
- def get_session_token(params = {}, options = {})
1159
- req = build_request(:get_session_token, params)
1160
- req.send_request(options)
1161
- end
919
+ # Returns a set of temporary security credentials (consisting of an
920
+ # access key ID, a secret access key, and a security token) for a
921
+ # federated user. A typical use is in a proxy application that gets
922
+ # temporary security credentials on behalf of distributed applications
923
+ # inside a corporate network. Because you must call the
924
+ # `GetFederationToken` action using the long-term security credentials
925
+ # of an IAM user, this call is appropriate in contexts where those
926
+ # credentials can be safely stored, usually in a server-based
927
+ # application. For a comparison of `GetFederationToken` with the other
928
+ # APIs that produce temporary credentials, see [Requesting Temporary
929
+ # Security Credentials][1] and [Comparing the AWS STS APIs][2] in the
930
+ # *IAM User Guide*.
931
+ #
932
+ # <note markdown="1"> If you are creating a mobile-based or browser-based app that can
933
+ # authenticate users using a web identity provider like Login with
934
+ # Amazon, Facebook, Google, or an OpenID Connect-compatible identity
935
+ # provider, we recommend that you use [Amazon Cognito][3] or
936
+ # `AssumeRoleWithWebIdentity`. For more information, see [Federation
937
+ # Through a Web-based Identity Provider][4].
938
+ #
939
+ # </note>
940
+ #
941
+ # The `GetFederationToken` action must be called by using the long-term
942
+ # AWS security credentials of an IAM user. You can also call
943
+ # `GetFederationToken` using the security credentials of an AWS root
944
+ # account, but we do not recommended it. Instead, we recommend that you
945
+ # create an IAM user for the purpose of the proxy application and then
946
+ # attach a policy to the IAM user that limits federated users to only
947
+ # the actions and resources that they need access to. For more
948
+ # information, see [IAM Best Practices][5] in the *IAM User Guide*.
949
+ #
950
+ # The temporary security credentials that are obtained by using the
951
+ # long-term credentials of an IAM user are valid for the specified
952
+ # duration, from 900 seconds (15 minutes) up to a maximium of 129600
953
+ # seconds (36 hours). The default is 43200 seconds (12 hours). Temporary
954
+ # credentials that are obtained by using AWS root account credentials
955
+ # have a maximum duration of 3600 seconds (1 hour).
956
+ #
957
+ # The temporary security credentials created by `GetFederationToken` can
958
+ # be used to make API calls to any AWS service with the following
959
+ # exceptions:
960
+ #
961
+ # * You cannot use these credentials to call any IAM APIs.
962
+ #
963
+ # * You cannot call any STS APIs except `GetCallerIdentity`.
964
+ #
965
+ # **Permissions**
966
+ #
967
+ # The permissions for the temporary security credentials returned by
968
+ # `GetFederationToken` are determined by a combination of the following:
969
+ #
970
+ # * The policy or policies that are attached to the IAM user whose
971
+ # credentials are used to call `GetFederationToken`.
972
+ #
973
+ # * The policy that is passed as a parameter in the call.
974
+ #
975
+ # The passed policy is attached to the temporary security credentials
976
+ # that result from the `GetFederationToken` API call--that is, to the
977
+ # *federated user*. When the federated user makes an AWS request, AWS
978
+ # evaluates the policy attached to the federated user in combination
979
+ # with the policy or policies attached to the IAM user whose credentials
980
+ # were used to call `GetFederationToken`. AWS allows the federated
981
+ # user's request only when both the federated user <i> <b>and</b> </i>
982
+ # the IAM user are explicitly allowed to perform the requested action.
983
+ # The passed policy cannot grant more permissions than those that are
984
+ # defined in the IAM user policy.
985
+ #
986
+ # A typical use case is that the permissions of the IAM user whose
987
+ # credentials are used to call `GetFederationToken` are designed to
988
+ # allow access to all the actions and resources that any federated user
989
+ # will need. Then, for individual users, you pass a policy to the
990
+ # operation that scopes down the permissions to a level that's
991
+ # appropriate to that individual user, using a policy that allows only a
992
+ # subset of permissions that are granted to the IAM user.
993
+ #
994
+ # If you do not pass a policy, the resulting temporary security
995
+ # credentials have no effective permissions. The only exception is when
996
+ # the temporary security credentials are used to access a resource that
997
+ # has a resource-based policy that specifically allows the federated
998
+ # user to access the resource.
999
+ #
1000
+ # For more information about how permissions work, see [Permissions for
1001
+ # GetFederationToken][6]. For information about using
1002
+ # `GetFederationToken` to create temporary security credentials, see
1003
+ # [GetFederationToken—Federation Through a Custom Identity Broker][7].
1004
+ #
1005
+ #
1006
+ #
1007
+ # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html
1008
+ # [2]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison
1009
+ # [3]: http://aws.amazon.com/cognito/
1010
+ # [4]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerolewithwebidentity
1011
+ # [5]: http://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html
1012
+ # [6]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_getfederationtoken.html
1013
+ # [7]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getfederationtoken
1014
+ #
1015
+ # @option params [required, String] :name
1016
+ # The name of the federated user. The name is used as an identifier for
1017
+ # the temporary security credentials (such as `Bob`). For example, you
1018
+ # can reference the federated user name in a resource-based policy, such
1019
+ # as in an Amazon S3 bucket policy.
1020
+ #
1021
+ # The regex used to validate this parameter is a string of characters
1022
+ # consisting of upper- and lower-case alphanumeric characters with no
1023
+ # spaces. You can also include underscores or any of the following
1024
+ # characters: =,.@-
1025
+ #
1026
+ # @option params [String] :policy
1027
+ # An IAM policy in JSON format that is passed with the
1028
+ # `GetFederationToken` call and evaluated along with the policy or
1029
+ # policies that are attached to the IAM user whose credentials are used
1030
+ # to call `GetFederationToken`. The passed policy is used to scope down
1031
+ # the permissions that are available to the IAM user, by allowing only a
1032
+ # subset of the permissions that are granted to the IAM user. The passed
1033
+ # policy cannot grant more permissions than those granted to the IAM
1034
+ # user. The final permissions for the federated user are the most
1035
+ # restrictive set based on the intersection of the passed policy and the
1036
+ # IAM user policy.
1037
+ #
1038
+ # If you do not pass a policy, the resulting temporary security
1039
+ # credentials have no effective permissions. The only exception is when
1040
+ # the temporary security credentials are used to access a resource that
1041
+ # has a resource-based policy that specifically allows the federated
1042
+ # user to access the resource.
1043
+ #
1044
+ # The format for this parameter, as described by its regex pattern, is a
1045
+ # string of characters up to 2048 characters in length. The characters
1046
+ # can be any ASCII character from the space character to the end of the
1047
+ # valid character list (\\u0020-\\u00FF). It can also include the tab
1048
+ # (\\u0009), linefeed (\\u000A), and carriage return (\\u000D)
1049
+ # characters.
1050
+ #
1051
+ # <note markdown="1"> The policy plain text must be 2048 bytes or shorter. However, an
1052
+ # internal conversion compresses it into a packed binary format with a
1053
+ # separate limit. The PackedPolicySize response element indicates by
1054
+ # percentage how close to the upper size limit the policy is, with 100%
1055
+ # equaling the maximum allowed size.
1056
+ #
1057
+ # </note>
1058
+ #
1059
+ # For more information about how permissions work, see [Permissions for
1060
+ # GetFederationToken][1].
1061
+ #
1062
+ #
1063
+ #
1064
+ # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_getfederationtoken.html
1065
+ #
1066
+ # @option params [Integer] :duration_seconds
1067
+ # The duration, in seconds, that the session should last. Acceptable
1068
+ # durations for federation sessions range from 900 seconds (15 minutes)
1069
+ # to 129600 seconds (36 hours), with 43200 seconds (12 hours) as the
1070
+ # default. Sessions obtained using AWS account (root) credentials are
1071
+ # restricted to a maximum of 3600 seconds (one hour). If the specified
1072
+ # duration is longer than one hour, the session obtained by using AWS
1073
+ # account (root) credentials defaults to one hour.
1074
+ #
1075
+ # @return [Types::GetFederationTokenResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1076
+ #
1077
+ # * {Types::GetFederationTokenResponse#credentials #credentials} => Types::Credentials
1078
+ # * {Types::GetFederationTokenResponse#federated_user #federated_user} => Types::FederatedUser
1079
+ # * {Types::GetFederationTokenResponse#packed_policy_size #packed_policy_size} => Integer
1080
+ #
1081
+ # @example Request syntax with placeholder values
1082
+ #
1083
+ # resp = client.get_federation_token({
1084
+ # name: "userNameType", # required
1085
+ # policy: "sessionPolicyDocumentType",
1086
+ # duration_seconds: 1,
1087
+ # })
1088
+ #
1089
+ # @example Response structure
1090
+ #
1091
+ # resp.credentials.access_key_id #=> String
1092
+ # resp.credentials.secret_access_key #=> String
1093
+ # resp.credentials.session_token #=> String
1094
+ # resp.credentials.expiration #=> Time
1095
+ # resp.federated_user.federated_user_id #=> String
1096
+ # resp.federated_user.arn #=> String
1097
+ # resp.packed_policy_size #=> Integer
1098
+ #
1099
+ # @overload get_federation_token(params = {})
1100
+ # @param [Hash] params ({})
1101
+ def get_federation_token(params = {}, options = {})
1102
+ req = build_request(:get_federation_token, params)
1103
+ req.send_request(options)
1104
+ end
1162
1105
 
1163
- # @!endgroup
1106
+ # Returns a set of temporary credentials for an AWS account or IAM user.
1107
+ # The credentials consist of an access key ID, a secret access key, and
1108
+ # a security token. Typically, you use `GetSessionToken` if you want to
1109
+ # use MFA to protect programmatic calls to specific AWS APIs like Amazon
1110
+ # EC2 `StopInstances`. MFA-enabled IAM users would need to call
1111
+ # `GetSessionToken` and submit an MFA code that is associated with their
1112
+ # MFA device. Using the temporary security credentials that are returned
1113
+ # from the call, IAM users can then make programmatic calls to APIs that
1114
+ # require MFA authentication. If you do not supply a correct MFA code,
1115
+ # then the API returns an access denied error. For a comparison of
1116
+ # `GetSessionToken` with the other APIs that produce temporary
1117
+ # credentials, see [Requesting Temporary Security Credentials][1] and
1118
+ # [Comparing the AWS STS APIs][2] in the *IAM User Guide*.
1119
+ #
1120
+ # The `GetSessionToken` action must be called by using the long-term AWS
1121
+ # security credentials of the AWS account or an IAM user. Credentials
1122
+ # that are created by IAM users are valid for the duration that you
1123
+ # specify, from 900 seconds (15 minutes) up to a maximum of 129600
1124
+ # seconds (36 hours), with a default of 43200 seconds (12 hours);
1125
+ # credentials that are created by using account credentials can range
1126
+ # from 900 seconds (15 minutes) up to a maximum of 3600 seconds (1
1127
+ # hour), with a default of 1 hour.
1128
+ #
1129
+ # The temporary security credentials created by `GetSessionToken` can be
1130
+ # used to make API calls to any AWS service with the following
1131
+ # exceptions:
1132
+ #
1133
+ # * You cannot call any IAM APIs unless MFA authentication information
1134
+ # is included in the request.
1135
+ #
1136
+ # * You cannot call any STS API *except* `AssumeRole` or
1137
+ # `GetCallerIdentity`.
1138
+ #
1139
+ # <note markdown="1"> We recommend that you do not call `GetSessionToken` with root account
1140
+ # credentials. Instead, follow our [best practices][3] by creating one
1141
+ # or more IAM users, giving them the necessary permissions, and using
1142
+ # IAM users for everyday interaction with AWS.
1143
+ #
1144
+ # </note>
1145
+ #
1146
+ # The permissions associated with the temporary security credentials
1147
+ # returned by `GetSessionToken` are based on the permissions associated
1148
+ # with account or IAM user whose credentials are used to call the
1149
+ # action. If `GetSessionToken` is called using root account credentials,
1150
+ # the temporary credentials have root account permissions. Similarly, if
1151
+ # `GetSessionToken` is called using the credentials of an IAM user, the
1152
+ # temporary credentials have the same permissions as the IAM user.
1153
+ #
1154
+ # For more information about using `GetSessionToken` to create temporary
1155
+ # credentials, go to [Temporary Credentials for Users in Untrusted
1156
+ # Environments][4] in the *IAM User Guide*.
1157
+ #
1158
+ #
1159
+ #
1160
+ # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html
1161
+ # [2]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison
1162
+ # [3]: http://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#create-iam-users
1163
+ # [4]: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getsessiontoken
1164
+ #
1165
+ # @option params [Integer] :duration_seconds
1166
+ # The duration, in seconds, that the credentials should remain valid.
1167
+ # Acceptable durations for IAM user sessions range from 900 seconds (15
1168
+ # minutes) to 129600 seconds (36 hours), with 43200 seconds (12 hours)
1169
+ # as the default. Sessions for AWS account owners are restricted to a
1170
+ # maximum of 3600 seconds (one hour). If the duration is longer than one
1171
+ # hour, the session for AWS account owners defaults to one hour.
1172
+ #
1173
+ # @option params [String] :serial_number
1174
+ # The identification number of the MFA device that is associated with
1175
+ # the IAM user who is making the `GetSessionToken` call. Specify this
1176
+ # value if the IAM user has a policy that requires MFA authentication.
1177
+ # The value is either the serial number for a hardware device (such as
1178
+ # `GAHT12345678`) or an Amazon Resource Name (ARN) for a virtual device
1179
+ # (such as `arn:aws:iam::123456789012:mfa/user`). You can find the
1180
+ # device for an IAM user by going to the AWS Management Console and
1181
+ # viewing the user's security credentials.
1182
+ #
1183
+ # The regex used to validate this parameter is a string of characters
1184
+ # consisting of upper- and lower-case alphanumeric characters with no
1185
+ # spaces. You can also include underscores or any of the following
1186
+ # characters: =,.@-
1187
+ #
1188
+ # @option params [String] :token_code
1189
+ # The value provided by the MFA device, if MFA is required. If any
1190
+ # policy requires the IAM user to submit an MFA code, specify this
1191
+ # value. If MFA authentication is required, and the user does not
1192
+ # provide a code when requesting a set of temporary security
1193
+ # credentials, the user will receive an "access denied" response when
1194
+ # requesting resources that require MFA authentication.
1195
+ #
1196
+ # The format for this parameter, as described by its regex pattern, is a
1197
+ # sequence of six numeric digits.
1198
+ #
1199
+ # @return [Types::GetSessionTokenResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1200
+ #
1201
+ # * {Types::GetSessionTokenResponse#credentials #credentials} => Types::Credentials
1202
+ #
1203
+ # @example Request syntax with placeholder values
1204
+ #
1205
+ # resp = client.get_session_token({
1206
+ # duration_seconds: 1,
1207
+ # serial_number: "serialNumberType",
1208
+ # token_code: "tokenCodeType",
1209
+ # })
1210
+ #
1211
+ # @example Response structure
1212
+ #
1213
+ # resp.credentials.access_key_id #=> String
1214
+ # resp.credentials.secret_access_key #=> String
1215
+ # resp.credentials.session_token #=> String
1216
+ # resp.credentials.expiration #=> Time
1217
+ #
1218
+ # @overload get_session_token(params = {})
1219
+ # @param [Hash] params ({})
1220
+ def get_session_token(params = {}, options = {})
1221
+ req = build_request(:get_session_token, params)
1222
+ req.send_request(options)
1223
+ end
1164
1224
 
1165
- # @param params ({})
1166
- # @api private
1167
- def build_request(operation_name, params = {})
1168
- handlers = @handlers.for(operation_name)
1169
- context = Seahorse::Client::RequestContext.new(
1170
- operation_name: operation_name,
1171
- operation: config.api.operation(operation_name),
1172
- client: self,
1173
- params: params,
1174
- config: config)
1175
- context[:gem_name] = 'aws-sdk-core'
1176
- context[:gem_version] = '3.0.0.rc2'
1177
- Seahorse::Client::Request.new(handlers, context)
1178
- end
1225
+ # @!endgroup
1179
1226
 
1180
- # @api private
1181
- # @deprecated
1182
- def waiter_names
1183
- []
1184
- end
1227
+ # @param params ({})
1228
+ # @api private
1229
+ def build_request(operation_name, params = {})
1230
+ handlers = @handlers.for(operation_name)
1231
+ context = Seahorse::Client::RequestContext.new(
1232
+ operation_name: operation_name,
1233
+ operation: config.api.operation(operation_name),
1234
+ client: self,
1235
+ params: params,
1236
+ config: config)
1237
+ context[:gem_name] = 'aws-sdk-core'
1238
+ context[:gem_version] = '3.0.0.rc2'
1239
+ Seahorse::Client::Request.new(handlers, context)
1240
+ end
1185
1241
 
1186
- class << self
1242
+ # @api private
1243
+ # @deprecated
1244
+ def waiter_names
1245
+ []
1246
+ end
1187
1247
 
1188
- # @api private
1189
- attr_reader :identifier
1248
+ class << self
1190
1249
 
1191
- # @api private
1192
- def errors_module
1193
- Errors
1194
- end
1250
+ # @api private
1251
+ attr_reader :identifier
1195
1252
 
1253
+ # @api private
1254
+ def errors_module
1255
+ Errors
1196
1256
  end
1257
+
1197
1258
  end
1198
1259
  end
1199
1260
  end