1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/elasticmapreduce/EMR_EXPORTS.h>
8 #include <aws/elasticmapreduce/EMRErrors.h>
9 #include <aws/core/client/AWSError.h>
10 #include <aws/core/client/ClientConfiguration.h>
11 #include <aws/core/client/AWSClient.h>
12 #include <aws/core/utils/memory/stl/AWSString.h>
13 #include <aws/core/utils/json/JsonSerializer.h>
14 #include <aws/elasticmapreduce/model/AddInstanceFleetResult.h>
15 #include <aws/elasticmapreduce/model/AddInstanceGroupsResult.h>
16 #include <aws/elasticmapreduce/model/AddJobFlowStepsResult.h>
17 #include <aws/elasticmapreduce/model/AddTagsResult.h>
18 #include <aws/elasticmapreduce/model/CancelStepsResult.h>
19 #include <aws/elasticmapreduce/model/CreateSecurityConfigurationResult.h>
20 #include <aws/elasticmapreduce/model/CreateStudioResult.h>
21 #include <aws/elasticmapreduce/model/DeleteSecurityConfigurationResult.h>
22 #include <aws/elasticmapreduce/model/DescribeClusterResult.h>
23 #include <aws/elasticmapreduce/model/DescribeNotebookExecutionResult.h>
24 #include <aws/elasticmapreduce/model/DescribeReleaseLabelResult.h>
25 #include <aws/elasticmapreduce/model/DescribeSecurityConfigurationResult.h>
26 #include <aws/elasticmapreduce/model/DescribeStepResult.h>
27 #include <aws/elasticmapreduce/model/DescribeStudioResult.h>
28 #include <aws/elasticmapreduce/model/GetAutoTerminationPolicyResult.h>
29 #include <aws/elasticmapreduce/model/GetBlockPublicAccessConfigurationResult.h>
30 #include <aws/elasticmapreduce/model/GetManagedScalingPolicyResult.h>
31 #include <aws/elasticmapreduce/model/GetStudioSessionMappingResult.h>
32 #include <aws/elasticmapreduce/model/ListBootstrapActionsResult.h>
33 #include <aws/elasticmapreduce/model/ListClustersResult.h>
34 #include <aws/elasticmapreduce/model/ListInstanceFleetsResult.h>
35 #include <aws/elasticmapreduce/model/ListInstanceGroupsResult.h>
36 #include <aws/elasticmapreduce/model/ListInstancesResult.h>
37 #include <aws/elasticmapreduce/model/ListNotebookExecutionsResult.h>
38 #include <aws/elasticmapreduce/model/ListReleaseLabelsResult.h>
39 #include <aws/elasticmapreduce/model/ListSecurityConfigurationsResult.h>
40 #include <aws/elasticmapreduce/model/ListStepsResult.h>
41 #include <aws/elasticmapreduce/model/ListStudioSessionMappingsResult.h>
42 #include <aws/elasticmapreduce/model/ListStudiosResult.h>
43 #include <aws/elasticmapreduce/model/ModifyClusterResult.h>
44 #include <aws/elasticmapreduce/model/PutAutoScalingPolicyResult.h>
45 #include <aws/elasticmapreduce/model/PutAutoTerminationPolicyResult.h>
46 #include <aws/elasticmapreduce/model/PutBlockPublicAccessConfigurationResult.h>
47 #include <aws/elasticmapreduce/model/PutManagedScalingPolicyResult.h>
48 #include <aws/elasticmapreduce/model/RemoveAutoScalingPolicyResult.h>
49 #include <aws/elasticmapreduce/model/RemoveAutoTerminationPolicyResult.h>
50 #include <aws/elasticmapreduce/model/RemoveManagedScalingPolicyResult.h>
51 #include <aws/elasticmapreduce/model/RemoveTagsResult.h>
52 #include <aws/elasticmapreduce/model/RunJobFlowResult.h>
53 #include <aws/elasticmapreduce/model/StartNotebookExecutionResult.h>
54 #include <aws/core/NoResult.h>
55 #include <aws/core/client/AsyncCallerContext.h>
56 #include <aws/core/http/HttpTypes.h>
57 #include <future>
58 #include <functional>
59 
60 namespace Aws
61 {
62 
63 namespace Http
64 {
65   class HttpClient;
66   class HttpClientFactory;
67 } // namespace Http
68 
69 namespace Utils
70 {
71   template< typename R, typename E> class Outcome;
72 namespace Threading
73 {
74   class Executor;
75 } // namespace Threading
76 } // namespace Utils
77 
78 namespace Auth
79 {
80   class AWSCredentials;
81   class AWSCredentialsProvider;
82 } // namespace Auth
83 
84 namespace Client
85 {
86   class RetryStrategy;
87 } // namespace Client
88 
89 namespace EMR
90 {
91 
92 namespace Model
93 {
94         class AddInstanceFleetRequest;
95         class AddInstanceGroupsRequest;
96         class AddJobFlowStepsRequest;
97         class AddTagsRequest;
98         class CancelStepsRequest;
99         class CreateSecurityConfigurationRequest;
100         class CreateStudioRequest;
101         class CreateStudioSessionMappingRequest;
102         class DeleteSecurityConfigurationRequest;
103         class DeleteStudioRequest;
104         class DeleteStudioSessionMappingRequest;
105         class DescribeClusterRequest;
106         class DescribeNotebookExecutionRequest;
107         class DescribeReleaseLabelRequest;
108         class DescribeSecurityConfigurationRequest;
109         class DescribeStepRequest;
110         class DescribeStudioRequest;
111         class GetAutoTerminationPolicyRequest;
112         class GetBlockPublicAccessConfigurationRequest;
113         class GetManagedScalingPolicyRequest;
114         class GetStudioSessionMappingRequest;
115         class ListBootstrapActionsRequest;
116         class ListClustersRequest;
117         class ListInstanceFleetsRequest;
118         class ListInstanceGroupsRequest;
119         class ListInstancesRequest;
120         class ListNotebookExecutionsRequest;
121         class ListReleaseLabelsRequest;
122         class ListSecurityConfigurationsRequest;
123         class ListStepsRequest;
124         class ListStudioSessionMappingsRequest;
125         class ListStudiosRequest;
126         class ModifyClusterRequest;
127         class ModifyInstanceFleetRequest;
128         class ModifyInstanceGroupsRequest;
129         class PutAutoScalingPolicyRequest;
130         class PutAutoTerminationPolicyRequest;
131         class PutBlockPublicAccessConfigurationRequest;
132         class PutManagedScalingPolicyRequest;
133         class RemoveAutoScalingPolicyRequest;
134         class RemoveAutoTerminationPolicyRequest;
135         class RemoveManagedScalingPolicyRequest;
136         class RemoveTagsRequest;
137         class RunJobFlowRequest;
138         class SetTerminationProtectionRequest;
139         class SetVisibleToAllUsersRequest;
140         class StartNotebookExecutionRequest;
141         class StopNotebookExecutionRequest;
142         class TerminateJobFlowsRequest;
143         class UpdateStudioRequest;
144         class UpdateStudioSessionMappingRequest;
145 
146         typedef Aws::Utils::Outcome<AddInstanceFleetResult, EMRError> AddInstanceFleetOutcome;
147         typedef Aws::Utils::Outcome<AddInstanceGroupsResult, EMRError> AddInstanceGroupsOutcome;
148         typedef Aws::Utils::Outcome<AddJobFlowStepsResult, EMRError> AddJobFlowStepsOutcome;
149         typedef Aws::Utils::Outcome<AddTagsResult, EMRError> AddTagsOutcome;
150         typedef Aws::Utils::Outcome<CancelStepsResult, EMRError> CancelStepsOutcome;
151         typedef Aws::Utils::Outcome<CreateSecurityConfigurationResult, EMRError> CreateSecurityConfigurationOutcome;
152         typedef Aws::Utils::Outcome<CreateStudioResult, EMRError> CreateStudioOutcome;
153         typedef Aws::Utils::Outcome<Aws::NoResult, EMRError> CreateStudioSessionMappingOutcome;
154         typedef Aws::Utils::Outcome<DeleteSecurityConfigurationResult, EMRError> DeleteSecurityConfigurationOutcome;
155         typedef Aws::Utils::Outcome<Aws::NoResult, EMRError> DeleteStudioOutcome;
156         typedef Aws::Utils::Outcome<Aws::NoResult, EMRError> DeleteStudioSessionMappingOutcome;
157         typedef Aws::Utils::Outcome<DescribeClusterResult, EMRError> DescribeClusterOutcome;
158         typedef Aws::Utils::Outcome<DescribeNotebookExecutionResult, EMRError> DescribeNotebookExecutionOutcome;
159         typedef Aws::Utils::Outcome<DescribeReleaseLabelResult, EMRError> DescribeReleaseLabelOutcome;
160         typedef Aws::Utils::Outcome<DescribeSecurityConfigurationResult, EMRError> DescribeSecurityConfigurationOutcome;
161         typedef Aws::Utils::Outcome<DescribeStepResult, EMRError> DescribeStepOutcome;
162         typedef Aws::Utils::Outcome<DescribeStudioResult, EMRError> DescribeStudioOutcome;
163         typedef Aws::Utils::Outcome<GetAutoTerminationPolicyResult, EMRError> GetAutoTerminationPolicyOutcome;
164         typedef Aws::Utils::Outcome<GetBlockPublicAccessConfigurationResult, EMRError> GetBlockPublicAccessConfigurationOutcome;
165         typedef Aws::Utils::Outcome<GetManagedScalingPolicyResult, EMRError> GetManagedScalingPolicyOutcome;
166         typedef Aws::Utils::Outcome<GetStudioSessionMappingResult, EMRError> GetStudioSessionMappingOutcome;
167         typedef Aws::Utils::Outcome<ListBootstrapActionsResult, EMRError> ListBootstrapActionsOutcome;
168         typedef Aws::Utils::Outcome<ListClustersResult, EMRError> ListClustersOutcome;
169         typedef Aws::Utils::Outcome<ListInstanceFleetsResult, EMRError> ListInstanceFleetsOutcome;
170         typedef Aws::Utils::Outcome<ListInstanceGroupsResult, EMRError> ListInstanceGroupsOutcome;
171         typedef Aws::Utils::Outcome<ListInstancesResult, EMRError> ListInstancesOutcome;
172         typedef Aws::Utils::Outcome<ListNotebookExecutionsResult, EMRError> ListNotebookExecutionsOutcome;
173         typedef Aws::Utils::Outcome<ListReleaseLabelsResult, EMRError> ListReleaseLabelsOutcome;
174         typedef Aws::Utils::Outcome<ListSecurityConfigurationsResult, EMRError> ListSecurityConfigurationsOutcome;
175         typedef Aws::Utils::Outcome<ListStepsResult, EMRError> ListStepsOutcome;
176         typedef Aws::Utils::Outcome<ListStudioSessionMappingsResult, EMRError> ListStudioSessionMappingsOutcome;
177         typedef Aws::Utils::Outcome<ListStudiosResult, EMRError> ListStudiosOutcome;
178         typedef Aws::Utils::Outcome<ModifyClusterResult, EMRError> ModifyClusterOutcome;
179         typedef Aws::Utils::Outcome<Aws::NoResult, EMRError> ModifyInstanceFleetOutcome;
180         typedef Aws::Utils::Outcome<Aws::NoResult, EMRError> ModifyInstanceGroupsOutcome;
181         typedef Aws::Utils::Outcome<PutAutoScalingPolicyResult, EMRError> PutAutoScalingPolicyOutcome;
182         typedef Aws::Utils::Outcome<PutAutoTerminationPolicyResult, EMRError> PutAutoTerminationPolicyOutcome;
183         typedef Aws::Utils::Outcome<PutBlockPublicAccessConfigurationResult, EMRError> PutBlockPublicAccessConfigurationOutcome;
184         typedef Aws::Utils::Outcome<PutManagedScalingPolicyResult, EMRError> PutManagedScalingPolicyOutcome;
185         typedef Aws::Utils::Outcome<RemoveAutoScalingPolicyResult, EMRError> RemoveAutoScalingPolicyOutcome;
186         typedef Aws::Utils::Outcome<RemoveAutoTerminationPolicyResult, EMRError> RemoveAutoTerminationPolicyOutcome;
187         typedef Aws::Utils::Outcome<RemoveManagedScalingPolicyResult, EMRError> RemoveManagedScalingPolicyOutcome;
188         typedef Aws::Utils::Outcome<RemoveTagsResult, EMRError> RemoveTagsOutcome;
189         typedef Aws::Utils::Outcome<RunJobFlowResult, EMRError> RunJobFlowOutcome;
190         typedef Aws::Utils::Outcome<Aws::NoResult, EMRError> SetTerminationProtectionOutcome;
191         typedef Aws::Utils::Outcome<Aws::NoResult, EMRError> SetVisibleToAllUsersOutcome;
192         typedef Aws::Utils::Outcome<StartNotebookExecutionResult, EMRError> StartNotebookExecutionOutcome;
193         typedef Aws::Utils::Outcome<Aws::NoResult, EMRError> StopNotebookExecutionOutcome;
194         typedef Aws::Utils::Outcome<Aws::NoResult, EMRError> TerminateJobFlowsOutcome;
195         typedef Aws::Utils::Outcome<Aws::NoResult, EMRError> UpdateStudioOutcome;
196         typedef Aws::Utils::Outcome<Aws::NoResult, EMRError> UpdateStudioSessionMappingOutcome;
197 
198         typedef std::future<AddInstanceFleetOutcome> AddInstanceFleetOutcomeCallable;
199         typedef std::future<AddInstanceGroupsOutcome> AddInstanceGroupsOutcomeCallable;
200         typedef std::future<AddJobFlowStepsOutcome> AddJobFlowStepsOutcomeCallable;
201         typedef std::future<AddTagsOutcome> AddTagsOutcomeCallable;
202         typedef std::future<CancelStepsOutcome> CancelStepsOutcomeCallable;
203         typedef std::future<CreateSecurityConfigurationOutcome> CreateSecurityConfigurationOutcomeCallable;
204         typedef std::future<CreateStudioOutcome> CreateStudioOutcomeCallable;
205         typedef std::future<CreateStudioSessionMappingOutcome> CreateStudioSessionMappingOutcomeCallable;
206         typedef std::future<DeleteSecurityConfigurationOutcome> DeleteSecurityConfigurationOutcomeCallable;
207         typedef std::future<DeleteStudioOutcome> DeleteStudioOutcomeCallable;
208         typedef std::future<DeleteStudioSessionMappingOutcome> DeleteStudioSessionMappingOutcomeCallable;
209         typedef std::future<DescribeClusterOutcome> DescribeClusterOutcomeCallable;
210         typedef std::future<DescribeNotebookExecutionOutcome> DescribeNotebookExecutionOutcomeCallable;
211         typedef std::future<DescribeReleaseLabelOutcome> DescribeReleaseLabelOutcomeCallable;
212         typedef std::future<DescribeSecurityConfigurationOutcome> DescribeSecurityConfigurationOutcomeCallable;
213         typedef std::future<DescribeStepOutcome> DescribeStepOutcomeCallable;
214         typedef std::future<DescribeStudioOutcome> DescribeStudioOutcomeCallable;
215         typedef std::future<GetAutoTerminationPolicyOutcome> GetAutoTerminationPolicyOutcomeCallable;
216         typedef std::future<GetBlockPublicAccessConfigurationOutcome> GetBlockPublicAccessConfigurationOutcomeCallable;
217         typedef std::future<GetManagedScalingPolicyOutcome> GetManagedScalingPolicyOutcomeCallable;
218         typedef std::future<GetStudioSessionMappingOutcome> GetStudioSessionMappingOutcomeCallable;
219         typedef std::future<ListBootstrapActionsOutcome> ListBootstrapActionsOutcomeCallable;
220         typedef std::future<ListClustersOutcome> ListClustersOutcomeCallable;
221         typedef std::future<ListInstanceFleetsOutcome> ListInstanceFleetsOutcomeCallable;
222         typedef std::future<ListInstanceGroupsOutcome> ListInstanceGroupsOutcomeCallable;
223         typedef std::future<ListInstancesOutcome> ListInstancesOutcomeCallable;
224         typedef std::future<ListNotebookExecutionsOutcome> ListNotebookExecutionsOutcomeCallable;
225         typedef std::future<ListReleaseLabelsOutcome> ListReleaseLabelsOutcomeCallable;
226         typedef std::future<ListSecurityConfigurationsOutcome> ListSecurityConfigurationsOutcomeCallable;
227         typedef std::future<ListStepsOutcome> ListStepsOutcomeCallable;
228         typedef std::future<ListStudioSessionMappingsOutcome> ListStudioSessionMappingsOutcomeCallable;
229         typedef std::future<ListStudiosOutcome> ListStudiosOutcomeCallable;
230         typedef std::future<ModifyClusterOutcome> ModifyClusterOutcomeCallable;
231         typedef std::future<ModifyInstanceFleetOutcome> ModifyInstanceFleetOutcomeCallable;
232         typedef std::future<ModifyInstanceGroupsOutcome> ModifyInstanceGroupsOutcomeCallable;
233         typedef std::future<PutAutoScalingPolicyOutcome> PutAutoScalingPolicyOutcomeCallable;
234         typedef std::future<PutAutoTerminationPolicyOutcome> PutAutoTerminationPolicyOutcomeCallable;
235         typedef std::future<PutBlockPublicAccessConfigurationOutcome> PutBlockPublicAccessConfigurationOutcomeCallable;
236         typedef std::future<PutManagedScalingPolicyOutcome> PutManagedScalingPolicyOutcomeCallable;
237         typedef std::future<RemoveAutoScalingPolicyOutcome> RemoveAutoScalingPolicyOutcomeCallable;
238         typedef std::future<RemoveAutoTerminationPolicyOutcome> RemoveAutoTerminationPolicyOutcomeCallable;
239         typedef std::future<RemoveManagedScalingPolicyOutcome> RemoveManagedScalingPolicyOutcomeCallable;
240         typedef std::future<RemoveTagsOutcome> RemoveTagsOutcomeCallable;
241         typedef std::future<RunJobFlowOutcome> RunJobFlowOutcomeCallable;
242         typedef std::future<SetTerminationProtectionOutcome> SetTerminationProtectionOutcomeCallable;
243         typedef std::future<SetVisibleToAllUsersOutcome> SetVisibleToAllUsersOutcomeCallable;
244         typedef std::future<StartNotebookExecutionOutcome> StartNotebookExecutionOutcomeCallable;
245         typedef std::future<StopNotebookExecutionOutcome> StopNotebookExecutionOutcomeCallable;
246         typedef std::future<TerminateJobFlowsOutcome> TerminateJobFlowsOutcomeCallable;
247         typedef std::future<UpdateStudioOutcome> UpdateStudioOutcomeCallable;
248         typedef std::future<UpdateStudioSessionMappingOutcome> UpdateStudioSessionMappingOutcomeCallable;
249 } // namespace Model
250 
251   class EMRClient;
252 
253     typedef std::function<void(const EMRClient*, const Model::AddInstanceFleetRequest&, const Model::AddInstanceFleetOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > AddInstanceFleetResponseReceivedHandler;
254     typedef std::function<void(const EMRClient*, const Model::AddInstanceGroupsRequest&, const Model::AddInstanceGroupsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > AddInstanceGroupsResponseReceivedHandler;
255     typedef std::function<void(const EMRClient*, const Model::AddJobFlowStepsRequest&, const Model::AddJobFlowStepsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > AddJobFlowStepsResponseReceivedHandler;
256     typedef std::function<void(const EMRClient*, const Model::AddTagsRequest&, const Model::AddTagsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > AddTagsResponseReceivedHandler;
257     typedef std::function<void(const EMRClient*, const Model::CancelStepsRequest&, const Model::CancelStepsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CancelStepsResponseReceivedHandler;
258     typedef std::function<void(const EMRClient*, const Model::CreateSecurityConfigurationRequest&, const Model::CreateSecurityConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateSecurityConfigurationResponseReceivedHandler;
259     typedef std::function<void(const EMRClient*, const Model::CreateStudioRequest&, const Model::CreateStudioOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateStudioResponseReceivedHandler;
260     typedef std::function<void(const EMRClient*, const Model::CreateStudioSessionMappingRequest&, const Model::CreateStudioSessionMappingOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateStudioSessionMappingResponseReceivedHandler;
261     typedef std::function<void(const EMRClient*, const Model::DeleteSecurityConfigurationRequest&, const Model::DeleteSecurityConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteSecurityConfigurationResponseReceivedHandler;
262     typedef std::function<void(const EMRClient*, const Model::DeleteStudioRequest&, const Model::DeleteStudioOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteStudioResponseReceivedHandler;
263     typedef std::function<void(const EMRClient*, const Model::DeleteStudioSessionMappingRequest&, const Model::DeleteStudioSessionMappingOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteStudioSessionMappingResponseReceivedHandler;
264     typedef std::function<void(const EMRClient*, const Model::DescribeClusterRequest&, const Model::DescribeClusterOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeClusterResponseReceivedHandler;
265     typedef std::function<void(const EMRClient*, const Model::DescribeNotebookExecutionRequest&, const Model::DescribeNotebookExecutionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeNotebookExecutionResponseReceivedHandler;
266     typedef std::function<void(const EMRClient*, const Model::DescribeReleaseLabelRequest&, const Model::DescribeReleaseLabelOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeReleaseLabelResponseReceivedHandler;
267     typedef std::function<void(const EMRClient*, const Model::DescribeSecurityConfigurationRequest&, const Model::DescribeSecurityConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeSecurityConfigurationResponseReceivedHandler;
268     typedef std::function<void(const EMRClient*, const Model::DescribeStepRequest&, const Model::DescribeStepOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeStepResponseReceivedHandler;
269     typedef std::function<void(const EMRClient*, const Model::DescribeStudioRequest&, const Model::DescribeStudioOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeStudioResponseReceivedHandler;
270     typedef std::function<void(const EMRClient*, const Model::GetAutoTerminationPolicyRequest&, const Model::GetAutoTerminationPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetAutoTerminationPolicyResponseReceivedHandler;
271     typedef std::function<void(const EMRClient*, const Model::GetBlockPublicAccessConfigurationRequest&, const Model::GetBlockPublicAccessConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetBlockPublicAccessConfigurationResponseReceivedHandler;
272     typedef std::function<void(const EMRClient*, const Model::GetManagedScalingPolicyRequest&, const Model::GetManagedScalingPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetManagedScalingPolicyResponseReceivedHandler;
273     typedef std::function<void(const EMRClient*, const Model::GetStudioSessionMappingRequest&, const Model::GetStudioSessionMappingOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetStudioSessionMappingResponseReceivedHandler;
274     typedef std::function<void(const EMRClient*, const Model::ListBootstrapActionsRequest&, const Model::ListBootstrapActionsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListBootstrapActionsResponseReceivedHandler;
275     typedef std::function<void(const EMRClient*, const Model::ListClustersRequest&, const Model::ListClustersOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListClustersResponseReceivedHandler;
276     typedef std::function<void(const EMRClient*, const Model::ListInstanceFleetsRequest&, const Model::ListInstanceFleetsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListInstanceFleetsResponseReceivedHandler;
277     typedef std::function<void(const EMRClient*, const Model::ListInstanceGroupsRequest&, const Model::ListInstanceGroupsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListInstanceGroupsResponseReceivedHandler;
278     typedef std::function<void(const EMRClient*, const Model::ListInstancesRequest&, const Model::ListInstancesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListInstancesResponseReceivedHandler;
279     typedef std::function<void(const EMRClient*, const Model::ListNotebookExecutionsRequest&, const Model::ListNotebookExecutionsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListNotebookExecutionsResponseReceivedHandler;
280     typedef std::function<void(const EMRClient*, const Model::ListReleaseLabelsRequest&, const Model::ListReleaseLabelsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListReleaseLabelsResponseReceivedHandler;
281     typedef std::function<void(const EMRClient*, const Model::ListSecurityConfigurationsRequest&, const Model::ListSecurityConfigurationsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListSecurityConfigurationsResponseReceivedHandler;
282     typedef std::function<void(const EMRClient*, const Model::ListStepsRequest&, const Model::ListStepsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListStepsResponseReceivedHandler;
283     typedef std::function<void(const EMRClient*, const Model::ListStudioSessionMappingsRequest&, const Model::ListStudioSessionMappingsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListStudioSessionMappingsResponseReceivedHandler;
284     typedef std::function<void(const EMRClient*, const Model::ListStudiosRequest&, const Model::ListStudiosOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListStudiosResponseReceivedHandler;
285     typedef std::function<void(const EMRClient*, const Model::ModifyClusterRequest&, const Model::ModifyClusterOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ModifyClusterResponseReceivedHandler;
286     typedef std::function<void(const EMRClient*, const Model::ModifyInstanceFleetRequest&, const Model::ModifyInstanceFleetOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ModifyInstanceFleetResponseReceivedHandler;
287     typedef std::function<void(const EMRClient*, const Model::ModifyInstanceGroupsRequest&, const Model::ModifyInstanceGroupsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ModifyInstanceGroupsResponseReceivedHandler;
288     typedef std::function<void(const EMRClient*, const Model::PutAutoScalingPolicyRequest&, const Model::PutAutoScalingPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutAutoScalingPolicyResponseReceivedHandler;
289     typedef std::function<void(const EMRClient*, const Model::PutAutoTerminationPolicyRequest&, const Model::PutAutoTerminationPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutAutoTerminationPolicyResponseReceivedHandler;
290     typedef std::function<void(const EMRClient*, const Model::PutBlockPublicAccessConfigurationRequest&, const Model::PutBlockPublicAccessConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutBlockPublicAccessConfigurationResponseReceivedHandler;
291     typedef std::function<void(const EMRClient*, const Model::PutManagedScalingPolicyRequest&, const Model::PutManagedScalingPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutManagedScalingPolicyResponseReceivedHandler;
292     typedef std::function<void(const EMRClient*, const Model::RemoveAutoScalingPolicyRequest&, const Model::RemoveAutoScalingPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > RemoveAutoScalingPolicyResponseReceivedHandler;
293     typedef std::function<void(const EMRClient*, const Model::RemoveAutoTerminationPolicyRequest&, const Model::RemoveAutoTerminationPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > RemoveAutoTerminationPolicyResponseReceivedHandler;
294     typedef std::function<void(const EMRClient*, const Model::RemoveManagedScalingPolicyRequest&, const Model::RemoveManagedScalingPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > RemoveManagedScalingPolicyResponseReceivedHandler;
295     typedef std::function<void(const EMRClient*, const Model::RemoveTagsRequest&, const Model::RemoveTagsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > RemoveTagsResponseReceivedHandler;
296     typedef std::function<void(const EMRClient*, const Model::RunJobFlowRequest&, const Model::RunJobFlowOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > RunJobFlowResponseReceivedHandler;
297     typedef std::function<void(const EMRClient*, const Model::SetTerminationProtectionRequest&, const Model::SetTerminationProtectionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > SetTerminationProtectionResponseReceivedHandler;
298     typedef std::function<void(const EMRClient*, const Model::SetVisibleToAllUsersRequest&, const Model::SetVisibleToAllUsersOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > SetVisibleToAllUsersResponseReceivedHandler;
299     typedef std::function<void(const EMRClient*, const Model::StartNotebookExecutionRequest&, const Model::StartNotebookExecutionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > StartNotebookExecutionResponseReceivedHandler;
300     typedef std::function<void(const EMRClient*, const Model::StopNotebookExecutionRequest&, const Model::StopNotebookExecutionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > StopNotebookExecutionResponseReceivedHandler;
301     typedef std::function<void(const EMRClient*, const Model::TerminateJobFlowsRequest&, const Model::TerminateJobFlowsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > TerminateJobFlowsResponseReceivedHandler;
302     typedef std::function<void(const EMRClient*, const Model::UpdateStudioRequest&, const Model::UpdateStudioOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateStudioResponseReceivedHandler;
303     typedef std::function<void(const EMRClient*, const Model::UpdateStudioSessionMappingRequest&, const Model::UpdateStudioSessionMappingOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateStudioSessionMappingResponseReceivedHandler;
304 
305   /**
306    * <p>Amazon EMR is a web service that makes it easier to process large amounts of
307    * data efficiently. Amazon EMR uses Hadoop processing combined with several Amazon
308    * Web Services services to do tasks such as web indexing, data mining, log file
309    * analysis, machine learning, scientific simulation, and data warehouse
310    * management.</p>
311    */
312   class AWS_EMR_API EMRClient : public Aws::Client::AWSJsonClient
313   {
314     public:
315       typedef Aws::Client::AWSJsonClient BASECLASS;
316 
317        /**
318         * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
319         * is not specified, it will be initialized to default values.
320         */
321         EMRClient(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
322 
323        /**
324         * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
325         * is not specified, it will be initialized to default values.
326         */
327         EMRClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
328 
329        /**
330         * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
331         * the default http client factory will be used
332         */
333         EMRClient(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider>& credentialsProvider,
334             const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
335 
336         virtual ~EMRClient();
337 
338 
339         /**
340          * <p>Adds an instance fleet to a running cluster.</p>  <p>The instance fleet
341          * configuration is available only in Amazon EMR versions 4.8.0 and later,
342          * excluding 5.0.x.</p> <p><h3>See Also:</h3>   <a
343          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddInstanceFleet">AWS
344          * API Reference</a></p>
345          */
346         virtual Model::AddInstanceFleetOutcome AddInstanceFleet(const Model::AddInstanceFleetRequest& request) const;
347 
348         /**
349          * <p>Adds an instance fleet to a running cluster.</p>  <p>The instance fleet
350          * configuration is available only in Amazon EMR versions 4.8.0 and later,
351          * excluding 5.0.x.</p> <p><h3>See Also:</h3>   <a
352          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddInstanceFleet">AWS
353          * API Reference</a></p>
354          *
355          * returns a future to the operation so that it can be executed in parallel to other requests.
356          */
357         virtual Model::AddInstanceFleetOutcomeCallable AddInstanceFleetCallable(const Model::AddInstanceFleetRequest& request) const;
358 
359         /**
360          * <p>Adds an instance fleet to a running cluster.</p>  <p>The instance fleet
361          * configuration is available only in Amazon EMR versions 4.8.0 and later,
362          * excluding 5.0.x.</p> <p><h3>See Also:</h3>   <a
363          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddInstanceFleet">AWS
364          * API Reference</a></p>
365          *
366          * Queues the request into a thread executor and triggers associated callback when operation has finished.
367          */
368         virtual void AddInstanceFleetAsync(const Model::AddInstanceFleetRequest& request, const AddInstanceFleetResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
369 
370         /**
371          * <p>Adds one or more instance groups to a running cluster.</p><p><h3>See
372          * Also:</h3>   <a
373          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddInstanceGroups">AWS
374          * API Reference</a></p>
375          */
376         virtual Model::AddInstanceGroupsOutcome AddInstanceGroups(const Model::AddInstanceGroupsRequest& request) const;
377 
378         /**
379          * <p>Adds one or more instance groups to a running cluster.</p><p><h3>See
380          * Also:</h3>   <a
381          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddInstanceGroups">AWS
382          * API Reference</a></p>
383          *
384          * returns a future to the operation so that it can be executed in parallel to other requests.
385          */
386         virtual Model::AddInstanceGroupsOutcomeCallable AddInstanceGroupsCallable(const Model::AddInstanceGroupsRequest& request) const;
387 
388         /**
389          * <p>Adds one or more instance groups to a running cluster.</p><p><h3>See
390          * Also:</h3>   <a
391          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddInstanceGroups">AWS
392          * API Reference</a></p>
393          *
394          * Queues the request into a thread executor and triggers associated callback when operation has finished.
395          */
396         virtual void AddInstanceGroupsAsync(const Model::AddInstanceGroupsRequest& request, const AddInstanceGroupsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
397 
398         /**
399          * <p>AddJobFlowSteps adds new steps to a running cluster. A maximum of 256 steps
400          * are allowed in each job flow.</p> <p>If your cluster is long-running (such as a
401          * Hive data warehouse) or complex, you may require more than 256 steps to process
402          * your data. You can bypass the 256-step limitation in various ways, including
403          * using SSH to connect to the master node and submitting queries directly to the
404          * software running on the master node, such as Hive and Hadoop. For more
405          * information on how to do this, see <a
406          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/AddMoreThan256Steps.html">Add
407          * More than 256 Steps to a Cluster</a> in the <i>Amazon EMR Management
408          * Guide</i>.</p> <p>A step specifies the location of a JAR file stored either on
409          * the master node of the cluster or in Amazon S3. Each step is performed by the
410          * main function of the main class of the JAR file. The main class can be specified
411          * either in the manifest of the JAR or by using the MainFunction parameter of the
412          * step.</p> <p>Amazon EMR executes each step in the order listed. For a step to be
413          * considered complete, the main function must exit with a zero exit code and all
414          * Hadoop jobs started while the step was running must have completed and run
415          * successfully.</p> <p>You can only add steps to a cluster that is in one of the
416          * following states: STARTING, BOOTSTRAPPING, RUNNING, or WAITING.</p><p><h3>See
417          * Also:</h3>   <a
418          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddJobFlowSteps">AWS
419          * API Reference</a></p>
420          */
421         virtual Model::AddJobFlowStepsOutcome AddJobFlowSteps(const Model::AddJobFlowStepsRequest& request) const;
422 
423         /**
424          * <p>AddJobFlowSteps adds new steps to a running cluster. A maximum of 256 steps
425          * are allowed in each job flow.</p> <p>If your cluster is long-running (such as a
426          * Hive data warehouse) or complex, you may require more than 256 steps to process
427          * your data. You can bypass the 256-step limitation in various ways, including
428          * using SSH to connect to the master node and submitting queries directly to the
429          * software running on the master node, such as Hive and Hadoop. For more
430          * information on how to do this, see <a
431          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/AddMoreThan256Steps.html">Add
432          * More than 256 Steps to a Cluster</a> in the <i>Amazon EMR Management
433          * Guide</i>.</p> <p>A step specifies the location of a JAR file stored either on
434          * the master node of the cluster or in Amazon S3. Each step is performed by the
435          * main function of the main class of the JAR file. The main class can be specified
436          * either in the manifest of the JAR or by using the MainFunction parameter of the
437          * step.</p> <p>Amazon EMR executes each step in the order listed. For a step to be
438          * considered complete, the main function must exit with a zero exit code and all
439          * Hadoop jobs started while the step was running must have completed and run
440          * successfully.</p> <p>You can only add steps to a cluster that is in one of the
441          * following states: STARTING, BOOTSTRAPPING, RUNNING, or WAITING.</p><p><h3>See
442          * Also:</h3>   <a
443          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddJobFlowSteps">AWS
444          * API Reference</a></p>
445          *
446          * returns a future to the operation so that it can be executed in parallel to other requests.
447          */
448         virtual Model::AddJobFlowStepsOutcomeCallable AddJobFlowStepsCallable(const Model::AddJobFlowStepsRequest& request) const;
449 
450         /**
451          * <p>AddJobFlowSteps adds new steps to a running cluster. A maximum of 256 steps
452          * are allowed in each job flow.</p> <p>If your cluster is long-running (such as a
453          * Hive data warehouse) or complex, you may require more than 256 steps to process
454          * your data. You can bypass the 256-step limitation in various ways, including
455          * using SSH to connect to the master node and submitting queries directly to the
456          * software running on the master node, such as Hive and Hadoop. For more
457          * information on how to do this, see <a
458          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/AddMoreThan256Steps.html">Add
459          * More than 256 Steps to a Cluster</a> in the <i>Amazon EMR Management
460          * Guide</i>.</p> <p>A step specifies the location of a JAR file stored either on
461          * the master node of the cluster or in Amazon S3. Each step is performed by the
462          * main function of the main class of the JAR file. The main class can be specified
463          * either in the manifest of the JAR or by using the MainFunction parameter of the
464          * step.</p> <p>Amazon EMR executes each step in the order listed. For a step to be
465          * considered complete, the main function must exit with a zero exit code and all
466          * Hadoop jobs started while the step was running must have completed and run
467          * successfully.</p> <p>You can only add steps to a cluster that is in one of the
468          * following states: STARTING, BOOTSTRAPPING, RUNNING, or WAITING.</p><p><h3>See
469          * Also:</h3>   <a
470          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddJobFlowSteps">AWS
471          * API Reference</a></p>
472          *
473          * Queues the request into a thread executor and triggers associated callback when operation has finished.
474          */
475         virtual void AddJobFlowStepsAsync(const Model::AddJobFlowStepsRequest& request, const AddJobFlowStepsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
476 
477         /**
478          * <p>Adds tags to an Amazon EMR resource, such as a cluster or an Amazon EMR
479          * Studio. Tags make it easier to associate resources in various ways, such as
480          * grouping clusters to track your Amazon EMR resource allocation costs. For more
481          * information, see <a
482          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html">Tag
483          * Clusters</a>. </p><p><h3>See Also:</h3>   <a
484          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddTags">AWS
485          * API Reference</a></p>
486          */
487         virtual Model::AddTagsOutcome AddTags(const Model::AddTagsRequest& request) const;
488 
489         /**
490          * <p>Adds tags to an Amazon EMR resource, such as a cluster or an Amazon EMR
491          * Studio. Tags make it easier to associate resources in various ways, such as
492          * grouping clusters to track your Amazon EMR resource allocation costs. For more
493          * information, see <a
494          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html">Tag
495          * Clusters</a>. </p><p><h3>See Also:</h3>   <a
496          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddTags">AWS
497          * API Reference</a></p>
498          *
499          * returns a future to the operation so that it can be executed in parallel to other requests.
500          */
501         virtual Model::AddTagsOutcomeCallable AddTagsCallable(const Model::AddTagsRequest& request) const;
502 
503         /**
504          * <p>Adds tags to an Amazon EMR resource, such as a cluster or an Amazon EMR
505          * Studio. Tags make it easier to associate resources in various ways, such as
506          * grouping clusters to track your Amazon EMR resource allocation costs. For more
507          * information, see <a
508          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html">Tag
509          * Clusters</a>. </p><p><h3>See Also:</h3>   <a
510          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddTags">AWS
511          * API Reference</a></p>
512          *
513          * Queues the request into a thread executor and triggers associated callback when operation has finished.
514          */
515         virtual void AddTagsAsync(const Model::AddTagsRequest& request, const AddTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
516 
517         /**
518          * <p>Cancels a pending step or steps in a running cluster. Available only in
519          * Amazon EMR versions 4.8.0 and later, excluding version 5.0.0. A maximum of 256
520          * steps are allowed in each CancelSteps request. CancelSteps is idempotent but
521          * asynchronous; it does not guarantee that a step will be canceled, even if the
522          * request is successfully submitted. When you use Amazon EMR versions 5.28.0 and
523          * later, you can cancel steps that are in a <code>PENDING</code> or
524          * <code>RUNNING</code> state. In earlier versions of Amazon EMR, you can only
525          * cancel steps that are in a <code>PENDING</code> state. </p><p><h3>See Also:</h3>
526          * <a
527          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CancelSteps">AWS
528          * API Reference</a></p>
529          */
530         virtual Model::CancelStepsOutcome CancelSteps(const Model::CancelStepsRequest& request) const;
531 
532         /**
533          * <p>Cancels a pending step or steps in a running cluster. Available only in
534          * Amazon EMR versions 4.8.0 and later, excluding version 5.0.0. A maximum of 256
535          * steps are allowed in each CancelSteps request. CancelSteps is idempotent but
536          * asynchronous; it does not guarantee that a step will be canceled, even if the
537          * request is successfully submitted. When you use Amazon EMR versions 5.28.0 and
538          * later, you can cancel steps that are in a <code>PENDING</code> or
539          * <code>RUNNING</code> state. In earlier versions of Amazon EMR, you can only
540          * cancel steps that are in a <code>PENDING</code> state. </p><p><h3>See Also:</h3>
541          * <a
542          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CancelSteps">AWS
543          * API Reference</a></p>
544          *
545          * returns a future to the operation so that it can be executed in parallel to other requests.
546          */
547         virtual Model::CancelStepsOutcomeCallable CancelStepsCallable(const Model::CancelStepsRequest& request) const;
548 
549         /**
550          * <p>Cancels a pending step or steps in a running cluster. Available only in
551          * Amazon EMR versions 4.8.0 and later, excluding version 5.0.0. A maximum of 256
552          * steps are allowed in each CancelSteps request. CancelSteps is idempotent but
553          * asynchronous; it does not guarantee that a step will be canceled, even if the
554          * request is successfully submitted. When you use Amazon EMR versions 5.28.0 and
555          * later, you can cancel steps that are in a <code>PENDING</code> or
556          * <code>RUNNING</code> state. In earlier versions of Amazon EMR, you can only
557          * cancel steps that are in a <code>PENDING</code> state. </p><p><h3>See Also:</h3>
558          * <a
559          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CancelSteps">AWS
560          * API Reference</a></p>
561          *
562          * Queues the request into a thread executor and triggers associated callback when operation has finished.
563          */
564         virtual void CancelStepsAsync(const Model::CancelStepsRequest& request, const CancelStepsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
565 
566         /**
567          * <p>Creates a security configuration, which is stored in the service and can be
568          * specified when a cluster is created.</p><p><h3>See Also:</h3>   <a
569          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CreateSecurityConfiguration">AWS
570          * API Reference</a></p>
571          */
572         virtual Model::CreateSecurityConfigurationOutcome CreateSecurityConfiguration(const Model::CreateSecurityConfigurationRequest& request) const;
573 
574         /**
575          * <p>Creates a security configuration, which is stored in the service and can be
576          * specified when a cluster is created.</p><p><h3>See Also:</h3>   <a
577          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CreateSecurityConfiguration">AWS
578          * API Reference</a></p>
579          *
580          * returns a future to the operation so that it can be executed in parallel to other requests.
581          */
582         virtual Model::CreateSecurityConfigurationOutcomeCallable CreateSecurityConfigurationCallable(const Model::CreateSecurityConfigurationRequest& request) const;
583 
584         /**
585          * <p>Creates a security configuration, which is stored in the service and can be
586          * specified when a cluster is created.</p><p><h3>See Also:</h3>   <a
587          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CreateSecurityConfiguration">AWS
588          * API Reference</a></p>
589          *
590          * Queues the request into a thread executor and triggers associated callback when operation has finished.
591          */
592         virtual void CreateSecurityConfigurationAsync(const Model::CreateSecurityConfigurationRequest& request, const CreateSecurityConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
593 
594         /**
595          * <p>Creates a new Amazon EMR Studio.</p><p><h3>See Also:</h3>   <a
596          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CreateStudio">AWS
597          * API Reference</a></p>
598          */
599         virtual Model::CreateStudioOutcome CreateStudio(const Model::CreateStudioRequest& request) const;
600 
601         /**
602          * <p>Creates a new Amazon EMR Studio.</p><p><h3>See Also:</h3>   <a
603          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CreateStudio">AWS
604          * API Reference</a></p>
605          *
606          * returns a future to the operation so that it can be executed in parallel to other requests.
607          */
608         virtual Model::CreateStudioOutcomeCallable CreateStudioCallable(const Model::CreateStudioRequest& request) const;
609 
610         /**
611          * <p>Creates a new Amazon EMR Studio.</p><p><h3>See Also:</h3>   <a
612          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CreateStudio">AWS
613          * API Reference</a></p>
614          *
615          * Queues the request into a thread executor and triggers associated callback when operation has finished.
616          */
617         virtual void CreateStudioAsync(const Model::CreateStudioRequest& request, const CreateStudioResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
618 
619         /**
620          * <p>Maps a user or group to the Amazon EMR Studio specified by
621          * <code>StudioId</code>, and applies a session policy to refine Studio permissions
622          * for that user or group. Use <code>CreateStudioSessionMapping</code> to assign
623          * users to a Studio when you use Amazon Web Services SSO authentication. For
624          * instructions on how to assign users to a Studio when you use IAM authentication,
625          * see <a
626          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-manage-users.html#emr-studio-assign-users-groups">Assign
627          * a user or group to your EMR Studio</a>.</p><p><h3>See Also:</h3>   <a
628          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CreateStudioSessionMapping">AWS
629          * API Reference</a></p>
630          */
631         virtual Model::CreateStudioSessionMappingOutcome CreateStudioSessionMapping(const Model::CreateStudioSessionMappingRequest& request) const;
632 
633         /**
634          * <p>Maps a user or group to the Amazon EMR Studio specified by
635          * <code>StudioId</code>, and applies a session policy to refine Studio permissions
636          * for that user or group. Use <code>CreateStudioSessionMapping</code> to assign
637          * users to a Studio when you use Amazon Web Services SSO authentication. For
638          * instructions on how to assign users to a Studio when you use IAM authentication,
639          * see <a
640          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-manage-users.html#emr-studio-assign-users-groups">Assign
641          * a user or group to your EMR Studio</a>.</p><p><h3>See Also:</h3>   <a
642          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CreateStudioSessionMapping">AWS
643          * API Reference</a></p>
644          *
645          * returns a future to the operation so that it can be executed in parallel to other requests.
646          */
647         virtual Model::CreateStudioSessionMappingOutcomeCallable CreateStudioSessionMappingCallable(const Model::CreateStudioSessionMappingRequest& request) const;
648 
649         /**
650          * <p>Maps a user or group to the Amazon EMR Studio specified by
651          * <code>StudioId</code>, and applies a session policy to refine Studio permissions
652          * for that user or group. Use <code>CreateStudioSessionMapping</code> to assign
653          * users to a Studio when you use Amazon Web Services SSO authentication. For
654          * instructions on how to assign users to a Studio when you use IAM authentication,
655          * see <a
656          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-manage-users.html#emr-studio-assign-users-groups">Assign
657          * a user or group to your EMR Studio</a>.</p><p><h3>See Also:</h3>   <a
658          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CreateStudioSessionMapping">AWS
659          * API Reference</a></p>
660          *
661          * Queues the request into a thread executor and triggers associated callback when operation has finished.
662          */
663         virtual void CreateStudioSessionMappingAsync(const Model::CreateStudioSessionMappingRequest& request, const CreateStudioSessionMappingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
664 
665         /**
666          * <p>Deletes a security configuration.</p><p><h3>See Also:</h3>   <a
667          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DeleteSecurityConfiguration">AWS
668          * API Reference</a></p>
669          */
670         virtual Model::DeleteSecurityConfigurationOutcome DeleteSecurityConfiguration(const Model::DeleteSecurityConfigurationRequest& request) const;
671 
672         /**
673          * <p>Deletes a security configuration.</p><p><h3>See Also:</h3>   <a
674          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DeleteSecurityConfiguration">AWS
675          * API Reference</a></p>
676          *
677          * returns a future to the operation so that it can be executed in parallel to other requests.
678          */
679         virtual Model::DeleteSecurityConfigurationOutcomeCallable DeleteSecurityConfigurationCallable(const Model::DeleteSecurityConfigurationRequest& request) const;
680 
681         /**
682          * <p>Deletes a security configuration.</p><p><h3>See Also:</h3>   <a
683          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DeleteSecurityConfiguration">AWS
684          * API Reference</a></p>
685          *
686          * Queues the request into a thread executor and triggers associated callback when operation has finished.
687          */
688         virtual void DeleteSecurityConfigurationAsync(const Model::DeleteSecurityConfigurationRequest& request, const DeleteSecurityConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
689 
690         /**
691          * <p>Removes an Amazon EMR Studio from the Studio metadata store.</p><p><h3>See
692          * Also:</h3>   <a
693          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DeleteStudio">AWS
694          * API Reference</a></p>
695          */
696         virtual Model::DeleteStudioOutcome DeleteStudio(const Model::DeleteStudioRequest& request) const;
697 
698         /**
699          * <p>Removes an Amazon EMR Studio from the Studio metadata store.</p><p><h3>See
700          * Also:</h3>   <a
701          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DeleteStudio">AWS
702          * API Reference</a></p>
703          *
704          * returns a future to the operation so that it can be executed in parallel to other requests.
705          */
706         virtual Model::DeleteStudioOutcomeCallable DeleteStudioCallable(const Model::DeleteStudioRequest& request) const;
707 
708         /**
709          * <p>Removes an Amazon EMR Studio from the Studio metadata store.</p><p><h3>See
710          * Also:</h3>   <a
711          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DeleteStudio">AWS
712          * API Reference</a></p>
713          *
714          * Queues the request into a thread executor and triggers associated callback when operation has finished.
715          */
716         virtual void DeleteStudioAsync(const Model::DeleteStudioRequest& request, const DeleteStudioResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
717 
718         /**
719          * <p>Removes a user or group from an Amazon EMR Studio.</p><p><h3>See Also:</h3>
720          * <a
721          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DeleteStudioSessionMapping">AWS
722          * API Reference</a></p>
723          */
724         virtual Model::DeleteStudioSessionMappingOutcome DeleteStudioSessionMapping(const Model::DeleteStudioSessionMappingRequest& request) const;
725 
726         /**
727          * <p>Removes a user or group from an Amazon EMR Studio.</p><p><h3>See Also:</h3>
728          * <a
729          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DeleteStudioSessionMapping">AWS
730          * API Reference</a></p>
731          *
732          * returns a future to the operation so that it can be executed in parallel to other requests.
733          */
734         virtual Model::DeleteStudioSessionMappingOutcomeCallable DeleteStudioSessionMappingCallable(const Model::DeleteStudioSessionMappingRequest& request) const;
735 
736         /**
737          * <p>Removes a user or group from an Amazon EMR Studio.</p><p><h3>See Also:</h3>
738          * <a
739          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DeleteStudioSessionMapping">AWS
740          * API Reference</a></p>
741          *
742          * Queues the request into a thread executor and triggers associated callback when operation has finished.
743          */
744         virtual void DeleteStudioSessionMappingAsync(const Model::DeleteStudioSessionMappingRequest& request, const DeleteStudioSessionMappingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
745 
746         /**
747          * <p>Provides cluster-level details including status, hardware and software
748          * configuration, VPC settings, and so on.</p><p><h3>See Also:</h3>   <a
749          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeCluster">AWS
750          * API Reference</a></p>
751          */
752         virtual Model::DescribeClusterOutcome DescribeCluster(const Model::DescribeClusterRequest& request) const;
753 
754         /**
755          * <p>Provides cluster-level details including status, hardware and software
756          * configuration, VPC settings, and so on.</p><p><h3>See Also:</h3>   <a
757          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeCluster">AWS
758          * API Reference</a></p>
759          *
760          * returns a future to the operation so that it can be executed in parallel to other requests.
761          */
762         virtual Model::DescribeClusterOutcomeCallable DescribeClusterCallable(const Model::DescribeClusterRequest& request) const;
763 
764         /**
765          * <p>Provides cluster-level details including status, hardware and software
766          * configuration, VPC settings, and so on.</p><p><h3>See Also:</h3>   <a
767          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeCluster">AWS
768          * API Reference</a></p>
769          *
770          * Queues the request into a thread executor and triggers associated callback when operation has finished.
771          */
772         virtual void DescribeClusterAsync(const Model::DescribeClusterRequest& request, const DescribeClusterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
773 
774         /**
775          * <p>Provides details of a notebook execution.</p><p><h3>See Also:</h3>   <a
776          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeNotebookExecution">AWS
777          * API Reference</a></p>
778          */
779         virtual Model::DescribeNotebookExecutionOutcome DescribeNotebookExecution(const Model::DescribeNotebookExecutionRequest& request) const;
780 
781         /**
782          * <p>Provides details of a notebook execution.</p><p><h3>See Also:</h3>   <a
783          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeNotebookExecution">AWS
784          * API Reference</a></p>
785          *
786          * returns a future to the operation so that it can be executed in parallel to other requests.
787          */
788         virtual Model::DescribeNotebookExecutionOutcomeCallable DescribeNotebookExecutionCallable(const Model::DescribeNotebookExecutionRequest& request) const;
789 
790         /**
791          * <p>Provides details of a notebook execution.</p><p><h3>See Also:</h3>   <a
792          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeNotebookExecution">AWS
793          * API Reference</a></p>
794          *
795          * Queues the request into a thread executor and triggers associated callback when operation has finished.
796          */
797         virtual void DescribeNotebookExecutionAsync(const Model::DescribeNotebookExecutionRequest& request, const DescribeNotebookExecutionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
798 
799         /**
800          * <p>Provides EMR release label details, such as releases available the region
801          * where the API request is run, and the available applications for a specific EMR
802          * release label. Can also list EMR release versions that support a specified
803          * version of Spark.</p><p><h3>See Also:</h3>   <a
804          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeReleaseLabel">AWS
805          * API Reference</a></p>
806          */
807         virtual Model::DescribeReleaseLabelOutcome DescribeReleaseLabel(const Model::DescribeReleaseLabelRequest& request) const;
808 
809         /**
810          * <p>Provides EMR release label details, such as releases available the region
811          * where the API request is run, and the available applications for a specific EMR
812          * release label. Can also list EMR release versions that support a specified
813          * version of Spark.</p><p><h3>See Also:</h3>   <a
814          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeReleaseLabel">AWS
815          * API Reference</a></p>
816          *
817          * returns a future to the operation so that it can be executed in parallel to other requests.
818          */
819         virtual Model::DescribeReleaseLabelOutcomeCallable DescribeReleaseLabelCallable(const Model::DescribeReleaseLabelRequest& request) const;
820 
821         /**
822          * <p>Provides EMR release label details, such as releases available the region
823          * where the API request is run, and the available applications for a specific EMR
824          * release label. Can also list EMR release versions that support a specified
825          * version of Spark.</p><p><h3>See Also:</h3>   <a
826          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeReleaseLabel">AWS
827          * API Reference</a></p>
828          *
829          * Queues the request into a thread executor and triggers associated callback when operation has finished.
830          */
831         virtual void DescribeReleaseLabelAsync(const Model::DescribeReleaseLabelRequest& request, const DescribeReleaseLabelResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
832 
833         /**
834          * <p>Provides the details of a security configuration by returning the
835          * configuration JSON.</p><p><h3>See Also:</h3>   <a
836          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeSecurityConfiguration">AWS
837          * API Reference</a></p>
838          */
839         virtual Model::DescribeSecurityConfigurationOutcome DescribeSecurityConfiguration(const Model::DescribeSecurityConfigurationRequest& request) const;
840 
841         /**
842          * <p>Provides the details of a security configuration by returning the
843          * configuration JSON.</p><p><h3>See Also:</h3>   <a
844          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeSecurityConfiguration">AWS
845          * API Reference</a></p>
846          *
847          * returns a future to the operation so that it can be executed in parallel to other requests.
848          */
849         virtual Model::DescribeSecurityConfigurationOutcomeCallable DescribeSecurityConfigurationCallable(const Model::DescribeSecurityConfigurationRequest& request) const;
850 
851         /**
852          * <p>Provides the details of a security configuration by returning the
853          * configuration JSON.</p><p><h3>See Also:</h3>   <a
854          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeSecurityConfiguration">AWS
855          * API Reference</a></p>
856          *
857          * Queues the request into a thread executor and triggers associated callback when operation has finished.
858          */
859         virtual void DescribeSecurityConfigurationAsync(const Model::DescribeSecurityConfigurationRequest& request, const DescribeSecurityConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
860 
861         /**
862          * <p>Provides more detail about the cluster step.</p><p><h3>See Also:</h3>   <a
863          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeStep">AWS
864          * API Reference</a></p>
865          */
866         virtual Model::DescribeStepOutcome DescribeStep(const Model::DescribeStepRequest& request) const;
867 
868         /**
869          * <p>Provides more detail about the cluster step.</p><p><h3>See Also:</h3>   <a
870          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeStep">AWS
871          * API Reference</a></p>
872          *
873          * returns a future to the operation so that it can be executed in parallel to other requests.
874          */
875         virtual Model::DescribeStepOutcomeCallable DescribeStepCallable(const Model::DescribeStepRequest& request) const;
876 
877         /**
878          * <p>Provides more detail about the cluster step.</p><p><h3>See Also:</h3>   <a
879          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeStep">AWS
880          * API Reference</a></p>
881          *
882          * Queues the request into a thread executor and triggers associated callback when operation has finished.
883          */
884         virtual void DescribeStepAsync(const Model::DescribeStepRequest& request, const DescribeStepResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
885 
886         /**
887          * <p>Returns details for the specified Amazon EMR Studio including ID, Name, VPC,
888          * Studio access URL, and so on.</p><p><h3>See Also:</h3>   <a
889          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeStudio">AWS
890          * API Reference</a></p>
891          */
892         virtual Model::DescribeStudioOutcome DescribeStudio(const Model::DescribeStudioRequest& request) const;
893 
894         /**
895          * <p>Returns details for the specified Amazon EMR Studio including ID, Name, VPC,
896          * Studio access URL, and so on.</p><p><h3>See Also:</h3>   <a
897          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeStudio">AWS
898          * API Reference</a></p>
899          *
900          * returns a future to the operation so that it can be executed in parallel to other requests.
901          */
902         virtual Model::DescribeStudioOutcomeCallable DescribeStudioCallable(const Model::DescribeStudioRequest& request) const;
903 
904         /**
905          * <p>Returns details for the specified Amazon EMR Studio including ID, Name, VPC,
906          * Studio access URL, and so on.</p><p><h3>See Also:</h3>   <a
907          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeStudio">AWS
908          * API Reference</a></p>
909          *
910          * Queues the request into a thread executor and triggers associated callback when operation has finished.
911          */
912         virtual void DescribeStudioAsync(const Model::DescribeStudioRequest& request, const DescribeStudioResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
913 
914         /**
915          * <p>Returns the auto-termination policy for an Amazon EMR cluster.</p><p><h3>See
916          * Also:</h3>   <a
917          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/GetAutoTerminationPolicy">AWS
918          * API Reference</a></p>
919          */
920         virtual Model::GetAutoTerminationPolicyOutcome GetAutoTerminationPolicy(const Model::GetAutoTerminationPolicyRequest& request) const;
921 
922         /**
923          * <p>Returns the auto-termination policy for an Amazon EMR cluster.</p><p><h3>See
924          * Also:</h3>   <a
925          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/GetAutoTerminationPolicy">AWS
926          * API Reference</a></p>
927          *
928          * returns a future to the operation so that it can be executed in parallel to other requests.
929          */
930         virtual Model::GetAutoTerminationPolicyOutcomeCallable GetAutoTerminationPolicyCallable(const Model::GetAutoTerminationPolicyRequest& request) const;
931 
932         /**
933          * <p>Returns the auto-termination policy for an Amazon EMR cluster.</p><p><h3>See
934          * Also:</h3>   <a
935          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/GetAutoTerminationPolicy">AWS
936          * API Reference</a></p>
937          *
938          * Queues the request into a thread executor and triggers associated callback when operation has finished.
939          */
940         virtual void GetAutoTerminationPolicyAsync(const Model::GetAutoTerminationPolicyRequest& request, const GetAutoTerminationPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
941 
942         /**
943          * <p>Returns the Amazon EMR block public access configuration for your Amazon Web
944          * Services account in the current Region. For more information see <a
945          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/configure-block-public-access.html">Configure
946          * Block Public Access for Amazon EMR</a> in the <i>Amazon EMR Management
947          * Guide</i>.</p><p><h3>See Also:</h3>   <a
948          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/GetBlockPublicAccessConfiguration">AWS
949          * API Reference</a></p>
950          */
951         virtual Model::GetBlockPublicAccessConfigurationOutcome GetBlockPublicAccessConfiguration(const Model::GetBlockPublicAccessConfigurationRequest& request) const;
952 
953         /**
954          * <p>Returns the Amazon EMR block public access configuration for your Amazon Web
955          * Services account in the current Region. For more information see <a
956          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/configure-block-public-access.html">Configure
957          * Block Public Access for Amazon EMR</a> in the <i>Amazon EMR Management
958          * Guide</i>.</p><p><h3>See Also:</h3>   <a
959          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/GetBlockPublicAccessConfiguration">AWS
960          * API Reference</a></p>
961          *
962          * returns a future to the operation so that it can be executed in parallel to other requests.
963          */
964         virtual Model::GetBlockPublicAccessConfigurationOutcomeCallable GetBlockPublicAccessConfigurationCallable(const Model::GetBlockPublicAccessConfigurationRequest& request) const;
965 
966         /**
967          * <p>Returns the Amazon EMR block public access configuration for your Amazon Web
968          * Services account in the current Region. For more information see <a
969          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/configure-block-public-access.html">Configure
970          * Block Public Access for Amazon EMR</a> in the <i>Amazon EMR Management
971          * Guide</i>.</p><p><h3>See Also:</h3>   <a
972          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/GetBlockPublicAccessConfiguration">AWS
973          * API Reference</a></p>
974          *
975          * Queues the request into a thread executor and triggers associated callback when operation has finished.
976          */
977         virtual void GetBlockPublicAccessConfigurationAsync(const Model::GetBlockPublicAccessConfigurationRequest& request, const GetBlockPublicAccessConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
978 
979         /**
980          * <p>Fetches the attached managed scaling policy for an Amazon EMR cluster.
981          * </p><p><h3>See Also:</h3>   <a
982          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/GetManagedScalingPolicy">AWS
983          * API Reference</a></p>
984          */
985         virtual Model::GetManagedScalingPolicyOutcome GetManagedScalingPolicy(const Model::GetManagedScalingPolicyRequest& request) const;
986 
987         /**
988          * <p>Fetches the attached managed scaling policy for an Amazon EMR cluster.
989          * </p><p><h3>See Also:</h3>   <a
990          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/GetManagedScalingPolicy">AWS
991          * API Reference</a></p>
992          *
993          * returns a future to the operation so that it can be executed in parallel to other requests.
994          */
995         virtual Model::GetManagedScalingPolicyOutcomeCallable GetManagedScalingPolicyCallable(const Model::GetManagedScalingPolicyRequest& request) const;
996 
997         /**
998          * <p>Fetches the attached managed scaling policy for an Amazon EMR cluster.
999          * </p><p><h3>See Also:</h3>   <a
1000          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/GetManagedScalingPolicy">AWS
1001          * API Reference</a></p>
1002          *
1003          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1004          */
1005         virtual void GetManagedScalingPolicyAsync(const Model::GetManagedScalingPolicyRequest& request, const GetManagedScalingPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1006 
1007         /**
1008          * <p>Fetches mapping details for the specified Amazon EMR Studio and identity
1009          * (user or group).</p><p><h3>See Also:</h3>   <a
1010          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/GetStudioSessionMapping">AWS
1011          * API Reference</a></p>
1012          */
1013         virtual Model::GetStudioSessionMappingOutcome GetStudioSessionMapping(const Model::GetStudioSessionMappingRequest& request) const;
1014 
1015         /**
1016          * <p>Fetches mapping details for the specified Amazon EMR Studio and identity
1017          * (user or group).</p><p><h3>See Also:</h3>   <a
1018          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/GetStudioSessionMapping">AWS
1019          * API Reference</a></p>
1020          *
1021          * returns a future to the operation so that it can be executed in parallel to other requests.
1022          */
1023         virtual Model::GetStudioSessionMappingOutcomeCallable GetStudioSessionMappingCallable(const Model::GetStudioSessionMappingRequest& request) const;
1024 
1025         /**
1026          * <p>Fetches mapping details for the specified Amazon EMR Studio and identity
1027          * (user or group).</p><p><h3>See Also:</h3>   <a
1028          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/GetStudioSessionMapping">AWS
1029          * API Reference</a></p>
1030          *
1031          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1032          */
1033         virtual void GetStudioSessionMappingAsync(const Model::GetStudioSessionMappingRequest& request, const GetStudioSessionMappingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1034 
1035         /**
1036          * <p>Provides information about the bootstrap actions associated with a
1037          * cluster.</p><p><h3>See Also:</h3>   <a
1038          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListBootstrapActions">AWS
1039          * API Reference</a></p>
1040          */
1041         virtual Model::ListBootstrapActionsOutcome ListBootstrapActions(const Model::ListBootstrapActionsRequest& request) const;
1042 
1043         /**
1044          * <p>Provides information about the bootstrap actions associated with a
1045          * cluster.</p><p><h3>See Also:</h3>   <a
1046          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListBootstrapActions">AWS
1047          * API Reference</a></p>
1048          *
1049          * returns a future to the operation so that it can be executed in parallel to other requests.
1050          */
1051         virtual Model::ListBootstrapActionsOutcomeCallable ListBootstrapActionsCallable(const Model::ListBootstrapActionsRequest& request) const;
1052 
1053         /**
1054          * <p>Provides information about the bootstrap actions associated with a
1055          * cluster.</p><p><h3>See Also:</h3>   <a
1056          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListBootstrapActions">AWS
1057          * API Reference</a></p>
1058          *
1059          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1060          */
1061         virtual void ListBootstrapActionsAsync(const Model::ListBootstrapActionsRequest& request, const ListBootstrapActionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1062 
1063         /**
1064          * <p>Provides the status of all clusters visible to this Amazon Web Services
1065          * account. Allows you to filter the list of clusters based on certain criteria;
1066          * for example, filtering by cluster creation date and time or by status. This call
1067          * returns a maximum of 50 clusters in unsorted order per call, but returns a
1068          * marker to track the paging of the cluster list across multiple ListClusters
1069          * calls.</p><p><h3>See Also:</h3>   <a
1070          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListClusters">AWS
1071          * API Reference</a></p>
1072          */
1073         virtual Model::ListClustersOutcome ListClusters(const Model::ListClustersRequest& request) const;
1074 
1075         /**
1076          * <p>Provides the status of all clusters visible to this Amazon Web Services
1077          * account. Allows you to filter the list of clusters based on certain criteria;
1078          * for example, filtering by cluster creation date and time or by status. This call
1079          * returns a maximum of 50 clusters in unsorted order per call, but returns a
1080          * marker to track the paging of the cluster list across multiple ListClusters
1081          * calls.</p><p><h3>See Also:</h3>   <a
1082          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListClusters">AWS
1083          * API Reference</a></p>
1084          *
1085          * returns a future to the operation so that it can be executed in parallel to other requests.
1086          */
1087         virtual Model::ListClustersOutcomeCallable ListClustersCallable(const Model::ListClustersRequest& request) const;
1088 
1089         /**
1090          * <p>Provides the status of all clusters visible to this Amazon Web Services
1091          * account. Allows you to filter the list of clusters based on certain criteria;
1092          * for example, filtering by cluster creation date and time or by status. This call
1093          * returns a maximum of 50 clusters in unsorted order per call, but returns a
1094          * marker to track the paging of the cluster list across multiple ListClusters
1095          * calls.</p><p><h3>See Also:</h3>   <a
1096          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListClusters">AWS
1097          * API Reference</a></p>
1098          *
1099          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1100          */
1101         virtual void ListClustersAsync(const Model::ListClustersRequest& request, const ListClustersResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1102 
1103         /**
1104          * <p>Lists all available details about the instance fleets in a cluster.</p>
1105          *  <p>The instance fleet configuration is available only in Amazon EMR
1106          * versions 4.8.0 and later, excluding 5.0.x versions.</p> <p><h3>See
1107          * Also:</h3>   <a
1108          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceFleets">AWS
1109          * API Reference</a></p>
1110          */
1111         virtual Model::ListInstanceFleetsOutcome ListInstanceFleets(const Model::ListInstanceFleetsRequest& request) const;
1112 
1113         /**
1114          * <p>Lists all available details about the instance fleets in a cluster.</p>
1115          *  <p>The instance fleet configuration is available only in Amazon EMR
1116          * versions 4.8.0 and later, excluding 5.0.x versions.</p> <p><h3>See
1117          * Also:</h3>   <a
1118          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceFleets">AWS
1119          * API Reference</a></p>
1120          *
1121          * returns a future to the operation so that it can be executed in parallel to other requests.
1122          */
1123         virtual Model::ListInstanceFleetsOutcomeCallable ListInstanceFleetsCallable(const Model::ListInstanceFleetsRequest& request) const;
1124 
1125         /**
1126          * <p>Lists all available details about the instance fleets in a cluster.</p>
1127          *  <p>The instance fleet configuration is available only in Amazon EMR
1128          * versions 4.8.0 and later, excluding 5.0.x versions.</p> <p><h3>See
1129          * Also:</h3>   <a
1130          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceFleets">AWS
1131          * API Reference</a></p>
1132          *
1133          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1134          */
1135         virtual void ListInstanceFleetsAsync(const Model::ListInstanceFleetsRequest& request, const ListInstanceFleetsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1136 
1137         /**
1138          * <p>Provides all available details about the instance groups in a
1139          * cluster.</p><p><h3>See Also:</h3>   <a
1140          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceGroups">AWS
1141          * API Reference</a></p>
1142          */
1143         virtual Model::ListInstanceGroupsOutcome ListInstanceGroups(const Model::ListInstanceGroupsRequest& request) const;
1144 
1145         /**
1146          * <p>Provides all available details about the instance groups in a
1147          * cluster.</p><p><h3>See Also:</h3>   <a
1148          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceGroups">AWS
1149          * API Reference</a></p>
1150          *
1151          * returns a future to the operation so that it can be executed in parallel to other requests.
1152          */
1153         virtual Model::ListInstanceGroupsOutcomeCallable ListInstanceGroupsCallable(const Model::ListInstanceGroupsRequest& request) const;
1154 
1155         /**
1156          * <p>Provides all available details about the instance groups in a
1157          * cluster.</p><p><h3>See Also:</h3>   <a
1158          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceGroups">AWS
1159          * API Reference</a></p>
1160          *
1161          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1162          */
1163         virtual void ListInstanceGroupsAsync(const Model::ListInstanceGroupsRequest& request, const ListInstanceGroupsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1164 
1165         /**
1166          * <p>Provides information for all active EC2 instances and EC2 instances
1167          * terminated in the last 30 days, up to a maximum of 2,000. EC2 instances in any
1168          * of the following states are considered active: AWAITING_FULFILLMENT,
1169          * PROVISIONING, BOOTSTRAPPING, RUNNING.</p><p><h3>See Also:</h3>   <a
1170          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstances">AWS
1171          * API Reference</a></p>
1172          */
1173         virtual Model::ListInstancesOutcome ListInstances(const Model::ListInstancesRequest& request) const;
1174 
1175         /**
1176          * <p>Provides information for all active EC2 instances and EC2 instances
1177          * terminated in the last 30 days, up to a maximum of 2,000. EC2 instances in any
1178          * of the following states are considered active: AWAITING_FULFILLMENT,
1179          * PROVISIONING, BOOTSTRAPPING, RUNNING.</p><p><h3>See Also:</h3>   <a
1180          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstances">AWS
1181          * API Reference</a></p>
1182          *
1183          * returns a future to the operation so that it can be executed in parallel to other requests.
1184          */
1185         virtual Model::ListInstancesOutcomeCallable ListInstancesCallable(const Model::ListInstancesRequest& request) const;
1186 
1187         /**
1188          * <p>Provides information for all active EC2 instances and EC2 instances
1189          * terminated in the last 30 days, up to a maximum of 2,000. EC2 instances in any
1190          * of the following states are considered active: AWAITING_FULFILLMENT,
1191          * PROVISIONING, BOOTSTRAPPING, RUNNING.</p><p><h3>See Also:</h3>   <a
1192          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstances">AWS
1193          * API Reference</a></p>
1194          *
1195          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1196          */
1197         virtual void ListInstancesAsync(const Model::ListInstancesRequest& request, const ListInstancesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1198 
1199         /**
1200          * <p>Provides summaries of all notebook executions. You can filter the list based
1201          * on multiple criteria such as status, time range, and editor id. Returns a
1202          * maximum of 50 notebook executions and a marker to track the paging of a longer
1203          * notebook execution list across multiple <code>ListNotebookExecution</code>
1204          * calls.</p><p><h3>See Also:</h3>   <a
1205          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListNotebookExecutions">AWS
1206          * API Reference</a></p>
1207          */
1208         virtual Model::ListNotebookExecutionsOutcome ListNotebookExecutions(const Model::ListNotebookExecutionsRequest& request) const;
1209 
1210         /**
1211          * <p>Provides summaries of all notebook executions. You can filter the list based
1212          * on multiple criteria such as status, time range, and editor id. Returns a
1213          * maximum of 50 notebook executions and a marker to track the paging of a longer
1214          * notebook execution list across multiple <code>ListNotebookExecution</code>
1215          * calls.</p><p><h3>See Also:</h3>   <a
1216          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListNotebookExecutions">AWS
1217          * API Reference</a></p>
1218          *
1219          * returns a future to the operation so that it can be executed in parallel to other requests.
1220          */
1221         virtual Model::ListNotebookExecutionsOutcomeCallable ListNotebookExecutionsCallable(const Model::ListNotebookExecutionsRequest& request) const;
1222 
1223         /**
1224          * <p>Provides summaries of all notebook executions. You can filter the list based
1225          * on multiple criteria such as status, time range, and editor id. Returns a
1226          * maximum of 50 notebook executions and a marker to track the paging of a longer
1227          * notebook execution list across multiple <code>ListNotebookExecution</code>
1228          * calls.</p><p><h3>See Also:</h3>   <a
1229          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListNotebookExecutions">AWS
1230          * API Reference</a></p>
1231          *
1232          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1233          */
1234         virtual void ListNotebookExecutionsAsync(const Model::ListNotebookExecutionsRequest& request, const ListNotebookExecutionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1235 
1236         /**
1237          * <p>Retrieves release labels of EMR services in the region where the API is
1238          * called.</p><p><h3>See Also:</h3>   <a
1239          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListReleaseLabels">AWS
1240          * API Reference</a></p>
1241          */
1242         virtual Model::ListReleaseLabelsOutcome ListReleaseLabels(const Model::ListReleaseLabelsRequest& request) const;
1243 
1244         /**
1245          * <p>Retrieves release labels of EMR services in the region where the API is
1246          * called.</p><p><h3>See Also:</h3>   <a
1247          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListReleaseLabels">AWS
1248          * API Reference</a></p>
1249          *
1250          * returns a future to the operation so that it can be executed in parallel to other requests.
1251          */
1252         virtual Model::ListReleaseLabelsOutcomeCallable ListReleaseLabelsCallable(const Model::ListReleaseLabelsRequest& request) const;
1253 
1254         /**
1255          * <p>Retrieves release labels of EMR services in the region where the API is
1256          * called.</p><p><h3>See Also:</h3>   <a
1257          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListReleaseLabels">AWS
1258          * API Reference</a></p>
1259          *
1260          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1261          */
1262         virtual void ListReleaseLabelsAsync(const Model::ListReleaseLabelsRequest& request, const ListReleaseLabelsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1263 
1264         /**
1265          * <p>Lists all the security configurations visible to this account, providing
1266          * their creation dates and times, and their names. This call returns a maximum of
1267          * 50 clusters per call, but returns a marker to track the paging of the cluster
1268          * list across multiple ListSecurityConfigurations calls.</p><p><h3>See Also:</h3>
1269          * <a
1270          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListSecurityConfigurations">AWS
1271          * API Reference</a></p>
1272          */
1273         virtual Model::ListSecurityConfigurationsOutcome ListSecurityConfigurations(const Model::ListSecurityConfigurationsRequest& request) const;
1274 
1275         /**
1276          * <p>Lists all the security configurations visible to this account, providing
1277          * their creation dates and times, and their names. This call returns a maximum of
1278          * 50 clusters per call, but returns a marker to track the paging of the cluster
1279          * list across multiple ListSecurityConfigurations calls.</p><p><h3>See Also:</h3>
1280          * <a
1281          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListSecurityConfigurations">AWS
1282          * API Reference</a></p>
1283          *
1284          * returns a future to the operation so that it can be executed in parallel to other requests.
1285          */
1286         virtual Model::ListSecurityConfigurationsOutcomeCallable ListSecurityConfigurationsCallable(const Model::ListSecurityConfigurationsRequest& request) const;
1287 
1288         /**
1289          * <p>Lists all the security configurations visible to this account, providing
1290          * their creation dates and times, and their names. This call returns a maximum of
1291          * 50 clusters per call, but returns a marker to track the paging of the cluster
1292          * list across multiple ListSecurityConfigurations calls.</p><p><h3>See Also:</h3>
1293          * <a
1294          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListSecurityConfigurations">AWS
1295          * API Reference</a></p>
1296          *
1297          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1298          */
1299         virtual void ListSecurityConfigurationsAsync(const Model::ListSecurityConfigurationsRequest& request, const ListSecurityConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1300 
1301         /**
1302          * <p>Provides a list of steps for the cluster in reverse order unless you specify
1303          * <code>stepIds</code> with the request or filter by <code>StepStates</code>. You
1304          * can specify a maximum of 10 <code>stepIDs</code>. The CLI automatically
1305          * paginates results to return a list greater than 50 steps. To return more than 50
1306          * steps using the CLI, specify a <code>Marker</code>, which is a pagination token
1307          * that indicates the next set of steps to retrieve.</p><p><h3>See Also:</h3>   <a
1308          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListSteps">AWS
1309          * API Reference</a></p>
1310          */
1311         virtual Model::ListStepsOutcome ListSteps(const Model::ListStepsRequest& request) const;
1312 
1313         /**
1314          * <p>Provides a list of steps for the cluster in reverse order unless you specify
1315          * <code>stepIds</code> with the request or filter by <code>StepStates</code>. You
1316          * can specify a maximum of 10 <code>stepIDs</code>. The CLI automatically
1317          * paginates results to return a list greater than 50 steps. To return more than 50
1318          * steps using the CLI, specify a <code>Marker</code>, which is a pagination token
1319          * that indicates the next set of steps to retrieve.</p><p><h3>See Also:</h3>   <a
1320          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListSteps">AWS
1321          * API Reference</a></p>
1322          *
1323          * returns a future to the operation so that it can be executed in parallel to other requests.
1324          */
1325         virtual Model::ListStepsOutcomeCallable ListStepsCallable(const Model::ListStepsRequest& request) const;
1326 
1327         /**
1328          * <p>Provides a list of steps for the cluster in reverse order unless you specify
1329          * <code>stepIds</code> with the request or filter by <code>StepStates</code>. You
1330          * can specify a maximum of 10 <code>stepIDs</code>. The CLI automatically
1331          * paginates results to return a list greater than 50 steps. To return more than 50
1332          * steps using the CLI, specify a <code>Marker</code>, which is a pagination token
1333          * that indicates the next set of steps to retrieve.</p><p><h3>See Also:</h3>   <a
1334          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListSteps">AWS
1335          * API Reference</a></p>
1336          *
1337          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1338          */
1339         virtual void ListStepsAsync(const Model::ListStepsRequest& request, const ListStepsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1340 
1341         /**
1342          * <p>Returns a list of all user or group session mappings for the Amazon EMR
1343          * Studio specified by <code>StudioId</code>.</p><p><h3>See Also:</h3>   <a
1344          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListStudioSessionMappings">AWS
1345          * API Reference</a></p>
1346          */
1347         virtual Model::ListStudioSessionMappingsOutcome ListStudioSessionMappings(const Model::ListStudioSessionMappingsRequest& request) const;
1348 
1349         /**
1350          * <p>Returns a list of all user or group session mappings for the Amazon EMR
1351          * Studio specified by <code>StudioId</code>.</p><p><h3>See Also:</h3>   <a
1352          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListStudioSessionMappings">AWS
1353          * API Reference</a></p>
1354          *
1355          * returns a future to the operation so that it can be executed in parallel to other requests.
1356          */
1357         virtual Model::ListStudioSessionMappingsOutcomeCallable ListStudioSessionMappingsCallable(const Model::ListStudioSessionMappingsRequest& request) const;
1358 
1359         /**
1360          * <p>Returns a list of all user or group session mappings for the Amazon EMR
1361          * Studio specified by <code>StudioId</code>.</p><p><h3>See Also:</h3>   <a
1362          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListStudioSessionMappings">AWS
1363          * API Reference</a></p>
1364          *
1365          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1366          */
1367         virtual void ListStudioSessionMappingsAsync(const Model::ListStudioSessionMappingsRequest& request, const ListStudioSessionMappingsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1368 
1369         /**
1370          * <p>Returns a list of all Amazon EMR Studios associated with the Amazon Web
1371          * Services account. The list includes details such as ID, Studio Access URL, and
1372          * creation time for each Studio.</p><p><h3>See Also:</h3>   <a
1373          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListStudios">AWS
1374          * API Reference</a></p>
1375          */
1376         virtual Model::ListStudiosOutcome ListStudios(const Model::ListStudiosRequest& request) const;
1377 
1378         /**
1379          * <p>Returns a list of all Amazon EMR Studios associated with the Amazon Web
1380          * Services account. The list includes details such as ID, Studio Access URL, and
1381          * creation time for each Studio.</p><p><h3>See Also:</h3>   <a
1382          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListStudios">AWS
1383          * API Reference</a></p>
1384          *
1385          * returns a future to the operation so that it can be executed in parallel to other requests.
1386          */
1387         virtual Model::ListStudiosOutcomeCallable ListStudiosCallable(const Model::ListStudiosRequest& request) const;
1388 
1389         /**
1390          * <p>Returns a list of all Amazon EMR Studios associated with the Amazon Web
1391          * Services account. The list includes details such as ID, Studio Access URL, and
1392          * creation time for each Studio.</p><p><h3>See Also:</h3>   <a
1393          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListStudios">AWS
1394          * API Reference</a></p>
1395          *
1396          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1397          */
1398         virtual void ListStudiosAsync(const Model::ListStudiosRequest& request, const ListStudiosResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1399 
1400         /**
1401          * <p>Modifies the number of steps that can be executed concurrently for the
1402          * cluster specified using ClusterID.</p><p><h3>See Also:</h3>   <a
1403          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyCluster">AWS
1404          * API Reference</a></p>
1405          */
1406         virtual Model::ModifyClusterOutcome ModifyCluster(const Model::ModifyClusterRequest& request) const;
1407 
1408         /**
1409          * <p>Modifies the number of steps that can be executed concurrently for the
1410          * cluster specified using ClusterID.</p><p><h3>See Also:</h3>   <a
1411          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyCluster">AWS
1412          * API Reference</a></p>
1413          *
1414          * returns a future to the operation so that it can be executed in parallel to other requests.
1415          */
1416         virtual Model::ModifyClusterOutcomeCallable ModifyClusterCallable(const Model::ModifyClusterRequest& request) const;
1417 
1418         /**
1419          * <p>Modifies the number of steps that can be executed concurrently for the
1420          * cluster specified using ClusterID.</p><p><h3>See Also:</h3>   <a
1421          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyCluster">AWS
1422          * API Reference</a></p>
1423          *
1424          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1425          */
1426         virtual void ModifyClusterAsync(const Model::ModifyClusterRequest& request, const ModifyClusterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1427 
1428         /**
1429          * <p>Modifies the target On-Demand and target Spot capacities for the instance
1430          * fleet with the specified InstanceFleetID within the cluster specified using
1431          * ClusterID. The call either succeeds or fails atomically.</p>  <p>The
1432          * instance fleet configuration is available only in Amazon EMR versions 4.8.0 and
1433          * later, excluding 5.0.x versions.</p> <p><h3>See Also:</h3>   <a
1434          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceFleet">AWS
1435          * API Reference</a></p>
1436          */
1437         virtual Model::ModifyInstanceFleetOutcome ModifyInstanceFleet(const Model::ModifyInstanceFleetRequest& request) const;
1438 
1439         /**
1440          * <p>Modifies the target On-Demand and target Spot capacities for the instance
1441          * fleet with the specified InstanceFleetID within the cluster specified using
1442          * ClusterID. The call either succeeds or fails atomically.</p>  <p>The
1443          * instance fleet configuration is available only in Amazon EMR versions 4.8.0 and
1444          * later, excluding 5.0.x versions.</p> <p><h3>See Also:</h3>   <a
1445          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceFleet">AWS
1446          * API Reference</a></p>
1447          *
1448          * returns a future to the operation so that it can be executed in parallel to other requests.
1449          */
1450         virtual Model::ModifyInstanceFleetOutcomeCallable ModifyInstanceFleetCallable(const Model::ModifyInstanceFleetRequest& request) const;
1451 
1452         /**
1453          * <p>Modifies the target On-Demand and target Spot capacities for the instance
1454          * fleet with the specified InstanceFleetID within the cluster specified using
1455          * ClusterID. The call either succeeds or fails atomically.</p>  <p>The
1456          * instance fleet configuration is available only in Amazon EMR versions 4.8.0 and
1457          * later, excluding 5.0.x versions.</p> <p><h3>See Also:</h3>   <a
1458          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceFleet">AWS
1459          * API Reference</a></p>
1460          *
1461          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1462          */
1463         virtual void ModifyInstanceFleetAsync(const Model::ModifyInstanceFleetRequest& request, const ModifyInstanceFleetResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1464 
1465         /**
1466          * <p>ModifyInstanceGroups modifies the number of nodes and configuration settings
1467          * of an instance group. The input parameters include the new target instance count
1468          * for the group and the instance group ID. The call will either succeed or fail
1469          * atomically.</p><p><h3>See Also:</h3>   <a
1470          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceGroups">AWS
1471          * API Reference</a></p>
1472          */
1473         virtual Model::ModifyInstanceGroupsOutcome ModifyInstanceGroups(const Model::ModifyInstanceGroupsRequest& request) const;
1474 
1475         /**
1476          * <p>ModifyInstanceGroups modifies the number of nodes and configuration settings
1477          * of an instance group. The input parameters include the new target instance count
1478          * for the group and the instance group ID. The call will either succeed or fail
1479          * atomically.</p><p><h3>See Also:</h3>   <a
1480          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceGroups">AWS
1481          * API Reference</a></p>
1482          *
1483          * returns a future to the operation so that it can be executed in parallel to other requests.
1484          */
1485         virtual Model::ModifyInstanceGroupsOutcomeCallable ModifyInstanceGroupsCallable(const Model::ModifyInstanceGroupsRequest& request) const;
1486 
1487         /**
1488          * <p>ModifyInstanceGroups modifies the number of nodes and configuration settings
1489          * of an instance group. The input parameters include the new target instance count
1490          * for the group and the instance group ID. The call will either succeed or fail
1491          * atomically.</p><p><h3>See Also:</h3>   <a
1492          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceGroups">AWS
1493          * API Reference</a></p>
1494          *
1495          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1496          */
1497         virtual void ModifyInstanceGroupsAsync(const Model::ModifyInstanceGroupsRequest& request, const ModifyInstanceGroupsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1498 
1499         /**
1500          * <p>Creates or updates an automatic scaling policy for a core instance group or
1501          * task instance group in an Amazon EMR cluster. The automatic scaling policy
1502          * defines how an instance group dynamically adds and terminates EC2 instances in
1503          * response to the value of a CloudWatch metric.</p><p><h3>See Also:</h3>   <a
1504          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutAutoScalingPolicy">AWS
1505          * API Reference</a></p>
1506          */
1507         virtual Model::PutAutoScalingPolicyOutcome PutAutoScalingPolicy(const Model::PutAutoScalingPolicyRequest& request) const;
1508 
1509         /**
1510          * <p>Creates or updates an automatic scaling policy for a core instance group or
1511          * task instance group in an Amazon EMR cluster. The automatic scaling policy
1512          * defines how an instance group dynamically adds and terminates EC2 instances in
1513          * response to the value of a CloudWatch metric.</p><p><h3>See Also:</h3>   <a
1514          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutAutoScalingPolicy">AWS
1515          * API Reference</a></p>
1516          *
1517          * returns a future to the operation so that it can be executed in parallel to other requests.
1518          */
1519         virtual Model::PutAutoScalingPolicyOutcomeCallable PutAutoScalingPolicyCallable(const Model::PutAutoScalingPolicyRequest& request) const;
1520 
1521         /**
1522          * <p>Creates or updates an automatic scaling policy for a core instance group or
1523          * task instance group in an Amazon EMR cluster. The automatic scaling policy
1524          * defines how an instance group dynamically adds and terminates EC2 instances in
1525          * response to the value of a CloudWatch metric.</p><p><h3>See Also:</h3>   <a
1526          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutAutoScalingPolicy">AWS
1527          * API Reference</a></p>
1528          *
1529          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1530          */
1531         virtual void PutAutoScalingPolicyAsync(const Model::PutAutoScalingPolicyRequest& request, const PutAutoScalingPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1532 
1533         /**
1534          * <p>Creates or updates an auto-termination policy for an Amazon EMR cluster. An
1535          * auto-termination policy defines the amount of idle time in seconds after which a
1536          * cluster automatically terminates. For alternative cluster termination options,
1537          * see <a
1538          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html">Control
1539          * cluster termination</a>.</p><p><h3>See Also:</h3>   <a
1540          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutAutoTerminationPolicy">AWS
1541          * API Reference</a></p>
1542          */
1543         virtual Model::PutAutoTerminationPolicyOutcome PutAutoTerminationPolicy(const Model::PutAutoTerminationPolicyRequest& request) const;
1544 
1545         /**
1546          * <p>Creates or updates an auto-termination policy for an Amazon EMR cluster. An
1547          * auto-termination policy defines the amount of idle time in seconds after which a
1548          * cluster automatically terminates. For alternative cluster termination options,
1549          * see <a
1550          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html">Control
1551          * cluster termination</a>.</p><p><h3>See Also:</h3>   <a
1552          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutAutoTerminationPolicy">AWS
1553          * API Reference</a></p>
1554          *
1555          * returns a future to the operation so that it can be executed in parallel to other requests.
1556          */
1557         virtual Model::PutAutoTerminationPolicyOutcomeCallable PutAutoTerminationPolicyCallable(const Model::PutAutoTerminationPolicyRequest& request) const;
1558 
1559         /**
1560          * <p>Creates or updates an auto-termination policy for an Amazon EMR cluster. An
1561          * auto-termination policy defines the amount of idle time in seconds after which a
1562          * cluster automatically terminates. For alternative cluster termination options,
1563          * see <a
1564          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html">Control
1565          * cluster termination</a>.</p><p><h3>See Also:</h3>   <a
1566          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutAutoTerminationPolicy">AWS
1567          * API Reference</a></p>
1568          *
1569          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1570          */
1571         virtual void PutAutoTerminationPolicyAsync(const Model::PutAutoTerminationPolicyRequest& request, const PutAutoTerminationPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1572 
1573         /**
1574          * <p>Creates or updates an Amazon EMR block public access configuration for your
1575          * Amazon Web Services account in the current Region. For more information see <a
1576          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/configure-block-public-access.html">Configure
1577          * Block Public Access for Amazon EMR</a> in the <i>Amazon EMR Management
1578          * Guide</i>.</p><p><h3>See Also:</h3>   <a
1579          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutBlockPublicAccessConfiguration">AWS
1580          * API Reference</a></p>
1581          */
1582         virtual Model::PutBlockPublicAccessConfigurationOutcome PutBlockPublicAccessConfiguration(const Model::PutBlockPublicAccessConfigurationRequest& request) const;
1583 
1584         /**
1585          * <p>Creates or updates an Amazon EMR block public access configuration for your
1586          * Amazon Web Services account in the current Region. For more information see <a
1587          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/configure-block-public-access.html">Configure
1588          * Block Public Access for Amazon EMR</a> in the <i>Amazon EMR Management
1589          * Guide</i>.</p><p><h3>See Also:</h3>   <a
1590          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutBlockPublicAccessConfiguration">AWS
1591          * API Reference</a></p>
1592          *
1593          * returns a future to the operation so that it can be executed in parallel to other requests.
1594          */
1595         virtual Model::PutBlockPublicAccessConfigurationOutcomeCallable PutBlockPublicAccessConfigurationCallable(const Model::PutBlockPublicAccessConfigurationRequest& request) const;
1596 
1597         /**
1598          * <p>Creates or updates an Amazon EMR block public access configuration for your
1599          * Amazon Web Services account in the current Region. For more information see <a
1600          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/configure-block-public-access.html">Configure
1601          * Block Public Access for Amazon EMR</a> in the <i>Amazon EMR Management
1602          * Guide</i>.</p><p><h3>See Also:</h3>   <a
1603          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutBlockPublicAccessConfiguration">AWS
1604          * API Reference</a></p>
1605          *
1606          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1607          */
1608         virtual void PutBlockPublicAccessConfigurationAsync(const Model::PutBlockPublicAccessConfigurationRequest& request, const PutBlockPublicAccessConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1609 
1610         /**
1611          * <p>Creates or updates a managed scaling policy for an Amazon EMR cluster. The
1612          * managed scaling policy defines the limits for resources, such as EC2 instances
1613          * that can be added or terminated from a cluster. The policy only applies to the
1614          * core and task nodes. The master node cannot be scaled after initial
1615          * configuration. </p><p><h3>See Also:</h3>   <a
1616          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutManagedScalingPolicy">AWS
1617          * API Reference</a></p>
1618          */
1619         virtual Model::PutManagedScalingPolicyOutcome PutManagedScalingPolicy(const Model::PutManagedScalingPolicyRequest& request) const;
1620 
1621         /**
1622          * <p>Creates or updates a managed scaling policy for an Amazon EMR cluster. The
1623          * managed scaling policy defines the limits for resources, such as EC2 instances
1624          * that can be added or terminated from a cluster. The policy only applies to the
1625          * core and task nodes. The master node cannot be scaled after initial
1626          * configuration. </p><p><h3>See Also:</h3>   <a
1627          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutManagedScalingPolicy">AWS
1628          * API Reference</a></p>
1629          *
1630          * returns a future to the operation so that it can be executed in parallel to other requests.
1631          */
1632         virtual Model::PutManagedScalingPolicyOutcomeCallable PutManagedScalingPolicyCallable(const Model::PutManagedScalingPolicyRequest& request) const;
1633 
1634         /**
1635          * <p>Creates or updates a managed scaling policy for an Amazon EMR cluster. The
1636          * managed scaling policy defines the limits for resources, such as EC2 instances
1637          * that can be added or terminated from a cluster. The policy only applies to the
1638          * core and task nodes. The master node cannot be scaled after initial
1639          * configuration. </p><p><h3>See Also:</h3>   <a
1640          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutManagedScalingPolicy">AWS
1641          * API Reference</a></p>
1642          *
1643          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1644          */
1645         virtual void PutManagedScalingPolicyAsync(const Model::PutManagedScalingPolicyRequest& request, const PutManagedScalingPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1646 
1647         /**
1648          * <p>Removes an automatic scaling policy from a specified instance group within an
1649          * EMR cluster.</p><p><h3>See Also:</h3>   <a
1650          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveAutoScalingPolicy">AWS
1651          * API Reference</a></p>
1652          */
1653         virtual Model::RemoveAutoScalingPolicyOutcome RemoveAutoScalingPolicy(const Model::RemoveAutoScalingPolicyRequest& request) const;
1654 
1655         /**
1656          * <p>Removes an automatic scaling policy from a specified instance group within an
1657          * EMR cluster.</p><p><h3>See Also:</h3>   <a
1658          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveAutoScalingPolicy">AWS
1659          * API Reference</a></p>
1660          *
1661          * returns a future to the operation so that it can be executed in parallel to other requests.
1662          */
1663         virtual Model::RemoveAutoScalingPolicyOutcomeCallable RemoveAutoScalingPolicyCallable(const Model::RemoveAutoScalingPolicyRequest& request) const;
1664 
1665         /**
1666          * <p>Removes an automatic scaling policy from a specified instance group within an
1667          * EMR cluster.</p><p><h3>See Also:</h3>   <a
1668          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveAutoScalingPolicy">AWS
1669          * API Reference</a></p>
1670          *
1671          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1672          */
1673         virtual void RemoveAutoScalingPolicyAsync(const Model::RemoveAutoScalingPolicyRequest& request, const RemoveAutoScalingPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1674 
1675         /**
1676          * <p>Removes an auto-termination policy from an Amazon EMR cluster.</p><p><h3>See
1677          * Also:</h3>   <a
1678          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveAutoTerminationPolicy">AWS
1679          * API Reference</a></p>
1680          */
1681         virtual Model::RemoveAutoTerminationPolicyOutcome RemoveAutoTerminationPolicy(const Model::RemoveAutoTerminationPolicyRequest& request) const;
1682 
1683         /**
1684          * <p>Removes an auto-termination policy from an Amazon EMR cluster.</p><p><h3>See
1685          * Also:</h3>   <a
1686          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveAutoTerminationPolicy">AWS
1687          * API Reference</a></p>
1688          *
1689          * returns a future to the operation so that it can be executed in parallel to other requests.
1690          */
1691         virtual Model::RemoveAutoTerminationPolicyOutcomeCallable RemoveAutoTerminationPolicyCallable(const Model::RemoveAutoTerminationPolicyRequest& request) const;
1692 
1693         /**
1694          * <p>Removes an auto-termination policy from an Amazon EMR cluster.</p><p><h3>See
1695          * Also:</h3>   <a
1696          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveAutoTerminationPolicy">AWS
1697          * API Reference</a></p>
1698          *
1699          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1700          */
1701         virtual void RemoveAutoTerminationPolicyAsync(const Model::RemoveAutoTerminationPolicyRequest& request, const RemoveAutoTerminationPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1702 
1703         /**
1704          * <p> Removes a managed scaling policy from a specified EMR cluster.
1705          * </p><p><h3>See Also:</h3>   <a
1706          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveManagedScalingPolicy">AWS
1707          * API Reference</a></p>
1708          */
1709         virtual Model::RemoveManagedScalingPolicyOutcome RemoveManagedScalingPolicy(const Model::RemoveManagedScalingPolicyRequest& request) const;
1710 
1711         /**
1712          * <p> Removes a managed scaling policy from a specified EMR cluster.
1713          * </p><p><h3>See Also:</h3>   <a
1714          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveManagedScalingPolicy">AWS
1715          * API Reference</a></p>
1716          *
1717          * returns a future to the operation so that it can be executed in parallel to other requests.
1718          */
1719         virtual Model::RemoveManagedScalingPolicyOutcomeCallable RemoveManagedScalingPolicyCallable(const Model::RemoveManagedScalingPolicyRequest& request) const;
1720 
1721         /**
1722          * <p> Removes a managed scaling policy from a specified EMR cluster.
1723          * </p><p><h3>See Also:</h3>   <a
1724          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveManagedScalingPolicy">AWS
1725          * API Reference</a></p>
1726          *
1727          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1728          */
1729         virtual void RemoveManagedScalingPolicyAsync(const Model::RemoveManagedScalingPolicyRequest& request, const RemoveManagedScalingPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1730 
1731         /**
1732          * <p>Removes tags from an Amazon EMR resource, such as a cluster or Amazon EMR
1733          * Studio. Tags make it easier to associate resources in various ways, such as
1734          * grouping clusters to track your Amazon EMR resource allocation costs. For more
1735          * information, see <a
1736          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html">Tag
1737          * Clusters</a>. </p> <p>The following example removes the stack tag with value
1738          * Prod from a cluster:</p><p><h3>See Also:</h3>   <a
1739          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveTags">AWS
1740          * API Reference</a></p>
1741          */
1742         virtual Model::RemoveTagsOutcome RemoveTags(const Model::RemoveTagsRequest& request) const;
1743 
1744         /**
1745          * <p>Removes tags from an Amazon EMR resource, such as a cluster or Amazon EMR
1746          * Studio. Tags make it easier to associate resources in various ways, such as
1747          * grouping clusters to track your Amazon EMR resource allocation costs. For more
1748          * information, see <a
1749          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html">Tag
1750          * Clusters</a>. </p> <p>The following example removes the stack tag with value
1751          * Prod from a cluster:</p><p><h3>See Also:</h3>   <a
1752          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveTags">AWS
1753          * API Reference</a></p>
1754          *
1755          * returns a future to the operation so that it can be executed in parallel to other requests.
1756          */
1757         virtual Model::RemoveTagsOutcomeCallable RemoveTagsCallable(const Model::RemoveTagsRequest& request) const;
1758 
1759         /**
1760          * <p>Removes tags from an Amazon EMR resource, such as a cluster or Amazon EMR
1761          * Studio. Tags make it easier to associate resources in various ways, such as
1762          * grouping clusters to track your Amazon EMR resource allocation costs. For more
1763          * information, see <a
1764          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html">Tag
1765          * Clusters</a>. </p> <p>The following example removes the stack tag with value
1766          * Prod from a cluster:</p><p><h3>See Also:</h3>   <a
1767          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveTags">AWS
1768          * API Reference</a></p>
1769          *
1770          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1771          */
1772         virtual void RemoveTagsAsync(const Model::RemoveTagsRequest& request, const RemoveTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1773 
1774         /**
1775          * <p>RunJobFlow creates and starts running a new cluster (job flow). The cluster
1776          * runs the steps specified. After the steps complete, the cluster stops and the
1777          * HDFS partition is lost. To prevent loss of data, configure the last step of the
1778          * job flow to store results in Amazon S3. If the <a>JobFlowInstancesConfig</a>
1779          * <code>KeepJobFlowAliveWhenNoSteps</code> parameter is set to <code>TRUE</code>,
1780          * the cluster transitions to the WAITING state rather than shutting down after the
1781          * steps have completed. </p> <p>For additional protection, you can set the
1782          * <a>JobFlowInstancesConfig</a> <code>TerminationProtected</code> parameter to
1783          * <code>TRUE</code> to lock the cluster and prevent it from being terminated by
1784          * API call, user intervention, or in the event of a job flow error.</p> <p>A
1785          * maximum of 256 steps are allowed in each job flow.</p> <p>If your cluster is
1786          * long-running (such as a Hive data warehouse) or complex, you may require more
1787          * than 256 steps to process your data. You can bypass the 256-step limitation in
1788          * various ways, including using the SSH shell to connect to the master node and
1789          * submitting queries directly to the software running on the master node, such as
1790          * Hive and Hadoop. For more information on how to do this, see <a
1791          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/AddMoreThan256Steps.html">Add
1792          * More than 256 Steps to a Cluster</a> in the <i>Amazon EMR Management
1793          * Guide</i>.</p> <p>For long running clusters, we recommend that you periodically
1794          * store your results.</p>  <p>The instance fleets configuration is available
1795          * only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x versions. The
1796          * RunJobFlow request can contain InstanceFleets parameters or InstanceGroups
1797          * parameters, but not both.</p> <p><h3>See Also:</h3>   <a
1798          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RunJobFlow">AWS
1799          * API Reference</a></p>
1800          */
1801         virtual Model::RunJobFlowOutcome RunJobFlow(const Model::RunJobFlowRequest& request) const;
1802 
1803         /**
1804          * <p>RunJobFlow creates and starts running a new cluster (job flow). The cluster
1805          * runs the steps specified. After the steps complete, the cluster stops and the
1806          * HDFS partition is lost. To prevent loss of data, configure the last step of the
1807          * job flow to store results in Amazon S3. If the <a>JobFlowInstancesConfig</a>
1808          * <code>KeepJobFlowAliveWhenNoSteps</code> parameter is set to <code>TRUE</code>,
1809          * the cluster transitions to the WAITING state rather than shutting down after the
1810          * steps have completed. </p> <p>For additional protection, you can set the
1811          * <a>JobFlowInstancesConfig</a> <code>TerminationProtected</code> parameter to
1812          * <code>TRUE</code> to lock the cluster and prevent it from being terminated by
1813          * API call, user intervention, or in the event of a job flow error.</p> <p>A
1814          * maximum of 256 steps are allowed in each job flow.</p> <p>If your cluster is
1815          * long-running (such as a Hive data warehouse) or complex, you may require more
1816          * than 256 steps to process your data. You can bypass the 256-step limitation in
1817          * various ways, including using the SSH shell to connect to the master node and
1818          * submitting queries directly to the software running on the master node, such as
1819          * Hive and Hadoop. For more information on how to do this, see <a
1820          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/AddMoreThan256Steps.html">Add
1821          * More than 256 Steps to a Cluster</a> in the <i>Amazon EMR Management
1822          * Guide</i>.</p> <p>For long running clusters, we recommend that you periodically
1823          * store your results.</p>  <p>The instance fleets configuration is available
1824          * only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x versions. The
1825          * RunJobFlow request can contain InstanceFleets parameters or InstanceGroups
1826          * parameters, but not both.</p> <p><h3>See Also:</h3>   <a
1827          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RunJobFlow">AWS
1828          * API Reference</a></p>
1829          *
1830          * returns a future to the operation so that it can be executed in parallel to other requests.
1831          */
1832         virtual Model::RunJobFlowOutcomeCallable RunJobFlowCallable(const Model::RunJobFlowRequest& request) const;
1833 
1834         /**
1835          * <p>RunJobFlow creates and starts running a new cluster (job flow). The cluster
1836          * runs the steps specified. After the steps complete, the cluster stops and the
1837          * HDFS partition is lost. To prevent loss of data, configure the last step of the
1838          * job flow to store results in Amazon S3. If the <a>JobFlowInstancesConfig</a>
1839          * <code>KeepJobFlowAliveWhenNoSteps</code> parameter is set to <code>TRUE</code>,
1840          * the cluster transitions to the WAITING state rather than shutting down after the
1841          * steps have completed. </p> <p>For additional protection, you can set the
1842          * <a>JobFlowInstancesConfig</a> <code>TerminationProtected</code> parameter to
1843          * <code>TRUE</code> to lock the cluster and prevent it from being terminated by
1844          * API call, user intervention, or in the event of a job flow error.</p> <p>A
1845          * maximum of 256 steps are allowed in each job flow.</p> <p>If your cluster is
1846          * long-running (such as a Hive data warehouse) or complex, you may require more
1847          * than 256 steps to process your data. You can bypass the 256-step limitation in
1848          * various ways, including using the SSH shell to connect to the master node and
1849          * submitting queries directly to the software running on the master node, such as
1850          * Hive and Hadoop. For more information on how to do this, see <a
1851          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/AddMoreThan256Steps.html">Add
1852          * More than 256 Steps to a Cluster</a> in the <i>Amazon EMR Management
1853          * Guide</i>.</p> <p>For long running clusters, we recommend that you periodically
1854          * store your results.</p>  <p>The instance fleets configuration is available
1855          * only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x versions. The
1856          * RunJobFlow request can contain InstanceFleets parameters or InstanceGroups
1857          * parameters, but not both.</p> <p><h3>See Also:</h3>   <a
1858          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RunJobFlow">AWS
1859          * API Reference</a></p>
1860          *
1861          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1862          */
1863         virtual void RunJobFlowAsync(const Model::RunJobFlowRequest& request, const RunJobFlowResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1864 
1865         /**
1866          * <p>SetTerminationProtection locks a cluster (job flow) so the EC2 instances in
1867          * the cluster cannot be terminated by user intervention, an API call, or in the
1868          * event of a job-flow error. The cluster still terminates upon successful
1869          * completion of the job flow. Calling <code>SetTerminationProtection</code> on a
1870          * cluster is similar to calling the Amazon EC2 <code>DisableAPITermination</code>
1871          * API on all EC2 instances in a cluster.</p> <p>
1872          * <code>SetTerminationProtection</code> is used to prevent accidental termination
1873          * of a cluster and to ensure that in the event of an error, the instances persist
1874          * so that you can recover any data stored in their ephemeral instance storage.</p>
1875          * <p> To terminate a cluster that has been locked by setting
1876          * <code>SetTerminationProtection</code> to <code>true</code>, you must first
1877          * unlock the job flow by a subsequent call to
1878          * <code>SetTerminationProtection</code> in which you set the value to
1879          * <code>false</code>. </p> <p> For more information, see<a
1880          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/UsingEMR_TerminationProtection.html">Managing
1881          * Cluster Termination</a> in the <i>Amazon EMR Management Guide</i>.
1882          * </p><p><h3>See Also:</h3>   <a
1883          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/SetTerminationProtection">AWS
1884          * API Reference</a></p>
1885          */
1886         virtual Model::SetTerminationProtectionOutcome SetTerminationProtection(const Model::SetTerminationProtectionRequest& request) const;
1887 
1888         /**
1889          * <p>SetTerminationProtection locks a cluster (job flow) so the EC2 instances in
1890          * the cluster cannot be terminated by user intervention, an API call, or in the
1891          * event of a job-flow error. The cluster still terminates upon successful
1892          * completion of the job flow. Calling <code>SetTerminationProtection</code> on a
1893          * cluster is similar to calling the Amazon EC2 <code>DisableAPITermination</code>
1894          * API on all EC2 instances in a cluster.</p> <p>
1895          * <code>SetTerminationProtection</code> is used to prevent accidental termination
1896          * of a cluster and to ensure that in the event of an error, the instances persist
1897          * so that you can recover any data stored in their ephemeral instance storage.</p>
1898          * <p> To terminate a cluster that has been locked by setting
1899          * <code>SetTerminationProtection</code> to <code>true</code>, you must first
1900          * unlock the job flow by a subsequent call to
1901          * <code>SetTerminationProtection</code> in which you set the value to
1902          * <code>false</code>. </p> <p> For more information, see<a
1903          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/UsingEMR_TerminationProtection.html">Managing
1904          * Cluster Termination</a> in the <i>Amazon EMR Management Guide</i>.
1905          * </p><p><h3>See Also:</h3>   <a
1906          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/SetTerminationProtection">AWS
1907          * API Reference</a></p>
1908          *
1909          * returns a future to the operation so that it can be executed in parallel to other requests.
1910          */
1911         virtual Model::SetTerminationProtectionOutcomeCallable SetTerminationProtectionCallable(const Model::SetTerminationProtectionRequest& request) const;
1912 
1913         /**
1914          * <p>SetTerminationProtection locks a cluster (job flow) so the EC2 instances in
1915          * the cluster cannot be terminated by user intervention, an API call, or in the
1916          * event of a job-flow error. The cluster still terminates upon successful
1917          * completion of the job flow. Calling <code>SetTerminationProtection</code> on a
1918          * cluster is similar to calling the Amazon EC2 <code>DisableAPITermination</code>
1919          * API on all EC2 instances in a cluster.</p> <p>
1920          * <code>SetTerminationProtection</code> is used to prevent accidental termination
1921          * of a cluster and to ensure that in the event of an error, the instances persist
1922          * so that you can recover any data stored in their ephemeral instance storage.</p>
1923          * <p> To terminate a cluster that has been locked by setting
1924          * <code>SetTerminationProtection</code> to <code>true</code>, you must first
1925          * unlock the job flow by a subsequent call to
1926          * <code>SetTerminationProtection</code> in which you set the value to
1927          * <code>false</code>. </p> <p> For more information, see<a
1928          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/UsingEMR_TerminationProtection.html">Managing
1929          * Cluster Termination</a> in the <i>Amazon EMR Management Guide</i>.
1930          * </p><p><h3>See Also:</h3>   <a
1931          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/SetTerminationProtection">AWS
1932          * API Reference</a></p>
1933          *
1934          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1935          */
1936         virtual void SetTerminationProtectionAsync(const Model::SetTerminationProtectionRequest& request, const SetTerminationProtectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1937 
1938         /**
1939          * <p>Sets the <a>Cluster$VisibleToAllUsers</a> value for an EMR cluster. When
1940          * <code>true</code>, IAM principals in the Amazon Web Services account can perform
1941          * EMR cluster actions that their IAM policies allow. When <code>false</code>, only
1942          * the IAM principal that created the cluster and the Amazon Web Services account
1943          * root user can perform EMR actions on the cluster, regardless of IAM permissions
1944          * policies attached to other IAM principals.</p> <p>This action works on running
1945          * clusters. When you create a cluster, use the
1946          * <a>RunJobFlowInput$VisibleToAllUsers</a> parameter.</p> <p>For more information,
1947          * see <a
1948          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/security_iam_emr-with-iam.html#security_set_visible_to_all_users">Understanding
1949          * the EMR Cluster VisibleToAllUsers Setting</a> in the <i>Amazon EMRManagement
1950          * Guide</i>.</p><p><h3>See Also:</h3>   <a
1951          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/SetVisibleToAllUsers">AWS
1952          * API Reference</a></p>
1953          */
1954         virtual Model::SetVisibleToAllUsersOutcome SetVisibleToAllUsers(const Model::SetVisibleToAllUsersRequest& request) const;
1955 
1956         /**
1957          * <p>Sets the <a>Cluster$VisibleToAllUsers</a> value for an EMR cluster. When
1958          * <code>true</code>, IAM principals in the Amazon Web Services account can perform
1959          * EMR cluster actions that their IAM policies allow. When <code>false</code>, only
1960          * the IAM principal that created the cluster and the Amazon Web Services account
1961          * root user can perform EMR actions on the cluster, regardless of IAM permissions
1962          * policies attached to other IAM principals.</p> <p>This action works on running
1963          * clusters. When you create a cluster, use the
1964          * <a>RunJobFlowInput$VisibleToAllUsers</a> parameter.</p> <p>For more information,
1965          * see <a
1966          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/security_iam_emr-with-iam.html#security_set_visible_to_all_users">Understanding
1967          * the EMR Cluster VisibleToAllUsers Setting</a> in the <i>Amazon EMRManagement
1968          * Guide</i>.</p><p><h3>See Also:</h3>   <a
1969          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/SetVisibleToAllUsers">AWS
1970          * API Reference</a></p>
1971          *
1972          * returns a future to the operation so that it can be executed in parallel to other requests.
1973          */
1974         virtual Model::SetVisibleToAllUsersOutcomeCallable SetVisibleToAllUsersCallable(const Model::SetVisibleToAllUsersRequest& request) const;
1975 
1976         /**
1977          * <p>Sets the <a>Cluster$VisibleToAllUsers</a> value for an EMR cluster. When
1978          * <code>true</code>, IAM principals in the Amazon Web Services account can perform
1979          * EMR cluster actions that their IAM policies allow. When <code>false</code>, only
1980          * the IAM principal that created the cluster and the Amazon Web Services account
1981          * root user can perform EMR actions on the cluster, regardless of IAM permissions
1982          * policies attached to other IAM principals.</p> <p>This action works on running
1983          * clusters. When you create a cluster, use the
1984          * <a>RunJobFlowInput$VisibleToAllUsers</a> parameter.</p> <p>For more information,
1985          * see <a
1986          * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/security_iam_emr-with-iam.html#security_set_visible_to_all_users">Understanding
1987          * the EMR Cluster VisibleToAllUsers Setting</a> in the <i>Amazon EMRManagement
1988          * Guide</i>.</p><p><h3>See Also:</h3>   <a
1989          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/SetVisibleToAllUsers">AWS
1990          * API Reference</a></p>
1991          *
1992          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1993          */
1994         virtual void SetVisibleToAllUsersAsync(const Model::SetVisibleToAllUsersRequest& request, const SetVisibleToAllUsersResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1995 
1996         /**
1997          * <p>Starts a notebook execution.</p><p><h3>See Also:</h3>   <a
1998          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/StartNotebookExecution">AWS
1999          * API Reference</a></p>
2000          */
2001         virtual Model::StartNotebookExecutionOutcome StartNotebookExecution(const Model::StartNotebookExecutionRequest& request) const;
2002 
2003         /**
2004          * <p>Starts a notebook execution.</p><p><h3>See Also:</h3>   <a
2005          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/StartNotebookExecution">AWS
2006          * API Reference</a></p>
2007          *
2008          * returns a future to the operation so that it can be executed in parallel to other requests.
2009          */
2010         virtual Model::StartNotebookExecutionOutcomeCallable StartNotebookExecutionCallable(const Model::StartNotebookExecutionRequest& request) const;
2011 
2012         /**
2013          * <p>Starts a notebook execution.</p><p><h3>See Also:</h3>   <a
2014          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/StartNotebookExecution">AWS
2015          * API Reference</a></p>
2016          *
2017          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2018          */
2019         virtual void StartNotebookExecutionAsync(const Model::StartNotebookExecutionRequest& request, const StartNotebookExecutionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2020 
2021         /**
2022          * <p>Stops a notebook execution.</p><p><h3>See Also:</h3>   <a
2023          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/StopNotebookExecution">AWS
2024          * API Reference</a></p>
2025          */
2026         virtual Model::StopNotebookExecutionOutcome StopNotebookExecution(const Model::StopNotebookExecutionRequest& request) const;
2027 
2028         /**
2029          * <p>Stops a notebook execution.</p><p><h3>See Also:</h3>   <a
2030          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/StopNotebookExecution">AWS
2031          * API Reference</a></p>
2032          *
2033          * returns a future to the operation so that it can be executed in parallel to other requests.
2034          */
2035         virtual Model::StopNotebookExecutionOutcomeCallable StopNotebookExecutionCallable(const Model::StopNotebookExecutionRequest& request) const;
2036 
2037         /**
2038          * <p>Stops a notebook execution.</p><p><h3>See Also:</h3>   <a
2039          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/StopNotebookExecution">AWS
2040          * API Reference</a></p>
2041          *
2042          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2043          */
2044         virtual void StopNotebookExecutionAsync(const Model::StopNotebookExecutionRequest& request, const StopNotebookExecutionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2045 
2046         /**
2047          * <p>TerminateJobFlows shuts a list of clusters (job flows) down. When a job flow
2048          * is shut down, any step not yet completed is canceled and the EC2 instances on
2049          * which the cluster is running are stopped. Any log files not already saved are
2050          * uploaded to Amazon S3 if a LogUri was specified when the cluster was
2051          * created.</p> <p>The maximum number of clusters allowed is 10. The call to
2052          * <code>TerminateJobFlows</code> is asynchronous. Depending on the configuration
2053          * of the cluster, it may take up to 1-5 minutes for the cluster to completely
2054          * terminate and release allocated resources, such as Amazon EC2
2055          * instances.</p><p><h3>See Also:</h3>   <a
2056          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/TerminateJobFlows">AWS
2057          * API Reference</a></p>
2058          */
2059         virtual Model::TerminateJobFlowsOutcome TerminateJobFlows(const Model::TerminateJobFlowsRequest& request) const;
2060 
2061         /**
2062          * <p>TerminateJobFlows shuts a list of clusters (job flows) down. When a job flow
2063          * is shut down, any step not yet completed is canceled and the EC2 instances on
2064          * which the cluster is running are stopped. Any log files not already saved are
2065          * uploaded to Amazon S3 if a LogUri was specified when the cluster was
2066          * created.</p> <p>The maximum number of clusters allowed is 10. The call to
2067          * <code>TerminateJobFlows</code> is asynchronous. Depending on the configuration
2068          * of the cluster, it may take up to 1-5 minutes for the cluster to completely
2069          * terminate and release allocated resources, such as Amazon EC2
2070          * instances.</p><p><h3>See Also:</h3>   <a
2071          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/TerminateJobFlows">AWS
2072          * API Reference</a></p>
2073          *
2074          * returns a future to the operation so that it can be executed in parallel to other requests.
2075          */
2076         virtual Model::TerminateJobFlowsOutcomeCallable TerminateJobFlowsCallable(const Model::TerminateJobFlowsRequest& request) const;
2077 
2078         /**
2079          * <p>TerminateJobFlows shuts a list of clusters (job flows) down. When a job flow
2080          * is shut down, any step not yet completed is canceled and the EC2 instances on
2081          * which the cluster is running are stopped. Any log files not already saved are
2082          * uploaded to Amazon S3 if a LogUri was specified when the cluster was
2083          * created.</p> <p>The maximum number of clusters allowed is 10. The call to
2084          * <code>TerminateJobFlows</code> is asynchronous. Depending on the configuration
2085          * of the cluster, it may take up to 1-5 minutes for the cluster to completely
2086          * terminate and release allocated resources, such as Amazon EC2
2087          * instances.</p><p><h3>See Also:</h3>   <a
2088          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/TerminateJobFlows">AWS
2089          * API Reference</a></p>
2090          *
2091          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2092          */
2093         virtual void TerminateJobFlowsAsync(const Model::TerminateJobFlowsRequest& request, const TerminateJobFlowsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2094 
2095         /**
2096          * <p>Updates an Amazon EMR Studio configuration, including attributes such as
2097          * name, description, and subnets.</p><p><h3>See Also:</h3>   <a
2098          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/UpdateStudio">AWS
2099          * API Reference</a></p>
2100          */
2101         virtual Model::UpdateStudioOutcome UpdateStudio(const Model::UpdateStudioRequest& request) const;
2102 
2103         /**
2104          * <p>Updates an Amazon EMR Studio configuration, including attributes such as
2105          * name, description, and subnets.</p><p><h3>See Also:</h3>   <a
2106          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/UpdateStudio">AWS
2107          * API Reference</a></p>
2108          *
2109          * returns a future to the operation so that it can be executed in parallel to other requests.
2110          */
2111         virtual Model::UpdateStudioOutcomeCallable UpdateStudioCallable(const Model::UpdateStudioRequest& request) const;
2112 
2113         /**
2114          * <p>Updates an Amazon EMR Studio configuration, including attributes such as
2115          * name, description, and subnets.</p><p><h3>See Also:</h3>   <a
2116          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/UpdateStudio">AWS
2117          * API Reference</a></p>
2118          *
2119          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2120          */
2121         virtual void UpdateStudioAsync(const Model::UpdateStudioRequest& request, const UpdateStudioResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2122 
2123         /**
2124          * <p>Updates the session policy attached to the user or group for the specified
2125          * Amazon EMR Studio.</p><p><h3>See Also:</h3>   <a
2126          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/UpdateStudioSessionMapping">AWS
2127          * API Reference</a></p>
2128          */
2129         virtual Model::UpdateStudioSessionMappingOutcome UpdateStudioSessionMapping(const Model::UpdateStudioSessionMappingRequest& request) const;
2130 
2131         /**
2132          * <p>Updates the session policy attached to the user or group for the specified
2133          * Amazon EMR Studio.</p><p><h3>See Also:</h3>   <a
2134          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/UpdateStudioSessionMapping">AWS
2135          * API Reference</a></p>
2136          *
2137          * returns a future to the operation so that it can be executed in parallel to other requests.
2138          */
2139         virtual Model::UpdateStudioSessionMappingOutcomeCallable UpdateStudioSessionMappingCallable(const Model::UpdateStudioSessionMappingRequest& request) const;
2140 
2141         /**
2142          * <p>Updates the session policy attached to the user or group for the specified
2143          * Amazon EMR Studio.</p><p><h3>See Also:</h3>   <a
2144          * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/UpdateStudioSessionMapping">AWS
2145          * API Reference</a></p>
2146          *
2147          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2148          */
2149         virtual void UpdateStudioSessionMappingAsync(const Model::UpdateStudioSessionMappingRequest& request, const UpdateStudioSessionMappingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2150 
2151 
2152       void OverrideEndpoint(const Aws::String& endpoint);
2153     private:
2154       void init(const Aws::Client::ClientConfiguration& clientConfiguration);
2155         void AddInstanceFleetAsyncHelper(const Model::AddInstanceFleetRequest& request, const AddInstanceFleetResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2156         void AddInstanceGroupsAsyncHelper(const Model::AddInstanceGroupsRequest& request, const AddInstanceGroupsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2157         void AddJobFlowStepsAsyncHelper(const Model::AddJobFlowStepsRequest& request, const AddJobFlowStepsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2158         void AddTagsAsyncHelper(const Model::AddTagsRequest& request, const AddTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2159         void CancelStepsAsyncHelper(const Model::CancelStepsRequest& request, const CancelStepsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2160         void CreateSecurityConfigurationAsyncHelper(const Model::CreateSecurityConfigurationRequest& request, const CreateSecurityConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2161         void CreateStudioAsyncHelper(const Model::CreateStudioRequest& request, const CreateStudioResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2162         void CreateStudioSessionMappingAsyncHelper(const Model::CreateStudioSessionMappingRequest& request, const CreateStudioSessionMappingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2163         void DeleteSecurityConfigurationAsyncHelper(const Model::DeleteSecurityConfigurationRequest& request, const DeleteSecurityConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2164         void DeleteStudioAsyncHelper(const Model::DeleteStudioRequest& request, const DeleteStudioResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2165         void DeleteStudioSessionMappingAsyncHelper(const Model::DeleteStudioSessionMappingRequest& request, const DeleteStudioSessionMappingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2166         void DescribeClusterAsyncHelper(const Model::DescribeClusterRequest& request, const DescribeClusterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2167         void DescribeNotebookExecutionAsyncHelper(const Model::DescribeNotebookExecutionRequest& request, const DescribeNotebookExecutionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2168         void DescribeReleaseLabelAsyncHelper(const Model::DescribeReleaseLabelRequest& request, const DescribeReleaseLabelResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2169         void DescribeSecurityConfigurationAsyncHelper(const Model::DescribeSecurityConfigurationRequest& request, const DescribeSecurityConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2170         void DescribeStepAsyncHelper(const Model::DescribeStepRequest& request, const DescribeStepResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2171         void DescribeStudioAsyncHelper(const Model::DescribeStudioRequest& request, const DescribeStudioResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2172         void GetAutoTerminationPolicyAsyncHelper(const Model::GetAutoTerminationPolicyRequest& request, const GetAutoTerminationPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2173         void GetBlockPublicAccessConfigurationAsyncHelper(const Model::GetBlockPublicAccessConfigurationRequest& request, const GetBlockPublicAccessConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2174         void GetManagedScalingPolicyAsyncHelper(const Model::GetManagedScalingPolicyRequest& request, const GetManagedScalingPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2175         void GetStudioSessionMappingAsyncHelper(const Model::GetStudioSessionMappingRequest& request, const GetStudioSessionMappingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2176         void ListBootstrapActionsAsyncHelper(const Model::ListBootstrapActionsRequest& request, const ListBootstrapActionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2177         void ListClustersAsyncHelper(const Model::ListClustersRequest& request, const ListClustersResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2178         void ListInstanceFleetsAsyncHelper(const Model::ListInstanceFleetsRequest& request, const ListInstanceFleetsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2179         void ListInstanceGroupsAsyncHelper(const Model::ListInstanceGroupsRequest& request, const ListInstanceGroupsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2180         void ListInstancesAsyncHelper(const Model::ListInstancesRequest& request, const ListInstancesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2181         void ListNotebookExecutionsAsyncHelper(const Model::ListNotebookExecutionsRequest& request, const ListNotebookExecutionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2182         void ListReleaseLabelsAsyncHelper(const Model::ListReleaseLabelsRequest& request, const ListReleaseLabelsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2183         void ListSecurityConfigurationsAsyncHelper(const Model::ListSecurityConfigurationsRequest& request, const ListSecurityConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2184         void ListStepsAsyncHelper(const Model::ListStepsRequest& request, const ListStepsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2185         void ListStudioSessionMappingsAsyncHelper(const Model::ListStudioSessionMappingsRequest& request, const ListStudioSessionMappingsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2186         void ListStudiosAsyncHelper(const Model::ListStudiosRequest& request, const ListStudiosResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2187         void ModifyClusterAsyncHelper(const Model::ModifyClusterRequest& request, const ModifyClusterResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2188         void ModifyInstanceFleetAsyncHelper(const Model::ModifyInstanceFleetRequest& request, const ModifyInstanceFleetResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2189         void ModifyInstanceGroupsAsyncHelper(const Model::ModifyInstanceGroupsRequest& request, const ModifyInstanceGroupsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2190         void PutAutoScalingPolicyAsyncHelper(const Model::PutAutoScalingPolicyRequest& request, const PutAutoScalingPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2191         void PutAutoTerminationPolicyAsyncHelper(const Model::PutAutoTerminationPolicyRequest& request, const PutAutoTerminationPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2192         void PutBlockPublicAccessConfigurationAsyncHelper(const Model::PutBlockPublicAccessConfigurationRequest& request, const PutBlockPublicAccessConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2193         void PutManagedScalingPolicyAsyncHelper(const Model::PutManagedScalingPolicyRequest& request, const PutManagedScalingPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2194         void RemoveAutoScalingPolicyAsyncHelper(const Model::RemoveAutoScalingPolicyRequest& request, const RemoveAutoScalingPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2195         void RemoveAutoTerminationPolicyAsyncHelper(const Model::RemoveAutoTerminationPolicyRequest& request, const RemoveAutoTerminationPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2196         void RemoveManagedScalingPolicyAsyncHelper(const Model::RemoveManagedScalingPolicyRequest& request, const RemoveManagedScalingPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2197         void RemoveTagsAsyncHelper(const Model::RemoveTagsRequest& request, const RemoveTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2198         void RunJobFlowAsyncHelper(const Model::RunJobFlowRequest& request, const RunJobFlowResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2199         void SetTerminationProtectionAsyncHelper(const Model::SetTerminationProtectionRequest& request, const SetTerminationProtectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2200         void SetVisibleToAllUsersAsyncHelper(const Model::SetVisibleToAllUsersRequest& request, const SetVisibleToAllUsersResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2201         void StartNotebookExecutionAsyncHelper(const Model::StartNotebookExecutionRequest& request, const StartNotebookExecutionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2202         void StopNotebookExecutionAsyncHelper(const Model::StopNotebookExecutionRequest& request, const StopNotebookExecutionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2203         void TerminateJobFlowsAsyncHelper(const Model::TerminateJobFlowsRequest& request, const TerminateJobFlowsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2204         void UpdateStudioAsyncHelper(const Model::UpdateStudioRequest& request, const UpdateStudioResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2205         void UpdateStudioSessionMappingAsyncHelper(const Model::UpdateStudioSessionMappingRequest& request, const UpdateStudioSessionMappingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2206 
2207       Aws::String m_uri;
2208       Aws::String m_configScheme;
2209       std::shared_ptr<Aws::Utils::Threading::Executor> m_executor;
2210   };
2211 
2212 } // namespace EMR
2213 } // namespace Aws
2214