1/*
2* Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
3*
4* Licensed under the Apache License, Version 2.0 (the "License").
5* You may not use this file except in compliance with the License.
6* A copy of the License is located at
7*
8* http://aws.amazon.com/apache2.0
9*
10* or in the "license" file accompanying this file. This file is distributed
11* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12* express or implied. See the License for the specific language governing
13* permissions and limitations under the License.
14*/
15
16#pragma once
17#include <aws/s3/S3_EXPORTS.h>
18#include <aws/s3/S3Errors.h>
19#include <aws/s3/S3Endpoint.h>
20#include <aws/core/client/AWSError.h>
21#include <aws/core/client/ClientConfiguration.h>
22#include <aws/core/client/AWSClient.h>
23#include <aws/core/auth/AWSAuthSigner.h>
24#include <aws/core/utils/memory/stl/AWSString.h>
25#include <aws/core/utils/xml/XmlSerializer.h>
26#include <aws/core/utils/DNS.h>
27#include <aws/s3/model/AbortMultipartUploadResult.h>
28#include <aws/s3/model/CompleteMultipartUploadResult.h>
29#include <aws/s3/model/CopyObjectResult.h>
30#include <aws/s3/model/CreateBucketResult.h>
31#include <aws/s3/model/CreateMultipartUploadResult.h>
32#include <aws/s3/model/DeleteObjectResult.h>
33#include <aws/s3/model/DeleteObjectTaggingResult.h>
34#include <aws/s3/model/DeleteObjectsResult.h>
35#include <aws/s3/model/GetBucketAccelerateConfigurationResult.h>
36#include <aws/s3/model/GetBucketAclResult.h>
37#include <aws/s3/model/GetBucketAnalyticsConfigurationResult.h>
38#include <aws/s3/model/GetBucketCorsResult.h>
39#include <aws/s3/model/GetBucketEncryptionResult.h>
40#include <aws/s3/model/GetBucketInventoryConfigurationResult.h>
41#include <aws/s3/model/GetBucketLifecycleConfigurationResult.h>
42#include <aws/s3/model/GetBucketLocationResult.h>
43#include <aws/s3/model/GetBucketLoggingResult.h>
44#include <aws/s3/model/GetBucketMetricsConfigurationResult.h>
45#include <aws/s3/model/GetBucketNotificationConfigurationResult.h>
46#include <aws/s3/model/GetBucketPolicyResult.h>
47#include <aws/s3/model/GetBucketPolicyStatusResult.h>
48#include <aws/s3/model/GetBucketReplicationResult.h>
49#include <aws/s3/model/GetBucketRequestPaymentResult.h>
50#include <aws/s3/model/GetBucketTaggingResult.h>
51#include <aws/s3/model/GetBucketVersioningResult.h>
52#include <aws/s3/model/GetBucketWebsiteResult.h>
53#include <aws/s3/model/GetObjectResult.h>
54#include <aws/s3/model/GetObjectAclResult.h>
55#include <aws/s3/model/GetObjectLegalHoldResult.h>
56#include <aws/s3/model/GetObjectLockConfigurationResult.h>
57#include <aws/s3/model/GetObjectRetentionResult.h>
58#include <aws/s3/model/GetObjectTaggingResult.h>
59#include <aws/s3/model/GetObjectTorrentResult.h>
60#include <aws/s3/model/GetPublicAccessBlockResult.h>
61#include <aws/s3/model/HeadObjectResult.h>
62#include <aws/s3/model/ListBucketAnalyticsConfigurationsResult.h>
63#include <aws/s3/model/ListBucketInventoryConfigurationsResult.h>
64#include <aws/s3/model/ListBucketMetricsConfigurationsResult.h>
65#include <aws/s3/model/ListBucketsResult.h>
66#include <aws/s3/model/ListMultipartUploadsResult.h>
67#include <aws/s3/model/ListObjectVersionsResult.h>
68#include <aws/s3/model/ListObjectsResult.h>
69#include <aws/s3/model/ListObjectsV2Result.h>
70#include <aws/s3/model/ListPartsResult.h>
71#include <aws/s3/model/PutObjectResult.h>
72#include <aws/s3/model/PutObjectAclResult.h>
73#include <aws/s3/model/PutObjectLegalHoldResult.h>
74#include <aws/s3/model/PutObjectLockConfigurationResult.h>
75#include <aws/s3/model/PutObjectRetentionResult.h>
76#include <aws/s3/model/PutObjectTaggingResult.h>
77#include <aws/s3/model/RestoreObjectResult.h>
78#include <aws/s3/model/UploadPartResult.h>
79#include <aws/s3/model/UploadPartCopyResult.h>
80#include <aws/core/NoResult.h>
81#include <aws/core/client/AsyncCallerContext.h>
82#include <aws/core/http/HttpTypes.h>
83#include <future>
84#include <functional>
85namespace Aws
86{
87
88 namespace Http
89 {
90 class HttpClient;
91 class HttpClientFactory;
92 } // namespace Http
93
94 namespace Utils
95 {
96 template< typename R, typename E> class Outcome;
97
98 namespace Threading
99 {
100 class Executor;
101 } // namespace Threading
102
103 namespace Xml
104 {
105 class XmlDocument;
106 } // namespace Xml
107 } // namespace Utils
108
109 namespace Auth
110 {
111 class AWSCredentials;
112 class AWSCredentialsProvider;
113 } // namespace Auth
114
115 namespace Client
116 {
117 class RetryStrategy;
118 } // namespace Client
119
120 namespace S3
121 {
122 namespace Model
123 {
124 class AbortMultipartUploadRequest;
125 class CompleteMultipartUploadRequest;
126 class CopyObjectRequest;
127 class CreateBucketRequest;
128 class CreateMultipartUploadRequest;
129 class DeleteBucketRequest;
130 class DeleteBucketAnalyticsConfigurationRequest;
131 class DeleteBucketCorsRequest;
132 class DeleteBucketEncryptionRequest;
133 class DeleteBucketInventoryConfigurationRequest;
134 class DeleteBucketLifecycleRequest;
135 class DeleteBucketMetricsConfigurationRequest;
136 class DeleteBucketPolicyRequest;
137 class DeleteBucketReplicationRequest;
138 class DeleteBucketTaggingRequest;
139 class DeleteBucketWebsiteRequest;
140 class DeleteObjectRequest;
141 class DeleteObjectTaggingRequest;
142 class DeleteObjectsRequest;
143 class DeletePublicAccessBlockRequest;
144 class GetBucketAccelerateConfigurationRequest;
145 class GetBucketAclRequest;
146 class GetBucketAnalyticsConfigurationRequest;
147 class GetBucketCorsRequest;
148 class GetBucketEncryptionRequest;
149 class GetBucketInventoryConfigurationRequest;
150 class GetBucketLifecycleConfigurationRequest;
151 class GetBucketLocationRequest;
152 class GetBucketLoggingRequest;
153 class GetBucketMetricsConfigurationRequest;
154 class GetBucketNotificationConfigurationRequest;
155 class GetBucketPolicyRequest;
156 class GetBucketPolicyStatusRequest;
157 class GetBucketReplicationRequest;
158 class GetBucketRequestPaymentRequest;
159 class GetBucketTaggingRequest;
160 class GetBucketVersioningRequest;
161 class GetBucketWebsiteRequest;
162 class GetObjectRequest;
163 class GetObjectAclRequest;
164 class GetObjectLegalHoldRequest;
165 class GetObjectLockConfigurationRequest;
166 class GetObjectRetentionRequest;
167 class GetObjectTaggingRequest;
168 class GetObjectTorrentRequest;
169 class GetPublicAccessBlockRequest;
170 class HeadBucketRequest;
171 class HeadObjectRequest;
172 class ListBucketAnalyticsConfigurationsRequest;
173 class ListBucketInventoryConfigurationsRequest;
174 class ListBucketMetricsConfigurationsRequest;
175 class ListMultipartUploadsRequest;
176 class ListObjectVersionsRequest;
177 class ListObjectsRequest;
178 class ListObjectsV2Request;
179 class ListPartsRequest;
180 class PutBucketAccelerateConfigurationRequest;
181 class PutBucketAclRequest;
182 class PutBucketAnalyticsConfigurationRequest;
183 class PutBucketCorsRequest;
184 class PutBucketEncryptionRequest;
185 class PutBucketInventoryConfigurationRequest;
186 class PutBucketLifecycleConfigurationRequest;
187 class PutBucketLoggingRequest;
188 class PutBucketMetricsConfigurationRequest;
189 class PutBucketNotificationConfigurationRequest;
190 class PutBucketPolicyRequest;
191 class PutBucketReplicationRequest;
192 class PutBucketRequestPaymentRequest;
193 class PutBucketTaggingRequest;
194 class PutBucketVersioningRequest;
195 class PutBucketWebsiteRequest;
196 class PutObjectRequest;
197 class PutObjectAclRequest;
198 class PutObjectLegalHoldRequest;
199 class PutObjectLockConfigurationRequest;
200 class PutObjectRetentionRequest;
201 class PutObjectTaggingRequest;
202 class PutPublicAccessBlockRequest;
203 class RestoreObjectRequest;
204 class SelectObjectContentRequest;
205 class UploadPartRequest;
206 class UploadPartCopyRequest;
207
208 typedef Aws::Utils::Outcome<AbortMultipartUploadResult, Aws::Client::AWSError<S3Errors>> AbortMultipartUploadOutcome;
209 typedef Aws::Utils::Outcome<CompleteMultipartUploadResult, Aws::Client::AWSError<S3Errors>> CompleteMultipartUploadOutcome;
210 typedef Aws::Utils::Outcome<CopyObjectResult, Aws::Client::AWSError<S3Errors>> CopyObjectOutcome;
211 typedef Aws::Utils::Outcome<CreateBucketResult, Aws::Client::AWSError<S3Errors>> CreateBucketOutcome;
212 typedef Aws::Utils::Outcome<CreateMultipartUploadResult, Aws::Client::AWSError<S3Errors>> CreateMultipartUploadOutcome;
213 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> DeleteBucketOutcome;
214 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> DeleteBucketAnalyticsConfigurationOutcome;
215 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> DeleteBucketCorsOutcome;
216 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> DeleteBucketEncryptionOutcome;
217 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> DeleteBucketInventoryConfigurationOutcome;
218 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> DeleteBucketLifecycleOutcome;
219 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> DeleteBucketMetricsConfigurationOutcome;
220 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> DeleteBucketPolicyOutcome;
221 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> DeleteBucketReplicationOutcome;
222 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> DeleteBucketTaggingOutcome;
223 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> DeleteBucketWebsiteOutcome;
224 typedef Aws::Utils::Outcome<DeleteObjectResult, Aws::Client::AWSError<S3Errors>> DeleteObjectOutcome;
225 typedef Aws::Utils::Outcome<DeleteObjectTaggingResult, Aws::Client::AWSError<S3Errors>> DeleteObjectTaggingOutcome;
226 typedef Aws::Utils::Outcome<DeleteObjectsResult, Aws::Client::AWSError<S3Errors>> DeleteObjectsOutcome;
227 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> DeletePublicAccessBlockOutcome;
228 typedef Aws::Utils::Outcome<GetBucketAccelerateConfigurationResult, Aws::Client::AWSError<S3Errors>> GetBucketAccelerateConfigurationOutcome;
229 typedef Aws::Utils::Outcome<GetBucketAclResult, Aws::Client::AWSError<S3Errors>> GetBucketAclOutcome;
230 typedef Aws::Utils::Outcome<GetBucketAnalyticsConfigurationResult, Aws::Client::AWSError<S3Errors>> GetBucketAnalyticsConfigurationOutcome;
231 typedef Aws::Utils::Outcome<GetBucketCorsResult, Aws::Client::AWSError<S3Errors>> GetBucketCorsOutcome;
232 typedef Aws::Utils::Outcome<GetBucketEncryptionResult, Aws::Client::AWSError<S3Errors>> GetBucketEncryptionOutcome;
233 typedef Aws::Utils::Outcome<GetBucketInventoryConfigurationResult, Aws::Client::AWSError<S3Errors>> GetBucketInventoryConfigurationOutcome;
234 typedef Aws::Utils::Outcome<GetBucketLifecycleConfigurationResult, Aws::Client::AWSError<S3Errors>> GetBucketLifecycleConfigurationOutcome;
235 typedef Aws::Utils::Outcome<GetBucketLocationResult, Aws::Client::AWSError<S3Errors>> GetBucketLocationOutcome;
236 typedef Aws::Utils::Outcome<GetBucketLoggingResult, Aws::Client::AWSError<S3Errors>> GetBucketLoggingOutcome;
237 typedef Aws::Utils::Outcome<GetBucketMetricsConfigurationResult, Aws::Client::AWSError<S3Errors>> GetBucketMetricsConfigurationOutcome;
238 typedef Aws::Utils::Outcome<GetBucketNotificationConfigurationResult, Aws::Client::AWSError<S3Errors>> GetBucketNotificationConfigurationOutcome;
239 typedef Aws::Utils::Outcome<GetBucketPolicyResult, Aws::Client::AWSError<S3Errors>> GetBucketPolicyOutcome;
240 typedef Aws::Utils::Outcome<GetBucketPolicyStatusResult, Aws::Client::AWSError<S3Errors>> GetBucketPolicyStatusOutcome;
241 typedef Aws::Utils::Outcome<GetBucketReplicationResult, Aws::Client::AWSError<S3Errors>> GetBucketReplicationOutcome;
242 typedef Aws::Utils::Outcome<GetBucketRequestPaymentResult, Aws::Client::AWSError<S3Errors>> GetBucketRequestPaymentOutcome;
243 typedef Aws::Utils::Outcome<GetBucketTaggingResult, Aws::Client::AWSError<S3Errors>> GetBucketTaggingOutcome;
244 typedef Aws::Utils::Outcome<GetBucketVersioningResult, Aws::Client::AWSError<S3Errors>> GetBucketVersioningOutcome;
245 typedef Aws::Utils::Outcome<GetBucketWebsiteResult, Aws::Client::AWSError<S3Errors>> GetBucketWebsiteOutcome;
246 typedef Aws::Utils::Outcome<GetObjectResult, Aws::Client::AWSError<S3Errors>> GetObjectOutcome;
247 typedef Aws::Utils::Outcome<GetObjectAclResult, Aws::Client::AWSError<S3Errors>> GetObjectAclOutcome;
248 typedef Aws::Utils::Outcome<GetObjectLegalHoldResult, Aws::Client::AWSError<S3Errors>> GetObjectLegalHoldOutcome;
249 typedef Aws::Utils::Outcome<GetObjectLockConfigurationResult, Aws::Client::AWSError<S3Errors>> GetObjectLockConfigurationOutcome;
250 typedef Aws::Utils::Outcome<GetObjectRetentionResult, Aws::Client::AWSError<S3Errors>> GetObjectRetentionOutcome;
251 typedef Aws::Utils::Outcome<GetObjectTaggingResult, Aws::Client::AWSError<S3Errors>> GetObjectTaggingOutcome;
252 typedef Aws::Utils::Outcome<GetObjectTorrentResult, Aws::Client::AWSError<S3Errors>> GetObjectTorrentOutcome;
253 typedef Aws::Utils::Outcome<GetPublicAccessBlockResult, Aws::Client::AWSError<S3Errors>> GetPublicAccessBlockOutcome;
254 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> HeadBucketOutcome;
255 typedef Aws::Utils::Outcome<HeadObjectResult, Aws::Client::AWSError<S3Errors>> HeadObjectOutcome;
256 typedef Aws::Utils::Outcome<ListBucketAnalyticsConfigurationsResult, Aws::Client::AWSError<S3Errors>> ListBucketAnalyticsConfigurationsOutcome;
257 typedef Aws::Utils::Outcome<ListBucketInventoryConfigurationsResult, Aws::Client::AWSError<S3Errors>> ListBucketInventoryConfigurationsOutcome;
258 typedef Aws::Utils::Outcome<ListBucketMetricsConfigurationsResult, Aws::Client::AWSError<S3Errors>> ListBucketMetricsConfigurationsOutcome;
259 typedef Aws::Utils::Outcome<ListBucketsResult, Aws::Client::AWSError<S3Errors>> ListBucketsOutcome;
260 typedef Aws::Utils::Outcome<ListMultipartUploadsResult, Aws::Client::AWSError<S3Errors>> ListMultipartUploadsOutcome;
261 typedef Aws::Utils::Outcome<ListObjectVersionsResult, Aws::Client::AWSError<S3Errors>> ListObjectVersionsOutcome;
262 typedef Aws::Utils::Outcome<ListObjectsResult, Aws::Client::AWSError<S3Errors>> ListObjectsOutcome;
263 typedef Aws::Utils::Outcome<ListObjectsV2Result, Aws::Client::AWSError<S3Errors>> ListObjectsV2Outcome;
264 typedef Aws::Utils::Outcome<ListPartsResult, Aws::Client::AWSError<S3Errors>> ListPartsOutcome;
265 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> PutBucketAccelerateConfigurationOutcome;
266 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> PutBucketAclOutcome;
267 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> PutBucketAnalyticsConfigurationOutcome;
268 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> PutBucketCorsOutcome;
269 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> PutBucketEncryptionOutcome;
270 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> PutBucketInventoryConfigurationOutcome;
271 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> PutBucketLifecycleConfigurationOutcome;
272 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> PutBucketLoggingOutcome;
273 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> PutBucketMetricsConfigurationOutcome;
274 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> PutBucketNotificationConfigurationOutcome;
275 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> PutBucketPolicyOutcome;
276 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> PutBucketReplicationOutcome;
277 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> PutBucketRequestPaymentOutcome;
278 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> PutBucketTaggingOutcome;
279 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> PutBucketVersioningOutcome;
280 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> PutBucketWebsiteOutcome;
281 typedef Aws::Utils::Outcome<PutObjectResult, Aws::Client::AWSError<S3Errors>> PutObjectOutcome;
282 typedef Aws::Utils::Outcome<PutObjectAclResult, Aws::Client::AWSError<S3Errors>> PutObjectAclOutcome;
283 typedef Aws::Utils::Outcome<PutObjectLegalHoldResult, Aws::Client::AWSError<S3Errors>> PutObjectLegalHoldOutcome;
284 typedef Aws::Utils::Outcome<PutObjectLockConfigurationResult, Aws::Client::AWSError<S3Errors>> PutObjectLockConfigurationOutcome;
285 typedef Aws::Utils::Outcome<PutObjectRetentionResult, Aws::Client::AWSError<S3Errors>> PutObjectRetentionOutcome;
286 typedef Aws::Utils::Outcome<PutObjectTaggingResult, Aws::Client::AWSError<S3Errors>> PutObjectTaggingOutcome;
287 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> PutPublicAccessBlockOutcome;
288 typedef Aws::Utils::Outcome<RestoreObjectResult, Aws::Client::AWSError<S3Errors>> RestoreObjectOutcome;
289 typedef Aws::Utils::Outcome<Aws::NoResult, Aws::Client::AWSError<S3Errors>> SelectObjectContentOutcome;
290 typedef Aws::Utils::Outcome<UploadPartResult, Aws::Client::AWSError<S3Errors>> UploadPartOutcome;
291 typedef Aws::Utils::Outcome<UploadPartCopyResult, Aws::Client::AWSError<S3Errors>> UploadPartCopyOutcome;
292
293 typedef std::future<AbortMultipartUploadOutcome> AbortMultipartUploadOutcomeCallable;
294 typedef std::future<CompleteMultipartUploadOutcome> CompleteMultipartUploadOutcomeCallable;
295 typedef std::future<CopyObjectOutcome> CopyObjectOutcomeCallable;
296 typedef std::future<CreateBucketOutcome> CreateBucketOutcomeCallable;
297 typedef std::future<CreateMultipartUploadOutcome> CreateMultipartUploadOutcomeCallable;
298 typedef std::future<DeleteBucketOutcome> DeleteBucketOutcomeCallable;
299 typedef std::future<DeleteBucketAnalyticsConfigurationOutcome> DeleteBucketAnalyticsConfigurationOutcomeCallable;
300 typedef std::future<DeleteBucketCorsOutcome> DeleteBucketCorsOutcomeCallable;
301 typedef std::future<DeleteBucketEncryptionOutcome> DeleteBucketEncryptionOutcomeCallable;
302 typedef std::future<DeleteBucketInventoryConfigurationOutcome> DeleteBucketInventoryConfigurationOutcomeCallable;
303 typedef std::future<DeleteBucketLifecycleOutcome> DeleteBucketLifecycleOutcomeCallable;
304 typedef std::future<DeleteBucketMetricsConfigurationOutcome> DeleteBucketMetricsConfigurationOutcomeCallable;
305 typedef std::future<DeleteBucketPolicyOutcome> DeleteBucketPolicyOutcomeCallable;
306 typedef std::future<DeleteBucketReplicationOutcome> DeleteBucketReplicationOutcomeCallable;
307 typedef std::future<DeleteBucketTaggingOutcome> DeleteBucketTaggingOutcomeCallable;
308 typedef std::future<DeleteBucketWebsiteOutcome> DeleteBucketWebsiteOutcomeCallable;
309 typedef std::future<DeleteObjectOutcome> DeleteObjectOutcomeCallable;
310 typedef std::future<DeleteObjectTaggingOutcome> DeleteObjectTaggingOutcomeCallable;
311 typedef std::future<DeleteObjectsOutcome> DeleteObjectsOutcomeCallable;
312 typedef std::future<DeletePublicAccessBlockOutcome> DeletePublicAccessBlockOutcomeCallable;
313 typedef std::future<GetBucketAccelerateConfigurationOutcome> GetBucketAccelerateConfigurationOutcomeCallable;
314 typedef std::future<GetBucketAclOutcome> GetBucketAclOutcomeCallable;
315 typedef std::future<GetBucketAnalyticsConfigurationOutcome> GetBucketAnalyticsConfigurationOutcomeCallable;
316 typedef std::future<GetBucketCorsOutcome> GetBucketCorsOutcomeCallable;
317 typedef std::future<GetBucketEncryptionOutcome> GetBucketEncryptionOutcomeCallable;
318 typedef std::future<GetBucketInventoryConfigurationOutcome> GetBucketInventoryConfigurationOutcomeCallable;
319 typedef std::future<GetBucketLifecycleConfigurationOutcome> GetBucketLifecycleConfigurationOutcomeCallable;
320 typedef std::future<GetBucketLocationOutcome> GetBucketLocationOutcomeCallable;
321 typedef std::future<GetBucketLoggingOutcome> GetBucketLoggingOutcomeCallable;
322 typedef std::future<GetBucketMetricsConfigurationOutcome> GetBucketMetricsConfigurationOutcomeCallable;
323 typedef std::future<GetBucketNotificationConfigurationOutcome> GetBucketNotificationConfigurationOutcomeCallable;
324 typedef std::future<GetBucketPolicyOutcome> GetBucketPolicyOutcomeCallable;
325 typedef std::future<GetBucketPolicyStatusOutcome> GetBucketPolicyStatusOutcomeCallable;
326 typedef std::future<GetBucketReplicationOutcome> GetBucketReplicationOutcomeCallable;
327 typedef std::future<GetBucketRequestPaymentOutcome> GetBucketRequestPaymentOutcomeCallable;
328 typedef std::future<GetBucketTaggingOutcome> GetBucketTaggingOutcomeCallable;
329 typedef std::future<GetBucketVersioningOutcome> GetBucketVersioningOutcomeCallable;
330 typedef std::future<GetBucketWebsiteOutcome> GetBucketWebsiteOutcomeCallable;
331 typedef std::future<GetObjectOutcome> GetObjectOutcomeCallable;
332 typedef std::future<GetObjectAclOutcome> GetObjectAclOutcomeCallable;
333 typedef std::future<GetObjectLegalHoldOutcome> GetObjectLegalHoldOutcomeCallable;
334 typedef std::future<GetObjectLockConfigurationOutcome> GetObjectLockConfigurationOutcomeCallable;
335 typedef std::future<GetObjectRetentionOutcome> GetObjectRetentionOutcomeCallable;
336 typedef std::future<GetObjectTaggingOutcome> GetObjectTaggingOutcomeCallable;
337 typedef std::future<GetObjectTorrentOutcome> GetObjectTorrentOutcomeCallable;
338 typedef std::future<GetPublicAccessBlockOutcome> GetPublicAccessBlockOutcomeCallable;
339 typedef std::future<HeadBucketOutcome> HeadBucketOutcomeCallable;
340 typedef std::future<HeadObjectOutcome> HeadObjectOutcomeCallable;
341 typedef std::future<ListBucketAnalyticsConfigurationsOutcome> ListBucketAnalyticsConfigurationsOutcomeCallable;
342 typedef std::future<ListBucketInventoryConfigurationsOutcome> ListBucketInventoryConfigurationsOutcomeCallable;
343 typedef std::future<ListBucketMetricsConfigurationsOutcome> ListBucketMetricsConfigurationsOutcomeCallable;
344 typedef std::future<ListBucketsOutcome> ListBucketsOutcomeCallable;
345 typedef std::future<ListMultipartUploadsOutcome> ListMultipartUploadsOutcomeCallable;
346 typedef std::future<ListObjectVersionsOutcome> ListObjectVersionsOutcomeCallable;
347 typedef std::future<ListObjectsOutcome> ListObjectsOutcomeCallable;
348 typedef std::future<ListObjectsV2Outcome> ListObjectsV2OutcomeCallable;
349 typedef std::future<ListPartsOutcome> ListPartsOutcomeCallable;
350 typedef std::future<PutBucketAccelerateConfigurationOutcome> PutBucketAccelerateConfigurationOutcomeCallable;
351 typedef std::future<PutBucketAclOutcome> PutBucketAclOutcomeCallable;
352 typedef std::future<PutBucketAnalyticsConfigurationOutcome> PutBucketAnalyticsConfigurationOutcomeCallable;
353 typedef std::future<PutBucketCorsOutcome> PutBucketCorsOutcomeCallable;
354 typedef std::future<PutBucketEncryptionOutcome> PutBucketEncryptionOutcomeCallable;
355 typedef std::future<PutBucketInventoryConfigurationOutcome> PutBucketInventoryConfigurationOutcomeCallable;
356 typedef std::future<PutBucketLifecycleConfigurationOutcome> PutBucketLifecycleConfigurationOutcomeCallable;
357 typedef std::future<PutBucketLoggingOutcome> PutBucketLoggingOutcomeCallable;
358 typedef std::future<PutBucketMetricsConfigurationOutcome> PutBucketMetricsConfigurationOutcomeCallable;
359 typedef std::future<PutBucketNotificationConfigurationOutcome> PutBucketNotificationConfigurationOutcomeCallable;
360 typedef std::future<PutBucketPolicyOutcome> PutBucketPolicyOutcomeCallable;
361 typedef std::future<PutBucketReplicationOutcome> PutBucketReplicationOutcomeCallable;
362 typedef std::future<PutBucketRequestPaymentOutcome> PutBucketRequestPaymentOutcomeCallable;
363 typedef std::future<PutBucketTaggingOutcome> PutBucketTaggingOutcomeCallable;
364 typedef std::future<PutBucketVersioningOutcome> PutBucketVersioningOutcomeCallable;
365 typedef std::future<PutBucketWebsiteOutcome> PutBucketWebsiteOutcomeCallable;
366 typedef std::future<PutObjectOutcome> PutObjectOutcomeCallable;
367 typedef std::future<PutObjectAclOutcome> PutObjectAclOutcomeCallable;
368 typedef std::future<PutObjectLegalHoldOutcome> PutObjectLegalHoldOutcomeCallable;
369 typedef std::future<PutObjectLockConfigurationOutcome> PutObjectLockConfigurationOutcomeCallable;
370 typedef std::future<PutObjectRetentionOutcome> PutObjectRetentionOutcomeCallable;
371 typedef std::future<PutObjectTaggingOutcome> PutObjectTaggingOutcomeCallable;
372 typedef std::future<PutPublicAccessBlockOutcome> PutPublicAccessBlockOutcomeCallable;
373 typedef std::future<RestoreObjectOutcome> RestoreObjectOutcomeCallable;
374 typedef std::future<SelectObjectContentOutcome> SelectObjectContentOutcomeCallable;
375 typedef std::future<UploadPartOutcome> UploadPartOutcomeCallable;
376 typedef std::future<UploadPartCopyOutcome> UploadPartCopyOutcomeCallable;
377 } // namespace Model
378
379 namespace SSEHeaders
380 {
381 static const char SERVER_SIDE_ENCRYPTION[] = "x-amz-server-side-encryption";
382 static const char SERVER_SIDE_ENCRYPTION_AWS_KMS_KEY_ID[] = "x-amz-server-side-encryption-aws-kms-key-id";
383 static const char SERVER_SIDE_ENCRYPTION_CUSTOMER_ALGORITHM[] = "x-amz-server-side-encryption-customer-algorithm";
384 static const char SERVER_SIDE_ENCRYPTION_CUSTOMER_KEY[] = "x-amz-server-side-encryption-customer-key";
385 static const char SERVER_SIDE_ENCRYPTION_CUSTOMER_KEY_MD5[] = "x-amz-server-side-encryption-customer-key-MD5";
386 } // SS3Headers
387
388 class S3Client;
389
390 typedef std::function<void(const S3Client*, const Model::AbortMultipartUploadRequest&, const Model::AbortMultipartUploadOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > AbortMultipartUploadResponseReceivedHandler;
391 typedef std::function<void(const S3Client*, const Model::CompleteMultipartUploadRequest&, const Model::CompleteMultipartUploadOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CompleteMultipartUploadResponseReceivedHandler;
392 typedef std::function<void(const S3Client*, const Model::CopyObjectRequest&, const Model::CopyObjectOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CopyObjectResponseReceivedHandler;
393 typedef std::function<void(const S3Client*, const Model::CreateBucketRequest&, const Model::CreateBucketOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateBucketResponseReceivedHandler;
394 typedef std::function<void(const S3Client*, const Model::CreateMultipartUploadRequest&, const Model::CreateMultipartUploadOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateMultipartUploadResponseReceivedHandler;
395 typedef std::function<void(const S3Client*, const Model::DeleteBucketRequest&, const Model::DeleteBucketOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteBucketResponseReceivedHandler;
396 typedef std::function<void(const S3Client*, const Model::DeleteBucketAnalyticsConfigurationRequest&, const Model::DeleteBucketAnalyticsConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteBucketAnalyticsConfigurationResponseReceivedHandler;
397 typedef std::function<void(const S3Client*, const Model::DeleteBucketCorsRequest&, const Model::DeleteBucketCorsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteBucketCorsResponseReceivedHandler;
398 typedef std::function<void(const S3Client*, const Model::DeleteBucketEncryptionRequest&, const Model::DeleteBucketEncryptionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteBucketEncryptionResponseReceivedHandler;
399 typedef std::function<void(const S3Client*, const Model::DeleteBucketInventoryConfigurationRequest&, const Model::DeleteBucketInventoryConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteBucketInventoryConfigurationResponseReceivedHandler;
400 typedef std::function<void(const S3Client*, const Model::DeleteBucketLifecycleRequest&, const Model::DeleteBucketLifecycleOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteBucketLifecycleResponseReceivedHandler;
401 typedef std::function<void(const S3Client*, const Model::DeleteBucketMetricsConfigurationRequest&, const Model::DeleteBucketMetricsConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteBucketMetricsConfigurationResponseReceivedHandler;
402 typedef std::function<void(const S3Client*, const Model::DeleteBucketPolicyRequest&, const Model::DeleteBucketPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteBucketPolicyResponseReceivedHandler;
403 typedef std::function<void(const S3Client*, const Model::DeleteBucketReplicationRequest&, const Model::DeleteBucketReplicationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteBucketReplicationResponseReceivedHandler;
404 typedef std::function<void(const S3Client*, const Model::DeleteBucketTaggingRequest&, const Model::DeleteBucketTaggingOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteBucketTaggingResponseReceivedHandler;
405 typedef std::function<void(const S3Client*, const Model::DeleteBucketWebsiteRequest&, const Model::DeleteBucketWebsiteOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteBucketWebsiteResponseReceivedHandler;
406 typedef std::function<void(const S3Client*, const Model::DeleteObjectRequest&, const Model::DeleteObjectOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteObjectResponseReceivedHandler;
407 typedef std::function<void(const S3Client*, const Model::DeleteObjectTaggingRequest&, const Model::DeleteObjectTaggingOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteObjectTaggingResponseReceivedHandler;
408 typedef std::function<void(const S3Client*, const Model::DeleteObjectsRequest&, const Model::DeleteObjectsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteObjectsResponseReceivedHandler;
409 typedef std::function<void(const S3Client*, const Model::DeletePublicAccessBlockRequest&, const Model::DeletePublicAccessBlockOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeletePublicAccessBlockResponseReceivedHandler;
410 typedef std::function<void(const S3Client*, const Model::GetBucketAccelerateConfigurationRequest&, const Model::GetBucketAccelerateConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetBucketAccelerateConfigurationResponseReceivedHandler;
411 typedef std::function<void(const S3Client*, const Model::GetBucketAclRequest&, const Model::GetBucketAclOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetBucketAclResponseReceivedHandler;
412 typedef std::function<void(const S3Client*, const Model::GetBucketAnalyticsConfigurationRequest&, const Model::GetBucketAnalyticsConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetBucketAnalyticsConfigurationResponseReceivedHandler;
413 typedef std::function<void(const S3Client*, const Model::GetBucketCorsRequest&, const Model::GetBucketCorsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetBucketCorsResponseReceivedHandler;
414 typedef std::function<void(const S3Client*, const Model::GetBucketEncryptionRequest&, const Model::GetBucketEncryptionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetBucketEncryptionResponseReceivedHandler;
415 typedef std::function<void(const S3Client*, const Model::GetBucketInventoryConfigurationRequest&, const Model::GetBucketInventoryConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetBucketInventoryConfigurationResponseReceivedHandler;
416 typedef std::function<void(const S3Client*, const Model::GetBucketLifecycleConfigurationRequest&, const Model::GetBucketLifecycleConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetBucketLifecycleConfigurationResponseReceivedHandler;
417 typedef std::function<void(const S3Client*, const Model::GetBucketLocationRequest&, const Model::GetBucketLocationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetBucketLocationResponseReceivedHandler;
418 typedef std::function<void(const S3Client*, const Model::GetBucketLoggingRequest&, const Model::GetBucketLoggingOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetBucketLoggingResponseReceivedHandler;
419 typedef std::function<void(const S3Client*, const Model::GetBucketMetricsConfigurationRequest&, const Model::GetBucketMetricsConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetBucketMetricsConfigurationResponseReceivedHandler;
420 typedef std::function<void(const S3Client*, const Model::GetBucketNotificationConfigurationRequest&, const Model::GetBucketNotificationConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetBucketNotificationConfigurationResponseReceivedHandler;
421 typedef std::function<void(const S3Client*, const Model::GetBucketPolicyRequest&, Model::GetBucketPolicyOutcome, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetBucketPolicyResponseReceivedHandler;
422 typedef std::function<void(const S3Client*, const Model::GetBucketPolicyStatusRequest&, const Model::GetBucketPolicyStatusOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetBucketPolicyStatusResponseReceivedHandler;
423 typedef std::function<void(const S3Client*, const Model::GetBucketReplicationRequest&, const Model::GetBucketReplicationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetBucketReplicationResponseReceivedHandler;
424 typedef std::function<void(const S3Client*, const Model::GetBucketRequestPaymentRequest&, const Model::GetBucketRequestPaymentOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetBucketRequestPaymentResponseReceivedHandler;
425 typedef std::function<void(const S3Client*, const Model::GetBucketTaggingRequest&, const Model::GetBucketTaggingOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetBucketTaggingResponseReceivedHandler;
426 typedef std::function<void(const S3Client*, const Model::GetBucketVersioningRequest&, const Model::GetBucketVersioningOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetBucketVersioningResponseReceivedHandler;
427 typedef std::function<void(const S3Client*, const Model::GetBucketWebsiteRequest&, const Model::GetBucketWebsiteOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetBucketWebsiteResponseReceivedHandler;
428 typedef std::function<void(const S3Client*, const Model::GetObjectRequest&, Model::GetObjectOutcome, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetObjectResponseReceivedHandler;
429 typedef std::function<void(const S3Client*, const Model::GetObjectAclRequest&, const Model::GetObjectAclOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetObjectAclResponseReceivedHandler;
430 typedef std::function<void(const S3Client*, const Model::GetObjectLegalHoldRequest&, const Model::GetObjectLegalHoldOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetObjectLegalHoldResponseReceivedHandler;
431 typedef std::function<void(const S3Client*, const Model::GetObjectLockConfigurationRequest&, const Model::GetObjectLockConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetObjectLockConfigurationResponseReceivedHandler;
432 typedef std::function<void(const S3Client*, const Model::GetObjectRetentionRequest&, const Model::GetObjectRetentionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetObjectRetentionResponseReceivedHandler;
433 typedef std::function<void(const S3Client*, const Model::GetObjectTaggingRequest&, const Model::GetObjectTaggingOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetObjectTaggingResponseReceivedHandler;
434 typedef std::function<void(const S3Client*, const Model::GetObjectTorrentRequest&, Model::GetObjectTorrentOutcome, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetObjectTorrentResponseReceivedHandler;
435 typedef std::function<void(const S3Client*, const Model::GetPublicAccessBlockRequest&, const Model::GetPublicAccessBlockOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetPublicAccessBlockResponseReceivedHandler;
436 typedef std::function<void(const S3Client*, const Model::HeadBucketRequest&, const Model::HeadBucketOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > HeadBucketResponseReceivedHandler;
437 typedef std::function<void(const S3Client*, const Model::HeadObjectRequest&, const Model::HeadObjectOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > HeadObjectResponseReceivedHandler;
438 typedef std::function<void(const S3Client*, const Model::ListBucketAnalyticsConfigurationsRequest&, const Model::ListBucketAnalyticsConfigurationsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListBucketAnalyticsConfigurationsResponseReceivedHandler;
439 typedef std::function<void(const S3Client*, const Model::ListBucketInventoryConfigurationsRequest&, const Model::ListBucketInventoryConfigurationsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListBucketInventoryConfigurationsResponseReceivedHandler;
440 typedef std::function<void(const S3Client*, const Model::ListBucketMetricsConfigurationsRequest&, const Model::ListBucketMetricsConfigurationsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListBucketMetricsConfigurationsResponseReceivedHandler;
441 typedef std::function<void(const S3Client*, const Model::ListBucketsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListBucketsResponseReceivedHandler;
442 typedef std::function<void(const S3Client*, const Model::ListMultipartUploadsRequest&, const Model::ListMultipartUploadsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListMultipartUploadsResponseReceivedHandler;
443 typedef std::function<void(const S3Client*, const Model::ListObjectVersionsRequest&, const Model::ListObjectVersionsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListObjectVersionsResponseReceivedHandler;
444 typedef std::function<void(const S3Client*, const Model::ListObjectsRequest&, const Model::ListObjectsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListObjectsResponseReceivedHandler;
445 typedef std::function<void(const S3Client*, const Model::ListObjectsV2Request&, const Model::ListObjectsV2Outcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListObjectsV2ResponseReceivedHandler;
446 typedef std::function<void(const S3Client*, const Model::ListPartsRequest&, const Model::ListPartsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListPartsResponseReceivedHandler;
447 typedef std::function<void(const S3Client*, const Model::PutBucketAccelerateConfigurationRequest&, const Model::PutBucketAccelerateConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutBucketAccelerateConfigurationResponseReceivedHandler;
448 typedef std::function<void(const S3Client*, const Model::PutBucketAclRequest&, const Model::PutBucketAclOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutBucketAclResponseReceivedHandler;
449 typedef std::function<void(const S3Client*, const Model::PutBucketAnalyticsConfigurationRequest&, const Model::PutBucketAnalyticsConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutBucketAnalyticsConfigurationResponseReceivedHandler;
450 typedef std::function<void(const S3Client*, const Model::PutBucketCorsRequest&, const Model::PutBucketCorsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutBucketCorsResponseReceivedHandler;
451 typedef std::function<void(const S3Client*, const Model::PutBucketEncryptionRequest&, const Model::PutBucketEncryptionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutBucketEncryptionResponseReceivedHandler;
452 typedef std::function<void(const S3Client*, const Model::PutBucketInventoryConfigurationRequest&, const Model::PutBucketInventoryConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutBucketInventoryConfigurationResponseReceivedHandler;
453 typedef std::function<void(const S3Client*, const Model::PutBucketLifecycleConfigurationRequest&, const Model::PutBucketLifecycleConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutBucketLifecycleConfigurationResponseReceivedHandler;
454 typedef std::function<void(const S3Client*, const Model::PutBucketLoggingRequest&, const Model::PutBucketLoggingOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutBucketLoggingResponseReceivedHandler;
455 typedef std::function<void(const S3Client*, const Model::PutBucketMetricsConfigurationRequest&, const Model::PutBucketMetricsConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutBucketMetricsConfigurationResponseReceivedHandler;
456 typedef std::function<void(const S3Client*, const Model::PutBucketNotificationConfigurationRequest&, const Model::PutBucketNotificationConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutBucketNotificationConfigurationResponseReceivedHandler;
457 typedef std::function<void(const S3Client*, const Model::PutBucketPolicyRequest&, const Model::PutBucketPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutBucketPolicyResponseReceivedHandler;
458 typedef std::function<void(const S3Client*, const Model::PutBucketReplicationRequest&, const Model::PutBucketReplicationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutBucketReplicationResponseReceivedHandler;
459 typedef std::function<void(const S3Client*, const Model::PutBucketRequestPaymentRequest&, const Model::PutBucketRequestPaymentOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutBucketRequestPaymentResponseReceivedHandler;
460 typedef std::function<void(const S3Client*, const Model::PutBucketTaggingRequest&, const Model::PutBucketTaggingOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutBucketTaggingResponseReceivedHandler;
461 typedef std::function<void(const S3Client*, const Model::PutBucketVersioningRequest&, const Model::PutBucketVersioningOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutBucketVersioningResponseReceivedHandler;
462 typedef std::function<void(const S3Client*, const Model::PutBucketWebsiteRequest&, const Model::PutBucketWebsiteOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutBucketWebsiteResponseReceivedHandler;
463 typedef std::function<void(const S3Client*, const Model::PutObjectRequest&, const Model::PutObjectOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutObjectResponseReceivedHandler;
464 typedef std::function<void(const S3Client*, const Model::PutObjectAclRequest&, const Model::PutObjectAclOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutObjectAclResponseReceivedHandler;
465 typedef std::function<void(const S3Client*, const Model::PutObjectLegalHoldRequest&, const Model::PutObjectLegalHoldOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutObjectLegalHoldResponseReceivedHandler;
466 typedef std::function<void(const S3Client*, const Model::PutObjectLockConfigurationRequest&, const Model::PutObjectLockConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutObjectLockConfigurationResponseReceivedHandler;
467 typedef std::function<void(const S3Client*, const Model::PutObjectRetentionRequest&, const Model::PutObjectRetentionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutObjectRetentionResponseReceivedHandler;
468 typedef std::function<void(const S3Client*, const Model::PutObjectTaggingRequest&, const Model::PutObjectTaggingOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutObjectTaggingResponseReceivedHandler;
469 typedef std::function<void(const S3Client*, const Model::PutPublicAccessBlockRequest&, const Model::PutPublicAccessBlockOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutPublicAccessBlockResponseReceivedHandler;
470 typedef std::function<void(const S3Client*, const Model::RestoreObjectRequest&, const Model::RestoreObjectOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > RestoreObjectResponseReceivedHandler;
471 typedef std::function<void(const S3Client*, const Model::SelectObjectContentRequest&, const Model::SelectObjectContentOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > SelectObjectContentResponseReceivedHandler;
472 typedef std::function<void(const S3Client*, const Model::UploadPartRequest&, const Model::UploadPartOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UploadPartResponseReceivedHandler;
473 typedef std::function<void(const S3Client*, const Model::UploadPartCopyRequest&, const Model::UploadPartCopyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UploadPartCopyResponseReceivedHandler;
474 // A pair of endpoint and request region.
475 typedef std::pair<Aws::String, Aws::String> EndpointRegionPair;
476 typedef Aws::Utils::Outcome<EndpointRegionPair, Aws::Client::AWSError<S3Errors>> ComputeEndpointOutcome;
477
478 //max expiration for presigned urls in s3 is 7 days.
479 static const unsigned MAX_EXPIRATION_SECONDS = 7 * 24 * 60 * 60;
480
481 /**
482 * <p/>
483 */
484 enum class US_EAST_1_REGIONAL_ENDPOINT_OPTION
485 {
486 NOT_SET,
487 LEGACY, //stands for using global endpoint for us-east-1,
488 REGIONAL //stands for using regional endpoint for us-east-1
489 };
490 class AWS_S3_API S3Client : public Aws::Client::AWSXMLClient
491 {
492 public:
493 typedef Aws::Client::AWSXMLClient BASECLASS;
494
495 /**
496 * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
497 * is not specified, it will be initialized to default values.
498 */
499 S3Client(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration(), Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy signPayloads = Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, bool useVirtualAddressing = true, Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION USEast1RegionalEndPointOption = Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION::NOT_SET);
500
501 /**
502 * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
503 * is not specified, it will be initialized to default values.
504 */
505 S3Client(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration(), Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy signPayloads = Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, bool useVirtualAddressing = true, Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION USEast1RegionalEndPointOption = Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION::NOT_SET);
506
507 /**
508 * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
509 * the default http client factory will be used
510 */
511 S3Client(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider>& credentialsProvider,
512 const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration(), Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy signPayloads = Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, bool useVirtualAddressing = true, Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION USEast1RegionalEndPointOption = Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION::NOT_SET);
513
514 virtual ~S3Client();
515
516 inline virtual const char* GetServiceClientName() const override { return "S3"; }
517
518
519 /**
520 * <p>This operation aborts a multipart upload. After a multipart upload is
521 * aborted, no additional parts can be uploaded using that upload ID. The storage
522 * consumed by any previously uploaded parts will be freed. However, if any part
523 * uploads are currently in progress, those part uploads might or might not
524 * succeed. As a result, it might be necessary to abort a given multipart upload
525 * multiple times in order to completely free all storage consumed by all parts.
526 * </p> <p>To verify that all parts have been removed, so you don't get charged for
527 * the part storage, you should call the <a>ListParts</a> operation and ensure that
528 * the parts list is empty.</p> <p>For information about permissions required to
529 * use the multipart upload API, see <a
530 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
531 * Upload API and Permissions</a>.</p> <p>The following operations are related to
532 * <code>AbortMultipartUpload</code>:</p> <ul> <li> <p>
533 * <a>CreateMultipartUpload</a> </p> </li> <li> <p> <a>UploadPart</a> </p> </li>
534 * <li> <p> <a>CompleteMultipartUpload</a> </p> </li> <li> <p> <a>ListParts</a>
535 * </p> </li> <li> <p> <a>ListMultipartUploads</a> </p> </li> </ul><p><h3>See
536 * Also:</h3> <a
537 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AbortMultipartUpload">AWS
538 * API Reference</a></p>
539 */
540 virtual Model::AbortMultipartUploadOutcome AbortMultipartUpload(const Model::AbortMultipartUploadRequest& request) const;
541
542 /**
543 * <p>This operation aborts a multipart upload. After a multipart upload is
544 * aborted, no additional parts can be uploaded using that upload ID. The storage
545 * consumed by any previously uploaded parts will be freed. However, if any part
546 * uploads are currently in progress, those part uploads might or might not
547 * succeed. As a result, it might be necessary to abort a given multipart upload
548 * multiple times in order to completely free all storage consumed by all parts.
549 * </p> <p>To verify that all parts have been removed, so you don't get charged for
550 * the part storage, you should call the <a>ListParts</a> operation and ensure that
551 * the parts list is empty.</p> <p>For information about permissions required to
552 * use the multipart upload API, see <a
553 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
554 * Upload API and Permissions</a>.</p> <p>The following operations are related to
555 * <code>AbortMultipartUpload</code>:</p> <ul> <li> <p>
556 * <a>CreateMultipartUpload</a> </p> </li> <li> <p> <a>UploadPart</a> </p> </li>
557 * <li> <p> <a>CompleteMultipartUpload</a> </p> </li> <li> <p> <a>ListParts</a>
558 * </p> </li> <li> <p> <a>ListMultipartUploads</a> </p> </li> </ul><p><h3>See
559 * Also:</h3> <a
560 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AbortMultipartUpload">AWS
561 * API Reference</a></p>
562 *
563 * returns a future to the operation so that it can be executed in parallel to other requests.
564 */
565 virtual Model::AbortMultipartUploadOutcomeCallable AbortMultipartUploadCallable(const Model::AbortMultipartUploadRequest& request) const;
566
567 /**
568 * <p>This operation aborts a multipart upload. After a multipart upload is
569 * aborted, no additional parts can be uploaded using that upload ID. The storage
570 * consumed by any previously uploaded parts will be freed. However, if any part
571 * uploads are currently in progress, those part uploads might or might not
572 * succeed. As a result, it might be necessary to abort a given multipart upload
573 * multiple times in order to completely free all storage consumed by all parts.
574 * </p> <p>To verify that all parts have been removed, so you don't get charged for
575 * the part storage, you should call the <a>ListParts</a> operation and ensure that
576 * the parts list is empty.</p> <p>For information about permissions required to
577 * use the multipart upload API, see <a
578 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
579 * Upload API and Permissions</a>.</p> <p>The following operations are related to
580 * <code>AbortMultipartUpload</code>:</p> <ul> <li> <p>
581 * <a>CreateMultipartUpload</a> </p> </li> <li> <p> <a>UploadPart</a> </p> </li>
582 * <li> <p> <a>CompleteMultipartUpload</a> </p> </li> <li> <p> <a>ListParts</a>
583 * </p> </li> <li> <p> <a>ListMultipartUploads</a> </p> </li> </ul><p><h3>See
584 * Also:</h3> <a
585 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AbortMultipartUpload">AWS
586 * API Reference</a></p>
587 *
588 * Queues the request into a thread executor and triggers associated callback when operation has finished.
589 */
590 virtual void AbortMultipartUploadAsync(const Model::AbortMultipartUploadRequest& request, const AbortMultipartUploadResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
591
592 /**
593 * <p>Completes a multipart upload by assembling previously uploaded parts.</p>
594 * <p>You first initiate the multipart upload and then upload all parts using the
595 * <a>UploadPart</a> operation. After successfully uploading all relevant parts of
596 * an upload, you call this operation to complete the upload. Upon receiving this
597 * request, Amazon S3 concatenates all the parts in ascending order by part number
598 * to create a new object. In the Complete Multipart Upload request, you must
599 * provide the parts list. You must ensure that the parts list is complete. This
600 * operation concatenates the parts that you provide in the list. For each part in
601 * the list, you must provide the part number and the <code>ETag</code> value,
602 * returned after that part was uploaded.</p> <p>Processing of a Complete Multipart
603 * Upload request could take several minutes to complete. After Amazon S3 begins
604 * processing the request, it sends an HTTP response header that specifies a 200 OK
605 * response. While processing is in progress, Amazon S3 periodically sends white
606 * space characters to keep the connection from timing out. Because a request could
607 * fail after the initial 200 OK response has been sent, it is important that you
608 * check the response body to determine whether the request succeeded.</p> <p>Note
609 * that if <code>CompleteMultipartUpload</code> fails, applications should be
610 * prepared to retry the failed requests. For more information, see <a
611 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ErrorBestPractices.html">Amazon
612 * S3 Error Best Practices</a>.</p> <p>For more information about multipart
613 * uploads, see <a
614 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html">Uploading
615 * Objects Using Multipart Upload</a>.</p> <p>For information about permissions
616 * required to use the multipart upload API, see <a
617 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
618 * Upload API and Permissions</a>.</p> <p> <code>GetBucketLifecycle</code> has the
619 * following special errors:</p> <ul> <li> <p>Error code:
620 * <code>EntityTooSmall</code> </p> <ul> <li> <p>Description: Your proposed upload
621 * is smaller than the minimum allowed object size. Each part must be at least 5 MB
622 * in size, except the last part.</p> </li> <li> <p>400 Bad Request</p> </li> </ul>
623 * </li> <li> <p>Error code: <code>InvalidPart</code> </p> <ul> <li>
624 * <p>Description: One or more of the specified parts could not be found. The part
625 * might not have been uploaded, or the specified entity tag might not have matched
626 * the part's entity tag.</p> </li> <li> <p>400 Bad Request</p> </li> </ul> </li>
627 * <li> <p>Error code: <code>InvalidPartOrder</code> </p> <ul> <li> <p>Description:
628 * The list of parts was not in ascending order. The parts list must be specified
629 * in order by part number.</p> </li> <li> <p>400 Bad Request</p> </li> </ul> </li>
630 * <li> <p>Error code: <code>NoSuchUpload</code> </p> <ul> <li> <p>Description: The
631 * specified multipart upload does not exist. The upload ID might be invalid, or
632 * the multipart upload might have been aborted or completed.</p> </li> <li> <p>404
633 * Not Found</p> </li> </ul> </li> </ul> <p>The following operations are related to
634 * <code>DeleteBucketMetricsConfiguration</code>:</p> <ul> <li> <p>
635 * <a>CreateMultipartUpload</a> </p> </li> <li> <p> <a>UploadPart</a> </p> </li>
636 * <li> <p> <a>AbortMultipartUpload</a> </p> </li> <li> <p> <a>ListParts</a> </p>
637 * </li> <li> <p> <a>ListMultipartUploads</a> </p> </li> </ul><p><h3>See Also:</h3>
638 * <a
639 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CompleteMultipartUpload">AWS
640 * API Reference</a></p>
641 */
642 virtual Model::CompleteMultipartUploadOutcome CompleteMultipartUpload(const Model::CompleteMultipartUploadRequest& request) const;
643
644 /**
645 * <p>Completes a multipart upload by assembling previously uploaded parts.</p>
646 * <p>You first initiate the multipart upload and then upload all parts using the
647 * <a>UploadPart</a> operation. After successfully uploading all relevant parts of
648 * an upload, you call this operation to complete the upload. Upon receiving this
649 * request, Amazon S3 concatenates all the parts in ascending order by part number
650 * to create a new object. In the Complete Multipart Upload request, you must
651 * provide the parts list. You must ensure that the parts list is complete. This
652 * operation concatenates the parts that you provide in the list. For each part in
653 * the list, you must provide the part number and the <code>ETag</code> value,
654 * returned after that part was uploaded.</p> <p>Processing of a Complete Multipart
655 * Upload request could take several minutes to complete. After Amazon S3 begins
656 * processing the request, it sends an HTTP response header that specifies a 200 OK
657 * response. While processing is in progress, Amazon S3 periodically sends white
658 * space characters to keep the connection from timing out. Because a request could
659 * fail after the initial 200 OK response has been sent, it is important that you
660 * check the response body to determine whether the request succeeded.</p> <p>Note
661 * that if <code>CompleteMultipartUpload</code> fails, applications should be
662 * prepared to retry the failed requests. For more information, see <a
663 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ErrorBestPractices.html">Amazon
664 * S3 Error Best Practices</a>.</p> <p>For more information about multipart
665 * uploads, see <a
666 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html">Uploading
667 * Objects Using Multipart Upload</a>.</p> <p>For information about permissions
668 * required to use the multipart upload API, see <a
669 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
670 * Upload API and Permissions</a>.</p> <p> <code>GetBucketLifecycle</code> has the
671 * following special errors:</p> <ul> <li> <p>Error code:
672 * <code>EntityTooSmall</code> </p> <ul> <li> <p>Description: Your proposed upload
673 * is smaller than the minimum allowed object size. Each part must be at least 5 MB
674 * in size, except the last part.</p> </li> <li> <p>400 Bad Request</p> </li> </ul>
675 * </li> <li> <p>Error code: <code>InvalidPart</code> </p> <ul> <li>
676 * <p>Description: One or more of the specified parts could not be found. The part
677 * might not have been uploaded, or the specified entity tag might not have matched
678 * the part's entity tag.</p> </li> <li> <p>400 Bad Request</p> </li> </ul> </li>
679 * <li> <p>Error code: <code>InvalidPartOrder</code> </p> <ul> <li> <p>Description:
680 * The list of parts was not in ascending order. The parts list must be specified
681 * in order by part number.</p> </li> <li> <p>400 Bad Request</p> </li> </ul> </li>
682 * <li> <p>Error code: <code>NoSuchUpload</code> </p> <ul> <li> <p>Description: The
683 * specified multipart upload does not exist. The upload ID might be invalid, or
684 * the multipart upload might have been aborted or completed.</p> </li> <li> <p>404
685 * Not Found</p> </li> </ul> </li> </ul> <p>The following operations are related to
686 * <code>DeleteBucketMetricsConfiguration</code>:</p> <ul> <li> <p>
687 * <a>CreateMultipartUpload</a> </p> </li> <li> <p> <a>UploadPart</a> </p> </li>
688 * <li> <p> <a>AbortMultipartUpload</a> </p> </li> <li> <p> <a>ListParts</a> </p>
689 * </li> <li> <p> <a>ListMultipartUploads</a> </p> </li> </ul><p><h3>See Also:</h3>
690 * <a
691 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CompleteMultipartUpload">AWS
692 * API Reference</a></p>
693 *
694 * returns a future to the operation so that it can be executed in parallel to other requests.
695 */
696 virtual Model::CompleteMultipartUploadOutcomeCallable CompleteMultipartUploadCallable(const Model::CompleteMultipartUploadRequest& request) const;
697
698 /**
699 * <p>Completes a multipart upload by assembling previously uploaded parts.</p>
700 * <p>You first initiate the multipart upload and then upload all parts using the
701 * <a>UploadPart</a> operation. After successfully uploading all relevant parts of
702 * an upload, you call this operation to complete the upload. Upon receiving this
703 * request, Amazon S3 concatenates all the parts in ascending order by part number
704 * to create a new object. In the Complete Multipart Upload request, you must
705 * provide the parts list. You must ensure that the parts list is complete. This
706 * operation concatenates the parts that you provide in the list. For each part in
707 * the list, you must provide the part number and the <code>ETag</code> value,
708 * returned after that part was uploaded.</p> <p>Processing of a Complete Multipart
709 * Upload request could take several minutes to complete. After Amazon S3 begins
710 * processing the request, it sends an HTTP response header that specifies a 200 OK
711 * response. While processing is in progress, Amazon S3 periodically sends white
712 * space characters to keep the connection from timing out. Because a request could
713 * fail after the initial 200 OK response has been sent, it is important that you
714 * check the response body to determine whether the request succeeded.</p> <p>Note
715 * that if <code>CompleteMultipartUpload</code> fails, applications should be
716 * prepared to retry the failed requests. For more information, see <a
717 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ErrorBestPractices.html">Amazon
718 * S3 Error Best Practices</a>.</p> <p>For more information about multipart
719 * uploads, see <a
720 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html">Uploading
721 * Objects Using Multipart Upload</a>.</p> <p>For information about permissions
722 * required to use the multipart upload API, see <a
723 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
724 * Upload API and Permissions</a>.</p> <p> <code>GetBucketLifecycle</code> has the
725 * following special errors:</p> <ul> <li> <p>Error code:
726 * <code>EntityTooSmall</code> </p> <ul> <li> <p>Description: Your proposed upload
727 * is smaller than the minimum allowed object size. Each part must be at least 5 MB
728 * in size, except the last part.</p> </li> <li> <p>400 Bad Request</p> </li> </ul>
729 * </li> <li> <p>Error code: <code>InvalidPart</code> </p> <ul> <li>
730 * <p>Description: One or more of the specified parts could not be found. The part
731 * might not have been uploaded, or the specified entity tag might not have matched
732 * the part's entity tag.</p> </li> <li> <p>400 Bad Request</p> </li> </ul> </li>
733 * <li> <p>Error code: <code>InvalidPartOrder</code> </p> <ul> <li> <p>Description:
734 * The list of parts was not in ascending order. The parts list must be specified
735 * in order by part number.</p> </li> <li> <p>400 Bad Request</p> </li> </ul> </li>
736 * <li> <p>Error code: <code>NoSuchUpload</code> </p> <ul> <li> <p>Description: The
737 * specified multipart upload does not exist. The upload ID might be invalid, or
738 * the multipart upload might have been aborted or completed.</p> </li> <li> <p>404
739 * Not Found</p> </li> </ul> </li> </ul> <p>The following operations are related to
740 * <code>DeleteBucketMetricsConfiguration</code>:</p> <ul> <li> <p>
741 * <a>CreateMultipartUpload</a> </p> </li> <li> <p> <a>UploadPart</a> </p> </li>
742 * <li> <p> <a>AbortMultipartUpload</a> </p> </li> <li> <p> <a>ListParts</a> </p>
743 * </li> <li> <p> <a>ListMultipartUploads</a> </p> </li> </ul><p><h3>See Also:</h3>
744 * <a
745 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CompleteMultipartUpload">AWS
746 * API Reference</a></p>
747 *
748 * Queues the request into a thread executor and triggers associated callback when operation has finished.
749 */
750 virtual void CompleteMultipartUploadAsync(const Model::CompleteMultipartUploadRequest& request, const CompleteMultipartUploadResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
751
752 /**
753 * <p>Creates a copy of an object that is already stored in Amazon S3.</p> <note>
754 * <p>You can store individual objects of up to 5 TB in Amazon S3. You create a
755 * copy of your object up to 5 GB in size in a single atomic operation using this
756 * API. However, for copying an object greater than 5 GB, you must use the
757 * multipart upload Upload Part - Copy API. For more information, see <a
758 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjctsUsingRESTMPUapi.html">Copy
759 * Object Using the REST Multipart Upload API</a>.</p> </note> <p>When copying an
760 * object, you can preserve all metadata (default) or specify new metadata.
761 * However, the ACL is not preserved and is set to private for the user making the
762 * request. To override the default ACL setting, specify a new ACL when generating
763 * a copy request. For more information, see <a
764 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using
765 * ACLs</a>.</p> <important> <p>Amazon S3 transfer acceleration does not support
766 * cross-region copies. If you request a cross-region copy using a transfer
767 * acceleration endpoint, you get a 400 <code>Bad Request</code> error. For more
768 * information about transfer acceleration, see <a
769 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html">Transfer
770 * Acceleration</a>.</p> </important> <p>All copy requests must be authenticated.
771 * Additionally, you must have <i>read</i> access to the source object and
772 * <i>write</i> access to the destination bucket. For more information, see <a
773 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
774 * Authentication</a>. Both the Region that you want to copy the object from and
775 * the Region that you want to copy the object to must be enabled for your
776 * account.</p> <p>To only copy an object under certain conditions, such as whether
777 * the <code>Etag</code> matches or whether the object was modified before or after
778 * a specified date, use the request parameters
779 * <code>x-amz-copy-source-if-match</code>,
780 * <code>x-amz-copy-source-if-none-match</code>,
781 * <code>x-amz-copy-source-if-unmodified-since</code>, or <code>
782 * x-amz-copy-source-if-modified-since</code>.</p> <note> <p>All headers with the
783 * <code>x-amz-</code> prefix, including <code>x-amz-copy-source</code>, must be
784 * signed.</p> </note> <p>You can use this operation to change the storage class of
785 * an object that is already stored in Amazon S3 using the
786 * <code>StorageClass</code> parameter. For more information, see <a
787 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
788 * Classes</a>.</p> <p>The source object that you are copying can be encrypted or
789 * unencrypted. If the source object is encrypted, it can be encrypted by
790 * server-side encryption using AWS managed encryption keys or by using a
791 * customer-provided encryption key. When copying an object, you can request that
792 * Amazon S3 encrypt the target object by using either the AWS managed encryption
793 * keys or by using your own encryption key. You can do this regardless of the form
794 * of server-side encryption that was used to encrypt the source, or even if the
795 * source object was not encrypted. For more information about server-side
796 * encryption, see <a
797 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">Using
798 * Server-Side Encryption</a>.</p> <p>A copy request might return an error when
799 * Amazon S3 receives the copy request or while Amazon S3 is copying the files. If
800 * the error occurs before the copy operation starts, you receive a standard Amazon
801 * S3 error. If the error occurs during the copy operation, the error response is
802 * embedded in the <code>200 OK</code> response. This means that a <code>200
803 * OK</code> response can contain either a success or an error. Design your
804 * application to parse the contents of the response and handle it
805 * appropriately.</p> <p>If the copy is successful, you receive a response with
806 * information about the copied object.</p> <note> <p>If the request is an HTTP 1.1
807 * request, the response is chunk encoded. If it were not, it would not contain the
808 * content-length, and you would need to read the entire body.</p> </note>
809 * <p>Consider the following when using request headers:</p> <ul> <li> <p>
810 * Consideration 1 – If both the <code>x-amz-copy-source-if-match</code> and
811 * <code>x-amz-copy-source-if-unmodified-since</code> headers are present in the
812 * request and evaluate as follows, Amazon S3 returns 200 OK and copies the
813 * data:</p> <ul> <li> <p> <code>x-amz-copy-source-if-match</code> condition
814 * evaluates to true</p> </li> <li> <p>
815 * <code>x-amz-copy-source-if-unmodified-since</code> condition evaluates to
816 * false</p> </li> </ul> </li> <li> <p> Consideration 2 – If both of the
817 * <code>x-amz-copy-source-if-none-match</code> and
818 * <code>x-amz-copy-source-if-modified-since</code> headers are present in the
819 * request and evaluate as follows, Amazon S3 returns the <code>412 Precondition
820 * Failed</code> response code:</p> <ul> <li> <p>
821 * <code>x-amz-copy-source-if-none-match</code> condition evaluates to false</p>
822 * </li> <li> <p> <code>x-amz-copy-source-if-modified-since</code> condition
823 * evaluates to true</p> </li> </ul> </li> </ul> <p>The copy request charge is
824 * based on the storage class and Region you specify for the destination object.
825 * For pricing information, see <a href="https://aws.amazon.com/s3/pricing/">Amazon
826 * S3 Pricing</a>.</p> <p>Following are other considerations when using
827 * <code>CopyObject</code>:</p> <dl> <dt>Versioning</dt> <dd> <p>By default,
828 * <code>x-amz-copy-source</code> identifies the current version of an object to
829 * copy. (If the current version is a delete marker, Amazon S3 behaves as if the
830 * object was deleted.) To copy a different version, use the <code>versionId</code>
831 * subresource.</p> <p>If you enable versioning on the target bucket, Amazon S3
832 * generates a unique version ID for the object being copied. This version ID is
833 * different from the version ID of the source object. Amazon S3 returns the
834 * version ID of the copied object in the <code>x-amz-version-id</code> response
835 * header in the response.</p> <p>If you do not enable versioning or suspend it on
836 * the target bucket, the version ID that Amazon S3 generates is always null.</p>
837 * <p>If the source object's storage class is GLACIER, you must restore a copy of
838 * this object before you can use it as a source object for the copy operation. For
839 * more information, see .</p> </dd> <dt>Access Permissions</dt> <dd> <p>When
840 * copying an object, you can optionally specify the accounts or groups that should
841 * be granted specific permissions on the new object. There are two ways to grant
842 * the permissions using the request headers:</p> <ul> <li> <p>Specify a canned ACL
843 * with the <code>x-amz-acl</code> request header. For more information, see <a
844 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
845 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly with the
846 * <code>x-amz-grant-read</code>, <code>x-amz-grant-read-acp</code>,
847 * <code>x-amz-grant-write-acp</code>, and <code>x-amz-grant-full-control</code>
848 * headers. These parameters map to the set of permissions that Amazon S3 supports
849 * in an ACL. For more information, see <a
850 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
851 * Control List (ACL) Overview</a>.</p> </li> </ul> <p>You can use either a canned
852 * ACL or specify access permissions explicitly. You cannot do both.</p> </dd>
853 * <dt>Server-Side- Encryption-Specific Request Headers</dt> <dd> <p>To encrypt the
854 * target object, you must provide the appropriate encryption-related request
855 * headers. The one you use depends on whether you want to use AWS managed
856 * encryption keys or provide your own encryption key. </p> <ul> <li> <p>To encrypt
857 * the target object using server-side encryption with an AWS managed encryption
858 * key, provide the following request headers, as appropriate.</p> <ul> <li> <p>
859 * <code>x-amz-server-side​-encryption</code> </p> </li> <li> <p>
860 * <code>x-amz-server-side-encryption-aws-kms-key-id</code> </p> </li> <li> <p>
861 * <code>x-amz-server-side-encryption-context</code> </p> </li> </ul> <note> <p>If
862 * you specify <code>x-amz-server-side-encryption:aws:kms</code> but don't provide
863 * <code>x-amz-server-side- encryption-aws-kms-key-id</code>, Amazon S3 uses the
864 * AWS managed customer master key (CMK) in AWS KMS to protect the data.</p>
865 * </note> <important> <p>All GET and PUT requests for an object protected by AWS
866 * KMS fail if you don't make them with SSL or by using SigV4.</p> </important>
867 * <p>For more information about server-side encryption with CMKs stored in AWS KMS
868 * (SSE-KMS), see <a
869 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
870 * Data Using Server-Side Encryption with CMKs stored in KMS</a>.</p> </li> <li>
871 * <p>To encrypt the target object using server-side encryption with an encryption
872 * key that you provide, use the following headers.</p> <ul> <li>
873 * <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
874 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
875 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> </li> <li>
876 * <p>If the source object is encrypted using server-side encryption with
877 * customer-provided encryption keys, you must use the following headers.</p> <ul>
878 * <li> <p>x-amz-copy-source​-server-side​-encryption​-customer-algorithm</p> </li>
879 * <li> <p>x-amz-copy-source​-server-side​-encryption​-customer-key</p> </li> <li>
880 * <p>x-amz-copy-source-​server-side​-encryption​-customer-key-MD5</p> </li> </ul>
881 * <p>For more information about server-side encryption with CMKs stored in AWS KMS
882 * (SSE-KMS), see <a
883 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
884 * Data Using Server-Side Encryption with CMKs stored in Amazon KMS</a>.</p> </li>
885 * </ul> </dd> <dt>Access-Control-List (ACL)-Specific Request Headers</dt> <dd>
886 * <p>You also can use the following access control–related headers with this
887 * operation. By default, all objects are private. Only the owner has full access
888 * control. When adding a new object, you can grant permissions to individual AWS
889 * accounts or to predefined groups defined by Amazon S3. These permissions are
890 * then added to the access control list (ACL) on the object. For more information,
891 * see <a
892 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using
893 * ACLs</a>. With this operation, you can grant access permissions using one of the
894 * following two methods:</p> <ul> <li> <p>Specify a canned ACL
895 * (<code>x-amz-acl</code>) — Amazon S3 supports a set of predefined ACLs, known as
896 * <i>canned ACLs</i>. Each canned ACL has a predefined set of grantees and
897 * permissions. For more information, see <a
898 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
899 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly — To explicitly
900 * grant access permissions to specific AWS accounts or groups, use the following
901 * headers. Each header maps to specific permissions that Amazon S3 supports in an
902 * ACL. For more information, see <a
903 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
904 * Control List (ACL) Overview</a>. In the header, you specify a list of grantees
905 * who get the specific permission. To grant permissions explicitly, use:</p> <ul>
906 * <li> <p>x-amz-grant-read</p> </li> <li> <p>x-amz-grant-write</p> </li> <li>
907 * <p>x-amz-grant-read-acp</p> </li> <li> <p>x-amz-grant-write-acp</p> </li> <li>
908 * <p>x-amz-grant-full-control</p> </li> </ul> <p>You specify each grantee as a
909 * type=value pair, where the type is one of the following:</p> <ul> <li> <p>
910 * <code>emailAddress</code> – if the value specified is the email address of an
911 * AWS account</p> </li> <li> <p> <code>id</code> – if the value specified is the
912 * canonical user ID of an AWS account</p> </li> <li> <p> <code>uri</code> – if you
913 * are granting permissions to a predefined group</p> </li> </ul> <p>For example,
914 * the following <code>x-amz-grant-read</code> header grants the AWS accounts
915 * identified by email addresses permissions to read object data and its
916 * metadata:</p> <p> <code>x-amz-grant-read: emailAddress="xyz@amazon.com",
917 * emailAddress="abc@amazon.com" </code> </p> </li> </ul> </dd> </dl> <p>The
918 * following operations are related to <code>CopyObject</code>:</p> <ul> <li> <p>
919 * <a>PutObject</a> </p> </li> <li> <p> <a>GetObject</a> </p> </li> </ul> <p>For
920 * more information, see <a
921 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectsExamples.html">Copying
922 * Objects</a>.</p><p><h3>See Also:</h3> <a
923 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyObject">AWS API
924 * Reference</a></p>
925 */
926 virtual Model::CopyObjectOutcome CopyObject(const Model::CopyObjectRequest& request) const;
927
928 /**
929 * <p>Creates a copy of an object that is already stored in Amazon S3.</p> <note>
930 * <p>You can store individual objects of up to 5 TB in Amazon S3. You create a
931 * copy of your object up to 5 GB in size in a single atomic operation using this
932 * API. However, for copying an object greater than 5 GB, you must use the
933 * multipart upload Upload Part - Copy API. For more information, see <a
934 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjctsUsingRESTMPUapi.html">Copy
935 * Object Using the REST Multipart Upload API</a>.</p> </note> <p>When copying an
936 * object, you can preserve all metadata (default) or specify new metadata.
937 * However, the ACL is not preserved and is set to private for the user making the
938 * request. To override the default ACL setting, specify a new ACL when generating
939 * a copy request. For more information, see <a
940 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using
941 * ACLs</a>.</p> <important> <p>Amazon S3 transfer acceleration does not support
942 * cross-region copies. If you request a cross-region copy using a transfer
943 * acceleration endpoint, you get a 400 <code>Bad Request</code> error. For more
944 * information about transfer acceleration, see <a
945 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html">Transfer
946 * Acceleration</a>.</p> </important> <p>All copy requests must be authenticated.
947 * Additionally, you must have <i>read</i> access to the source object and
948 * <i>write</i> access to the destination bucket. For more information, see <a
949 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
950 * Authentication</a>. Both the Region that you want to copy the object from and
951 * the Region that you want to copy the object to must be enabled for your
952 * account.</p> <p>To only copy an object under certain conditions, such as whether
953 * the <code>Etag</code> matches or whether the object was modified before or after
954 * a specified date, use the request parameters
955 * <code>x-amz-copy-source-if-match</code>,
956 * <code>x-amz-copy-source-if-none-match</code>,
957 * <code>x-amz-copy-source-if-unmodified-since</code>, or <code>
958 * x-amz-copy-source-if-modified-since</code>.</p> <note> <p>All headers with the
959 * <code>x-amz-</code> prefix, including <code>x-amz-copy-source</code>, must be
960 * signed.</p> </note> <p>You can use this operation to change the storage class of
961 * an object that is already stored in Amazon S3 using the
962 * <code>StorageClass</code> parameter. For more information, see <a
963 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
964 * Classes</a>.</p> <p>The source object that you are copying can be encrypted or
965 * unencrypted. If the source object is encrypted, it can be encrypted by
966 * server-side encryption using AWS managed encryption keys or by using a
967 * customer-provided encryption key. When copying an object, you can request that
968 * Amazon S3 encrypt the target object by using either the AWS managed encryption
969 * keys or by using your own encryption key. You can do this regardless of the form
970 * of server-side encryption that was used to encrypt the source, or even if the
971 * source object was not encrypted. For more information about server-side
972 * encryption, see <a
973 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">Using
974 * Server-Side Encryption</a>.</p> <p>A copy request might return an error when
975 * Amazon S3 receives the copy request or while Amazon S3 is copying the files. If
976 * the error occurs before the copy operation starts, you receive a standard Amazon
977 * S3 error. If the error occurs during the copy operation, the error response is
978 * embedded in the <code>200 OK</code> response. This means that a <code>200
979 * OK</code> response can contain either a success or an error. Design your
980 * application to parse the contents of the response and handle it
981 * appropriately.</p> <p>If the copy is successful, you receive a response with
982 * information about the copied object.</p> <note> <p>If the request is an HTTP 1.1
983 * request, the response is chunk encoded. If it were not, it would not contain the
984 * content-length, and you would need to read the entire body.</p> </note>
985 * <p>Consider the following when using request headers:</p> <ul> <li> <p>
986 * Consideration 1 – If both the <code>x-amz-copy-source-if-match</code> and
987 * <code>x-amz-copy-source-if-unmodified-since</code> headers are present in the
988 * request and evaluate as follows, Amazon S3 returns 200 OK and copies the
989 * data:</p> <ul> <li> <p> <code>x-amz-copy-source-if-match</code> condition
990 * evaluates to true</p> </li> <li> <p>
991 * <code>x-amz-copy-source-if-unmodified-since</code> condition evaluates to
992 * false</p> </li> </ul> </li> <li> <p> Consideration 2 – If both of the
993 * <code>x-amz-copy-source-if-none-match</code> and
994 * <code>x-amz-copy-source-if-modified-since</code> headers are present in the
995 * request and evaluate as follows, Amazon S3 returns the <code>412 Precondition
996 * Failed</code> response code:</p> <ul> <li> <p>
997 * <code>x-amz-copy-source-if-none-match</code> condition evaluates to false</p>
998 * </li> <li> <p> <code>x-amz-copy-source-if-modified-since</code> condition
999 * evaluates to true</p> </li> </ul> </li> </ul> <p>The copy request charge is
1000 * based on the storage class and Region you specify for the destination object.
1001 * For pricing information, see <a href="https://aws.amazon.com/s3/pricing/">Amazon
1002 * S3 Pricing</a>.</p> <p>Following are other considerations when using
1003 * <code>CopyObject</code>:</p> <dl> <dt>Versioning</dt> <dd> <p>By default,
1004 * <code>x-amz-copy-source</code> identifies the current version of an object to
1005 * copy. (If the current version is a delete marker, Amazon S3 behaves as if the
1006 * object was deleted.) To copy a different version, use the <code>versionId</code>
1007 * subresource.</p> <p>If you enable versioning on the target bucket, Amazon S3
1008 * generates a unique version ID for the object being copied. This version ID is
1009 * different from the version ID of the source object. Amazon S3 returns the
1010 * version ID of the copied object in the <code>x-amz-version-id</code> response
1011 * header in the response.</p> <p>If you do not enable versioning or suspend it on
1012 * the target bucket, the version ID that Amazon S3 generates is always null.</p>
1013 * <p>If the source object's storage class is GLACIER, you must restore a copy of
1014 * this object before you can use it as a source object for the copy operation. For
1015 * more information, see .</p> </dd> <dt>Access Permissions</dt> <dd> <p>When
1016 * copying an object, you can optionally specify the accounts or groups that should
1017 * be granted specific permissions on the new object. There are two ways to grant
1018 * the permissions using the request headers:</p> <ul> <li> <p>Specify a canned ACL
1019 * with the <code>x-amz-acl</code> request header. For more information, see <a
1020 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
1021 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly with the
1022 * <code>x-amz-grant-read</code>, <code>x-amz-grant-read-acp</code>,
1023 * <code>x-amz-grant-write-acp</code>, and <code>x-amz-grant-full-control</code>
1024 * headers. These parameters map to the set of permissions that Amazon S3 supports
1025 * in an ACL. For more information, see <a
1026 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
1027 * Control List (ACL) Overview</a>.</p> </li> </ul> <p>You can use either a canned
1028 * ACL or specify access permissions explicitly. You cannot do both.</p> </dd>
1029 * <dt>Server-Side- Encryption-Specific Request Headers</dt> <dd> <p>To encrypt the
1030 * target object, you must provide the appropriate encryption-related request
1031 * headers. The one you use depends on whether you want to use AWS managed
1032 * encryption keys or provide your own encryption key. </p> <ul> <li> <p>To encrypt
1033 * the target object using server-side encryption with an AWS managed encryption
1034 * key, provide the following request headers, as appropriate.</p> <ul> <li> <p>
1035 * <code>x-amz-server-side​-encryption</code> </p> </li> <li> <p>
1036 * <code>x-amz-server-side-encryption-aws-kms-key-id</code> </p> </li> <li> <p>
1037 * <code>x-amz-server-side-encryption-context</code> </p> </li> </ul> <note> <p>If
1038 * you specify <code>x-amz-server-side-encryption:aws:kms</code> but don't provide
1039 * <code>x-amz-server-side- encryption-aws-kms-key-id</code>, Amazon S3 uses the
1040 * AWS managed customer master key (CMK) in AWS KMS to protect the data.</p>
1041 * </note> <important> <p>All GET and PUT requests for an object protected by AWS
1042 * KMS fail if you don't make them with SSL or by using SigV4.</p> </important>
1043 * <p>For more information about server-side encryption with CMKs stored in AWS KMS
1044 * (SSE-KMS), see <a
1045 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
1046 * Data Using Server-Side Encryption with CMKs stored in KMS</a>.</p> </li> <li>
1047 * <p>To encrypt the target object using server-side encryption with an encryption
1048 * key that you provide, use the following headers.</p> <ul> <li>
1049 * <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
1050 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
1051 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> </li> <li>
1052 * <p>If the source object is encrypted using server-side encryption with
1053 * customer-provided encryption keys, you must use the following headers.</p> <ul>
1054 * <li> <p>x-amz-copy-source​-server-side​-encryption​-customer-algorithm</p> </li>
1055 * <li> <p>x-amz-copy-source​-server-side​-encryption​-customer-key</p> </li> <li>
1056 * <p>x-amz-copy-source-​server-side​-encryption​-customer-key-MD5</p> </li> </ul>
1057 * <p>For more information about server-side encryption with CMKs stored in AWS KMS
1058 * (SSE-KMS), see <a
1059 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
1060 * Data Using Server-Side Encryption with CMKs stored in Amazon KMS</a>.</p> </li>
1061 * </ul> </dd> <dt>Access-Control-List (ACL)-Specific Request Headers</dt> <dd>
1062 * <p>You also can use the following access control–related headers with this
1063 * operation. By default, all objects are private. Only the owner has full access
1064 * control. When adding a new object, you can grant permissions to individual AWS
1065 * accounts or to predefined groups defined by Amazon S3. These permissions are
1066 * then added to the access control list (ACL) on the object. For more information,
1067 * see <a
1068 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using
1069 * ACLs</a>. With this operation, you can grant access permissions using one of the
1070 * following two methods:</p> <ul> <li> <p>Specify a canned ACL
1071 * (<code>x-amz-acl</code>) — Amazon S3 supports a set of predefined ACLs, known as
1072 * <i>canned ACLs</i>. Each canned ACL has a predefined set of grantees and
1073 * permissions. For more information, see <a
1074 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
1075 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly — To explicitly
1076 * grant access permissions to specific AWS accounts or groups, use the following
1077 * headers. Each header maps to specific permissions that Amazon S3 supports in an
1078 * ACL. For more information, see <a
1079 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
1080 * Control List (ACL) Overview</a>. In the header, you specify a list of grantees
1081 * who get the specific permission. To grant permissions explicitly, use:</p> <ul>
1082 * <li> <p>x-amz-grant-read</p> </li> <li> <p>x-amz-grant-write</p> </li> <li>
1083 * <p>x-amz-grant-read-acp</p> </li> <li> <p>x-amz-grant-write-acp</p> </li> <li>
1084 * <p>x-amz-grant-full-control</p> </li> </ul> <p>You specify each grantee as a
1085 * type=value pair, where the type is one of the following:</p> <ul> <li> <p>
1086 * <code>emailAddress</code> – if the value specified is the email address of an
1087 * AWS account</p> </li> <li> <p> <code>id</code> – if the value specified is the
1088 * canonical user ID of an AWS account</p> </li> <li> <p> <code>uri</code> – if you
1089 * are granting permissions to a predefined group</p> </li> </ul> <p>For example,
1090 * the following <code>x-amz-grant-read</code> header grants the AWS accounts
1091 * identified by email addresses permissions to read object data and its
1092 * metadata:</p> <p> <code>x-amz-grant-read: emailAddress="xyz@amazon.com",
1093 * emailAddress="abc@amazon.com" </code> </p> </li> </ul> </dd> </dl> <p>The
1094 * following operations are related to <code>CopyObject</code>:</p> <ul> <li> <p>
1095 * <a>PutObject</a> </p> </li> <li> <p> <a>GetObject</a> </p> </li> </ul> <p>For
1096 * more information, see <a
1097 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectsExamples.html">Copying
1098 * Objects</a>.</p><p><h3>See Also:</h3> <a
1099 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyObject">AWS API
1100 * Reference</a></p>
1101 *
1102 * returns a future to the operation so that it can be executed in parallel to other requests.
1103 */
1104 virtual Model::CopyObjectOutcomeCallable CopyObjectCallable(const Model::CopyObjectRequest& request) const;
1105
1106 /**
1107 * <p>Creates a copy of an object that is already stored in Amazon S3.</p> <note>
1108 * <p>You can store individual objects of up to 5 TB in Amazon S3. You create a
1109 * copy of your object up to 5 GB in size in a single atomic operation using this
1110 * API. However, for copying an object greater than 5 GB, you must use the
1111 * multipart upload Upload Part - Copy API. For more information, see <a
1112 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjctsUsingRESTMPUapi.html">Copy
1113 * Object Using the REST Multipart Upload API</a>.</p> </note> <p>When copying an
1114 * object, you can preserve all metadata (default) or specify new metadata.
1115 * However, the ACL is not preserved and is set to private for the user making the
1116 * request. To override the default ACL setting, specify a new ACL when generating
1117 * a copy request. For more information, see <a
1118 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using
1119 * ACLs</a>.</p> <important> <p>Amazon S3 transfer acceleration does not support
1120 * cross-region copies. If you request a cross-region copy using a transfer
1121 * acceleration endpoint, you get a 400 <code>Bad Request</code> error. For more
1122 * information about transfer acceleration, see <a
1123 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html">Transfer
1124 * Acceleration</a>.</p> </important> <p>All copy requests must be authenticated.
1125 * Additionally, you must have <i>read</i> access to the source object and
1126 * <i>write</i> access to the destination bucket. For more information, see <a
1127 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
1128 * Authentication</a>. Both the Region that you want to copy the object from and
1129 * the Region that you want to copy the object to must be enabled for your
1130 * account.</p> <p>To only copy an object under certain conditions, such as whether
1131 * the <code>Etag</code> matches or whether the object was modified before or after
1132 * a specified date, use the request parameters
1133 * <code>x-amz-copy-source-if-match</code>,
1134 * <code>x-amz-copy-source-if-none-match</code>,
1135 * <code>x-amz-copy-source-if-unmodified-since</code>, or <code>
1136 * x-amz-copy-source-if-modified-since</code>.</p> <note> <p>All headers with the
1137 * <code>x-amz-</code> prefix, including <code>x-amz-copy-source</code>, must be
1138 * signed.</p> </note> <p>You can use this operation to change the storage class of
1139 * an object that is already stored in Amazon S3 using the
1140 * <code>StorageClass</code> parameter. For more information, see <a
1141 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
1142 * Classes</a>.</p> <p>The source object that you are copying can be encrypted or
1143 * unencrypted. If the source object is encrypted, it can be encrypted by
1144 * server-side encryption using AWS managed encryption keys or by using a
1145 * customer-provided encryption key. When copying an object, you can request that
1146 * Amazon S3 encrypt the target object by using either the AWS managed encryption
1147 * keys or by using your own encryption key. You can do this regardless of the form
1148 * of server-side encryption that was used to encrypt the source, or even if the
1149 * source object was not encrypted. For more information about server-side
1150 * encryption, see <a
1151 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">Using
1152 * Server-Side Encryption</a>.</p> <p>A copy request might return an error when
1153 * Amazon S3 receives the copy request or while Amazon S3 is copying the files. If
1154 * the error occurs before the copy operation starts, you receive a standard Amazon
1155 * S3 error. If the error occurs during the copy operation, the error response is
1156 * embedded in the <code>200 OK</code> response. This means that a <code>200
1157 * OK</code> response can contain either a success or an error. Design your
1158 * application to parse the contents of the response and handle it
1159 * appropriately.</p> <p>If the copy is successful, you receive a response with
1160 * information about the copied object.</p> <note> <p>If the request is an HTTP 1.1
1161 * request, the response is chunk encoded. If it were not, it would not contain the
1162 * content-length, and you would need to read the entire body.</p> </note>
1163 * <p>Consider the following when using request headers:</p> <ul> <li> <p>
1164 * Consideration 1 – If both the <code>x-amz-copy-source-if-match</code> and
1165 * <code>x-amz-copy-source-if-unmodified-since</code> headers are present in the
1166 * request and evaluate as follows, Amazon S3 returns 200 OK and copies the
1167 * data:</p> <ul> <li> <p> <code>x-amz-copy-source-if-match</code> condition
1168 * evaluates to true</p> </li> <li> <p>
1169 * <code>x-amz-copy-source-if-unmodified-since</code> condition evaluates to
1170 * false</p> </li> </ul> </li> <li> <p> Consideration 2 – If both of the
1171 * <code>x-amz-copy-source-if-none-match</code> and
1172 * <code>x-amz-copy-source-if-modified-since</code> headers are present in the
1173 * request and evaluate as follows, Amazon S3 returns the <code>412 Precondition
1174 * Failed</code> response code:</p> <ul> <li> <p>
1175 * <code>x-amz-copy-source-if-none-match</code> condition evaluates to false</p>
1176 * </li> <li> <p> <code>x-amz-copy-source-if-modified-since</code> condition
1177 * evaluates to true</p> </li> </ul> </li> </ul> <p>The copy request charge is
1178 * based on the storage class and Region you specify for the destination object.
1179 * For pricing information, see <a href="https://aws.amazon.com/s3/pricing/">Amazon
1180 * S3 Pricing</a>.</p> <p>Following are other considerations when using
1181 * <code>CopyObject</code>:</p> <dl> <dt>Versioning</dt> <dd> <p>By default,
1182 * <code>x-amz-copy-source</code> identifies the current version of an object to
1183 * copy. (If the current version is a delete marker, Amazon S3 behaves as if the
1184 * object was deleted.) To copy a different version, use the <code>versionId</code>
1185 * subresource.</p> <p>If you enable versioning on the target bucket, Amazon S3
1186 * generates a unique version ID for the object being copied. This version ID is
1187 * different from the version ID of the source object. Amazon S3 returns the
1188 * version ID of the copied object in the <code>x-amz-version-id</code> response
1189 * header in the response.</p> <p>If you do not enable versioning or suspend it on
1190 * the target bucket, the version ID that Amazon S3 generates is always null.</p>
1191 * <p>If the source object's storage class is GLACIER, you must restore a copy of
1192 * this object before you can use it as a source object for the copy operation. For
1193 * more information, see .</p> </dd> <dt>Access Permissions</dt> <dd> <p>When
1194 * copying an object, you can optionally specify the accounts or groups that should
1195 * be granted specific permissions on the new object. There are two ways to grant
1196 * the permissions using the request headers:</p> <ul> <li> <p>Specify a canned ACL
1197 * with the <code>x-amz-acl</code> request header. For more information, see <a
1198 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
1199 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly with the
1200 * <code>x-amz-grant-read</code>, <code>x-amz-grant-read-acp</code>,
1201 * <code>x-amz-grant-write-acp</code>, and <code>x-amz-grant-full-control</code>
1202 * headers. These parameters map to the set of permissions that Amazon S3 supports
1203 * in an ACL. For more information, see <a
1204 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
1205 * Control List (ACL) Overview</a>.</p> </li> </ul> <p>You can use either a canned
1206 * ACL or specify access permissions explicitly. You cannot do both.</p> </dd>
1207 * <dt>Server-Side- Encryption-Specific Request Headers</dt> <dd> <p>To encrypt the
1208 * target object, you must provide the appropriate encryption-related request
1209 * headers. The one you use depends on whether you want to use AWS managed
1210 * encryption keys or provide your own encryption key. </p> <ul> <li> <p>To encrypt
1211 * the target object using server-side encryption with an AWS managed encryption
1212 * key, provide the following request headers, as appropriate.</p> <ul> <li> <p>
1213 * <code>x-amz-server-side​-encryption</code> </p> </li> <li> <p>
1214 * <code>x-amz-server-side-encryption-aws-kms-key-id</code> </p> </li> <li> <p>
1215 * <code>x-amz-server-side-encryption-context</code> </p> </li> </ul> <note> <p>If
1216 * you specify <code>x-amz-server-side-encryption:aws:kms</code> but don't provide
1217 * <code>x-amz-server-side- encryption-aws-kms-key-id</code>, Amazon S3 uses the
1218 * AWS managed customer master key (CMK) in AWS KMS to protect the data.</p>
1219 * </note> <important> <p>All GET and PUT requests for an object protected by AWS
1220 * KMS fail if you don't make them with SSL or by using SigV4.</p> </important>
1221 * <p>For more information about server-side encryption with CMKs stored in AWS KMS
1222 * (SSE-KMS), see <a
1223 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
1224 * Data Using Server-Side Encryption with CMKs stored in KMS</a>.</p> </li> <li>
1225 * <p>To encrypt the target object using server-side encryption with an encryption
1226 * key that you provide, use the following headers.</p> <ul> <li>
1227 * <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
1228 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
1229 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> </li> <li>
1230 * <p>If the source object is encrypted using server-side encryption with
1231 * customer-provided encryption keys, you must use the following headers.</p> <ul>
1232 * <li> <p>x-amz-copy-source​-server-side​-encryption​-customer-algorithm</p> </li>
1233 * <li> <p>x-amz-copy-source​-server-side​-encryption​-customer-key</p> </li> <li>
1234 * <p>x-amz-copy-source-​server-side​-encryption​-customer-key-MD5</p> </li> </ul>
1235 * <p>For more information about server-side encryption with CMKs stored in AWS KMS
1236 * (SSE-KMS), see <a
1237 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
1238 * Data Using Server-Side Encryption with CMKs stored in Amazon KMS</a>.</p> </li>
1239 * </ul> </dd> <dt>Access-Control-List (ACL)-Specific Request Headers</dt> <dd>
1240 * <p>You also can use the following access control–related headers with this
1241 * operation. By default, all objects are private. Only the owner has full access
1242 * control. When adding a new object, you can grant permissions to individual AWS
1243 * accounts or to predefined groups defined by Amazon S3. These permissions are
1244 * then added to the access control list (ACL) on the object. For more information,
1245 * see <a
1246 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using
1247 * ACLs</a>. With this operation, you can grant access permissions using one of the
1248 * following two methods:</p> <ul> <li> <p>Specify a canned ACL
1249 * (<code>x-amz-acl</code>) — Amazon S3 supports a set of predefined ACLs, known as
1250 * <i>canned ACLs</i>. Each canned ACL has a predefined set of grantees and
1251 * permissions. For more information, see <a
1252 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
1253 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly — To explicitly
1254 * grant access permissions to specific AWS accounts or groups, use the following
1255 * headers. Each header maps to specific permissions that Amazon S3 supports in an
1256 * ACL. For more information, see <a
1257 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
1258 * Control List (ACL) Overview</a>. In the header, you specify a list of grantees
1259 * who get the specific permission. To grant permissions explicitly, use:</p> <ul>
1260 * <li> <p>x-amz-grant-read</p> </li> <li> <p>x-amz-grant-write</p> </li> <li>
1261 * <p>x-amz-grant-read-acp</p> </li> <li> <p>x-amz-grant-write-acp</p> </li> <li>
1262 * <p>x-amz-grant-full-control</p> </li> </ul> <p>You specify each grantee as a
1263 * type=value pair, where the type is one of the following:</p> <ul> <li> <p>
1264 * <code>emailAddress</code> – if the value specified is the email address of an
1265 * AWS account</p> </li> <li> <p> <code>id</code> – if the value specified is the
1266 * canonical user ID of an AWS account</p> </li> <li> <p> <code>uri</code> – if you
1267 * are granting permissions to a predefined group</p> </li> </ul> <p>For example,
1268 * the following <code>x-amz-grant-read</code> header grants the AWS accounts
1269 * identified by email addresses permissions to read object data and its
1270 * metadata:</p> <p> <code>x-amz-grant-read: emailAddress="xyz@amazon.com",
1271 * emailAddress="abc@amazon.com" </code> </p> </li> </ul> </dd> </dl> <p>The
1272 * following operations are related to <code>CopyObject</code>:</p> <ul> <li> <p>
1273 * <a>PutObject</a> </p> </li> <li> <p> <a>GetObject</a> </p> </li> </ul> <p>For
1274 * more information, see <a
1275 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectsExamples.html">Copying
1276 * Objects</a>.</p><p><h3>See Also:</h3> <a
1277 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyObject">AWS API
1278 * Reference</a></p>
1279 *
1280 * Queues the request into a thread executor and triggers associated callback when operation has finished.
1281 */
1282 virtual void CopyObjectAsync(const Model::CopyObjectRequest& request, const CopyObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1283
1284 /**
1285 * <p>Creates a new bucket. To create a bucket, you must register with Amazon S3
1286 * and have a valid AWS Access Key ID to authenticate requests. Anonymous requests
1287 * are never allowed to create buckets. By creating the bucket, you become the
1288 * bucket owner.</p> <p>Not every string is an acceptable bucket name. For
1289 * information on bucket naming restrictions, see <a
1290 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html">Working
1291 * with Amazon S3 Buckets</a>.</p> <p>By default, the bucket is created in the US
1292 * East (N. Virginia) Region. You can optionally specify a Region in the request
1293 * body. You might choose a Region to optimize latency, minimize costs, or address
1294 * regulatory requirements. For example, if you reside in Europe, you will probably
1295 * find it advantageous to create buckets in the EU (Ireland) Region. For more
1296 * information, see <a
1297 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro">How
1298 * to Select a Region for Your Buckets</a>.</p> <note> <p>If you send your create
1299 * bucket request to the <code>s3.amazonaws.com</code> endpoint, the request goes
1300 * to the us-east-1 Region. Accordingly, the signature calculations in Signature
1301 * Version 4 must use us-east-1 as the Region, even if the location constraint in
1302 * the request specifies another Region where the bucket is to be created. If you
1303 * create a bucket in a Region other than US East (N. Virginia), your application
1304 * must be able to handle 307 redirect. For more information, see <a
1305 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html">Virtual
1306 * Hosting of Buckets</a>.</p> </note> <p>When creating a bucket using this
1307 * operation, you can optionally specify the accounts or groups that should be
1308 * granted specific permissions on the bucket. There are two ways to grant the
1309 * appropriate permissions using the request headers.</p> <ul> <li> <p>Specify a
1310 * canned ACL using the <code>x-amz-acl</code> request header. Amazon S3 supports a
1311 * set of predefined ACLs, known as <i>canned ACLs</i>. Each canned ACL has a
1312 * predefined set of grantees and permissions. For more information, see <a
1313 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
1314 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly using the
1315 * <code>x-amz-grant-read</code>, <code>x-amz-grant-write</code>,
1316 * <code>x-amz-grant-read-acp</code>, <code>x-amz-grant-write-acp</code>, and
1317 * <code>x-amz-grant-full-control</code> headers. These headers map to the set of
1318 * permissions Amazon S3 supports in an ACL. For more information, see <a
1319 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
1320 * Control List (ACL) Overview</a>.</p> <p>You specify each grantee as a type=value
1321 * pair, where the type is one of the following:</p> <ul> <li> <p>
1322 * <code>emailAddress</code> – if the value specified is the email address of an
1323 * AWS account</p> </li> <li> <p> <code>id</code> – if the value specified is the
1324 * canonical user ID of an AWS account</p> </li> <li> <p> <code>uri</code> – if you
1325 * are granting permissions to a predefined group</p> </li> </ul> <p>For example,
1326 * the following <code>x-amz-grant-read</code> header grants the AWS accounts
1327 * identified by email addresses permissions to read object data and its
1328 * metadata:</p> <p> <code>x-amz-grant-read: emailAddress="xyz@amazon.com",
1329 * emailAddress="abc@amazon.com" </code> </p> </li> </ul> <note> <p>You can use
1330 * either a canned ACL or specify access permissions explicitly. You cannot do
1331 * both.</p> </note> <p>The following operations are related to
1332 * <code>CreateBucket</code>:</p> <ul> <li> <p> <a>PutObject</a> </p> </li> <li>
1333 * <p> <a>DeleteBucket</a> </p> </li> </ul><p><h3>See Also:</h3> <a
1334 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateBucket">AWS API
1335 * Reference</a></p>
1336 */
1337 virtual Model::CreateBucketOutcome CreateBucket(const Model::CreateBucketRequest& request) const;
1338
1339 /**
1340 * <p>Creates a new bucket. To create a bucket, you must register with Amazon S3
1341 * and have a valid AWS Access Key ID to authenticate requests. Anonymous requests
1342 * are never allowed to create buckets. By creating the bucket, you become the
1343 * bucket owner.</p> <p>Not every string is an acceptable bucket name. For
1344 * information on bucket naming restrictions, see <a
1345 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html">Working
1346 * with Amazon S3 Buckets</a>.</p> <p>By default, the bucket is created in the US
1347 * East (N. Virginia) Region. You can optionally specify a Region in the request
1348 * body. You might choose a Region to optimize latency, minimize costs, or address
1349 * regulatory requirements. For example, if you reside in Europe, you will probably
1350 * find it advantageous to create buckets in the EU (Ireland) Region. For more
1351 * information, see <a
1352 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro">How
1353 * to Select a Region for Your Buckets</a>.</p> <note> <p>If you send your create
1354 * bucket request to the <code>s3.amazonaws.com</code> endpoint, the request goes
1355 * to the us-east-1 Region. Accordingly, the signature calculations in Signature
1356 * Version 4 must use us-east-1 as the Region, even if the location constraint in
1357 * the request specifies another Region where the bucket is to be created. If you
1358 * create a bucket in a Region other than US East (N. Virginia), your application
1359 * must be able to handle 307 redirect. For more information, see <a
1360 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html">Virtual
1361 * Hosting of Buckets</a>.</p> </note> <p>When creating a bucket using this
1362 * operation, you can optionally specify the accounts or groups that should be
1363 * granted specific permissions on the bucket. There are two ways to grant the
1364 * appropriate permissions using the request headers.</p> <ul> <li> <p>Specify a
1365 * canned ACL using the <code>x-amz-acl</code> request header. Amazon S3 supports a
1366 * set of predefined ACLs, known as <i>canned ACLs</i>. Each canned ACL has a
1367 * predefined set of grantees and permissions. For more information, see <a
1368 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
1369 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly using the
1370 * <code>x-amz-grant-read</code>, <code>x-amz-grant-write</code>,
1371 * <code>x-amz-grant-read-acp</code>, <code>x-amz-grant-write-acp</code>, and
1372 * <code>x-amz-grant-full-control</code> headers. These headers map to the set of
1373 * permissions Amazon S3 supports in an ACL. For more information, see <a
1374 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
1375 * Control List (ACL) Overview</a>.</p> <p>You specify each grantee as a type=value
1376 * pair, where the type is one of the following:</p> <ul> <li> <p>
1377 * <code>emailAddress</code> – if the value specified is the email address of an
1378 * AWS account</p> </li> <li> <p> <code>id</code> – if the value specified is the
1379 * canonical user ID of an AWS account</p> </li> <li> <p> <code>uri</code> – if you
1380 * are granting permissions to a predefined group</p> </li> </ul> <p>For example,
1381 * the following <code>x-amz-grant-read</code> header grants the AWS accounts
1382 * identified by email addresses permissions to read object data and its
1383 * metadata:</p> <p> <code>x-amz-grant-read: emailAddress="xyz@amazon.com",
1384 * emailAddress="abc@amazon.com" </code> </p> </li> </ul> <note> <p>You can use
1385 * either a canned ACL or specify access permissions explicitly. You cannot do
1386 * both.</p> </note> <p>The following operations are related to
1387 * <code>CreateBucket</code>:</p> <ul> <li> <p> <a>PutObject</a> </p> </li> <li>
1388 * <p> <a>DeleteBucket</a> </p> </li> </ul><p><h3>See Also:</h3> <a
1389 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateBucket">AWS API
1390 * Reference</a></p>
1391 *
1392 * returns a future to the operation so that it can be executed in parallel to other requests.
1393 */
1394 virtual Model::CreateBucketOutcomeCallable CreateBucketCallable(const Model::CreateBucketRequest& request) const;
1395
1396 /**
1397 * <p>Creates a new bucket. To create a bucket, you must register with Amazon S3
1398 * and have a valid AWS Access Key ID to authenticate requests. Anonymous requests
1399 * are never allowed to create buckets. By creating the bucket, you become the
1400 * bucket owner.</p> <p>Not every string is an acceptable bucket name. For
1401 * information on bucket naming restrictions, see <a
1402 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html">Working
1403 * with Amazon S3 Buckets</a>.</p> <p>By default, the bucket is created in the US
1404 * East (N. Virginia) Region. You can optionally specify a Region in the request
1405 * body. You might choose a Region to optimize latency, minimize costs, or address
1406 * regulatory requirements. For example, if you reside in Europe, you will probably
1407 * find it advantageous to create buckets in the EU (Ireland) Region. For more
1408 * information, see <a
1409 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro">How
1410 * to Select a Region for Your Buckets</a>.</p> <note> <p>If you send your create
1411 * bucket request to the <code>s3.amazonaws.com</code> endpoint, the request goes
1412 * to the us-east-1 Region. Accordingly, the signature calculations in Signature
1413 * Version 4 must use us-east-1 as the Region, even if the location constraint in
1414 * the request specifies another Region where the bucket is to be created. If you
1415 * create a bucket in a Region other than US East (N. Virginia), your application
1416 * must be able to handle 307 redirect. For more information, see <a
1417 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html">Virtual
1418 * Hosting of Buckets</a>.</p> </note> <p>When creating a bucket using this
1419 * operation, you can optionally specify the accounts or groups that should be
1420 * granted specific permissions on the bucket. There are two ways to grant the
1421 * appropriate permissions using the request headers.</p> <ul> <li> <p>Specify a
1422 * canned ACL using the <code>x-amz-acl</code> request header. Amazon S3 supports a
1423 * set of predefined ACLs, known as <i>canned ACLs</i>. Each canned ACL has a
1424 * predefined set of grantees and permissions. For more information, see <a
1425 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
1426 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly using the
1427 * <code>x-amz-grant-read</code>, <code>x-amz-grant-write</code>,
1428 * <code>x-amz-grant-read-acp</code>, <code>x-amz-grant-write-acp</code>, and
1429 * <code>x-amz-grant-full-control</code> headers. These headers map to the set of
1430 * permissions Amazon S3 supports in an ACL. For more information, see <a
1431 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
1432 * Control List (ACL) Overview</a>.</p> <p>You specify each grantee as a type=value
1433 * pair, where the type is one of the following:</p> <ul> <li> <p>
1434 * <code>emailAddress</code> – if the value specified is the email address of an
1435 * AWS account</p> </li> <li> <p> <code>id</code> – if the value specified is the
1436 * canonical user ID of an AWS account</p> </li> <li> <p> <code>uri</code> – if you
1437 * are granting permissions to a predefined group</p> </li> </ul> <p>For example,
1438 * the following <code>x-amz-grant-read</code> header grants the AWS accounts
1439 * identified by email addresses permissions to read object data and its
1440 * metadata:</p> <p> <code>x-amz-grant-read: emailAddress="xyz@amazon.com",
1441 * emailAddress="abc@amazon.com" </code> </p> </li> </ul> <note> <p>You can use
1442 * either a canned ACL or specify access permissions explicitly. You cannot do
1443 * both.</p> </note> <p>The following operations are related to
1444 * <code>CreateBucket</code>:</p> <ul> <li> <p> <a>PutObject</a> </p> </li> <li>
1445 * <p> <a>DeleteBucket</a> </p> </li> </ul><p><h3>See Also:</h3> <a
1446 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateBucket">AWS API
1447 * Reference</a></p>
1448 *
1449 * Queues the request into a thread executor and triggers associated callback when operation has finished.
1450 */
1451 virtual void CreateBucketAsync(const Model::CreateBucketRequest& request, const CreateBucketResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1452
1453 /**
1454 * <p>This operation initiates a multipart upload and returns an upload ID. This
1455 * upload ID is used to associate all of the parts in the specific multipart
1456 * upload. You specify this upload ID in each of your subsequent upload part
1457 * requests (see <a>UploadPart</a>). You also include this upload ID in the final
1458 * request to either complete or abort the multipart upload request.</p> <p>For
1459 * more information about multipart uploads, see <a
1460 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html">Multipart
1461 * Upload Overview</a>.</p> <p>If you have configured a lifecycle rule to abort
1462 * incomplete multipart uploads, the upload must complete within the number of days
1463 * specified in the bucket lifecycle configuration. Otherwise, the incomplete
1464 * multipart upload becomes eligible for an abort operation and Amazon S3 aborts
1465 * the multipart upload. For more information, see <a
1466 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config">Aborting
1467 * Incomplete Multipart Uploads Using a Bucket Lifecycle Policy</a>.</p> <p>For
1468 * information about the permissions required to use the multipart upload API, see
1469 * <a
1470 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
1471 * Upload API and Permissions</a>.</p> <p>For request signing, multipart upload is
1472 * just a series of regular requests. You initiate a multipart upload, send one or
1473 * more requests to upload parts, and then complete the multipart upload process.
1474 * You sign each request individually. There is nothing special about signing
1475 * multipart upload requests. For more information about signing, see <a
1476 * href="https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html">Authenticating
1477 * Requests (AWS Signature Version 4)</a>.</p> <note> <p> After you initiate a
1478 * multipart upload and upload one or more parts, to stop being charged for storing
1479 * the uploaded parts, you must either complete or abort the multipart upload.
1480 * Amazon S3 frees up the space used to store the parts and stop charging you for
1481 * storing them only after you either complete or abort a multipart upload. </p>
1482 * </note> <p>You can optionally request server-side encryption. For server-side
1483 * encryption, Amazon S3 encrypts your data as it writes it to disks in its data
1484 * centers and decrypts it when you access it. You can provide your own encryption
1485 * key, or use AWS Key Management Service (AWS KMS) customer master keys (CMKs) or
1486 * Amazon S3-managed encryption keys. If you choose to provide your own encryption
1487 * key, the request headers you provide in <a>UploadPart</a>) and
1488 * <a>UploadPartCopy</a>) requests must match the headers you used in the request
1489 * to initiate the upload by using <code>CreateMultipartUpload</code>. </p> <p>To
1490 * perform a multipart upload with encryption using an AWS KMS CMK, the requester
1491 * must have permission to the <code>kms:Encrypt</code>, <code>kms:Decrypt</code>,
1492 * <code>kms:ReEncrypt*</code>, <code>kms:GenerateDataKey*</code>, and
1493 * <code>kms:DescribeKey</code> actions on the key. These permissions are required
1494 * because Amazon S3 must decrypt and read data from the encrypted file parts
1495 * before it completes the multipart upload.</p> <p>If your AWS Identity and Access
1496 * Management (IAM) user or role is in the same AWS account as the AWS KMS CMK,
1497 * then you must have these permissions on the key policy. If your IAM user or role
1498 * belongs to a different account than the key, then you must have the permissions
1499 * on both the key policy and your IAM user or role.</p> <p> For more information,
1500 * see <a
1501 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html">Protecting
1502 * Data Using Server-Side Encryption</a>.</p> <dl> <dt>Access Permissions</dt> <dd>
1503 * <p>When copying an object, you can optionally specify the accounts or groups
1504 * that should be granted specific permissions on the new object. There are two
1505 * ways to grant the permissions using the request headers:</p> <ul> <li>
1506 * <p>Specify a canned ACL with the <code>x-amz-acl</code> request header. For more
1507 * information, see <a
1508 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
1509 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly with the
1510 * <code>x-amz-grant-read</code>, <code>x-amz-grant-read-acp</code>,
1511 * <code>x-amz-grant-write-acp</code>, and <code>x-amz-grant-full-control</code>
1512 * headers. These parameters map to the set of permissions that Amazon S3 supports
1513 * in an ACL. For more information, see <a
1514 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
1515 * Control List (ACL) Overview</a>.</p> </li> </ul> <p>You can use either a canned
1516 * ACL or specify access permissions explicitly. You cannot do both.</p> </dd>
1517 * <dt>Server-Side- Encryption-Specific Request Headers</dt> <dd> <p>You can
1518 * optionally tell Amazon S3 to encrypt data at rest using server-side encryption.
1519 * Server-side encryption is for data encryption at rest. Amazon S3 encrypts your
1520 * data as it writes it to disks in its data centers and decrypts it when you
1521 * access it. The option you use depends on whether you want to use AWS managed
1522 * encryption keys or provide your own encryption key. </p> <ul> <li> <p>Use
1523 * encryption keys managed by Amazon S3 or customer master keys (CMKs) stored in
1524 * AWS Key Management Service (AWS KMS) – If you want AWS to manage the keys used
1525 * to encrypt data, specify the following headers in the request.</p> <ul> <li>
1526 * <p>x-amz-server-side​-encryption</p> </li> <li>
1527 * <p>x-amz-server-side-encryption-aws-kms-key-id</p> </li> <li>
1528 * <p>x-amz-server-side-encryption-context</p> </li> </ul> <note> <p>If you specify
1529 * <code>x-amz-server-side-encryption:aws:kms</code>, but don't provide
1530 * <code>x-amz-server-side- encryption-aws-kms-key-id</code>, Amazon S3 uses the
1531 * AWS managed CMK in AWS KMS to protect the data.</p> </note> <important> <p>All
1532 * GET and PUT requests for an object protected by AWS KMS fail if you don't make
1533 * them with SSL or by using SigV4.</p> </important> <p>For more information about
1534 * server-side encryption with CMKs stored in AWS KMS (SSE-KMS), see <a
1535 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
1536 * Data Using Server-Side Encryption with CMKs stored in AWS KMS</a>.</p> </li>
1537 * <li> <p>Use customer-provided encryption keys – If you want to manage your own
1538 * encryption keys, provide all the following headers in the request.</p> <ul> <li>
1539 * <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
1540 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
1541 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> <p>For more
1542 * information about server-side encryption with CMKs stored in AWS KMS (SSE-KMS),
1543 * see <a
1544 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
1545 * Data Using Server-Side Encryption with CMKs stored in AWS KMS</a>.</p> </li>
1546 * </ul> </dd> <dt>Access-Control-List (ACL)-Specific Request Headers</dt> <dd>
1547 * <p>You also can use the following access control–related headers with this
1548 * operation. By default, all objects are private. Only the owner has full access
1549 * control. When adding a new object, you can grant permissions to individual AWS
1550 * accounts or to predefined groups defined by Amazon S3. These permissions are
1551 * then added to the access control list (ACL) on the object. For more information,
1552 * see <a
1553 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using
1554 * ACLs</a>. With this operation, you can grant access permissions using one of the
1555 * following two methods:</p> <ul> <li> <p>Specify a canned ACL
1556 * (<code>x-amz-acl</code>) — Amazon S3 supports a set of predefined ACLs, known as
1557 * <i>canned ACLs</i>. Each canned ACL has a predefined set of grantees and
1558 * permissions. For more information, see <a
1559 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
1560 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly — To explicitly
1561 * grant access permissions to specific AWS accounts or groups, use the following
1562 * headers. Each header maps to specific permissions that Amazon S3 supports in an
1563 * ACL. For more information, see <a
1564 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
1565 * Control List (ACL) Overview</a>. In the header, you specify a list of grantees
1566 * who get the specific permission. To grant permissions explicitly, use:</p> <ul>
1567 * <li> <p>x-amz-grant-read</p> </li> <li> <p>x-amz-grant-write</p> </li> <li>
1568 * <p>x-amz-grant-read-acp</p> </li> <li> <p>x-amz-grant-write-acp</p> </li> <li>
1569 * <p>x-amz-grant-full-control</p> </li> </ul> <p>You specify each grantee as a
1570 * type=value pair, where the type is one of the following:</p> <ul> <li> <p>
1571 * <code>emailAddress</code> – if the value specified is the email address of an
1572 * AWS account</p> </li> <li> <p> <code>id</code> – if the value specified is the
1573 * canonical user ID of an AWS account</p> </li> <li> <p> <code>uri</code> – if you
1574 * are granting permissions to a predefined group</p> </li> </ul> <p>For example,
1575 * the following <code>x-amz-grant-read</code> header grants the AWS accounts
1576 * identified by email addresses permissions to read object data and its
1577 * metadata:</p> <p> <code>x-amz-grant-read: emailAddress="xyz@amazon.com",
1578 * emailAddress="abc@amazon.com" </code> </p> </li> </ul> </dd> </dl> <p>The
1579 * following operations are related to <code>CreateMultipartUpload</code>:</p> <ul>
1580 * <li> <p> <a>UploadPart</a> </p> </li> <li> <p> <a>CompleteMultipartUpload</a>
1581 * </p> </li> <li> <p> <a>AbortMultipartUpload</a> </p> </li> <li> <p>
1582 * <a>ListParts</a> </p> </li> <li> <p> <a>ListMultipartUploads</a> </p> </li>
1583 * </ul><p><h3>See Also:</h3> <a
1584 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateMultipartUpload">AWS
1585 * API Reference</a></p>
1586 */
1587 virtual Model::CreateMultipartUploadOutcome CreateMultipartUpload(const Model::CreateMultipartUploadRequest& request) const;
1588
1589 /**
1590 * <p>This operation initiates a multipart upload and returns an upload ID. This
1591 * upload ID is used to associate all of the parts in the specific multipart
1592 * upload. You specify this upload ID in each of your subsequent upload part
1593 * requests (see <a>UploadPart</a>). You also include this upload ID in the final
1594 * request to either complete or abort the multipart upload request.</p> <p>For
1595 * more information about multipart uploads, see <a
1596 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html">Multipart
1597 * Upload Overview</a>.</p> <p>If you have configured a lifecycle rule to abort
1598 * incomplete multipart uploads, the upload must complete within the number of days
1599 * specified in the bucket lifecycle configuration. Otherwise, the incomplete
1600 * multipart upload becomes eligible for an abort operation and Amazon S3 aborts
1601 * the multipart upload. For more information, see <a
1602 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config">Aborting
1603 * Incomplete Multipart Uploads Using a Bucket Lifecycle Policy</a>.</p> <p>For
1604 * information about the permissions required to use the multipart upload API, see
1605 * <a
1606 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
1607 * Upload API and Permissions</a>.</p> <p>For request signing, multipart upload is
1608 * just a series of regular requests. You initiate a multipart upload, send one or
1609 * more requests to upload parts, and then complete the multipart upload process.
1610 * You sign each request individually. There is nothing special about signing
1611 * multipart upload requests. For more information about signing, see <a
1612 * href="https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html">Authenticating
1613 * Requests (AWS Signature Version 4)</a>.</p> <note> <p> After you initiate a
1614 * multipart upload and upload one or more parts, to stop being charged for storing
1615 * the uploaded parts, you must either complete or abort the multipart upload.
1616 * Amazon S3 frees up the space used to store the parts and stop charging you for
1617 * storing them only after you either complete or abort a multipart upload. </p>
1618 * </note> <p>You can optionally request server-side encryption. For server-side
1619 * encryption, Amazon S3 encrypts your data as it writes it to disks in its data
1620 * centers and decrypts it when you access it. You can provide your own encryption
1621 * key, or use AWS Key Management Service (AWS KMS) customer master keys (CMKs) or
1622 * Amazon S3-managed encryption keys. If you choose to provide your own encryption
1623 * key, the request headers you provide in <a>UploadPart</a>) and
1624 * <a>UploadPartCopy</a>) requests must match the headers you used in the request
1625 * to initiate the upload by using <code>CreateMultipartUpload</code>. </p> <p>To
1626 * perform a multipart upload with encryption using an AWS KMS CMK, the requester
1627 * must have permission to the <code>kms:Encrypt</code>, <code>kms:Decrypt</code>,
1628 * <code>kms:ReEncrypt*</code>, <code>kms:GenerateDataKey*</code>, and
1629 * <code>kms:DescribeKey</code> actions on the key. These permissions are required
1630 * because Amazon S3 must decrypt and read data from the encrypted file parts
1631 * before it completes the multipart upload.</p> <p>If your AWS Identity and Access
1632 * Management (IAM) user or role is in the same AWS account as the AWS KMS CMK,
1633 * then you must have these permissions on the key policy. If your IAM user or role
1634 * belongs to a different account than the key, then you must have the permissions
1635 * on both the key policy and your IAM user or role.</p> <p> For more information,
1636 * see <a
1637 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html">Protecting
1638 * Data Using Server-Side Encryption</a>.</p> <dl> <dt>Access Permissions</dt> <dd>
1639 * <p>When copying an object, you can optionally specify the accounts or groups
1640 * that should be granted specific permissions on the new object. There are two
1641 * ways to grant the permissions using the request headers:</p> <ul> <li>
1642 * <p>Specify a canned ACL with the <code>x-amz-acl</code> request header. For more
1643 * information, see <a
1644 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
1645 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly with the
1646 * <code>x-amz-grant-read</code>, <code>x-amz-grant-read-acp</code>,
1647 * <code>x-amz-grant-write-acp</code>, and <code>x-amz-grant-full-control</code>
1648 * headers. These parameters map to the set of permissions that Amazon S3 supports
1649 * in an ACL. For more information, see <a
1650 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
1651 * Control List (ACL) Overview</a>.</p> </li> </ul> <p>You can use either a canned
1652 * ACL or specify access permissions explicitly. You cannot do both.</p> </dd>
1653 * <dt>Server-Side- Encryption-Specific Request Headers</dt> <dd> <p>You can
1654 * optionally tell Amazon S3 to encrypt data at rest using server-side encryption.
1655 * Server-side encryption is for data encryption at rest. Amazon S3 encrypts your
1656 * data as it writes it to disks in its data centers and decrypts it when you
1657 * access it. The option you use depends on whether you want to use AWS managed
1658 * encryption keys or provide your own encryption key. </p> <ul> <li> <p>Use
1659 * encryption keys managed by Amazon S3 or customer master keys (CMKs) stored in
1660 * AWS Key Management Service (AWS KMS) – If you want AWS to manage the keys used
1661 * to encrypt data, specify the following headers in the request.</p> <ul> <li>
1662 * <p>x-amz-server-side​-encryption</p> </li> <li>
1663 * <p>x-amz-server-side-encryption-aws-kms-key-id</p> </li> <li>
1664 * <p>x-amz-server-side-encryption-context</p> </li> </ul> <note> <p>If you specify
1665 * <code>x-amz-server-side-encryption:aws:kms</code>, but don't provide
1666 * <code>x-amz-server-side- encryption-aws-kms-key-id</code>, Amazon S3 uses the
1667 * AWS managed CMK in AWS KMS to protect the data.</p> </note> <important> <p>All
1668 * GET and PUT requests for an object protected by AWS KMS fail if you don't make
1669 * them with SSL or by using SigV4.</p> </important> <p>For more information about
1670 * server-side encryption with CMKs stored in AWS KMS (SSE-KMS), see <a
1671 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
1672 * Data Using Server-Side Encryption with CMKs stored in AWS KMS</a>.</p> </li>
1673 * <li> <p>Use customer-provided encryption keys – If you want to manage your own
1674 * encryption keys, provide all the following headers in the request.</p> <ul> <li>
1675 * <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
1676 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
1677 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> <p>For more
1678 * information about server-side encryption with CMKs stored in AWS KMS (SSE-KMS),
1679 * see <a
1680 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
1681 * Data Using Server-Side Encryption with CMKs stored in AWS KMS</a>.</p> </li>
1682 * </ul> </dd> <dt>Access-Control-List (ACL)-Specific Request Headers</dt> <dd>
1683 * <p>You also can use the following access control–related headers with this
1684 * operation. By default, all objects are private. Only the owner has full access
1685 * control. When adding a new object, you can grant permissions to individual AWS
1686 * accounts or to predefined groups defined by Amazon S3. These permissions are
1687 * then added to the access control list (ACL) on the object. For more information,
1688 * see <a
1689 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using
1690 * ACLs</a>. With this operation, you can grant access permissions using one of the
1691 * following two methods:</p> <ul> <li> <p>Specify a canned ACL
1692 * (<code>x-amz-acl</code>) — Amazon S3 supports a set of predefined ACLs, known as
1693 * <i>canned ACLs</i>. Each canned ACL has a predefined set of grantees and
1694 * permissions. For more information, see <a
1695 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
1696 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly — To explicitly
1697 * grant access permissions to specific AWS accounts or groups, use the following
1698 * headers. Each header maps to specific permissions that Amazon S3 supports in an
1699 * ACL. For more information, see <a
1700 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
1701 * Control List (ACL) Overview</a>. In the header, you specify a list of grantees
1702 * who get the specific permission. To grant permissions explicitly, use:</p> <ul>
1703 * <li> <p>x-amz-grant-read</p> </li> <li> <p>x-amz-grant-write</p> </li> <li>
1704 * <p>x-amz-grant-read-acp</p> </li> <li> <p>x-amz-grant-write-acp</p> </li> <li>
1705 * <p>x-amz-grant-full-control</p> </li> </ul> <p>You specify each grantee as a
1706 * type=value pair, where the type is one of the following:</p> <ul> <li> <p>
1707 * <code>emailAddress</code> – if the value specified is the email address of an
1708 * AWS account</p> </li> <li> <p> <code>id</code> – if the value specified is the
1709 * canonical user ID of an AWS account</p> </li> <li> <p> <code>uri</code> – if you
1710 * are granting permissions to a predefined group</p> </li> </ul> <p>For example,
1711 * the following <code>x-amz-grant-read</code> header grants the AWS accounts
1712 * identified by email addresses permissions to read object data and its
1713 * metadata:</p> <p> <code>x-amz-grant-read: emailAddress="xyz@amazon.com",
1714 * emailAddress="abc@amazon.com" </code> </p> </li> </ul> </dd> </dl> <p>The
1715 * following operations are related to <code>CreateMultipartUpload</code>:</p> <ul>
1716 * <li> <p> <a>UploadPart</a> </p> </li> <li> <p> <a>CompleteMultipartUpload</a>
1717 * </p> </li> <li> <p> <a>AbortMultipartUpload</a> </p> </li> <li> <p>
1718 * <a>ListParts</a> </p> </li> <li> <p> <a>ListMultipartUploads</a> </p> </li>
1719 * </ul><p><h3>See Also:</h3> <a
1720 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateMultipartUpload">AWS
1721 * API Reference</a></p>
1722 *
1723 * returns a future to the operation so that it can be executed in parallel to other requests.
1724 */
1725 virtual Model::CreateMultipartUploadOutcomeCallable CreateMultipartUploadCallable(const Model::CreateMultipartUploadRequest& request) const;
1726
1727 /**
1728 * <p>This operation initiates a multipart upload and returns an upload ID. This
1729 * upload ID is used to associate all of the parts in the specific multipart
1730 * upload. You specify this upload ID in each of your subsequent upload part
1731 * requests (see <a>UploadPart</a>). You also include this upload ID in the final
1732 * request to either complete or abort the multipart upload request.</p> <p>For
1733 * more information about multipart uploads, see <a
1734 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html">Multipart
1735 * Upload Overview</a>.</p> <p>If you have configured a lifecycle rule to abort
1736 * incomplete multipart uploads, the upload must complete within the number of days
1737 * specified in the bucket lifecycle configuration. Otherwise, the incomplete
1738 * multipart upload becomes eligible for an abort operation and Amazon S3 aborts
1739 * the multipart upload. For more information, see <a
1740 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config">Aborting
1741 * Incomplete Multipart Uploads Using a Bucket Lifecycle Policy</a>.</p> <p>For
1742 * information about the permissions required to use the multipart upload API, see
1743 * <a
1744 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
1745 * Upload API and Permissions</a>.</p> <p>For request signing, multipart upload is
1746 * just a series of regular requests. You initiate a multipart upload, send one or
1747 * more requests to upload parts, and then complete the multipart upload process.
1748 * You sign each request individually. There is nothing special about signing
1749 * multipart upload requests. For more information about signing, see <a
1750 * href="https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html">Authenticating
1751 * Requests (AWS Signature Version 4)</a>.</p> <note> <p> After you initiate a
1752 * multipart upload and upload one or more parts, to stop being charged for storing
1753 * the uploaded parts, you must either complete or abort the multipart upload.
1754 * Amazon S3 frees up the space used to store the parts and stop charging you for
1755 * storing them only after you either complete or abort a multipart upload. </p>
1756 * </note> <p>You can optionally request server-side encryption. For server-side
1757 * encryption, Amazon S3 encrypts your data as it writes it to disks in its data
1758 * centers and decrypts it when you access it. You can provide your own encryption
1759 * key, or use AWS Key Management Service (AWS KMS) customer master keys (CMKs) or
1760 * Amazon S3-managed encryption keys. If you choose to provide your own encryption
1761 * key, the request headers you provide in <a>UploadPart</a>) and
1762 * <a>UploadPartCopy</a>) requests must match the headers you used in the request
1763 * to initiate the upload by using <code>CreateMultipartUpload</code>. </p> <p>To
1764 * perform a multipart upload with encryption using an AWS KMS CMK, the requester
1765 * must have permission to the <code>kms:Encrypt</code>, <code>kms:Decrypt</code>,
1766 * <code>kms:ReEncrypt*</code>, <code>kms:GenerateDataKey*</code>, and
1767 * <code>kms:DescribeKey</code> actions on the key. These permissions are required
1768 * because Amazon S3 must decrypt and read data from the encrypted file parts
1769 * before it completes the multipart upload.</p> <p>If your AWS Identity and Access
1770 * Management (IAM) user or role is in the same AWS account as the AWS KMS CMK,
1771 * then you must have these permissions on the key policy. If your IAM user or role
1772 * belongs to a different account than the key, then you must have the permissions
1773 * on both the key policy and your IAM user or role.</p> <p> For more information,
1774 * see <a
1775 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html">Protecting
1776 * Data Using Server-Side Encryption</a>.</p> <dl> <dt>Access Permissions</dt> <dd>
1777 * <p>When copying an object, you can optionally specify the accounts or groups
1778 * that should be granted specific permissions on the new object. There are two
1779 * ways to grant the permissions using the request headers:</p> <ul> <li>
1780 * <p>Specify a canned ACL with the <code>x-amz-acl</code> request header. For more
1781 * information, see <a
1782 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
1783 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly with the
1784 * <code>x-amz-grant-read</code>, <code>x-amz-grant-read-acp</code>,
1785 * <code>x-amz-grant-write-acp</code>, and <code>x-amz-grant-full-control</code>
1786 * headers. These parameters map to the set of permissions that Amazon S3 supports
1787 * in an ACL. For more information, see <a
1788 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
1789 * Control List (ACL) Overview</a>.</p> </li> </ul> <p>You can use either a canned
1790 * ACL or specify access permissions explicitly. You cannot do both.</p> </dd>
1791 * <dt>Server-Side- Encryption-Specific Request Headers</dt> <dd> <p>You can
1792 * optionally tell Amazon S3 to encrypt data at rest using server-side encryption.
1793 * Server-side encryption is for data encryption at rest. Amazon S3 encrypts your
1794 * data as it writes it to disks in its data centers and decrypts it when you
1795 * access it. The option you use depends on whether you want to use AWS managed
1796 * encryption keys or provide your own encryption key. </p> <ul> <li> <p>Use
1797 * encryption keys managed by Amazon S3 or customer master keys (CMKs) stored in
1798 * AWS Key Management Service (AWS KMS) – If you want AWS to manage the keys used
1799 * to encrypt data, specify the following headers in the request.</p> <ul> <li>
1800 * <p>x-amz-server-side​-encryption</p> </li> <li>
1801 * <p>x-amz-server-side-encryption-aws-kms-key-id</p> </li> <li>
1802 * <p>x-amz-server-side-encryption-context</p> </li> </ul> <note> <p>If you specify
1803 * <code>x-amz-server-side-encryption:aws:kms</code>, but don't provide
1804 * <code>x-amz-server-side- encryption-aws-kms-key-id</code>, Amazon S3 uses the
1805 * AWS managed CMK in AWS KMS to protect the data.</p> </note> <important> <p>All
1806 * GET and PUT requests for an object protected by AWS KMS fail if you don't make
1807 * them with SSL or by using SigV4.</p> </important> <p>For more information about
1808 * server-side encryption with CMKs stored in AWS KMS (SSE-KMS), see <a
1809 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
1810 * Data Using Server-Side Encryption with CMKs stored in AWS KMS</a>.</p> </li>
1811 * <li> <p>Use customer-provided encryption keys – If you want to manage your own
1812 * encryption keys, provide all the following headers in the request.</p> <ul> <li>
1813 * <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
1814 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
1815 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> <p>For more
1816 * information about server-side encryption with CMKs stored in AWS KMS (SSE-KMS),
1817 * see <a
1818 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
1819 * Data Using Server-Side Encryption with CMKs stored in AWS KMS</a>.</p> </li>
1820 * </ul> </dd> <dt>Access-Control-List (ACL)-Specific Request Headers</dt> <dd>
1821 * <p>You also can use the following access control–related headers with this
1822 * operation. By default, all objects are private. Only the owner has full access
1823 * control. When adding a new object, you can grant permissions to individual AWS
1824 * accounts or to predefined groups defined by Amazon S3. These permissions are
1825 * then added to the access control list (ACL) on the object. For more information,
1826 * see <a
1827 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using
1828 * ACLs</a>. With this operation, you can grant access permissions using one of the
1829 * following two methods:</p> <ul> <li> <p>Specify a canned ACL
1830 * (<code>x-amz-acl</code>) — Amazon S3 supports a set of predefined ACLs, known as
1831 * <i>canned ACLs</i>. Each canned ACL has a predefined set of grantees and
1832 * permissions. For more information, see <a
1833 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
1834 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly — To explicitly
1835 * grant access permissions to specific AWS accounts or groups, use the following
1836 * headers. Each header maps to specific permissions that Amazon S3 supports in an
1837 * ACL. For more information, see <a
1838 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
1839 * Control List (ACL) Overview</a>. In the header, you specify a list of grantees
1840 * who get the specific permission. To grant permissions explicitly, use:</p> <ul>
1841 * <li> <p>x-amz-grant-read</p> </li> <li> <p>x-amz-grant-write</p> </li> <li>
1842 * <p>x-amz-grant-read-acp</p> </li> <li> <p>x-amz-grant-write-acp</p> </li> <li>
1843 * <p>x-amz-grant-full-control</p> </li> </ul> <p>You specify each grantee as a
1844 * type=value pair, where the type is one of the following:</p> <ul> <li> <p>
1845 * <code>emailAddress</code> – if the value specified is the email address of an
1846 * AWS account</p> </li> <li> <p> <code>id</code> – if the value specified is the
1847 * canonical user ID of an AWS account</p> </li> <li> <p> <code>uri</code> – if you
1848 * are granting permissions to a predefined group</p> </li> </ul> <p>For example,
1849 * the following <code>x-amz-grant-read</code> header grants the AWS accounts
1850 * identified by email addresses permissions to read object data and its
1851 * metadata:</p> <p> <code>x-amz-grant-read: emailAddress="xyz@amazon.com",
1852 * emailAddress="abc@amazon.com" </code> </p> </li> </ul> </dd> </dl> <p>The
1853 * following operations are related to <code>CreateMultipartUpload</code>:</p> <ul>
1854 * <li> <p> <a>UploadPart</a> </p> </li> <li> <p> <a>CompleteMultipartUpload</a>
1855 * </p> </li> <li> <p> <a>AbortMultipartUpload</a> </p> </li> <li> <p>
1856 * <a>ListParts</a> </p> </li> <li> <p> <a>ListMultipartUploads</a> </p> </li>
1857 * </ul><p><h3>See Also:</h3> <a
1858 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateMultipartUpload">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 CreateMultipartUploadAsync(const Model::CreateMultipartUploadRequest& request, const CreateMultipartUploadResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1864
1865 /**
1866 * <p>Deletes the bucket. All objects (including all object versions and delete
1867 * markers) in the bucket must be deleted before the bucket itself can be
1868 * deleted.</p> <p class="title"> <b>Related Resources</b> </p> <ul> <li> <p> </p>
1869 * </li> <li> <p> </p> </li> </ul><p><h3>See Also:</h3> <a
1870 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket">AWS API
1871 * Reference</a></p>
1872 */
1873 virtual Model::DeleteBucketOutcome DeleteBucket(const Model::DeleteBucketRequest& request) const;
1874
1875 /**
1876 * <p>Deletes the bucket. All objects (including all object versions and delete
1877 * markers) in the bucket must be deleted before the bucket itself can be
1878 * deleted.</p> <p class="title"> <b>Related Resources</b> </p> <ul> <li> <p> </p>
1879 * </li> <li> <p> </p> </li> </ul><p><h3>See Also:</h3> <a
1880 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket">AWS API
1881 * Reference</a></p>
1882 *
1883 * returns a future to the operation so that it can be executed in parallel to other requests.
1884 */
1885 virtual Model::DeleteBucketOutcomeCallable DeleteBucketCallable(const Model::DeleteBucketRequest& request) const;
1886
1887 /**
1888 * <p>Deletes the bucket. All objects (including all object versions and delete
1889 * markers) in the bucket must be deleted before the bucket itself can be
1890 * deleted.</p> <p class="title"> <b>Related Resources</b> </p> <ul> <li> <p> </p>
1891 * </li> <li> <p> </p> </li> </ul><p><h3>See Also:</h3> <a
1892 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket">AWS API
1893 * Reference</a></p>
1894 *
1895 * Queues the request into a thread executor and triggers associated callback when operation has finished.
1896 */
1897 virtual void DeleteBucketAsync(const Model::DeleteBucketRequest& request, const DeleteBucketResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1898
1899 /**
1900 * <p>Deletes an analytics configuration for the bucket (specified by the analytics
1901 * configuration ID).</p> <p>To use this operation, you must have permissions to
1902 * perform the <code>s3:PutAnalyticsConfiguration</code> action. The bucket owner
1903 * has this permission by default. The bucket owner can grant this permission to
1904 * others. For more information about permissions, see <a
1905 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
1906 * Related to Bucket Subresource Operations</a> and <a
1907 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
1908 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
1909 * the Amazon S3 analytics feature, see <a
1910 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html">Amazon
1911 * S3 Analytics – Storage Class Analysis</a>. </p> <p>The following operations are
1912 * related to <code>DeleteBucketAnalyticsConfiguration</code>:</p> <ul> <li> <p>
1913 * </p> </li> <li> <p> </p> </li> <li> <p> </p> </li> </ul><p><h3>See Also:</h3>
1914 * <a
1915 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration">AWS
1916 * API Reference</a></p>
1917 */
1918 virtual Model::DeleteBucketAnalyticsConfigurationOutcome DeleteBucketAnalyticsConfiguration(const Model::DeleteBucketAnalyticsConfigurationRequest& request) const;
1919
1920 /**
1921 * <p>Deletes an analytics configuration for the bucket (specified by the analytics
1922 * configuration ID).</p> <p>To use this operation, you must have permissions to
1923 * perform the <code>s3:PutAnalyticsConfiguration</code> action. The bucket owner
1924 * has this permission by default. The bucket owner can grant this permission to
1925 * others. For more information about permissions, see <a
1926 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
1927 * Related to Bucket Subresource Operations</a> and <a
1928 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
1929 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
1930 * the Amazon S3 analytics feature, see <a
1931 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html">Amazon
1932 * S3 Analytics – Storage Class Analysis</a>. </p> <p>The following operations are
1933 * related to <code>DeleteBucketAnalyticsConfiguration</code>:</p> <ul> <li> <p>
1934 * </p> </li> <li> <p> </p> </li> <li> <p> </p> </li> </ul><p><h3>See Also:</h3>
1935 * <a
1936 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration">AWS
1937 * API Reference</a></p>
1938 *
1939 * returns a future to the operation so that it can be executed in parallel to other requests.
1940 */
1941 virtual Model::DeleteBucketAnalyticsConfigurationOutcomeCallable DeleteBucketAnalyticsConfigurationCallable(const Model::DeleteBucketAnalyticsConfigurationRequest& request) const;
1942
1943 /**
1944 * <p>Deletes an analytics configuration for the bucket (specified by the analytics
1945 * configuration ID).</p> <p>To use this operation, you must have permissions to
1946 * perform the <code>s3:PutAnalyticsConfiguration</code> action. The bucket owner
1947 * has this permission by default. The bucket owner can grant this permission to
1948 * others. For more information about permissions, see <a
1949 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
1950 * Related to Bucket Subresource Operations</a> and <a
1951 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
1952 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
1953 * the Amazon S3 analytics feature, see <a
1954 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html">Amazon
1955 * S3 Analytics – Storage Class Analysis</a>. </p> <p>The following operations are
1956 * related to <code>DeleteBucketAnalyticsConfiguration</code>:</p> <ul> <li> <p>
1957 * </p> </li> <li> <p> </p> </li> <li> <p> </p> </li> </ul><p><h3>See Also:</h3>
1958 * <a
1959 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration">AWS
1960 * API Reference</a></p>
1961 *
1962 * Queues the request into a thread executor and triggers associated callback when operation has finished.
1963 */
1964 virtual void DeleteBucketAnalyticsConfigurationAsync(const Model::DeleteBucketAnalyticsConfigurationRequest& request, const DeleteBucketAnalyticsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1965
1966 /**
1967 * <p>Deletes the <code>cors</code> configuration information set for the
1968 * bucket.</p> <p>To use this operation, you must have permission to perform the
1969 * <code>s3:PutBucketCORS</code> action. The bucket owner has this permission by
1970 * default and can grant this permission to others. </p> <p>For information about
1971 * <code>cors</code>, see <a
1972 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html">Enabling
1973 * Cross-Origin Resource Sharing</a> in the <i>Amazon Simple Storage Service
1974 * Developer Guide</i>.</p> <p class="title"> <b>Related Resources:</b> </p> <ul>
1975 * <li> <p> </p> </li> <li> <p> <a>RESTOPTIONSobject</a> </p> </li> </ul><p><h3>See
1976 * Also:</h3> <a
1977 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors">AWS
1978 * API Reference</a></p>
1979 */
1980 virtual Model::DeleteBucketCorsOutcome DeleteBucketCors(const Model::DeleteBucketCorsRequest& request) const;
1981
1982 /**
1983 * <p>Deletes the <code>cors</code> configuration information set for the
1984 * bucket.</p> <p>To use this operation, you must have permission to perform the
1985 * <code>s3:PutBucketCORS</code> action. The bucket owner has this permission by
1986 * default and can grant this permission to others. </p> <p>For information about
1987 * <code>cors</code>, see <a
1988 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html">Enabling
1989 * Cross-Origin Resource Sharing</a> in the <i>Amazon Simple Storage Service
1990 * Developer Guide</i>.</p> <p class="title"> <b>Related Resources:</b> </p> <ul>
1991 * <li> <p> </p> </li> <li> <p> <a>RESTOPTIONSobject</a> </p> </li> </ul><p><h3>See
1992 * Also:</h3> <a
1993 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors">AWS
1994 * API Reference</a></p>
1995 *
1996 * returns a future to the operation so that it can be executed in parallel to other requests.
1997 */
1998 virtual Model::DeleteBucketCorsOutcomeCallable DeleteBucketCorsCallable(const Model::DeleteBucketCorsRequest& request) const;
1999
2000 /**
2001 * <p>Deletes the <code>cors</code> configuration information set for the
2002 * bucket.</p> <p>To use this operation, you must have permission to perform the
2003 * <code>s3:PutBucketCORS</code> action. The bucket owner has this permission by
2004 * default and can grant this permission to others. </p> <p>For information about
2005 * <code>cors</code>, see <a
2006 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html">Enabling
2007 * Cross-Origin Resource Sharing</a> in the <i>Amazon Simple Storage Service
2008 * Developer Guide</i>.</p> <p class="title"> <b>Related Resources:</b> </p> <ul>
2009 * <li> <p> </p> </li> <li> <p> <a>RESTOPTIONSobject</a> </p> </li> </ul><p><h3>See
2010 * Also:</h3> <a
2011 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors">AWS
2012 * API Reference</a></p>
2013 *
2014 * Queues the request into a thread executor and triggers associated callback when operation has finished.
2015 */
2016 virtual void DeleteBucketCorsAsync(const Model::DeleteBucketCorsRequest& request, const DeleteBucketCorsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2017
2018 /**
2019 * <p>This implementation of the DELETE operation removes default encryption from
2020 * the bucket. For information about the Amazon S3 default encryption feature, see
2021 * <a
2022 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//bucket-encryption.html">Amazon
2023 * S3 Default Bucket Encryption</a> in the <i>Amazon Simple Storage Service
2024 * Developer Guide</i>.</p> <p>To use this operation, you must have permissions to
2025 * perform the <code>s3:PutEncryptionConfiguration</code> action. The bucket owner
2026 * has this permission by default. The bucket owner can grant this permission to
2027 * others. For more information about permissions, see <a
2028 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
2029 * Related to Bucket Subresource Operations</a> and <a
2030 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//s3-access-control.html">Managing
2031 * Access Permissions to your Amazon S3 Resources</a> in the <i>Amazon Simple
2032 * Storage Service Developer Guide</i>.</p> <p class="title"> <b>Related
2033 * Resources</b> </p> <ul> <li> <p> <a>PutBucketEncryption</a> </p> </li> <li> <p>
2034 * <a>GetBucketEncryption</a> </p> </li> </ul><p><h3>See Also:</h3> <a
2035 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption">AWS
2036 * API Reference</a></p>
2037 */
2038 virtual Model::DeleteBucketEncryptionOutcome DeleteBucketEncryption(const Model::DeleteBucketEncryptionRequest& request) const;
2039
2040 /**
2041 * <p>This implementation of the DELETE operation removes default encryption from
2042 * the bucket. For information about the Amazon S3 default encryption feature, see
2043 * <a
2044 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//bucket-encryption.html">Amazon
2045 * S3 Default Bucket Encryption</a> in the <i>Amazon Simple Storage Service
2046 * Developer Guide</i>.</p> <p>To use this operation, you must have permissions to
2047 * perform the <code>s3:PutEncryptionConfiguration</code> action. The bucket owner
2048 * has this permission by default. The bucket owner can grant this permission to
2049 * others. For more information about permissions, see <a
2050 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
2051 * Related to Bucket Subresource Operations</a> and <a
2052 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//s3-access-control.html">Managing
2053 * Access Permissions to your Amazon S3 Resources</a> in the <i>Amazon Simple
2054 * Storage Service Developer Guide</i>.</p> <p class="title"> <b>Related
2055 * Resources</b> </p> <ul> <li> <p> <a>PutBucketEncryption</a> </p> </li> <li> <p>
2056 * <a>GetBucketEncryption</a> </p> </li> </ul><p><h3>See Also:</h3> <a
2057 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption">AWS
2058 * API Reference</a></p>
2059 *
2060 * returns a future to the operation so that it can be executed in parallel to other requests.
2061 */
2062 virtual Model::DeleteBucketEncryptionOutcomeCallable DeleteBucketEncryptionCallable(const Model::DeleteBucketEncryptionRequest& request) const;
2063
2064 /**
2065 * <p>This implementation of the DELETE operation removes default encryption from
2066 * the bucket. For information about the Amazon S3 default encryption feature, see
2067 * <a
2068 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//bucket-encryption.html">Amazon
2069 * S3 Default Bucket Encryption</a> in the <i>Amazon Simple Storage Service
2070 * Developer Guide</i>.</p> <p>To use this operation, you must have permissions to
2071 * perform the <code>s3:PutEncryptionConfiguration</code> action. The bucket owner
2072 * has this permission by default. The bucket owner can grant this permission to
2073 * others. For more information about permissions, see <a
2074 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
2075 * Related to Bucket Subresource Operations</a> and <a
2076 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//s3-access-control.html">Managing
2077 * Access Permissions to your Amazon S3 Resources</a> in the <i>Amazon Simple
2078 * Storage Service Developer Guide</i>.</p> <p class="title"> <b>Related
2079 * Resources</b> </p> <ul> <li> <p> <a>PutBucketEncryption</a> </p> </li> <li> <p>
2080 * <a>GetBucketEncryption</a> </p> </li> </ul><p><h3>See Also:</h3> <a
2081 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption">AWS
2082 * API Reference</a></p>
2083 *
2084 * Queues the request into a thread executor and triggers associated callback when operation has finished.
2085 */
2086 virtual void DeleteBucketEncryptionAsync(const Model::DeleteBucketEncryptionRequest& request, const DeleteBucketEncryptionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2087
2088 /**
2089 * <p>Deletes an inventory configuration (identified by the inventory ID) from the
2090 * bucket.</p> <p>To use this operation, you must have permissions to perform the
2091 * <code>s3:PutInventoryConfiguration</code> action. The bucket owner has this
2092 * permission by default. The bucket owner can grant this permission to others. For
2093 * more information about permissions, see <a
2094 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
2095 * Related to Bucket Subresource Operations</a> and <a
2096 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
2097 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
2098 * the Amazon S3 inventory feature, see <a
2099 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html">Amazon
2100 * S3 Inventory</a>.</p> <p>Operations related to
2101 * <code>DeleteBucketInventoryConfiguration</code> include: </p> <ul> <li> <p>
2102 * <a>GetBucketInventoryConfiguration</a> </p> </li> <li> <p>
2103 * <a>PutBucketInventoryConfiguration</a> </p> </li> <li> <p>
2104 * <a>ListBucketInventoryConfigurations</a> </p> </li> </ul><p><h3>See Also:</h3>
2105 * <a
2106 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration">AWS
2107 * API Reference</a></p>
2108 */
2109 virtual Model::DeleteBucketInventoryConfigurationOutcome DeleteBucketInventoryConfiguration(const Model::DeleteBucketInventoryConfigurationRequest& request) const;
2110
2111 /**
2112 * <p>Deletes an inventory configuration (identified by the inventory ID) from the
2113 * bucket.</p> <p>To use this operation, you must have permissions to perform the
2114 * <code>s3:PutInventoryConfiguration</code> action. The bucket owner has this
2115 * permission by default. The bucket owner can grant this permission to others. For
2116 * more information about permissions, see <a
2117 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
2118 * Related to Bucket Subresource Operations</a> and <a
2119 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
2120 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
2121 * the Amazon S3 inventory feature, see <a
2122 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html">Amazon
2123 * S3 Inventory</a>.</p> <p>Operations related to
2124 * <code>DeleteBucketInventoryConfiguration</code> include: </p> <ul> <li> <p>
2125 * <a>GetBucketInventoryConfiguration</a> </p> </li> <li> <p>
2126 * <a>PutBucketInventoryConfiguration</a> </p> </li> <li> <p>
2127 * <a>ListBucketInventoryConfigurations</a> </p> </li> </ul><p><h3>See Also:</h3>
2128 * <a
2129 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration">AWS
2130 * API Reference</a></p>
2131 *
2132 * returns a future to the operation so that it can be executed in parallel to other requests.
2133 */
2134 virtual Model::DeleteBucketInventoryConfigurationOutcomeCallable DeleteBucketInventoryConfigurationCallable(const Model::DeleteBucketInventoryConfigurationRequest& request) const;
2135
2136 /**
2137 * <p>Deletes an inventory configuration (identified by the inventory ID) from the
2138 * bucket.</p> <p>To use this operation, you must have permissions to perform the
2139 * <code>s3:PutInventoryConfiguration</code> action. The bucket owner has this
2140 * permission by default. The bucket owner can grant this permission to others. For
2141 * more information about permissions, see <a
2142 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
2143 * Related to Bucket Subresource Operations</a> and <a
2144 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
2145 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
2146 * the Amazon S3 inventory feature, see <a
2147 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html">Amazon
2148 * S3 Inventory</a>.</p> <p>Operations related to
2149 * <code>DeleteBucketInventoryConfiguration</code> include: </p> <ul> <li> <p>
2150 * <a>GetBucketInventoryConfiguration</a> </p> </li> <li> <p>
2151 * <a>PutBucketInventoryConfiguration</a> </p> </li> <li> <p>
2152 * <a>ListBucketInventoryConfigurations</a> </p> </li> </ul><p><h3>See Also:</h3>
2153 * <a
2154 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration">AWS
2155 * API Reference</a></p>
2156 *
2157 * Queues the request into a thread executor and triggers associated callback when operation has finished.
2158 */
2159 virtual void DeleteBucketInventoryConfigurationAsync(const Model::DeleteBucketInventoryConfigurationRequest& request, const DeleteBucketInventoryConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2160
2161 /**
2162 * <p>Deletes the lifecycle configuration from the specified bucket. Amazon S3
2163 * removes all the lifecycle configuration rules in the lifecycle subresource
2164 * associated with the bucket. Your objects never expire, and Amazon S3 no longer
2165 * automatically deletes any objects on the basis of rules contained in the deleted
2166 * lifecycle configuration.</p> <p>To use this operation, you must have permission
2167 * to perform the <code>s3:PutLifecycleConfiguration</code> action. By default, the
2168 * bucket owner has this permission and the bucket owner can grant this permission
2169 * to others.</p> <p>There is usually some time lag before lifecycle configuration
2170 * deletion is fully propagated to all the Amazon S3 systems.</p> <p>For more
2171 * information about the object expiration, see <a
2172 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#intro-lifecycle-rules-actions">Elements
2173 * to Describe Lifecycle Actions</a>.</p> <p>Related actions include:</p> <ul> <li>
2174 * <p> <a>PutBucketLifecycleConfiguration</a> </p> </li> <li> <p>
2175 * <a>GetBucketLifecycleConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
2176 * <a
2177 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle">AWS
2178 * API Reference</a></p>
2179 */
2180 virtual Model::DeleteBucketLifecycleOutcome DeleteBucketLifecycle(const Model::DeleteBucketLifecycleRequest& request) const;
2181
2182 /**
2183 * <p>Deletes the lifecycle configuration from the specified bucket. Amazon S3
2184 * removes all the lifecycle configuration rules in the lifecycle subresource
2185 * associated with the bucket. Your objects never expire, and Amazon S3 no longer
2186 * automatically deletes any objects on the basis of rules contained in the deleted
2187 * lifecycle configuration.</p> <p>To use this operation, you must have permission
2188 * to perform the <code>s3:PutLifecycleConfiguration</code> action. By default, the
2189 * bucket owner has this permission and the bucket owner can grant this permission
2190 * to others.</p> <p>There is usually some time lag before lifecycle configuration
2191 * deletion is fully propagated to all the Amazon S3 systems.</p> <p>For more
2192 * information about the object expiration, see <a
2193 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#intro-lifecycle-rules-actions">Elements
2194 * to Describe Lifecycle Actions</a>.</p> <p>Related actions include:</p> <ul> <li>
2195 * <p> <a>PutBucketLifecycleConfiguration</a> </p> </li> <li> <p>
2196 * <a>GetBucketLifecycleConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
2197 * <a
2198 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle">AWS
2199 * API Reference</a></p>
2200 *
2201 * returns a future to the operation so that it can be executed in parallel to other requests.
2202 */
2203 virtual Model::DeleteBucketLifecycleOutcomeCallable DeleteBucketLifecycleCallable(const Model::DeleteBucketLifecycleRequest& request) const;
2204
2205 /**
2206 * <p>Deletes the lifecycle configuration from the specified bucket. Amazon S3
2207 * removes all the lifecycle configuration rules in the lifecycle subresource
2208 * associated with the bucket. Your objects never expire, and Amazon S3 no longer
2209 * automatically deletes any objects on the basis of rules contained in the deleted
2210 * lifecycle configuration.</p> <p>To use this operation, you must have permission
2211 * to perform the <code>s3:PutLifecycleConfiguration</code> action. By default, the
2212 * bucket owner has this permission and the bucket owner can grant this permission
2213 * to others.</p> <p>There is usually some time lag before lifecycle configuration
2214 * deletion is fully propagated to all the Amazon S3 systems.</p> <p>For more
2215 * information about the object expiration, see <a
2216 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#intro-lifecycle-rules-actions">Elements
2217 * to Describe Lifecycle Actions</a>.</p> <p>Related actions include:</p> <ul> <li>
2218 * <p> <a>PutBucketLifecycleConfiguration</a> </p> </li> <li> <p>
2219 * <a>GetBucketLifecycleConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
2220 * <a
2221 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle">AWS
2222 * API Reference</a></p>
2223 *
2224 * Queues the request into a thread executor and triggers associated callback when operation has finished.
2225 */
2226 virtual void DeleteBucketLifecycleAsync(const Model::DeleteBucketLifecycleRequest& request, const DeleteBucketLifecycleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2227
2228 /**
2229 * <p>Deletes a metrics configuration for the Amazon CloudWatch request metrics
2230 * (specified by the metrics configuration ID) from the bucket. Note that this
2231 * doesn't include the daily storage metrics.</p> <p> To use this operation, you
2232 * must have permissions to perform the <code>s3:PutMetricsConfiguration</code>
2233 * action. The bucket owner has this permission by default. The bucket owner can
2234 * grant this permission to others. For more information about permissions, see <a
2235 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
2236 * Related to Bucket Subresource Operations</a> and <a
2237 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
2238 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
2239 * CloudWatch request metrics for Amazon S3, see <a
2240 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
2241 * Metrics with Amazon CloudWatch</a>. </p> <p>The following operations are related
2242 * to <code>DeleteBucketMetricsConfiguration</code>:</p> <ul> <li> <p>
2243 * <a>GetBucketMetricsConfiguration</a> </p> </li> <li> <p>
2244 * <a>PutBucketMetricsConfiguration</a> </p> </li> <li> <p>
2245 * <a>ListBucketMetricsConfigurations</a> </p> </li> <li> <p> <a
2246 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
2247 * Metrics with Amazon CloudWatch</a> </p> </li> </ul><p><h3>See Also:</h3> <a
2248 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration">AWS
2249 * API Reference</a></p>
2250 */
2251 virtual Model::DeleteBucketMetricsConfigurationOutcome DeleteBucketMetricsConfiguration(const Model::DeleteBucketMetricsConfigurationRequest& request) const;
2252
2253 /**
2254 * <p>Deletes a metrics configuration for the Amazon CloudWatch request metrics
2255 * (specified by the metrics configuration ID) from the bucket. Note that this
2256 * doesn't include the daily storage metrics.</p> <p> To use this operation, you
2257 * must have permissions to perform the <code>s3:PutMetricsConfiguration</code>
2258 * action. The bucket owner has this permission by default. The bucket owner can
2259 * grant this permission to others. For more information about permissions, see <a
2260 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
2261 * Related to Bucket Subresource Operations</a> and <a
2262 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
2263 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
2264 * CloudWatch request metrics for Amazon S3, see <a
2265 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
2266 * Metrics with Amazon CloudWatch</a>. </p> <p>The following operations are related
2267 * to <code>DeleteBucketMetricsConfiguration</code>:</p> <ul> <li> <p>
2268 * <a>GetBucketMetricsConfiguration</a> </p> </li> <li> <p>
2269 * <a>PutBucketMetricsConfiguration</a> </p> </li> <li> <p>
2270 * <a>ListBucketMetricsConfigurations</a> </p> </li> <li> <p> <a
2271 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
2272 * Metrics with Amazon CloudWatch</a> </p> </li> </ul><p><h3>See Also:</h3> <a
2273 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration">AWS
2274 * API Reference</a></p>
2275 *
2276 * returns a future to the operation so that it can be executed in parallel to other requests.
2277 */
2278 virtual Model::DeleteBucketMetricsConfigurationOutcomeCallable DeleteBucketMetricsConfigurationCallable(const Model::DeleteBucketMetricsConfigurationRequest& request) const;
2279
2280 /**
2281 * <p>Deletes a metrics configuration for the Amazon CloudWatch request metrics
2282 * (specified by the metrics configuration ID) from the bucket. Note that this
2283 * doesn't include the daily storage metrics.</p> <p> To use this operation, you
2284 * must have permissions to perform the <code>s3:PutMetricsConfiguration</code>
2285 * action. The bucket owner has this permission by default. The bucket owner can
2286 * grant this permission to others. For more information about permissions, see <a
2287 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
2288 * Related to Bucket Subresource Operations</a> and <a
2289 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
2290 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
2291 * CloudWatch request metrics for Amazon S3, see <a
2292 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
2293 * Metrics with Amazon CloudWatch</a>. </p> <p>The following operations are related
2294 * to <code>DeleteBucketMetricsConfiguration</code>:</p> <ul> <li> <p>
2295 * <a>GetBucketMetricsConfiguration</a> </p> </li> <li> <p>
2296 * <a>PutBucketMetricsConfiguration</a> </p> </li> <li> <p>
2297 * <a>ListBucketMetricsConfigurations</a> </p> </li> <li> <p> <a
2298 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
2299 * Metrics with Amazon CloudWatch</a> </p> </li> </ul><p><h3>See Also:</h3> <a
2300 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration">AWS
2301 * API Reference</a></p>
2302 *
2303 * Queues the request into a thread executor and triggers associated callback when operation has finished.
2304 */
2305 virtual void DeleteBucketMetricsConfigurationAsync(const Model::DeleteBucketMetricsConfigurationRequest& request, const DeleteBucketMetricsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2306
2307 /**
2308 * <p>This implementation of the DELETE operation uses the policy subresource to
2309 * delete the policy of a specified bucket. If you are using an identity other than
2310 * the root user of the AWS account that owns the bucket, the calling identity must
2311 * have the <code>DeleteBucketPolicy</code> permissions on the specified bucket and
2312 * belong to the bucket owner's account to use this operation. </p> <p>If you don't
2313 * have <code>DeleteBucketPolicy</code> permissions, Amazon S3 returns a <code>403
2314 * Access Denied</code> error. If you have the correct permissions, but you're not
2315 * using an identity that belongs to the bucket owner's account, Amazon S3 returns
2316 * a <code>405 Method Not Allowed</code> error. </p> <important> <p>As a security
2317 * precaution, the root user of the AWS account that owns a bucket can always use
2318 * this operation, even if the policy explicitly denies the root user the ability
2319 * to perform this action.</p> </important> <p>For more information about bucket
2320 * policies, see <a href="
2321 * https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html">Using
2322 * Bucket Policies and UserPolicies</a>. </p> <p>The following operations are
2323 * related to <code>DeleteBucketPolicy</code> </p> <ul> <li> <p>
2324 * <a>CreateBucket</a> </p> </li> <li> <p> <a>DeleteObject</a> </p> </li>
2325 * </ul><p><h3>See Also:</h3> <a
2326 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy">AWS
2327 * API Reference</a></p>
2328 */
2329 virtual Model::DeleteBucketPolicyOutcome DeleteBucketPolicy(const Model::DeleteBucketPolicyRequest& request) const;
2330
2331 /**
2332 * <p>This implementation of the DELETE operation uses the policy subresource to
2333 * delete the policy of a specified bucket. If you are using an identity other than
2334 * the root user of the AWS account that owns the bucket, the calling identity must
2335 * have the <code>DeleteBucketPolicy</code> permissions on the specified bucket and
2336 * belong to the bucket owner's account to use this operation. </p> <p>If you don't
2337 * have <code>DeleteBucketPolicy</code> permissions, Amazon S3 returns a <code>403
2338 * Access Denied</code> error. If you have the correct permissions, but you're not
2339 * using an identity that belongs to the bucket owner's account, Amazon S3 returns
2340 * a <code>405 Method Not Allowed</code> error. </p> <important> <p>As a security
2341 * precaution, the root user of the AWS account that owns a bucket can always use
2342 * this operation, even if the policy explicitly denies the root user the ability
2343 * to perform this action.</p> </important> <p>For more information about bucket
2344 * policies, see <a href="
2345 * https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html">Using
2346 * Bucket Policies and UserPolicies</a>. </p> <p>The following operations are
2347 * related to <code>DeleteBucketPolicy</code> </p> <ul> <li> <p>
2348 * <a>CreateBucket</a> </p> </li> <li> <p> <a>DeleteObject</a> </p> </li>
2349 * </ul><p><h3>See Also:</h3> <a
2350 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy">AWS
2351 * API Reference</a></p>
2352 *
2353 * returns a future to the operation so that it can be executed in parallel to other requests.
2354 */
2355 virtual Model::DeleteBucketPolicyOutcomeCallable DeleteBucketPolicyCallable(const Model::DeleteBucketPolicyRequest& request) const;
2356
2357 /**
2358 * <p>This implementation of the DELETE operation uses the policy subresource to
2359 * delete the policy of a specified bucket. If you are using an identity other than
2360 * the root user of the AWS account that owns the bucket, the calling identity must
2361 * have the <code>DeleteBucketPolicy</code> permissions on the specified bucket and
2362 * belong to the bucket owner's account to use this operation. </p> <p>If you don't
2363 * have <code>DeleteBucketPolicy</code> permissions, Amazon S3 returns a <code>403
2364 * Access Denied</code> error. If you have the correct permissions, but you're not
2365 * using an identity that belongs to the bucket owner's account, Amazon S3 returns
2366 * a <code>405 Method Not Allowed</code> error. </p> <important> <p>As a security
2367 * precaution, the root user of the AWS account that owns a bucket can always use
2368 * this operation, even if the policy explicitly denies the root user the ability
2369 * to perform this action.</p> </important> <p>For more information about bucket
2370 * policies, see <a href="
2371 * https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html">Using
2372 * Bucket Policies and UserPolicies</a>. </p> <p>The following operations are
2373 * related to <code>DeleteBucketPolicy</code> </p> <ul> <li> <p>
2374 * <a>CreateBucket</a> </p> </li> <li> <p> <a>DeleteObject</a> </p> </li>
2375 * </ul><p><h3>See Also:</h3> <a
2376 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy">AWS
2377 * API Reference</a></p>
2378 *
2379 * Queues the request into a thread executor and triggers associated callback when operation has finished.
2380 */
2381 virtual void DeleteBucketPolicyAsync(const Model::DeleteBucketPolicyRequest& request, const DeleteBucketPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2382
2383 /**
2384 * <p> Deletes the replication configuration from the bucket.</p> <p>To use this
2385 * operation, you must have permissions to perform the
2386 * <code>s3:PutReplicationConfiguration</code> action. The bucket owner has these
2387 * permissions by default and can grant it to others. For more information about
2388 * permissions, see <a
2389 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
2390 * Related to Bucket Subresource Operations</a> and <a
2391 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
2392 * Access Permissions to Your Amazon S3 Resources</a>. </p> <note> <p>It can take a
2393 * while for the deletion of a replication configuration to fully propagate.</p>
2394 * </note> <p> For information about replication configuration, see <a href="
2395 * https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html">Replication</a>
2396 * in the <i>Amazon S3 Developer Guide</i>. </p> <p>The following operations are
2397 * related to <code>DeleteBucketReplication</code>:</p> <ul> <li> <p>
2398 * <a>PutBucketReplication</a> </p> </li> <li> <p> <a>GetBucketReplication</a> </p>
2399 * </li> </ul><p><h3>See Also:</h3> <a
2400 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication">AWS
2401 * API Reference</a></p>
2402 */
2403 virtual Model::DeleteBucketReplicationOutcome DeleteBucketReplication(const Model::DeleteBucketReplicationRequest& request) const;
2404
2405 /**
2406 * <p> Deletes the replication configuration from the bucket.</p> <p>To use this
2407 * operation, you must have permissions to perform the
2408 * <code>s3:PutReplicationConfiguration</code> action. The bucket owner has these
2409 * permissions by default and can grant it to others. For more information about
2410 * permissions, see <a
2411 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
2412 * Related to Bucket Subresource Operations</a> and <a
2413 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
2414 * Access Permissions to Your Amazon S3 Resources</a>. </p> <note> <p>It can take a
2415 * while for the deletion of a replication configuration to fully propagate.</p>
2416 * </note> <p> For information about replication configuration, see <a href="
2417 * https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html">Replication</a>
2418 * in the <i>Amazon S3 Developer Guide</i>. </p> <p>The following operations are
2419 * related to <code>DeleteBucketReplication</code>:</p> <ul> <li> <p>
2420 * <a>PutBucketReplication</a> </p> </li> <li> <p> <a>GetBucketReplication</a> </p>
2421 * </li> </ul><p><h3>See Also:</h3> <a
2422 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication">AWS
2423 * API Reference</a></p>
2424 *
2425 * returns a future to the operation so that it can be executed in parallel to other requests.
2426 */
2427 virtual Model::DeleteBucketReplicationOutcomeCallable DeleteBucketReplicationCallable(const Model::DeleteBucketReplicationRequest& request) const;
2428
2429 /**
2430 * <p> Deletes the replication configuration from the bucket.</p> <p>To use this
2431 * operation, you must have permissions to perform the
2432 * <code>s3:PutReplicationConfiguration</code> action. The bucket owner has these
2433 * permissions by default and can grant it to others. For more information about
2434 * permissions, see <a
2435 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
2436 * Related to Bucket Subresource Operations</a> and <a
2437 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
2438 * Access Permissions to Your Amazon S3 Resources</a>. </p> <note> <p>It can take a
2439 * while for the deletion of a replication configuration to fully propagate.</p>
2440 * </note> <p> For information about replication configuration, see <a href="
2441 * https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html">Replication</a>
2442 * in the <i>Amazon S3 Developer Guide</i>. </p> <p>The following operations are
2443 * related to <code>DeleteBucketReplication</code>:</p> <ul> <li> <p>
2444 * <a>PutBucketReplication</a> </p> </li> <li> <p> <a>GetBucketReplication</a> </p>
2445 * </li> </ul><p><h3>See Also:</h3> <a
2446 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication">AWS
2447 * API Reference</a></p>
2448 *
2449 * Queues the request into a thread executor and triggers associated callback when operation has finished.
2450 */
2451 virtual void DeleteBucketReplicationAsync(const Model::DeleteBucketReplicationRequest& request, const DeleteBucketReplicationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2452
2453 /**
2454 * <p>Deletes the tags from the bucket.</p> <p>To use this operation, you must have
2455 * permission to perform the <code>s3:PutBucketTagging</code> action. By default,
2456 * the bucket owner has this permission and can grant this permission to others.
2457 * </p> <p>The following operations are related to
2458 * <code>DeleteBucketTagging</code>:</p> <ul> <li> <p> <a>GetBucketTagging</a> </p>
2459 * </li> <li> <p> <a>PutBucketTagging</a> </p> </li> </ul><p><h3>See Also:</h3>
2460 * <a
2461 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging">AWS
2462 * API Reference</a></p>
2463 */
2464 virtual Model::DeleteBucketTaggingOutcome DeleteBucketTagging(const Model::DeleteBucketTaggingRequest& request) const;
2465
2466 /**
2467 * <p>Deletes the tags from the bucket.</p> <p>To use this operation, you must have
2468 * permission to perform the <code>s3:PutBucketTagging</code> action. By default,
2469 * the bucket owner has this permission and can grant this permission to others.
2470 * </p> <p>The following operations are related to
2471 * <code>DeleteBucketTagging</code>:</p> <ul> <li> <p> <a>GetBucketTagging</a> </p>
2472 * </li> <li> <p> <a>PutBucketTagging</a> </p> </li> </ul><p><h3>See Also:</h3>
2473 * <a
2474 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging">AWS
2475 * API Reference</a></p>
2476 *
2477 * returns a future to the operation so that it can be executed in parallel to other requests.
2478 */
2479 virtual Model::DeleteBucketTaggingOutcomeCallable DeleteBucketTaggingCallable(const Model::DeleteBucketTaggingRequest& request) const;
2480
2481 /**
2482 * <p>Deletes the tags from the bucket.</p> <p>To use this operation, you must have
2483 * permission to perform the <code>s3:PutBucketTagging</code> action. By default,
2484 * the bucket owner has this permission and can grant this permission to others.
2485 * </p> <p>The following operations are related to
2486 * <code>DeleteBucketTagging</code>:</p> <ul> <li> <p> <a>GetBucketTagging</a> </p>
2487 * </li> <li> <p> <a>PutBucketTagging</a> </p> </li> </ul><p><h3>See Also:</h3>
2488 * <a
2489 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging">AWS
2490 * API Reference</a></p>
2491 *
2492 * Queues the request into a thread executor and triggers associated callback when operation has finished.
2493 */
2494 virtual void DeleteBucketTaggingAsync(const Model::DeleteBucketTaggingRequest& request, const DeleteBucketTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2495
2496 /**
2497 * <p>This operation removes the website configuration for a bucket. Amazon S3
2498 * returns a <code>200 OK</code> response upon successfully deleting a website
2499 * configuration on the specified bucket. You will get a <code>200 OK</code>
2500 * response if the website configuration you are trying to delete does not exist on
2501 * the bucket. Amazon S3 returns a <code>404</code> response if the bucket
2502 * specified in the request does not exist.</p> <p>This DELETE operation requires
2503 * the <code>S3:DeleteBucketWebsite</code> permission. By default, only the bucket
2504 * owner can delete the website configuration attached to a bucket. However, bucket
2505 * owners can grant other users permission to delete the website configuration by
2506 * writing a bucket policy granting them the <code>S3:DeleteBucketWebsite</code>
2507 * permission. </p> <p>For more information about hosting websites, see <a
2508 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
2509 * Websites on Amazon S3</a>. </p> <p>The following operations are related to
2510 * <code>DeleteBucketWebsite</code>:</p> <ul> <li> <p> <a>GetBucketWebsite</a> </p>
2511 * </li> <li> <p> <a>PutBucketWebsite</a> </p> </li> </ul><p><h3>See Also:</h3>
2512 * <a
2513 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite">AWS
2514 * API Reference</a></p>
2515 */
2516 virtual Model::DeleteBucketWebsiteOutcome DeleteBucketWebsite(const Model::DeleteBucketWebsiteRequest& request) const;
2517
2518 /**
2519 * <p>This operation removes the website configuration for a bucket. Amazon S3
2520 * returns a <code>200 OK</code> response upon successfully deleting a website
2521 * configuration on the specified bucket. You will get a <code>200 OK</code>
2522 * response if the website configuration you are trying to delete does not exist on
2523 * the bucket. Amazon S3 returns a <code>404</code> response if the bucket
2524 * specified in the request does not exist.</p> <p>This DELETE operation requires
2525 * the <code>S3:DeleteBucketWebsite</code> permission. By default, only the bucket
2526 * owner can delete the website configuration attached to a bucket. However, bucket
2527 * owners can grant other users permission to delete the website configuration by
2528 * writing a bucket policy granting them the <code>S3:DeleteBucketWebsite</code>
2529 * permission. </p> <p>For more information about hosting websites, see <a
2530 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
2531 * Websites on Amazon S3</a>. </p> <p>The following operations are related to
2532 * <code>DeleteBucketWebsite</code>:</p> <ul> <li> <p> <a>GetBucketWebsite</a> </p>
2533 * </li> <li> <p> <a>PutBucketWebsite</a> </p> </li> </ul><p><h3>See Also:</h3>
2534 * <a
2535 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite">AWS
2536 * API Reference</a></p>
2537 *
2538 * returns a future to the operation so that it can be executed in parallel to other requests.
2539 */
2540 virtual Model::DeleteBucketWebsiteOutcomeCallable DeleteBucketWebsiteCallable(const Model::DeleteBucketWebsiteRequest& request) const;
2541
2542 /**
2543 * <p>This operation removes the website configuration for a bucket. Amazon S3
2544 * returns a <code>200 OK</code> response upon successfully deleting a website
2545 * configuration on the specified bucket. You will get a <code>200 OK</code>
2546 * response if the website configuration you are trying to delete does not exist on
2547 * the bucket. Amazon S3 returns a <code>404</code> response if the bucket
2548 * specified in the request does not exist.</p> <p>This DELETE operation requires
2549 * the <code>S3:DeleteBucketWebsite</code> permission. By default, only the bucket
2550 * owner can delete the website configuration attached to a bucket. However, bucket
2551 * owners can grant other users permission to delete the website configuration by
2552 * writing a bucket policy granting them the <code>S3:DeleteBucketWebsite</code>
2553 * permission. </p> <p>For more information about hosting websites, see <a
2554 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
2555 * Websites on Amazon S3</a>. </p> <p>The following operations are related to
2556 * <code>DeleteBucketWebsite</code>:</p> <ul> <li> <p> <a>GetBucketWebsite</a> </p>
2557 * </li> <li> <p> <a>PutBucketWebsite</a> </p> </li> </ul><p><h3>See Also:</h3>
2558 * <a
2559 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite">AWS
2560 * API Reference</a></p>
2561 *
2562 * Queues the request into a thread executor and triggers associated callback when operation has finished.
2563 */
2564 virtual void DeleteBucketWebsiteAsync(const Model::DeleteBucketWebsiteRequest& request, const DeleteBucketWebsiteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2565
2566 /**
2567 * <p>Removes the null version (if there is one) of an object and inserts a delete
2568 * marker, which becomes the latest version of the object. If there isn't a null
2569 * version, Amazon S3 does not remove any objects.</p> <p>To remove a specific
2570 * version, you must be the bucket owner and you must use the version Id
2571 * subresource. Using this subresource permanently deletes the version. If the
2572 * object deleted is a delete marker, Amazon S3 sets the response header,
2573 * <code>x-amz-delete-marker</code>, to true. </p> <p>If the object you want to
2574 * delete is in a bucket where the bucket versioning configuration is MFA Delete
2575 * enabled, you must include the <code>x-amz-mfa</code> request header in the
2576 * DELETE <code>versionId</code> request. Requests that include
2577 * <code>x-amz-mfa</code> must use HTTPS. </p> <p> For more information about MFA
2578 * Delete, see <a
2579 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html">Using
2580 * MFA Delete</a>. To see sample requests that use versioning, see <a
2581 * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html#ExampleVersionObjectDelete">Sample
2582 * Request</a>. </p> <p>You can delete objects by explicitly calling the DELETE
2583 * Object API or configure its lifecycle (<a>PutBucketLifecycle</a>) to enable
2584 * Amazon S3 to remove them for you. If you want to block users or accounts from
2585 * removing or deleting objects from your bucket, you must deny them the
2586 * <code>s3:DeleteObject</code>, <code>s3:DeleteObjectVersion</code>, and
2587 * <code>s3:PutLifeCycleConfiguration</code> actions. </p> <p>The following
2588 * operation is related to <code>DeleteObject</code>:</p> <ul> <li> <p>
2589 * <a>PutObject</a> </p> </li> </ul><p><h3>See Also:</h3> <a
2590 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject">AWS API
2591 * Reference</a></p>
2592 */
2593 virtual Model::DeleteObjectOutcome DeleteObject(const Model::DeleteObjectRequest& request) const;
2594
2595 /**
2596 * <p>Removes the null version (if there is one) of an object and inserts a delete
2597 * marker, which becomes the latest version of the object. If there isn't a null
2598 * version, Amazon S3 does not remove any objects.</p> <p>To remove a specific
2599 * version, you must be the bucket owner and you must use the version Id
2600 * subresource. Using this subresource permanently deletes the version. If the
2601 * object deleted is a delete marker, Amazon S3 sets the response header,
2602 * <code>x-amz-delete-marker</code>, to true. </p> <p>If the object you want to
2603 * delete is in a bucket where the bucket versioning configuration is MFA Delete
2604 * enabled, you must include the <code>x-amz-mfa</code> request header in the
2605 * DELETE <code>versionId</code> request. Requests that include
2606 * <code>x-amz-mfa</code> must use HTTPS. </p> <p> For more information about MFA
2607 * Delete, see <a
2608 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html">Using
2609 * MFA Delete</a>. To see sample requests that use versioning, see <a
2610 * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html#ExampleVersionObjectDelete">Sample
2611 * Request</a>. </p> <p>You can delete objects by explicitly calling the DELETE
2612 * Object API or configure its lifecycle (<a>PutBucketLifecycle</a>) to enable
2613 * Amazon S3 to remove them for you. If you want to block users or accounts from
2614 * removing or deleting objects from your bucket, you must deny them the
2615 * <code>s3:DeleteObject</code>, <code>s3:DeleteObjectVersion</code>, and
2616 * <code>s3:PutLifeCycleConfiguration</code> actions. </p> <p>The following
2617 * operation is related to <code>DeleteObject</code>:</p> <ul> <li> <p>
2618 * <a>PutObject</a> </p> </li> </ul><p><h3>See Also:</h3> <a
2619 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject">AWS API
2620 * Reference</a></p>
2621 *
2622 * returns a future to the operation so that it can be executed in parallel to other requests.
2623 */
2624 virtual Model::DeleteObjectOutcomeCallable DeleteObjectCallable(const Model::DeleteObjectRequest& request) const;
2625
2626 /**
2627 * <p>Removes the null version (if there is one) of an object and inserts a delete
2628 * marker, which becomes the latest version of the object. If there isn't a null
2629 * version, Amazon S3 does not remove any objects.</p> <p>To remove a specific
2630 * version, you must be the bucket owner and you must use the version Id
2631 * subresource. Using this subresource permanently deletes the version. If the
2632 * object deleted is a delete marker, Amazon S3 sets the response header,
2633 * <code>x-amz-delete-marker</code>, to true. </p> <p>If the object you want to
2634 * delete is in a bucket where the bucket versioning configuration is MFA Delete
2635 * enabled, you must include the <code>x-amz-mfa</code> request header in the
2636 * DELETE <code>versionId</code> request. Requests that include
2637 * <code>x-amz-mfa</code> must use HTTPS. </p> <p> For more information about MFA
2638 * Delete, see <a
2639 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html">Using
2640 * MFA Delete</a>. To see sample requests that use versioning, see <a
2641 * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html#ExampleVersionObjectDelete">Sample
2642 * Request</a>. </p> <p>You can delete objects by explicitly calling the DELETE
2643 * Object API or configure its lifecycle (<a>PutBucketLifecycle</a>) to enable
2644 * Amazon S3 to remove them for you. If you want to block users or accounts from
2645 * removing or deleting objects from your bucket, you must deny them the
2646 * <code>s3:DeleteObject</code>, <code>s3:DeleteObjectVersion</code>, and
2647 * <code>s3:PutLifeCycleConfiguration</code> actions. </p> <p>The following
2648 * operation is related to <code>DeleteObject</code>:</p> <ul> <li> <p>
2649 * <a>PutObject</a> </p> </li> </ul><p><h3>See Also:</h3> <a
2650 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject">AWS API
2651 * Reference</a></p>
2652 *
2653 * Queues the request into a thread executor and triggers associated callback when operation has finished.
2654 */
2655 virtual void DeleteObjectAsync(const Model::DeleteObjectRequest& request, const DeleteObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2656
2657 /**
2658 * <p>Removes the entire tag set from the specified object. For more information
2659 * about managing object tags, see <a
2660 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete">
2661 * Object Tagging</a>.</p> <p>To use this operation, you must have permission to
2662 * perform the <code>s3:DeleteObjectTagging</code> action.</p> <p>To delete tags of
2663 * a specific object version, add the <code>versionId</code> query parameter in the
2664 * request. You will need permission for the
2665 * <code>s3:DeleteObjectVersionTagging</code> action.</p> <p>The following
2666 * operations are related to <code>DeleteBucketMetricsConfiguration</code>:</p>
2667 * <ul> <li> <p> <a>PutObjectTagging</a> </p> </li> <li> <p>
2668 * <a>GetObjectTagging</a> </p> </li> </ul><p><h3>See Also:</h3> <a
2669 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging">AWS
2670 * API Reference</a></p>
2671 */
2672 virtual Model::DeleteObjectTaggingOutcome DeleteObjectTagging(const Model::DeleteObjectTaggingRequest& request) const;
2673
2674 /**
2675 * <p>Removes the entire tag set from the specified object. For more information
2676 * about managing object tags, see <a
2677 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete">
2678 * Object Tagging</a>.</p> <p>To use this operation, you must have permission to
2679 * perform the <code>s3:DeleteObjectTagging</code> action.</p> <p>To delete tags of
2680 * a specific object version, add the <code>versionId</code> query parameter in the
2681 * request. You will need permission for the
2682 * <code>s3:DeleteObjectVersionTagging</code> action.</p> <p>The following
2683 * operations are related to <code>DeleteBucketMetricsConfiguration</code>:</p>
2684 * <ul> <li> <p> <a>PutObjectTagging</a> </p> </li> <li> <p>
2685 * <a>GetObjectTagging</a> </p> </li> </ul><p><h3>See Also:</h3> <a
2686 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging">AWS
2687 * API Reference</a></p>
2688 *
2689 * returns a future to the operation so that it can be executed in parallel to other requests.
2690 */
2691 virtual Model::DeleteObjectTaggingOutcomeCallable DeleteObjectTaggingCallable(const Model::DeleteObjectTaggingRequest& request) const;
2692
2693 /**
2694 * <p>Removes the entire tag set from the specified object. For more information
2695 * about managing object tags, see <a
2696 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete">
2697 * Object Tagging</a>.</p> <p>To use this operation, you must have permission to
2698 * perform the <code>s3:DeleteObjectTagging</code> action.</p> <p>To delete tags of
2699 * a specific object version, add the <code>versionId</code> query parameter in the
2700 * request. You will need permission for the
2701 * <code>s3:DeleteObjectVersionTagging</code> action.</p> <p>The following
2702 * operations are related to <code>DeleteBucketMetricsConfiguration</code>:</p>
2703 * <ul> <li> <p> <a>PutObjectTagging</a> </p> </li> <li> <p>
2704 * <a>GetObjectTagging</a> </p> </li> </ul><p><h3>See Also:</h3> <a
2705 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging">AWS
2706 * API Reference</a></p>
2707 *
2708 * Queues the request into a thread executor and triggers associated callback when operation has finished.
2709 */
2710 virtual void DeleteObjectTaggingAsync(const Model::DeleteObjectTaggingRequest& request, const DeleteObjectTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2711
2712 /**
2713 * <p>This operation enables you to delete multiple objects from a bucket using a
2714 * single HTTP request. If you know the object keys that you want to delete, then
2715 * this operation provides a suitable alternative to sending individual delete
2716 * requests, reducing per-request overhead.</p> <p>The request contains a list of
2717 * up to 1000 keys that you want to delete. In the XML, you provide the object key
2718 * names, and optionally, version IDs if you want to delete a specific version of
2719 * the object from a versioning-enabled bucket. For each key, Amazon S3 performs a
2720 * delete operation and returns the result of that delete, success, or failure, in
2721 * the response. Note that if the object specified in the request is not found,
2722 * Amazon S3 returns the result as deleted.</p> <p> The operation supports two
2723 * modes for the response: verbose and quiet. By default, the operation uses
2724 * verbose mode in which the response includes the result of deletion of each key
2725 * in your request. In quiet mode the response includes only keys where the delete
2726 * operation encountered an error. For a successful deletion, the operation does
2727 * not return any information about the delete in the response body.</p> <p>When
2728 * performing this operation on an MFA Delete enabled bucket, that attempts to
2729 * delete any versioned objects, you must include an MFA token. If you do not
2730 * provide one, the entire request will fail, even if there are non-versioned
2731 * objects you are trying to delete. If you provide an invalid token, whether there
2732 * are versioned keys in the request or not, the entire Multi-Object Delete request
2733 * will fail. For information about MFA Delete, see <a
2734 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete">
2735 * MFA Delete</a>.</p> <p>Finally, the Content-MD5 header is required for all
2736 * Multi-Object Delete requests. Amazon S3 uses the header value to ensure that
2737 * your request body has not been altered in transit.</p> <p>The following
2738 * operations are related to <code>DeleteObjects</code>:</p> <ul> <li> <p>
2739 * <a>CreateMultipartUpload</a> </p> </li> <li> <p> <a>UploadPart</a> </p> </li>
2740 * <li> <p> <a>CompleteMultipartUpload</a> </p> </li> <li> <p> <a>ListParts</a>
2741 * </p> </li> <li> <p> <a>AbortMultipartUpload</a> </p> </li> </ul><p><h3>See
2742 * Also:</h3> <a
2743 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects">AWS
2744 * API Reference</a></p>
2745 */
2746 virtual Model::DeleteObjectsOutcome DeleteObjects(const Model::DeleteObjectsRequest& request) const;
2747
2748 /**
2749 * <p>This operation enables you to delete multiple objects from a bucket using a
2750 * single HTTP request. If you know the object keys that you want to delete, then
2751 * this operation provides a suitable alternative to sending individual delete
2752 * requests, reducing per-request overhead.</p> <p>The request contains a list of
2753 * up to 1000 keys that you want to delete. In the XML, you provide the object key
2754 * names, and optionally, version IDs if you want to delete a specific version of
2755 * the object from a versioning-enabled bucket. For each key, Amazon S3 performs a
2756 * delete operation and returns the result of that delete, success, or failure, in
2757 * the response. Note that if the object specified in the request is not found,
2758 * Amazon S3 returns the result as deleted.</p> <p> The operation supports two
2759 * modes for the response: verbose and quiet. By default, the operation uses
2760 * verbose mode in which the response includes the result of deletion of each key
2761 * in your request. In quiet mode the response includes only keys where the delete
2762 * operation encountered an error. For a successful deletion, the operation does
2763 * not return any information about the delete in the response body.</p> <p>When
2764 * performing this operation on an MFA Delete enabled bucket, that attempts to
2765 * delete any versioned objects, you must include an MFA token. If you do not
2766 * provide one, the entire request will fail, even if there are non-versioned
2767 * objects you are trying to delete. If you provide an invalid token, whether there
2768 * are versioned keys in the request or not, the entire Multi-Object Delete request
2769 * will fail. For information about MFA Delete, see <a
2770 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete">
2771 * MFA Delete</a>.</p> <p>Finally, the Content-MD5 header is required for all
2772 * Multi-Object Delete requests. Amazon S3 uses the header value to ensure that
2773 * your request body has not been altered in transit.</p> <p>The following
2774 * operations are related to <code>DeleteObjects</code>:</p> <ul> <li> <p>
2775 * <a>CreateMultipartUpload</a> </p> </li> <li> <p> <a>UploadPart</a> </p> </li>
2776 * <li> <p> <a>CompleteMultipartUpload</a> </p> </li> <li> <p> <a>ListParts</a>
2777 * </p> </li> <li> <p> <a>AbortMultipartUpload</a> </p> </li> </ul><p><h3>See
2778 * Also:</h3> <a
2779 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects">AWS
2780 * API Reference</a></p>
2781 *
2782 * returns a future to the operation so that it can be executed in parallel to other requests.
2783 */
2784 virtual Model::DeleteObjectsOutcomeCallable DeleteObjectsCallable(const Model::DeleteObjectsRequest& request) const;
2785
2786 /**
2787 * <p>This operation enables you to delete multiple objects from a bucket using a
2788 * single HTTP request. If you know the object keys that you want to delete, then
2789 * this operation provides a suitable alternative to sending individual delete
2790 * requests, reducing per-request overhead.</p> <p>The request contains a list of
2791 * up to 1000 keys that you want to delete. In the XML, you provide the object key
2792 * names, and optionally, version IDs if you want to delete a specific version of
2793 * the object from a versioning-enabled bucket. For each key, Amazon S3 performs a
2794 * delete operation and returns the result of that delete, success, or failure, in
2795 * the response. Note that if the object specified in the request is not found,
2796 * Amazon S3 returns the result as deleted.</p> <p> The operation supports two
2797 * modes for the response: verbose and quiet. By default, the operation uses
2798 * verbose mode in which the response includes the result of deletion of each key
2799 * in your request. In quiet mode the response includes only keys where the delete
2800 * operation encountered an error. For a successful deletion, the operation does
2801 * not return any information about the delete in the response body.</p> <p>When
2802 * performing this operation on an MFA Delete enabled bucket, that attempts to
2803 * delete any versioned objects, you must include an MFA token. If you do not
2804 * provide one, the entire request will fail, even if there are non-versioned
2805 * objects you are trying to delete. If you provide an invalid token, whether there
2806 * are versioned keys in the request or not, the entire Multi-Object Delete request
2807 * will fail. For information about MFA Delete, see <a
2808 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete">
2809 * MFA Delete</a>.</p> <p>Finally, the Content-MD5 header is required for all
2810 * Multi-Object Delete requests. Amazon S3 uses the header value to ensure that
2811 * your request body has not been altered in transit.</p> <p>The following
2812 * operations are related to <code>DeleteObjects</code>:</p> <ul> <li> <p>
2813 * <a>CreateMultipartUpload</a> </p> </li> <li> <p> <a>UploadPart</a> </p> </li>
2814 * <li> <p> <a>CompleteMultipartUpload</a> </p> </li> <li> <p> <a>ListParts</a>
2815 * </p> </li> <li> <p> <a>AbortMultipartUpload</a> </p> </li> </ul><p><h3>See
2816 * Also:</h3> <a
2817 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects">AWS
2818 * API Reference</a></p>
2819 *
2820 * Queues the request into a thread executor and triggers associated callback when operation has finished.
2821 */
2822 virtual void DeleteObjectsAsync(const Model::DeleteObjectsRequest& request, const DeleteObjectsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2823
2824 /**
2825 * <p>Removes the <code>PublicAccessBlock</code> configuration for an Amazon S3
2826 * bucket. To use this operation, you must have the
2827 * <code>s3:PutBucketPublicAccessBlock</code> permission. For more information
2828 * about permissions, see <a
2829 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
2830 * Related to Bucket Subresource Operations</a> and <a
2831 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
2832 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>The following
2833 * operations are related to <code>DeleteBucketMetricsConfiguration</code>:</p>
2834 * <ul> <li> <p> <a
2835 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html">Using
2836 * Amazon S3 Block Public Access</a> </p> </li> <li> <p>
2837 * <a>GetPublicAccessBlock</a> </p> </li> <li> <p> <a>PutPublicAccessBlock</a> </p>
2838 * </li> <li> <p> <a>GetBucketPolicyStatus</a> </p> </li> </ul><p><h3>See
2839 * Also:</h3> <a
2840 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeletePublicAccessBlock">AWS
2841 * API Reference</a></p>
2842 */
2843 virtual Model::DeletePublicAccessBlockOutcome DeletePublicAccessBlock(const Model::DeletePublicAccessBlockRequest& request) const;
2844
2845 /**
2846 * <p>Removes the <code>PublicAccessBlock</code> configuration for an Amazon S3
2847 * bucket. To use this operation, you must have the
2848 * <code>s3:PutBucketPublicAccessBlock</code> permission. For more information
2849 * about permissions, see <a
2850 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
2851 * Related to Bucket Subresource Operations</a> and <a
2852 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
2853 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>The following
2854 * operations are related to <code>DeleteBucketMetricsConfiguration</code>:</p>
2855 * <ul> <li> <p> <a
2856 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html">Using
2857 * Amazon S3 Block Public Access</a> </p> </li> <li> <p>
2858 * <a>GetPublicAccessBlock</a> </p> </li> <li> <p> <a>PutPublicAccessBlock</a> </p>
2859 * </li> <li> <p> <a>GetBucketPolicyStatus</a> </p> </li> </ul><p><h3>See
2860 * Also:</h3> <a
2861 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeletePublicAccessBlock">AWS
2862 * API Reference</a></p>
2863 *
2864 * returns a future to the operation so that it can be executed in parallel to other requests.
2865 */
2866 virtual Model::DeletePublicAccessBlockOutcomeCallable DeletePublicAccessBlockCallable(const Model::DeletePublicAccessBlockRequest& request) const;
2867
2868 /**
2869 * <p>Removes the <code>PublicAccessBlock</code> configuration for an Amazon S3
2870 * bucket. To use this operation, you must have the
2871 * <code>s3:PutBucketPublicAccessBlock</code> permission. For more information
2872 * about permissions, see <a
2873 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
2874 * Related to Bucket Subresource Operations</a> and <a
2875 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
2876 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>The following
2877 * operations are related to <code>DeleteBucketMetricsConfiguration</code>:</p>
2878 * <ul> <li> <p> <a
2879 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html">Using
2880 * Amazon S3 Block Public Access</a> </p> </li> <li> <p>
2881 * <a>GetPublicAccessBlock</a> </p> </li> <li> <p> <a>PutPublicAccessBlock</a> </p>
2882 * </li> <li> <p> <a>GetBucketPolicyStatus</a> </p> </li> </ul><p><h3>See
2883 * Also:</h3> <a
2884 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeletePublicAccessBlock">AWS
2885 * API Reference</a></p>
2886 *
2887 * Queues the request into a thread executor and triggers associated callback when operation has finished.
2888 */
2889 virtual void DeletePublicAccessBlockAsync(const Model::DeletePublicAccessBlockRequest& request, const DeletePublicAccessBlockResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2890
2891 /**
2892 * <p>This implementation of the GET operation uses the <code>accelerate</code>
2893 * subresource to return the Transfer Acceleration state of a bucket, which is
2894 * either <code>Enabled</code> or <code>Suspended</code>. Amazon S3 Transfer
2895 * Acceleration is a bucket-level feature that enables you to perform faster data
2896 * transfers to and from Amazon S3.</p> <p>To use this operation, you must have
2897 * permission to perform the <code>s3:GetAccelerateConfiguration</code> action. The
2898 * bucket owner has this permission by default. The bucket owner can grant this
2899 * permission to others. For more information about permissions, see <a
2900 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
2901 * Related to Bucket Subresource Operations</a> and <a
2902 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//s3-access-control.html">Managing
2903 * Access Permissions to your Amazon S3 Resources</a> in the <i>Amazon Simple
2904 * Storage Service Developer Guide</i>.</p> <p>You set the Transfer Acceleration
2905 * state of an existing bucket to <code>Enabled</code> or <code>Suspended</code> by
2906 * using the <a>PutBucketAccelerateConfiguration</a> operation. </p> <p>A GET
2907 * <code>accelerate</code> request does not return a state value for a bucket that
2908 * has no transfer acceleration state. A bucket has no Transfer Acceleration state
2909 * if a state has never been set on the bucket. </p> <p>For more information about
2910 * transfer acceleration, see <a
2911 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//transfer-acceleration.html">Transfer
2912 * Acceleration</a> in the Amazon Simple Storage Service Developer Guide.</p> <p
2913 * class="title"> <b>Related Resources</b> </p> <ul> <li> <p>
2914 * <a>PutBucketAccelerateConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
2915 * <a
2916 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration">AWS
2917 * API Reference</a></p>
2918 */
2919 virtual Model::GetBucketAccelerateConfigurationOutcome GetBucketAccelerateConfiguration(const Model::GetBucketAccelerateConfigurationRequest& request) const;
2920
2921 /**
2922 * <p>This implementation of the GET operation uses the <code>accelerate</code>
2923 * subresource to return the Transfer Acceleration state of a bucket, which is
2924 * either <code>Enabled</code> or <code>Suspended</code>. Amazon S3 Transfer
2925 * Acceleration is a bucket-level feature that enables you to perform faster data
2926 * transfers to and from Amazon S3.</p> <p>To use this operation, you must have
2927 * permission to perform the <code>s3:GetAccelerateConfiguration</code> action. The
2928 * bucket owner has this permission by default. The bucket owner can grant this
2929 * permission to others. For more information about permissions, see <a
2930 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
2931 * Related to Bucket Subresource Operations</a> and <a
2932 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//s3-access-control.html">Managing
2933 * Access Permissions to your Amazon S3 Resources</a> in the <i>Amazon Simple
2934 * Storage Service Developer Guide</i>.</p> <p>You set the Transfer Acceleration
2935 * state of an existing bucket to <code>Enabled</code> or <code>Suspended</code> by
2936 * using the <a>PutBucketAccelerateConfiguration</a> operation. </p> <p>A GET
2937 * <code>accelerate</code> request does not return a state value for a bucket that
2938 * has no transfer acceleration state. A bucket has no Transfer Acceleration state
2939 * if a state has never been set on the bucket. </p> <p>For more information about
2940 * transfer acceleration, see <a
2941 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//transfer-acceleration.html">Transfer
2942 * Acceleration</a> in the Amazon Simple Storage Service Developer Guide.</p> <p
2943 * class="title"> <b>Related Resources</b> </p> <ul> <li> <p>
2944 * <a>PutBucketAccelerateConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
2945 * <a
2946 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration">AWS
2947 * API Reference</a></p>
2948 *
2949 * returns a future to the operation so that it can be executed in parallel to other requests.
2950 */
2951 virtual Model::GetBucketAccelerateConfigurationOutcomeCallable GetBucketAccelerateConfigurationCallable(const Model::GetBucketAccelerateConfigurationRequest& request) const;
2952
2953 /**
2954 * <p>This implementation of the GET operation uses the <code>accelerate</code>
2955 * subresource to return the Transfer Acceleration state of a bucket, which is
2956 * either <code>Enabled</code> or <code>Suspended</code>. Amazon S3 Transfer
2957 * Acceleration is a bucket-level feature that enables you to perform faster data
2958 * transfers to and from Amazon S3.</p> <p>To use this operation, you must have
2959 * permission to perform the <code>s3:GetAccelerateConfiguration</code> action. The
2960 * bucket owner has this permission by default. The bucket owner can grant this
2961 * permission to others. For more information about permissions, see <a
2962 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
2963 * Related to Bucket Subresource Operations</a> and <a
2964 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//s3-access-control.html">Managing
2965 * Access Permissions to your Amazon S3 Resources</a> in the <i>Amazon Simple
2966 * Storage Service Developer Guide</i>.</p> <p>You set the Transfer Acceleration
2967 * state of an existing bucket to <code>Enabled</code> or <code>Suspended</code> by
2968 * using the <a>PutBucketAccelerateConfiguration</a> operation. </p> <p>A GET
2969 * <code>accelerate</code> request does not return a state value for a bucket that
2970 * has no transfer acceleration state. A bucket has no Transfer Acceleration state
2971 * if a state has never been set on the bucket. </p> <p>For more information about
2972 * transfer acceleration, see <a
2973 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//transfer-acceleration.html">Transfer
2974 * Acceleration</a> in the Amazon Simple Storage Service Developer Guide.</p> <p
2975 * class="title"> <b>Related Resources</b> </p> <ul> <li> <p>
2976 * <a>PutBucketAccelerateConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
2977 * <a
2978 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration">AWS
2979 * API Reference</a></p>
2980 *
2981 * Queues the request into a thread executor and triggers associated callback when operation has finished.
2982 */
2983 virtual void GetBucketAccelerateConfigurationAsync(const Model::GetBucketAccelerateConfigurationRequest& request, const GetBucketAccelerateConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2984
2985 /**
2986 * <p>This implementation of the <code>GET</code> operation uses the
2987 * <code>acl</code> subresource to return the access control list (ACL) of a
2988 * bucket. To use <code>GET</code> to return the ACL of the bucket, you must have
2989 * <code>READ_ACP</code> access to the bucket. If <code>READ_ACP</code> permission
2990 * is granted to the anonymous user, you can return the ACL of the bucket without
2991 * using an authorization header.</p> <p class="title"> <b>Related Resources</b>
2992 * </p> <ul> <li> <p> </p> </li> </ul><p><h3>See Also:</h3> <a
2993 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl">AWS API
2994 * Reference</a></p>
2995 */
2996 virtual Model::GetBucketAclOutcome GetBucketAcl(const Model::GetBucketAclRequest& request) const;
2997
2998 /**
2999 * <p>This implementation of the <code>GET</code> operation uses the
3000 * <code>acl</code> subresource to return the access control list (ACL) of a
3001 * bucket. To use <code>GET</code> to return the ACL of the bucket, you must have
3002 * <code>READ_ACP</code> access to the bucket. If <code>READ_ACP</code> permission
3003 * is granted to the anonymous user, you can return the ACL of the bucket without
3004 * using an authorization header.</p> <p class="title"> <b>Related Resources</b>
3005 * </p> <ul> <li> <p> </p> </li> </ul><p><h3>See Also:</h3> <a
3006 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl">AWS API
3007 * Reference</a></p>
3008 *
3009 * returns a future to the operation so that it can be executed in parallel to other requests.
3010 */
3011 virtual Model::GetBucketAclOutcomeCallable GetBucketAclCallable(const Model::GetBucketAclRequest& request) const;
3012
3013 /**
3014 * <p>This implementation of the <code>GET</code> operation uses the
3015 * <code>acl</code> subresource to return the access control list (ACL) of a
3016 * bucket. To use <code>GET</code> to return the ACL of the bucket, you must have
3017 * <code>READ_ACP</code> access to the bucket. If <code>READ_ACP</code> permission
3018 * is granted to the anonymous user, you can return the ACL of the bucket without
3019 * using an authorization header.</p> <p class="title"> <b>Related Resources</b>
3020 * </p> <ul> <li> <p> </p> </li> </ul><p><h3>See Also:</h3> <a
3021 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl">AWS API
3022 * Reference</a></p>
3023 *
3024 * Queues the request into a thread executor and triggers associated callback when operation has finished.
3025 */
3026 virtual void GetBucketAclAsync(const Model::GetBucketAclRequest& request, const GetBucketAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
3027
3028 /**
3029 * <p>This implementation of the GET operation returns an analytics configuration
3030 * (identified by the analytics configuration ID) from the bucket.</p> <p>To use
3031 * this operation, you must have permissions to perform the
3032 * <code>s3:GetAnalyticsConfiguration</code> action. The bucket owner has this
3033 * permission by default. The bucket owner can grant this permission to others. For
3034 * more information about permissions, see <a
3035 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">
3036 * Permissions Related to Bucket Subresource Operations</a> and <a
3037 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
3038 * Access Permissions to Your Amazon S3 Resources</a> in the <i>Amazon Simple
3039 * Storage Service Developer Guide</i>. </p> <p>For information about Amazon S3
3040 * analytics feature, see <a
3041 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html">Amazon
3042 * S3 Analytics – Storage Class Analysis</a> in the <i>Amazon Simple Storage
3043 * Service Developer Guide</i>.</p> <p class="title"> <b>Related Resources</b> </p>
3044 * <ul> <li> <p> </p> </li> <li> <p> </p> </li> <li> <p> </p> </li> </ul><p><h3>See
3045 * Also:</h3> <a
3046 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration">AWS
3047 * API Reference</a></p>
3048 */
3049 virtual Model::GetBucketAnalyticsConfigurationOutcome GetBucketAnalyticsConfiguration(const Model::GetBucketAnalyticsConfigurationRequest& request) const;
3050
3051 /**
3052 * <p>This implementation of the GET operation returns an analytics configuration
3053 * (identified by the analytics configuration ID) from the bucket.</p> <p>To use
3054 * this operation, you must have permissions to perform the
3055 * <code>s3:GetAnalyticsConfiguration</code> action. The bucket owner has this
3056 * permission by default. The bucket owner can grant this permission to others. For
3057 * more information about permissions, see <a
3058 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">
3059 * Permissions Related to Bucket Subresource Operations</a> and <a
3060 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
3061 * Access Permissions to Your Amazon S3 Resources</a> in the <i>Amazon Simple
3062 * Storage Service Developer Guide</i>. </p> <p>For information about Amazon S3
3063 * analytics feature, see <a
3064 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html">Amazon
3065 * S3 Analytics – Storage Class Analysis</a> in the <i>Amazon Simple Storage
3066 * Service Developer Guide</i>.</p> <p class="title"> <b>Related Resources</b> </p>
3067 * <ul> <li> <p> </p> </li> <li> <p> </p> </li> <li> <p> </p> </li> </ul><p><h3>See
3068 * Also:</h3> <a
3069 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration">AWS
3070 * API Reference</a></p>
3071 *
3072 * returns a future to the operation so that it can be executed in parallel to other requests.
3073 */
3074 virtual Model::GetBucketAnalyticsConfigurationOutcomeCallable GetBucketAnalyticsConfigurationCallable(const Model::GetBucketAnalyticsConfigurationRequest& request) const;
3075
3076 /**
3077 * <p>This implementation of the GET operation returns an analytics configuration
3078 * (identified by the analytics configuration ID) from the bucket.</p> <p>To use
3079 * this operation, you must have permissions to perform the
3080 * <code>s3:GetAnalyticsConfiguration</code> action. The bucket owner has this
3081 * permission by default. The bucket owner can grant this permission to others. For
3082 * more information about permissions, see <a
3083 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">
3084 * Permissions Related to Bucket Subresource Operations</a> and <a
3085 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
3086 * Access Permissions to Your Amazon S3 Resources</a> in the <i>Amazon Simple
3087 * Storage Service Developer Guide</i>. </p> <p>For information about Amazon S3
3088 * analytics feature, see <a
3089 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html">Amazon
3090 * S3 Analytics – Storage Class Analysis</a> in the <i>Amazon Simple Storage
3091 * Service Developer Guide</i>.</p> <p class="title"> <b>Related Resources</b> </p>
3092 * <ul> <li> <p> </p> </li> <li> <p> </p> </li> <li> <p> </p> </li> </ul><p><h3>See
3093 * Also:</h3> <a
3094 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration">AWS
3095 * API Reference</a></p>
3096 *
3097 * Queues the request into a thread executor and triggers associated callback when operation has finished.
3098 */
3099 virtual void GetBucketAnalyticsConfigurationAsync(const Model::GetBucketAnalyticsConfigurationRequest& request, const GetBucketAnalyticsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
3100
3101 /**
3102 * <p>Returns the cors configuration information set for the bucket.</p> <p> To use
3103 * this operation, you must have permission to perform the s3:GetBucketCORS action.
3104 * By default, the bucket owner has this permission and can grant it to others.</p>
3105 * <p> For more information about cors, see <a
3106 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html"> Enabling
3107 * Cross-Origin Resource Sharing</a>.</p> <p>The following operations are related
3108 * to <code>GetBucketCors</code>:</p> <ul> <li> <p> <a>PutBucketCors</a> </p> </li>
3109 * <li> <p> <a>DeleteBucketCors</a> </p> </li> </ul><p><h3>See Also:</h3> <a
3110 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors">AWS
3111 * API Reference</a></p>
3112 */
3113 virtual Model::GetBucketCorsOutcome GetBucketCors(const Model::GetBucketCorsRequest& request) const;
3114
3115 /**
3116 * <p>Returns the cors configuration information set for the bucket.</p> <p> To use
3117 * this operation, you must have permission to perform the s3:GetBucketCORS action.
3118 * By default, the bucket owner has this permission and can grant it to others.</p>
3119 * <p> For more information about cors, see <a
3120 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html"> Enabling
3121 * Cross-Origin Resource Sharing</a>.</p> <p>The following operations are related
3122 * to <code>GetBucketCors</code>:</p> <ul> <li> <p> <a>PutBucketCors</a> </p> </li>
3123 * <li> <p> <a>DeleteBucketCors</a> </p> </li> </ul><p><h3>See Also:</h3> <a
3124 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors">AWS
3125 * API Reference</a></p>
3126 *
3127 * returns a future to the operation so that it can be executed in parallel to other requests.
3128 */
3129 virtual Model::GetBucketCorsOutcomeCallable GetBucketCorsCallable(const Model::GetBucketCorsRequest& request) const;
3130
3131 /**
3132 * <p>Returns the cors configuration information set for the bucket.</p> <p> To use
3133 * this operation, you must have permission to perform the s3:GetBucketCORS action.
3134 * By default, the bucket owner has this permission and can grant it to others.</p>
3135 * <p> For more information about cors, see <a
3136 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html"> Enabling
3137 * Cross-Origin Resource Sharing</a>.</p> <p>The following operations are related
3138 * to <code>GetBucketCors</code>:</p> <ul> <li> <p> <a>PutBucketCors</a> </p> </li>
3139 * <li> <p> <a>DeleteBucketCors</a> </p> </li> </ul><p><h3>See Also:</h3> <a
3140 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors">AWS
3141 * API Reference</a></p>
3142 *
3143 * Queues the request into a thread executor and triggers associated callback when operation has finished.
3144 */
3145 virtual void GetBucketCorsAsync(const Model::GetBucketCorsRequest& request, const GetBucketCorsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
3146
3147 /**
3148 * <p>Returns the default encryption configuration for an Amazon S3 bucket. For
3149 * information about the Amazon S3 default encryption feature, see <a
3150 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html">Amazon
3151 * S3 Default Bucket Encryption</a>.</p> <p> To use this operation, you must have
3152 * permission to perform the <code>s3:GetEncryptionConfiguration</code> action. The
3153 * bucket owner has this permission by default. The bucket owner can grant this
3154 * permission to others. For more information about permissions, see <a
3155 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
3156 * Related to Bucket Subresource Operations</a> and <a
3157 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
3158 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>The following
3159 * operations are related to <code>GetBucketEncryption</code>:</p> <ul> <li> <p>
3160 * <a>PutBucketEncryption</a> </p> </li> <li> <p> <a>DeleteBucketEncryption</a>
3161 * </p> </li> </ul><p><h3>See Also:</h3> <a
3162 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption">AWS
3163 * API Reference</a></p>
3164 */
3165 virtual Model::GetBucketEncryptionOutcome GetBucketEncryption(const Model::GetBucketEncryptionRequest& request) const;
3166
3167 /**
3168 * <p>Returns the default encryption configuration for an Amazon S3 bucket. For
3169 * information about the Amazon S3 default encryption feature, see <a
3170 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html">Amazon
3171 * S3 Default Bucket Encryption</a>.</p> <p> To use this operation, you must have
3172 * permission to perform the <code>s3:GetEncryptionConfiguration</code> action. The
3173 * bucket owner has this permission by default. The bucket owner can grant this
3174 * permission to others. For more information about permissions, see <a
3175 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
3176 * Related to Bucket Subresource Operations</a> and <a
3177 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
3178 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>The following
3179 * operations are related to <code>GetBucketEncryption</code>:</p> <ul> <li> <p>
3180 * <a>PutBucketEncryption</a> </p> </li> <li> <p> <a>DeleteBucketEncryption</a>
3181 * </p> </li> </ul><p><h3>See Also:</h3> <a
3182 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption">AWS
3183 * API Reference</a></p>
3184 *
3185 * returns a future to the operation so that it can be executed in parallel to other requests.
3186 */
3187 virtual Model::GetBucketEncryptionOutcomeCallable GetBucketEncryptionCallable(const Model::GetBucketEncryptionRequest& request) const;
3188
3189 /**
3190 * <p>Returns the default encryption configuration for an Amazon S3 bucket. For
3191 * information about the Amazon S3 default encryption feature, see <a
3192 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html">Amazon
3193 * S3 Default Bucket Encryption</a>.</p> <p> To use this operation, you must have
3194 * permission to perform the <code>s3:GetEncryptionConfiguration</code> action. The
3195 * bucket owner has this permission by default. The bucket owner can grant this
3196 * permission to others. For more information about permissions, see <a
3197 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
3198 * Related to Bucket Subresource Operations</a> and <a
3199 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
3200 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>The following
3201 * operations are related to <code>GetBucketEncryption</code>:</p> <ul> <li> <p>
3202 * <a>PutBucketEncryption</a> </p> </li> <li> <p> <a>DeleteBucketEncryption</a>
3203 * </p> </li> </ul><p><h3>See Also:</h3> <a
3204 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption">AWS
3205 * API Reference</a></p>
3206 *
3207 * Queues the request into a thread executor and triggers associated callback when operation has finished.
3208 */
3209 virtual void GetBucketEncryptionAsync(const Model::GetBucketEncryptionRequest& request, const GetBucketEncryptionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
3210
3211 /**
3212 * <p>Returns an inventory configuration (identified by the inventory configuration
3213 * ID) from the bucket.</p> <p>To use this operation, you must have permissions to
3214 * perform the <code>s3:GetInventoryConfiguration</code> action. The bucket owner
3215 * has this permission by default and can grant this permission to others. For more
3216 * information about permissions, see <a
3217 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
3218 * Related to Bucket Subresource Operations</a> and <a
3219 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
3220 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
3221 * the Amazon S3 inventory feature, see <a
3222 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html">Amazon
3223 * S3 Inventory</a>.</p> <p>The following operations are related to
3224 * <code>GetBucketInventoryConfiguration</code>:</p> <ul> <li> <p>
3225 * <a>DeleteBucketInventoryConfiguration</a> </p> </li> <li> <p>
3226 * <a>ListBucketInventoryConfigurations</a> </p> </li> <li> <p>
3227 * <a>PutBucketInventoryConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
3228 * <a
3229 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration">AWS
3230 * API Reference</a></p>
3231 */
3232 virtual Model::GetBucketInventoryConfigurationOutcome GetBucketInventoryConfiguration(const Model::GetBucketInventoryConfigurationRequest& request) const;
3233
3234 /**
3235 * <p>Returns an inventory configuration (identified by the inventory configuration
3236 * ID) from the bucket.</p> <p>To use this operation, you must have permissions to
3237 * perform the <code>s3:GetInventoryConfiguration</code> action. The bucket owner
3238 * has this permission by default and can grant this permission to others. For more
3239 * information about permissions, see <a
3240 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
3241 * Related to Bucket Subresource Operations</a> and <a
3242 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
3243 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
3244 * the Amazon S3 inventory feature, see <a
3245 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html">Amazon
3246 * S3 Inventory</a>.</p> <p>The following operations are related to
3247 * <code>GetBucketInventoryConfiguration</code>:</p> <ul> <li> <p>
3248 * <a>DeleteBucketInventoryConfiguration</a> </p> </li> <li> <p>
3249 * <a>ListBucketInventoryConfigurations</a> </p> </li> <li> <p>
3250 * <a>PutBucketInventoryConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
3251 * <a
3252 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration">AWS
3253 * API Reference</a></p>
3254 *
3255 * returns a future to the operation so that it can be executed in parallel to other requests.
3256 */
3257 virtual Model::GetBucketInventoryConfigurationOutcomeCallable GetBucketInventoryConfigurationCallable(const Model::GetBucketInventoryConfigurationRequest& request) const;
3258
3259 /**
3260 * <p>Returns an inventory configuration (identified by the inventory configuration
3261 * ID) from the bucket.</p> <p>To use this operation, you must have permissions to
3262 * perform the <code>s3:GetInventoryConfiguration</code> action. The bucket owner
3263 * has this permission by default and can grant this permission to others. For more
3264 * information about permissions, see <a
3265 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
3266 * Related to Bucket Subresource Operations</a> and <a
3267 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
3268 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
3269 * the Amazon S3 inventory feature, see <a
3270 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html">Amazon
3271 * S3 Inventory</a>.</p> <p>The following operations are related to
3272 * <code>GetBucketInventoryConfiguration</code>:</p> <ul> <li> <p>
3273 * <a>DeleteBucketInventoryConfiguration</a> </p> </li> <li> <p>
3274 * <a>ListBucketInventoryConfigurations</a> </p> </li> <li> <p>
3275 * <a>PutBucketInventoryConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
3276 * <a
3277 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration">AWS
3278 * API Reference</a></p>
3279 *
3280 * Queues the request into a thread executor and triggers associated callback when operation has finished.
3281 */
3282 virtual void GetBucketInventoryConfigurationAsync(const Model::GetBucketInventoryConfigurationRequest& request, const GetBucketInventoryConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
3283
3284 /**
3285 * <note> <p>Bucket lifecycle configuration now supports specifying a lifecycle
3286 * rule using an object key name prefix, one or more object tags, or a combination
3287 * of both. Accordingly, this section describes the latest API. The response
3288 * describes the new filter element that you can use to specify a filter to select
3289 * a subset of objects to which the rule applies. If you are still using previous
3290 * version of the lifecycle configuration, it works. For the earlier API
3291 * description, see <a>GetBucketLifecycle</a>.</p> </note> <p>Returns the lifecycle
3292 * configuration information set on the bucket. For information about lifecycle
3293 * configuration, see <a
3294 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html">Object
3295 * Lifecycle Management</a>.</p> <p>To use this operation, you must have permission
3296 * to perform the <code>s3:GetLifecycleConfiguration</code> action. The bucket
3297 * owner has this permission, by default. The bucket owner can grant this
3298 * permission to others. For more information about permissions, see <a
3299 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
3300 * Related to Bucket Subresource Operations</a> and <a
3301 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
3302 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>
3303 * <code>GetBucketLifecycleConfiguration</code> has the following special
3304 * error:</p> <ul> <li> <p>Error code: <code>NoSuchLifecycleConfiguration</code>
3305 * </p> <ul> <li> <p>Description: The lifecycle configuration does not exist.</p>
3306 * </li> <li> <p>HTTP Status Code: 404 Not Found</p> </li> <li> <p>SOAP Fault Code
3307 * Prefix: Client</p> </li> </ul> </li> </ul> <p>The following operations are
3308 * related to <code>DeleteBucketMetricsConfiguration</code>:</p> <ul> <li> <p>
3309 * <a>GetBucketLifecycle</a> </p> </li> <li> <p> <a>PutBucketLifecycle</a> </p>
3310 * </li> <li> <p> <a>DeleteBucketLifecycle</a> </p> </li> </ul><p><h3>See
3311 * Also:</h3> <a
3312 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration">AWS
3313 * API Reference</a></p>
3314 */
3315 virtual Model::GetBucketLifecycleConfigurationOutcome GetBucketLifecycleConfiguration(const Model::GetBucketLifecycleConfigurationRequest& request) const;
3316
3317 /**
3318 * <note> <p>Bucket lifecycle configuration now supports specifying a lifecycle
3319 * rule using an object key name prefix, one or more object tags, or a combination
3320 * of both. Accordingly, this section describes the latest API. The response
3321 * describes the new filter element that you can use to specify a filter to select
3322 * a subset of objects to which the rule applies. If you are still using previous
3323 * version of the lifecycle configuration, it works. For the earlier API
3324 * description, see <a>GetBucketLifecycle</a>.</p> </note> <p>Returns the lifecycle
3325 * configuration information set on the bucket. For information about lifecycle
3326 * configuration, see <a
3327 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html">Object
3328 * Lifecycle Management</a>.</p> <p>To use this operation, you must have permission
3329 * to perform the <code>s3:GetLifecycleConfiguration</code> action. The bucket
3330 * owner has this permission, by default. The bucket owner can grant this
3331 * permission to others. For more information about permissions, see <a
3332 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
3333 * Related to Bucket Subresource Operations</a> and <a
3334 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
3335 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>
3336 * <code>GetBucketLifecycleConfiguration</code> has the following special
3337 * error:</p> <ul> <li> <p>Error code: <code>NoSuchLifecycleConfiguration</code>
3338 * </p> <ul> <li> <p>Description: The lifecycle configuration does not exist.</p>
3339 * </li> <li> <p>HTTP Status Code: 404 Not Found</p> </li> <li> <p>SOAP Fault Code
3340 * Prefix: Client</p> </li> </ul> </li> </ul> <p>The following operations are
3341 * related to <code>DeleteBucketMetricsConfiguration</code>:</p> <ul> <li> <p>
3342 * <a>GetBucketLifecycle</a> </p> </li> <li> <p> <a>PutBucketLifecycle</a> </p>
3343 * </li> <li> <p> <a>DeleteBucketLifecycle</a> </p> </li> </ul><p><h3>See
3344 * Also:</h3> <a
3345 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration">AWS
3346 * API Reference</a></p>
3347 *
3348 * returns a future to the operation so that it can be executed in parallel to other requests.
3349 */
3350 virtual Model::GetBucketLifecycleConfigurationOutcomeCallable GetBucketLifecycleConfigurationCallable(const Model::GetBucketLifecycleConfigurationRequest& request) const;
3351
3352 /**
3353 * <note> <p>Bucket lifecycle configuration now supports specifying a lifecycle
3354 * rule using an object key name prefix, one or more object tags, or a combination
3355 * of both. Accordingly, this section describes the latest API. The response
3356 * describes the new filter element that you can use to specify a filter to select
3357 * a subset of objects to which the rule applies. If you are still using previous
3358 * version of the lifecycle configuration, it works. For the earlier API
3359 * description, see <a>GetBucketLifecycle</a>.</p> </note> <p>Returns the lifecycle
3360 * configuration information set on the bucket. For information about lifecycle
3361 * configuration, see <a
3362 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html">Object
3363 * Lifecycle Management</a>.</p> <p>To use this operation, you must have permission
3364 * to perform the <code>s3:GetLifecycleConfiguration</code> action. The bucket
3365 * owner has this permission, by default. The bucket owner can grant this
3366 * permission to others. For more information about permissions, see <a
3367 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
3368 * Related to Bucket Subresource Operations</a> and <a
3369 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
3370 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>
3371 * <code>GetBucketLifecycleConfiguration</code> has the following special
3372 * error:</p> <ul> <li> <p>Error code: <code>NoSuchLifecycleConfiguration</code>
3373 * </p> <ul> <li> <p>Description: The lifecycle configuration does not exist.</p>
3374 * </li> <li> <p>HTTP Status Code: 404 Not Found</p> </li> <li> <p>SOAP Fault Code
3375 * Prefix: Client</p> </li> </ul> </li> </ul> <p>The following operations are
3376 * related to <code>DeleteBucketMetricsConfiguration</code>:</p> <ul> <li> <p>
3377 * <a>GetBucketLifecycle</a> </p> </li> <li> <p> <a>PutBucketLifecycle</a> </p>
3378 * </li> <li> <p> <a>DeleteBucketLifecycle</a> </p> </li> </ul><p><h3>See
3379 * Also:</h3> <a
3380 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration">AWS
3381 * API Reference</a></p>
3382 *
3383 * Queues the request into a thread executor and triggers associated callback when operation has finished.
3384 */
3385 virtual void GetBucketLifecycleConfigurationAsync(const Model::GetBucketLifecycleConfigurationRequest& request, const GetBucketLifecycleConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
3386
3387 /**
3388 * <p>Returns the Region the bucket resides in. You set the bucket's Region using
3389 * the <code>LocationConstraint</code> request parameter in a
3390 * <code>CreateBucket</code> request. For more information, see
3391 * <a>CreateBucket</a>.</p> <p> To use this implementation of the operation, you
3392 * must be the bucket owner.</p> <p>The following operations are related to
3393 * <code>GetBucketLocation</code>:</p> <ul> <li> <p> <a>GetObject</a> </p> </li>
3394 * <li> <p> <a>CreateBucket</a> </p> </li> </ul><p><h3>See Also:</h3> <a
3395 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation">AWS
3396 * API Reference</a></p>
3397 */
3398 virtual Model::GetBucketLocationOutcome GetBucketLocation(const Model::GetBucketLocationRequest& request) const;
3399
3400 /**
3401 * <p>Returns the Region the bucket resides in. You set the bucket's Region using
3402 * the <code>LocationConstraint</code> request parameter in a
3403 * <code>CreateBucket</code> request. For more information, see
3404 * <a>CreateBucket</a>.</p> <p> To use this implementation of the operation, you
3405 * must be the bucket owner.</p> <p>The following operations are related to
3406 * <code>GetBucketLocation</code>:</p> <ul> <li> <p> <a>GetObject</a> </p> </li>
3407 * <li> <p> <a>CreateBucket</a> </p> </li> </ul><p><h3>See Also:</h3> <a
3408 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation">AWS
3409 * API Reference</a></p>
3410 *
3411 * returns a future to the operation so that it can be executed in parallel to other requests.
3412 */
3413 virtual Model::GetBucketLocationOutcomeCallable GetBucketLocationCallable(const Model::GetBucketLocationRequest& request) const;
3414
3415 /**
3416 * <p>Returns the Region the bucket resides in. You set the bucket's Region using
3417 * the <code>LocationConstraint</code> request parameter in a
3418 * <code>CreateBucket</code> request. For more information, see
3419 * <a>CreateBucket</a>.</p> <p> To use this implementation of the operation, you
3420 * must be the bucket owner.</p> <p>The following operations are related to
3421 * <code>GetBucketLocation</code>:</p> <ul> <li> <p> <a>GetObject</a> </p> </li>
3422 * <li> <p> <a>CreateBucket</a> </p> </li> </ul><p><h3>See Also:</h3> <a
3423 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation">AWS
3424 * API Reference</a></p>
3425 *
3426 * Queues the request into a thread executor and triggers associated callback when operation has finished.
3427 */
3428 virtual void GetBucketLocationAsync(const Model::GetBucketLocationRequest& request, const GetBucketLocationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
3429
3430 /**
3431 * <p>Returns the logging status of a bucket and the permissions users have to view
3432 * and modify that status. To use GET, you must be the bucket owner.</p> <p>The
3433 * following operations are related to <code>GetBucketLogging</code>:</p> <ul> <li>
3434 * <p> <a>CreateBucket</a> </p> </li> <li> <p> <a>PutBucketLogging</a> </p> </li>
3435 * </ul><p><h3>See Also:</h3> <a
3436 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging">AWS
3437 * API Reference</a></p>
3438 */
3439 virtual Model::GetBucketLoggingOutcome GetBucketLogging(const Model::GetBucketLoggingRequest& request) const;
3440
3441 /**
3442 * <p>Returns the logging status of a bucket and the permissions users have to view
3443 * and modify that status. To use GET, you must be the bucket owner.</p> <p>The
3444 * following operations are related to <code>GetBucketLogging</code>:</p> <ul> <li>
3445 * <p> <a>CreateBucket</a> </p> </li> <li> <p> <a>PutBucketLogging</a> </p> </li>
3446 * </ul><p><h3>See Also:</h3> <a
3447 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging">AWS
3448 * API Reference</a></p>
3449 *
3450 * returns a future to the operation so that it can be executed in parallel to other requests.
3451 */
3452 virtual Model::GetBucketLoggingOutcomeCallable GetBucketLoggingCallable(const Model::GetBucketLoggingRequest& request) const;
3453
3454 /**
3455 * <p>Returns the logging status of a bucket and the permissions users have to view
3456 * and modify that status. To use GET, you must be the bucket owner.</p> <p>The
3457 * following operations are related to <code>GetBucketLogging</code>:</p> <ul> <li>
3458 * <p> <a>CreateBucket</a> </p> </li> <li> <p> <a>PutBucketLogging</a> </p> </li>
3459 * </ul><p><h3>See Also:</h3> <a
3460 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging">AWS
3461 * API Reference</a></p>
3462 *
3463 * Queues the request into a thread executor and triggers associated callback when operation has finished.
3464 */
3465 virtual void GetBucketLoggingAsync(const Model::GetBucketLoggingRequest& request, const GetBucketLoggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
3466
3467 /**
3468 * <p>Gets a metrics configuration (specified by the metrics configuration ID) from
3469 * the bucket. Note that this doesn't include the daily storage metrics.</p> <p> To
3470 * use this operation, you must have permissions to perform the
3471 * <code>s3:GetMetricsConfiguration</code> action. The bucket owner has this
3472 * permission by default. The bucket owner can grant this permission to others. For
3473 * more information about permissions, see <a
3474 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
3475 * Related to Bucket Subresource Operations</a> and <a
3476 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
3477 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p> For information
3478 * about CloudWatch request metrics for Amazon S3, see <a
3479 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
3480 * Metrics with Amazon CloudWatch</a>.</p> <p>The following operations are related
3481 * to <code>GetBucketMetricsConfiguration</code>:</p> <ul> <li> <p>
3482 * <a>PutBucketMetricsConfiguration</a> </p> </li> <li> <p>
3483 * <a>DeleteBucketMetricsConfiguration</a> </p> </li> <li> <p>
3484 * <a>ListBucketMetricsConfigurations</a> </p> </li> <li> <p> <a
3485 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
3486 * Metrics with Amazon CloudWatch</a> </p> </li> </ul><p><h3>See Also:</h3> <a
3487 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration">AWS
3488 * API Reference</a></p>
3489 */
3490 virtual Model::GetBucketMetricsConfigurationOutcome GetBucketMetricsConfiguration(const Model::GetBucketMetricsConfigurationRequest& request) const;
3491
3492 /**
3493 * <p>Gets a metrics configuration (specified by the metrics configuration ID) from
3494 * the bucket. Note that this doesn't include the daily storage metrics.</p> <p> To
3495 * use this operation, you must have permissions to perform the
3496 * <code>s3:GetMetricsConfiguration</code> action. The bucket owner has this
3497 * permission by default. The bucket owner can grant this permission to others. For
3498 * more information about permissions, see <a
3499 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
3500 * Related to Bucket Subresource Operations</a> and <a
3501 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
3502 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p> For information
3503 * about CloudWatch request metrics for Amazon S3, see <a
3504 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
3505 * Metrics with Amazon CloudWatch</a>.</p> <p>The following operations are related
3506 * to <code>GetBucketMetricsConfiguration</code>:</p> <ul> <li> <p>
3507 * <a>PutBucketMetricsConfiguration</a> </p> </li> <li> <p>
3508 * <a>DeleteBucketMetricsConfiguration</a> </p> </li> <li> <p>
3509 * <a>ListBucketMetricsConfigurations</a> </p> </li> <li> <p> <a
3510 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
3511 * Metrics with Amazon CloudWatch</a> </p> </li> </ul><p><h3>See Also:</h3> <a
3512 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration">AWS
3513 * API Reference</a></p>
3514 *
3515 * returns a future to the operation so that it can be executed in parallel to other requests.
3516 */
3517 virtual Model::GetBucketMetricsConfigurationOutcomeCallable GetBucketMetricsConfigurationCallable(const Model::GetBucketMetricsConfigurationRequest& request) const;
3518
3519 /**
3520 * <p>Gets a metrics configuration (specified by the metrics configuration ID) from
3521 * the bucket. Note that this doesn't include the daily storage metrics.</p> <p> To
3522 * use this operation, you must have permissions to perform the
3523 * <code>s3:GetMetricsConfiguration</code> action. The bucket owner has this
3524 * permission by default. The bucket owner can grant this permission to others. For
3525 * more information about permissions, see <a
3526 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
3527 * Related to Bucket Subresource Operations</a> and <a
3528 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
3529 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p> For information
3530 * about CloudWatch request metrics for Amazon S3, see <a
3531 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
3532 * Metrics with Amazon CloudWatch</a>.</p> <p>The following operations are related
3533 * to <code>GetBucketMetricsConfiguration</code>:</p> <ul> <li> <p>
3534 * <a>PutBucketMetricsConfiguration</a> </p> </li> <li> <p>
3535 * <a>DeleteBucketMetricsConfiguration</a> </p> </li> <li> <p>
3536 * <a>ListBucketMetricsConfigurations</a> </p> </li> <li> <p> <a
3537 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
3538 * Metrics with Amazon CloudWatch</a> </p> </li> </ul><p><h3>See Also:</h3> <a
3539 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration">AWS
3540 * API Reference</a></p>
3541 *
3542 * Queues the request into a thread executor and triggers associated callback when operation has finished.
3543 */
3544 virtual void GetBucketMetricsConfigurationAsync(const Model::GetBucketMetricsConfigurationRequest& request, const GetBucketMetricsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
3545
3546 /**
3547 * <p>Returns the notification configuration of a bucket.</p> <p>If notifications
3548 * are not enabled on the bucket, the operation returns an empty
3549 * <code>NotificationConfiguration</code> element.</p> <p>By default, you must be
3550 * the bucket owner to read the notification configuration of a bucket. However,
3551 * the bucket owner can use a bucket policy to grant permission to other users to
3552 * read this configuration with the <code>s3:GetBucketNotification</code>
3553 * permission.</p> <p>For more information about setting and reading the
3554 * notification configuration on a bucket, see <a
3555 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Setting
3556 * Up Notification of Bucket Events</a>. For more information about bucket
3557 * policies, see <a
3558 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html">Using
3559 * Bucket Policies</a>.</p> <p>The following operation is related to
3560 * <code>GetBucketNotification</code>:</p> <ul> <li> <p>
3561 * <a>PutBucketNotification</a> </p> </li> </ul><p><h3>See Also:</h3> <a
3562 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration">AWS
3563 * API Reference</a></p>
3564 */
3565 virtual Model::GetBucketNotificationConfigurationOutcome GetBucketNotificationConfiguration(const Model::GetBucketNotificationConfigurationRequest& request) const;
3566
3567 /**
3568 * <p>Returns the notification configuration of a bucket.</p> <p>If notifications
3569 * are not enabled on the bucket, the operation returns an empty
3570 * <code>NotificationConfiguration</code> element.</p> <p>By default, you must be
3571 * the bucket owner to read the notification configuration of a bucket. However,
3572 * the bucket owner can use a bucket policy to grant permission to other users to
3573 * read this configuration with the <code>s3:GetBucketNotification</code>
3574 * permission.</p> <p>For more information about setting and reading the
3575 * notification configuration on a bucket, see <a
3576 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Setting
3577 * Up Notification of Bucket Events</a>. For more information about bucket
3578 * policies, see <a
3579 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html">Using
3580 * Bucket Policies</a>.</p> <p>The following operation is related to
3581 * <code>GetBucketNotification</code>:</p> <ul> <li> <p>
3582 * <a>PutBucketNotification</a> </p> </li> </ul><p><h3>See Also:</h3> <a
3583 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration">AWS
3584 * API Reference</a></p>
3585 *
3586 * returns a future to the operation so that it can be executed in parallel to other requests.
3587 */
3588 virtual Model::GetBucketNotificationConfigurationOutcomeCallable GetBucketNotificationConfigurationCallable(const Model::GetBucketNotificationConfigurationRequest& request) const;
3589
3590 /**
3591 * <p>Returns the notification configuration of a bucket.</p> <p>If notifications
3592 * are not enabled on the bucket, the operation returns an empty
3593 * <code>NotificationConfiguration</code> element.</p> <p>By default, you must be
3594 * the bucket owner to read the notification configuration of a bucket. However,
3595 * the bucket owner can use a bucket policy to grant permission to other users to
3596 * read this configuration with the <code>s3:GetBucketNotification</code>
3597 * permission.</p> <p>For more information about setting and reading the
3598 * notification configuration on a bucket, see <a
3599 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Setting
3600 * Up Notification of Bucket Events</a>. For more information about bucket
3601 * policies, see <a
3602 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html">Using
3603 * Bucket Policies</a>.</p> <p>The following operation is related to
3604 * <code>GetBucketNotification</code>:</p> <ul> <li> <p>
3605 * <a>PutBucketNotification</a> </p> </li> </ul><p><h3>See Also:</h3> <a
3606 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration">AWS
3607 * API Reference</a></p>
3608 *
3609 * Queues the request into a thread executor and triggers associated callback when operation has finished.
3610 */
3611 virtual void GetBucketNotificationConfigurationAsync(const Model::GetBucketNotificationConfigurationRequest& request, const GetBucketNotificationConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
3612
3613 /**
3614 * <p>Returns the policy of a specified bucket. If you are using an identity other
3615 * than the root user of the AWS account that owns the bucket, the calling identity
3616 * must have the <code>GetBucketPolicy</code> permissions on the specified bucket
3617 * and belong to the bucket owner's account in order to use this operation.</p>
3618 * <p>If you don't have <code>GetBucketPolicy</code> permissions, Amazon S3 returns
3619 * a <code>403 Access Denied</code> error. If you have the correct permissions, but
3620 * you're not using an identity that belongs to the bucket owner's account, Amazon
3621 * S3 returns a <code>405 Method Not Allowed</code> error.</p> <important> <p>As a
3622 * security precaution, the root user of the AWS account that owns a bucket can
3623 * always use this operation, even if the policy explicitly denies the root user
3624 * the ability to perform this action.</p> </important> <p>For more information
3625 * about bucket policies, see <a
3626 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html">Using
3627 * Bucket Policies and User Policies</a>.</p> <p>The following operation is related
3628 * to <code>GetBucketPolicy</code>:</p> <ul> <li> <p> <a>GetObject</a> </p> </li>
3629 * </ul><p><h3>See Also:</h3> <a
3630 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicy">AWS
3631 * API Reference</a></p>
3632 */
3633 virtual Model::GetBucketPolicyOutcome GetBucketPolicy(const Model::GetBucketPolicyRequest& request) const;
3634
3635 /**
3636 * <p>Returns the policy of a specified bucket. If you are using an identity other
3637 * than the root user of the AWS account that owns the bucket, the calling identity
3638 * must have the <code>GetBucketPolicy</code> permissions on the specified bucket
3639 * and belong to the bucket owner's account in order to use this operation.</p>
3640 * <p>If you don't have <code>GetBucketPolicy</code> permissions, Amazon S3 returns
3641 * a <code>403 Access Denied</code> error. If you have the correct permissions, but
3642 * you're not using an identity that belongs to the bucket owner's account, Amazon
3643 * S3 returns a <code>405 Method Not Allowed</code> error.</p> <important> <p>As a
3644 * security precaution, the root user of the AWS account that owns a bucket can
3645 * always use this operation, even if the policy explicitly denies the root user
3646 * the ability to perform this action.</p> </important> <p>For more information
3647 * about bucket policies, see <a
3648 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html">Using
3649 * Bucket Policies and User Policies</a>.</p> <p>The following operation is related
3650 * to <code>GetBucketPolicy</code>:</p> <ul> <li> <p> <a>GetObject</a> </p> </li>
3651 * </ul><p><h3>See Also:</h3> <a
3652 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicy">AWS
3653 * API Reference</a></p>
3654 *
3655 * returns a future to the operation so that it can be executed in parallel to other requests.
3656 */
3657 virtual Model::GetBucketPolicyOutcomeCallable GetBucketPolicyCallable(const Model::GetBucketPolicyRequest& request) const;
3658
3659 /**
3660 * <p>Returns the policy of a specified bucket. If you are using an identity other
3661 * than the root user of the AWS account that owns the bucket, the calling identity
3662 * must have the <code>GetBucketPolicy</code> permissions on the specified bucket
3663 * and belong to the bucket owner's account in order to use this operation.</p>
3664 * <p>If you don't have <code>GetBucketPolicy</code> permissions, Amazon S3 returns
3665 * a <code>403 Access Denied</code> error. If you have the correct permissions, but
3666 * you're not using an identity that belongs to the bucket owner's account, Amazon
3667 * S3 returns a <code>405 Method Not Allowed</code> error.</p> <important> <p>As a
3668 * security precaution, the root user of the AWS account that owns a bucket can
3669 * always use this operation, even if the policy explicitly denies the root user
3670 * the ability to perform this action.</p> </important> <p>For more information
3671 * about bucket policies, see <a
3672 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html">Using
3673 * Bucket Policies and User Policies</a>.</p> <p>The following operation is related
3674 * to <code>GetBucketPolicy</code>:</p> <ul> <li> <p> <a>GetObject</a> </p> </li>
3675 * </ul><p><h3>See Also:</h3> <a
3676 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicy">AWS
3677 * API Reference</a></p>
3678 *
3679 * Queues the request into a thread executor and triggers associated callback when operation has finished.
3680 */
3681 virtual void GetBucketPolicyAsync(const Model::GetBucketPolicyRequest& request, const GetBucketPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
3682
3683 /**
3684 * <p>Retrieves the policy status for an Amazon S3 bucket, indicating whether the
3685 * bucket is public. In order to use this operation, you must have the
3686 * <code>s3:GetBucketPolicyStatus</code> permission. For more information about
3687 * Amazon S3 permissions, see <a
3688 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
3689 * Permissions in a Policy</a>.</p> <p> For more information about when Amazon S3
3690 * considers a bucket public, see <a
3691 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status">The
3692 * Meaning of "Public"</a>. </p> <p>The following operations are related to
3693 * <code>GetBucketPolicyStatus</code>:</p> <ul> <li> <p> <a
3694 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html">Using
3695 * Amazon S3 Block Public Access</a> </p> </li> <li> <p>
3696 * <a>GetPublicAccessBlock</a> </p> </li> <li> <p> <a>PutPublicAccessBlock</a> </p>
3697 * </li> <li> <p> <a>DeletePublicAccessBlock</a> </p> </li> </ul><p><h3>See
3698 * Also:</h3> <a
3699 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicyStatus">AWS
3700 * API Reference</a></p>
3701 */
3702 virtual Model::GetBucketPolicyStatusOutcome GetBucketPolicyStatus(const Model::GetBucketPolicyStatusRequest& request) const;
3703
3704 /**
3705 * <p>Retrieves the policy status for an Amazon S3 bucket, indicating whether the
3706 * bucket is public. In order to use this operation, you must have the
3707 * <code>s3:GetBucketPolicyStatus</code> permission. For more information about
3708 * Amazon S3 permissions, see <a
3709 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
3710 * Permissions in a Policy</a>.</p> <p> For more information about when Amazon S3
3711 * considers a bucket public, see <a
3712 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status">The
3713 * Meaning of "Public"</a>. </p> <p>The following operations are related to
3714 * <code>GetBucketPolicyStatus</code>:</p> <ul> <li> <p> <a
3715 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html">Using
3716 * Amazon S3 Block Public Access</a> </p> </li> <li> <p>
3717 * <a>GetPublicAccessBlock</a> </p> </li> <li> <p> <a>PutPublicAccessBlock</a> </p>
3718 * </li> <li> <p> <a>DeletePublicAccessBlock</a> </p> </li> </ul><p><h3>See
3719 * Also:</h3> <a
3720 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicyStatus">AWS
3721 * API Reference</a></p>
3722 *
3723 * returns a future to the operation so that it can be executed in parallel to other requests.
3724 */
3725 virtual Model::GetBucketPolicyStatusOutcomeCallable GetBucketPolicyStatusCallable(const Model::GetBucketPolicyStatusRequest& request) const;
3726
3727 /**
3728 * <p>Retrieves the policy status for an Amazon S3 bucket, indicating whether the
3729 * bucket is public. In order to use this operation, you must have the
3730 * <code>s3:GetBucketPolicyStatus</code> permission. For more information about
3731 * Amazon S3 permissions, see <a
3732 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
3733 * Permissions in a Policy</a>.</p> <p> For more information about when Amazon S3
3734 * considers a bucket public, see <a
3735 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status">The
3736 * Meaning of "Public"</a>. </p> <p>The following operations are related to
3737 * <code>GetBucketPolicyStatus</code>:</p> <ul> <li> <p> <a
3738 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html">Using
3739 * Amazon S3 Block Public Access</a> </p> </li> <li> <p>
3740 * <a>GetPublicAccessBlock</a> </p> </li> <li> <p> <a>PutPublicAccessBlock</a> </p>
3741 * </li> <li> <p> <a>DeletePublicAccessBlock</a> </p> </li> </ul><p><h3>See
3742 * Also:</h3> <a
3743 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicyStatus">AWS
3744 * API Reference</a></p>
3745 *
3746 * Queues the request into a thread executor and triggers associated callback when operation has finished.
3747 */
3748 virtual void GetBucketPolicyStatusAsync(const Model::GetBucketPolicyStatusRequest& request, const GetBucketPolicyStatusResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
3749
3750 /**
3751 * <p>Returns the replication configuration of a bucket.</p> <note> <p> It can take
3752 * a while to propagate the put or delete a replication configuration to all Amazon
3753 * S3 systems. Therefore, a get request soon after put or delete can return a wrong
3754 * result. </p> </note> <p> For information about replication configuration, see <a
3755 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html">Replication</a>
3756 * in the <i>Amazon Simple Storage Service Developer Guide</i>.</p> <p>This
3757 * operation requires permissions for the
3758 * <code>s3:GetReplicationConfiguration</code> action. For more information about
3759 * permissions, see <a
3760 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html">Using
3761 * Bucket Policies and User Policies</a>.</p> <p>If you include the
3762 * <code>Filter</code> element in a replication configuration, you must also
3763 * include the <code>DeleteMarkerReplication</code> and <code>Priority</code>
3764 * elements. The response also returns those elements.</p> <p>For information about
3765 * <code>GetBucketReplication</code> errors, see <a>ReplicationErrorCodeList</a>
3766 * </p> <p>The following operations are related to
3767 * <code>GetBucketReplication</code>:</p> <ul> <li> <p> <a>PutBucketReplication</a>
3768 * </p> </li> <li> <p> <a>DeleteBucketReplication</a> </p> </li> </ul><p><h3>See
3769 * Also:</h3> <a
3770 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication">AWS
3771 * API Reference</a></p>
3772 */
3773 virtual Model::GetBucketReplicationOutcome GetBucketReplication(const Model::GetBucketReplicationRequest& request) const;
3774
3775 /**
3776 * <p>Returns the replication configuration of a bucket.</p> <note> <p> It can take
3777 * a while to propagate the put or delete a replication configuration to all Amazon
3778 * S3 systems. Therefore, a get request soon after put or delete can return a wrong
3779 * result. </p> </note> <p> For information about replication configuration, see <a
3780 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html">Replication</a>
3781 * in the <i>Amazon Simple Storage Service Developer Guide</i>.</p> <p>This
3782 * operation requires permissions for the
3783 * <code>s3:GetReplicationConfiguration</code> action. For more information about
3784 * permissions, see <a
3785 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html">Using
3786 * Bucket Policies and User Policies</a>.</p> <p>If you include the
3787 * <code>Filter</code> element in a replication configuration, you must also
3788 * include the <code>DeleteMarkerReplication</code> and <code>Priority</code>
3789 * elements. The response also returns those elements.</p> <p>For information about
3790 * <code>GetBucketReplication</code> errors, see <a>ReplicationErrorCodeList</a>
3791 * </p> <p>The following operations are related to
3792 * <code>GetBucketReplication</code>:</p> <ul> <li> <p> <a>PutBucketReplication</a>
3793 * </p> </li> <li> <p> <a>DeleteBucketReplication</a> </p> </li> </ul><p><h3>See
3794 * Also:</h3> <a
3795 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication">AWS
3796 * API Reference</a></p>
3797 *
3798 * returns a future to the operation so that it can be executed in parallel to other requests.
3799 */
3800 virtual Model::GetBucketReplicationOutcomeCallable GetBucketReplicationCallable(const Model::GetBucketReplicationRequest& request) const;
3801
3802 /**
3803 * <p>Returns the replication configuration of a bucket.</p> <note> <p> It can take
3804 * a while to propagate the put or delete a replication configuration to all Amazon
3805 * S3 systems. Therefore, a get request soon after put or delete can return a wrong
3806 * result. </p> </note> <p> For information about replication configuration, see <a
3807 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html">Replication</a>
3808 * in the <i>Amazon Simple Storage Service Developer Guide</i>.</p> <p>This
3809 * operation requires permissions for the
3810 * <code>s3:GetReplicationConfiguration</code> action. For more information about
3811 * permissions, see <a
3812 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html">Using
3813 * Bucket Policies and User Policies</a>.</p> <p>If you include the
3814 * <code>Filter</code> element in a replication configuration, you must also
3815 * include the <code>DeleteMarkerReplication</code> and <code>Priority</code>
3816 * elements. The response also returns those elements.</p> <p>For information about
3817 * <code>GetBucketReplication</code> errors, see <a>ReplicationErrorCodeList</a>
3818 * </p> <p>The following operations are related to
3819 * <code>GetBucketReplication</code>:</p> <ul> <li> <p> <a>PutBucketReplication</a>
3820 * </p> </li> <li> <p> <a>DeleteBucketReplication</a> </p> </li> </ul><p><h3>See
3821 * Also:</h3> <a
3822 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication">AWS
3823 * API Reference</a></p>
3824 *
3825 * Queues the request into a thread executor and triggers associated callback when operation has finished.
3826 */
3827 virtual void GetBucketReplicationAsync(const Model::GetBucketReplicationRequest& request, const GetBucketReplicationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
3828
3829 /**
3830 * <p>Returns the request payment configuration of a bucket. To use this version of
3831 * the operation, you must be the bucket owner. For more information, see <a
3832 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html">Requester
3833 * Pays Buckets</a>.</p> <p>The following operations are related to
3834 * <code>GetBucketRequestPayment</code>:</p> <ul> <li> <p> <a>ListObjects</a> </p>
3835 * </li> </ul><p><h3>See Also:</h3> <a
3836 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment">AWS
3837 * API Reference</a></p>
3838 */
3839 virtual Model::GetBucketRequestPaymentOutcome GetBucketRequestPayment(const Model::GetBucketRequestPaymentRequest& request) const;
3840
3841 /**
3842 * <p>Returns the request payment configuration of a bucket. To use this version of
3843 * the operation, you must be the bucket owner. For more information, see <a
3844 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html">Requester
3845 * Pays Buckets</a>.</p> <p>The following operations are related to
3846 * <code>GetBucketRequestPayment</code>:</p> <ul> <li> <p> <a>ListObjects</a> </p>
3847 * </li> </ul><p><h3>See Also:</h3> <a
3848 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment">AWS
3849 * API Reference</a></p>
3850 *
3851 * returns a future to the operation so that it can be executed in parallel to other requests.
3852 */
3853 virtual Model::GetBucketRequestPaymentOutcomeCallable GetBucketRequestPaymentCallable(const Model::GetBucketRequestPaymentRequest& request) const;
3854
3855 /**
3856 * <p>Returns the request payment configuration of a bucket. To use this version of
3857 * the operation, you must be the bucket owner. For more information, see <a
3858 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html">Requester
3859 * Pays Buckets</a>.</p> <p>The following operations are related to
3860 * <code>GetBucketRequestPayment</code>:</p> <ul> <li> <p> <a>ListObjects</a> </p>
3861 * </li> </ul><p><h3>See Also:</h3> <a
3862 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment">AWS
3863 * API Reference</a></p>
3864 *
3865 * Queues the request into a thread executor and triggers associated callback when operation has finished.
3866 */
3867 virtual void GetBucketRequestPaymentAsync(const Model::GetBucketRequestPaymentRequest& request, const GetBucketRequestPaymentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
3868
3869 /**
3870 * <p>Returns the tag set associated with the bucket.</p> <p>To use this operation,
3871 * you must have permission to perform the <code>s3:GetBucketTagging</code> action.
3872 * By default, the bucket owner has this permission and can grant this permission
3873 * to others.</p> <p> <code>GetBucketTagging</code> has the following special
3874 * error:</p> <ul> <li> <p>Error code: <code>NoSuchTagSetError</code> </p> <ul>
3875 * <li> <p>Description: There is no tag set associated with the bucket.</p> </li>
3876 * </ul> </li> </ul> <p>The following operations are related to
3877 * <code>GetBucketTagging</code>:</p> <ul> <li> <p> <a>PutBucketTagging</a> </p>
3878 * </li> <li> <p> <a>DeleteBucketTagging</a> </p> </li> </ul><p><h3>See Also:</h3>
3879 * <a
3880 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging">AWS
3881 * API Reference</a></p>
3882 */
3883 virtual Model::GetBucketTaggingOutcome GetBucketTagging(const Model::GetBucketTaggingRequest& request) const;
3884
3885 /**
3886 * <p>Returns the tag set associated with the bucket.</p> <p>To use this operation,
3887 * you must have permission to perform the <code>s3:GetBucketTagging</code> action.
3888 * By default, the bucket owner has this permission and can grant this permission
3889 * to others.</p> <p> <code>GetBucketTagging</code> has the following special
3890 * error:</p> <ul> <li> <p>Error code: <code>NoSuchTagSetError</code> </p> <ul>
3891 * <li> <p>Description: There is no tag set associated with the bucket.</p> </li>
3892 * </ul> </li> </ul> <p>The following operations are related to
3893 * <code>GetBucketTagging</code>:</p> <ul> <li> <p> <a>PutBucketTagging</a> </p>
3894 * </li> <li> <p> <a>DeleteBucketTagging</a> </p> </li> </ul><p><h3>See Also:</h3>
3895 * <a
3896 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging">AWS
3897 * API Reference</a></p>
3898 *
3899 * returns a future to the operation so that it can be executed in parallel to other requests.
3900 */
3901 virtual Model::GetBucketTaggingOutcomeCallable GetBucketTaggingCallable(const Model::GetBucketTaggingRequest& request) const;
3902
3903 /**
3904 * <p>Returns the tag set associated with the bucket.</p> <p>To use this operation,
3905 * you must have permission to perform the <code>s3:GetBucketTagging</code> action.
3906 * By default, the bucket owner has this permission and can grant this permission
3907 * to others.</p> <p> <code>GetBucketTagging</code> has the following special
3908 * error:</p> <ul> <li> <p>Error code: <code>NoSuchTagSetError</code> </p> <ul>
3909 * <li> <p>Description: There is no tag set associated with the bucket.</p> </li>
3910 * </ul> </li> </ul> <p>The following operations are related to
3911 * <code>GetBucketTagging</code>:</p> <ul> <li> <p> <a>PutBucketTagging</a> </p>
3912 * </li> <li> <p> <a>DeleteBucketTagging</a> </p> </li> </ul><p><h3>See Also:</h3>
3913 * <a
3914 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging">AWS
3915 * API Reference</a></p>
3916 *
3917 * Queues the request into a thread executor and triggers associated callback when operation has finished.
3918 */
3919 virtual void GetBucketTaggingAsync(const Model::GetBucketTaggingRequest& request, const GetBucketTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
3920
3921 /**
3922 * <p>Returns the versioning state of a bucket.</p> <p>To retrieve the versioning
3923 * state of a bucket, you must be the bucket owner.</p> <p>This implementation also
3924 * returns the MFA Delete status of the versioning state. If the MFA Delete status
3925 * is <code>enabled</code>, the bucket owner must use an authentication device to
3926 * change the versioning state of the bucket.</p> <p>The following operations are
3927 * related to <code>GetBucketVersioning</code>:</p> <ul> <li> <p> <a>GetObject</a>
3928 * </p> </li> <li> <p> <a>PutObject</a> </p> </li> <li> <p> <a>DeleteObject</a>
3929 * </p> </li> </ul><p><h3>See Also:</h3> <a
3930 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning">AWS
3931 * API Reference</a></p>
3932 */
3933 virtual Model::GetBucketVersioningOutcome GetBucketVersioning(const Model::GetBucketVersioningRequest& request) const;
3934
3935 /**
3936 * <p>Returns the versioning state of a bucket.</p> <p>To retrieve the versioning
3937 * state of a bucket, you must be the bucket owner.</p> <p>This implementation also
3938 * returns the MFA Delete status of the versioning state. If the MFA Delete status
3939 * is <code>enabled</code>, the bucket owner must use an authentication device to
3940 * change the versioning state of the bucket.</p> <p>The following operations are
3941 * related to <code>GetBucketVersioning</code>:</p> <ul> <li> <p> <a>GetObject</a>
3942 * </p> </li> <li> <p> <a>PutObject</a> </p> </li> <li> <p> <a>DeleteObject</a>
3943 * </p> </li> </ul><p><h3>See Also:</h3> <a
3944 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning">AWS
3945 * API Reference</a></p>
3946 *
3947 * returns a future to the operation so that it can be executed in parallel to other requests.
3948 */
3949 virtual Model::GetBucketVersioningOutcomeCallable GetBucketVersioningCallable(const Model::GetBucketVersioningRequest& request) const;
3950
3951 /**
3952 * <p>Returns the versioning state of a bucket.</p> <p>To retrieve the versioning
3953 * state of a bucket, you must be the bucket owner.</p> <p>This implementation also
3954 * returns the MFA Delete status of the versioning state. If the MFA Delete status
3955 * is <code>enabled</code>, the bucket owner must use an authentication device to
3956 * change the versioning state of the bucket.</p> <p>The following operations are
3957 * related to <code>GetBucketVersioning</code>:</p> <ul> <li> <p> <a>GetObject</a>
3958 * </p> </li> <li> <p> <a>PutObject</a> </p> </li> <li> <p> <a>DeleteObject</a>
3959 * </p> </li> </ul><p><h3>See Also:</h3> <a
3960 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning">AWS
3961 * API Reference</a></p>
3962 *
3963 * Queues the request into a thread executor and triggers associated callback when operation has finished.
3964 */
3965 virtual void GetBucketVersioningAsync(const Model::GetBucketVersioningRequest& request, const GetBucketVersioningResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
3966
3967 /**
3968 * <p>Returns the website configuration for a bucket. To host website on Amazon S3,
3969 * you can configure a bucket as website by adding a website configuration. For
3970 * more information about hosting websites, see <a
3971 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
3972 * Websites on Amazon S3</a>. </p> <p>This GET operation requires the
3973 * <code>S3:GetBucketWebsite</code> permission. By default, only the bucket owner
3974 * can read the bucket website configuration. However, bucket owners can allow
3975 * other users to read the website configuration by writing a bucket policy
3976 * granting them the <code>S3:GetBucketWebsite</code> permission.</p> <p>The
3977 * following operations are related to <code>DeleteBucketWebsite</code>:</p> <ul>
3978 * <li> <p> <a>DeleteBucketWebsite</a> </p> </li> <li> <p> <a>PutBucketWebsite</a>
3979 * </p> </li> </ul><p><h3>See Also:</h3> <a
3980 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite">AWS
3981 * API Reference</a></p>
3982 */
3983 virtual Model::GetBucketWebsiteOutcome GetBucketWebsite(const Model::GetBucketWebsiteRequest& request) const;
3984
3985 /**
3986 * <p>Returns the website configuration for a bucket. To host website on Amazon S3,
3987 * you can configure a bucket as website by adding a website configuration. For
3988 * more information about hosting websites, see <a
3989 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
3990 * Websites on Amazon S3</a>. </p> <p>This GET operation requires the
3991 * <code>S3:GetBucketWebsite</code> permission. By default, only the bucket owner
3992 * can read the bucket website configuration. However, bucket owners can allow
3993 * other users to read the website configuration by writing a bucket policy
3994 * granting them the <code>S3:GetBucketWebsite</code> permission.</p> <p>The
3995 * following operations are related to <code>DeleteBucketWebsite</code>:</p> <ul>
3996 * <li> <p> <a>DeleteBucketWebsite</a> </p> </li> <li> <p> <a>PutBucketWebsite</a>
3997 * </p> </li> </ul><p><h3>See Also:</h3> <a
3998 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite">AWS
3999 * API Reference</a></p>
4000 *
4001 * returns a future to the operation so that it can be executed in parallel to other requests.
4002 */
4003 virtual Model::GetBucketWebsiteOutcomeCallable GetBucketWebsiteCallable(const Model::GetBucketWebsiteRequest& request) const;
4004
4005 /**
4006 * <p>Returns the website configuration for a bucket. To host website on Amazon S3,
4007 * you can configure a bucket as website by adding a website configuration. For
4008 * more information about hosting websites, see <a
4009 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
4010 * Websites on Amazon S3</a>. </p> <p>This GET operation requires the
4011 * <code>S3:GetBucketWebsite</code> permission. By default, only the bucket owner
4012 * can read the bucket website configuration. However, bucket owners can allow
4013 * other users to read the website configuration by writing a bucket policy
4014 * granting them the <code>S3:GetBucketWebsite</code> permission.</p> <p>The
4015 * following operations are related to <code>DeleteBucketWebsite</code>:</p> <ul>
4016 * <li> <p> <a>DeleteBucketWebsite</a> </p> </li> <li> <p> <a>PutBucketWebsite</a>
4017 * </p> </li> </ul><p><h3>See Also:</h3> <a
4018 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite">AWS
4019 * API Reference</a></p>
4020 *
4021 * Queues the request into a thread executor and triggers associated callback when operation has finished.
4022 */
4023 virtual void GetBucketWebsiteAsync(const Model::GetBucketWebsiteRequest& request, const GetBucketWebsiteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
4024
4025 /**
4026 * <p>Retrieves objects from Amazon S3. To use <code>GET</code>, you must have
4027 * <code>READ</code> access to the object. If you grant <code>READ</code> access to
4028 * the anonymous user, you can return the object without using an authorization
4029 * header.</p> <p>An Amazon S3 bucket has no directory hierarchy such as you would
4030 * find in a typical computer file system. You can, however, create a logical
4031 * hierarchy by using object key names that imply a folder structure. For example,
4032 * instead of naming an object <code>sample.jpg</code>, you can name it
4033 * <code>photos/2006/February/sample.jpg</code>.</p> <p>To get an object from such
4034 * a logical hierarchy, specify the full key name for the object in the
4035 * <code>GET</code> operation. For a virtual hosted-style request example, if you
4036 * have the object <code>photos/2006/February/sample.jpg</code>, specify the
4037 * resource as <code>/photos/2006/February/sample.jpg</code>. For a path-style
4038 * request example, if you have the object
4039 * <code>photos/2006/February/sample.jpg</code> in the bucket named
4040 * <code>examplebucket</code>, specify the resource as
4041 * <code>/examplebucket/photos/2006/February/sample.jpg</code>. For more
4042 * information about request types, see <a
4043 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html#VirtualHostingSpecifyBucket">HTTP
4044 * Host Header Bucket Specification</a>.</p> <p>To distribute large files to many
4045 * people, you can save bandwidth costs by using BitTorrent. For more information,
4046 * see <a
4047 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html">Amazon S3
4048 * Torrent</a>. For more information about returning the ACL of an object, see
4049 * <a>GetObjectAcl</a>.</p> <p>If the object you are retrieving is stored in the
4050 * GLACIER or DEEP_ARCHIVE storage classes, before you can retrieve the object you
4051 * must first restore a copy using . Otherwise, this operation returns an
4052 * <code>InvalidObjectStateError</code> error. For information about restoring
4053 * archived objects, see <a
4054 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html">Restoring
4055 * Archived Objects</a>.</p> <p>Encryption request headers, like
4056 * <code>x-amz-server-side-encryption</code>, should not be sent for GET requests
4057 * if your object uses server-side encryption with CMKs stored in AWS KMS (SSE-KMS)
4058 * or server-side encryption with Amazon S3–managed encryption keys (SSE-S3). If
4059 * your object does use these types of keys, you’ll get an HTTP 400 BadRequest
4060 * error.</p> <p>If you encrypt an object by using server-side encryption with
4061 * customer-provided encryption keys (SSE-C) when you store the object in Amazon
4062 * S3, then when you GET the object, you must use the following headers:</p> <ul>
4063 * <li> <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
4064 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
4065 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> <p>For more
4066 * information about SSE-C, see <a
4067 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
4068 * Encryption (Using Customer-Provided Encryption Keys)</a>.</p> <p>Assuming you
4069 * have permission to read object tags (permission for the
4070 * <code>s3:GetObjectVersionTagging</code> action), the response also returns the
4071 * <code>x-amz-tagging-count</code> header that provides the count of number of
4072 * tags associated with the object. You can use <a>GetObjectTagging</a> to retrieve
4073 * the tag set associated with an object.</p> <p> <b>Permissions</b> </p> <p>You
4074 * need the <code>s3:GetObject</code> permission for this operation. For more
4075 * information, see <a
4076 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
4077 * Permissions in a Policy</a>. If the object you request does not exist, the error
4078 * Amazon S3 returns depends on whether you also have the
4079 * <code>s3:ListBucket</code> permission.</p> <ul> <li> <p>If you have the
4080 * <code>s3:ListBucket</code> permission on the bucket, Amazon S3 will return an
4081 * HTTP status code 404 ("no such key") error.</p> </li> <li> <p>If you don’t have
4082 * the <code>s3:ListBucket</code> permission, Amazon S3 will return an HTTP status
4083 * code 403 ("access denied") error.</p> </li> </ul> <p> <b>Versioning</b> </p>
4084 * <p>By default, the GET operation returns the current version of an object. To
4085 * return a different version, use the <code>versionId</code> subresource.</p>
4086 * <note> <p>If the current version of the object is a delete marker, Amazon S3
4087 * behaves as if the object was deleted and includes <code>x-amz-delete-marker:
4088 * true</code> in the response.</p> </note> <p>For more information about
4089 * versioning, see <a>PutBucketVersioning</a>. </p> <p> <b>Overriding Response
4090 * Header Values</b> </p> <p>There are times when you want to override certain
4091 * response header values in a GET response. For example, you might override the
4092 * Content-Disposition response header value in your GET request.</p> <p>You can
4093 * override values for a set of response headers using the following query
4094 * parameters. These response header values are sent only on a successful request,
4095 * that is, when status code 200 OK is returned. The set of headers you can
4096 * override using these parameters is a subset of the headers that Amazon S3
4097 * accepts when you create an object. The response headers that you can override
4098 * for the GET response are <code>Content-Type</code>,
4099 * <code>Content-Language</code>, <code>Expires</code>, <code>Cache-Control</code>,
4100 * <code>Content-Disposition</code>, and <code>Content-Encoding</code>. To override
4101 * these header values in the GET response, you use the following request
4102 * parameters.</p> <note> <p>You must sign the request, either using an
4103 * Authorization header or a presigned URL, when using these parameters. They
4104 * cannot be used with an unsigned (anonymous) request.</p> </note> <ul> <li> <p>
4105 * <code>response-content-type</code> </p> </li> <li> <p>
4106 * <code>response-content-language</code> </p> </li> <li> <p>
4107 * <code>response-expires</code> </p> </li> <li> <p>
4108 * <code>response-cache-control</code> </p> </li> <li> <p>
4109 * <code>response-content-disposition</code> </p> </li> <li> <p>
4110 * <code>response-content-encoding</code> </p> </li> </ul> <p> <b>Additional
4111 * Considerations about Request Headers</b> </p> <p>If both of the
4112 * <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present
4113 * in the request as follows: <code>If-Match</code> condition evaluates to
4114 * <code>true</code>, and; <code>If-Unmodified-Since</code> condition evaluates to
4115 * <code>false</code>; then, S3 returns 200 OK and the data requested. </p> <p>If
4116 * both of the <code>If-None-Match</code> and <code>If-Modified-Since</code>
4117 * headers are present in the request as follows:<code> If-None-Match</code>
4118 * condition evaluates to <code>false</code>, and; <code>If-Modified-Since</code>
4119 * condition evaluates to <code>true</code>; then, S3 returns 304 Not Modified
4120 * response code.</p> <p>For more information about conditional requests, see <a
4121 * href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p> <p>The following
4122 * operations are related to <code>GetObject</code>:</p> <ul> <li> <p>
4123 * <a>ListBuckets</a> </p> </li> <li> <p> <a>GetObjectAcl</a> </p> </li>
4124 * </ul><p><h3>See Also:</h3> <a
4125 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject">AWS API
4126 * Reference</a></p>
4127 */
4128 virtual Model::GetObjectOutcome GetObject(const Model::GetObjectRequest& request) const;
4129
4130 /**
4131 * <p>Retrieves objects from Amazon S3. To use <code>GET</code>, you must have
4132 * <code>READ</code> access to the object. If you grant <code>READ</code> access to
4133 * the anonymous user, you can return the object without using an authorization
4134 * header.</p> <p>An Amazon S3 bucket has no directory hierarchy such as you would
4135 * find in a typical computer file system. You can, however, create a logical
4136 * hierarchy by using object key names that imply a folder structure. For example,
4137 * instead of naming an object <code>sample.jpg</code>, you can name it
4138 * <code>photos/2006/February/sample.jpg</code>.</p> <p>To get an object from such
4139 * a logical hierarchy, specify the full key name for the object in the
4140 * <code>GET</code> operation. For a virtual hosted-style request example, if you
4141 * have the object <code>photos/2006/February/sample.jpg</code>, specify the
4142 * resource as <code>/photos/2006/February/sample.jpg</code>. For a path-style
4143 * request example, if you have the object
4144 * <code>photos/2006/February/sample.jpg</code> in the bucket named
4145 * <code>examplebucket</code>, specify the resource as
4146 * <code>/examplebucket/photos/2006/February/sample.jpg</code>. For more
4147 * information about request types, see <a
4148 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html#VirtualHostingSpecifyBucket">HTTP
4149 * Host Header Bucket Specification</a>.</p> <p>To distribute large files to many
4150 * people, you can save bandwidth costs by using BitTorrent. For more information,
4151 * see <a
4152 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html">Amazon S3
4153 * Torrent</a>. For more information about returning the ACL of an object, see
4154 * <a>GetObjectAcl</a>.</p> <p>If the object you are retrieving is stored in the
4155 * GLACIER or DEEP_ARCHIVE storage classes, before you can retrieve the object you
4156 * must first restore a copy using . Otherwise, this operation returns an
4157 * <code>InvalidObjectStateError</code> error. For information about restoring
4158 * archived objects, see <a
4159 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html">Restoring
4160 * Archived Objects</a>.</p> <p>Encryption request headers, like
4161 * <code>x-amz-server-side-encryption</code>, should not be sent for GET requests
4162 * if your object uses server-side encryption with CMKs stored in AWS KMS (SSE-KMS)
4163 * or server-side encryption with Amazon S3–managed encryption keys (SSE-S3). If
4164 * your object does use these types of keys, you’ll get an HTTP 400 BadRequest
4165 * error.</p> <p>If you encrypt an object by using server-side encryption with
4166 * customer-provided encryption keys (SSE-C) when you store the object in Amazon
4167 * S3, then when you GET the object, you must use the following headers:</p> <ul>
4168 * <li> <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
4169 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
4170 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> <p>For more
4171 * information about SSE-C, see <a
4172 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
4173 * Encryption (Using Customer-Provided Encryption Keys)</a>.</p> <p>Assuming you
4174 * have permission to read object tags (permission for the
4175 * <code>s3:GetObjectVersionTagging</code> action), the response also returns the
4176 * <code>x-amz-tagging-count</code> header that provides the count of number of
4177 * tags associated with the object. You can use <a>GetObjectTagging</a> to retrieve
4178 * the tag set associated with an object.</p> <p> <b>Permissions</b> </p> <p>You
4179 * need the <code>s3:GetObject</code> permission for this operation. For more
4180 * information, see <a
4181 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
4182 * Permissions in a Policy</a>. If the object you request does not exist, the error
4183 * Amazon S3 returns depends on whether you also have the
4184 * <code>s3:ListBucket</code> permission.</p> <ul> <li> <p>If you have the
4185 * <code>s3:ListBucket</code> permission on the bucket, Amazon S3 will return an
4186 * HTTP status code 404 ("no such key") error.</p> </li> <li> <p>If you don’t have
4187 * the <code>s3:ListBucket</code> permission, Amazon S3 will return an HTTP status
4188 * code 403 ("access denied") error.</p> </li> </ul> <p> <b>Versioning</b> </p>
4189 * <p>By default, the GET operation returns the current version of an object. To
4190 * return a different version, use the <code>versionId</code> subresource.</p>
4191 * <note> <p>If the current version of the object is a delete marker, Amazon S3
4192 * behaves as if the object was deleted and includes <code>x-amz-delete-marker:
4193 * true</code> in the response.</p> </note> <p>For more information about
4194 * versioning, see <a>PutBucketVersioning</a>. </p> <p> <b>Overriding Response
4195 * Header Values</b> </p> <p>There are times when you want to override certain
4196 * response header values in a GET response. For example, you might override the
4197 * Content-Disposition response header value in your GET request.</p> <p>You can
4198 * override values for a set of response headers using the following query
4199 * parameters. These response header values are sent only on a successful request,
4200 * that is, when status code 200 OK is returned. The set of headers you can
4201 * override using these parameters is a subset of the headers that Amazon S3
4202 * accepts when you create an object. The response headers that you can override
4203 * for the GET response are <code>Content-Type</code>,
4204 * <code>Content-Language</code>, <code>Expires</code>, <code>Cache-Control</code>,
4205 * <code>Content-Disposition</code>, and <code>Content-Encoding</code>. To override
4206 * these header values in the GET response, you use the following request
4207 * parameters.</p> <note> <p>You must sign the request, either using an
4208 * Authorization header or a presigned URL, when using these parameters. They
4209 * cannot be used with an unsigned (anonymous) request.</p> </note> <ul> <li> <p>
4210 * <code>response-content-type</code> </p> </li> <li> <p>
4211 * <code>response-content-language</code> </p> </li> <li> <p>
4212 * <code>response-expires</code> </p> </li> <li> <p>
4213 * <code>response-cache-control</code> </p> </li> <li> <p>
4214 * <code>response-content-disposition</code> </p> </li> <li> <p>
4215 * <code>response-content-encoding</code> </p> </li> </ul> <p> <b>Additional
4216 * Considerations about Request Headers</b> </p> <p>If both of the
4217 * <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present
4218 * in the request as follows: <code>If-Match</code> condition evaluates to
4219 * <code>true</code>, and; <code>If-Unmodified-Since</code> condition evaluates to
4220 * <code>false</code>; then, S3 returns 200 OK and the data requested. </p> <p>If
4221 * both of the <code>If-None-Match</code> and <code>If-Modified-Since</code>
4222 * headers are present in the request as follows:<code> If-None-Match</code>
4223 * condition evaluates to <code>false</code>, and; <code>If-Modified-Since</code>
4224 * condition evaluates to <code>true</code>; then, S3 returns 304 Not Modified
4225 * response code.</p> <p>For more information about conditional requests, see <a
4226 * href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p> <p>The following
4227 * operations are related to <code>GetObject</code>:</p> <ul> <li> <p>
4228 * <a>ListBuckets</a> </p> </li> <li> <p> <a>GetObjectAcl</a> </p> </li>
4229 * </ul><p><h3>See Also:</h3> <a
4230 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject">AWS API
4231 * Reference</a></p>
4232 *
4233 * returns a future to the operation so that it can be executed in parallel to other requests.
4234 */
4235 virtual Model::GetObjectOutcomeCallable GetObjectCallable(const Model::GetObjectRequest& request) const;
4236
4237 /**
4238 * <p>Retrieves objects from Amazon S3. To use <code>GET</code>, you must have
4239 * <code>READ</code> access to the object. If you grant <code>READ</code> access to
4240 * the anonymous user, you can return the object without using an authorization
4241 * header.</p> <p>An Amazon S3 bucket has no directory hierarchy such as you would
4242 * find in a typical computer file system. You can, however, create a logical
4243 * hierarchy by using object key names that imply a folder structure. For example,
4244 * instead of naming an object <code>sample.jpg</code>, you can name it
4245 * <code>photos/2006/February/sample.jpg</code>.</p> <p>To get an object from such
4246 * a logical hierarchy, specify the full key name for the object in the
4247 * <code>GET</code> operation. For a virtual hosted-style request example, if you
4248 * have the object <code>photos/2006/February/sample.jpg</code>, specify the
4249 * resource as <code>/photos/2006/February/sample.jpg</code>. For a path-style
4250 * request example, if you have the object
4251 * <code>photos/2006/February/sample.jpg</code> in the bucket named
4252 * <code>examplebucket</code>, specify the resource as
4253 * <code>/examplebucket/photos/2006/February/sample.jpg</code>. For more
4254 * information about request types, see <a
4255 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html#VirtualHostingSpecifyBucket">HTTP
4256 * Host Header Bucket Specification</a>.</p> <p>To distribute large files to many
4257 * people, you can save bandwidth costs by using BitTorrent. For more information,
4258 * see <a
4259 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html">Amazon S3
4260 * Torrent</a>. For more information about returning the ACL of an object, see
4261 * <a>GetObjectAcl</a>.</p> <p>If the object you are retrieving is stored in the
4262 * GLACIER or DEEP_ARCHIVE storage classes, before you can retrieve the object you
4263 * must first restore a copy using . Otherwise, this operation returns an
4264 * <code>InvalidObjectStateError</code> error. For information about restoring
4265 * archived objects, see <a
4266 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html">Restoring
4267 * Archived Objects</a>.</p> <p>Encryption request headers, like
4268 * <code>x-amz-server-side-encryption</code>, should not be sent for GET requests
4269 * if your object uses server-side encryption with CMKs stored in AWS KMS (SSE-KMS)
4270 * or server-side encryption with Amazon S3–managed encryption keys (SSE-S3). If
4271 * your object does use these types of keys, you’ll get an HTTP 400 BadRequest
4272 * error.</p> <p>If you encrypt an object by using server-side encryption with
4273 * customer-provided encryption keys (SSE-C) when you store the object in Amazon
4274 * S3, then when you GET the object, you must use the following headers:</p> <ul>
4275 * <li> <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
4276 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
4277 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> <p>For more
4278 * information about SSE-C, see <a
4279 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
4280 * Encryption (Using Customer-Provided Encryption Keys)</a>.</p> <p>Assuming you
4281 * have permission to read object tags (permission for the
4282 * <code>s3:GetObjectVersionTagging</code> action), the response also returns the
4283 * <code>x-amz-tagging-count</code> header that provides the count of number of
4284 * tags associated with the object. You can use <a>GetObjectTagging</a> to retrieve
4285 * the tag set associated with an object.</p> <p> <b>Permissions</b> </p> <p>You
4286 * need the <code>s3:GetObject</code> permission for this operation. For more
4287 * information, see <a
4288 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
4289 * Permissions in a Policy</a>. If the object you request does not exist, the error
4290 * Amazon S3 returns depends on whether you also have the
4291 * <code>s3:ListBucket</code> permission.</p> <ul> <li> <p>If you have the
4292 * <code>s3:ListBucket</code> permission on the bucket, Amazon S3 will return an
4293 * HTTP status code 404 ("no such key") error.</p> </li> <li> <p>If you don’t have
4294 * the <code>s3:ListBucket</code> permission, Amazon S3 will return an HTTP status
4295 * code 403 ("access denied") error.</p> </li> </ul> <p> <b>Versioning</b> </p>
4296 * <p>By default, the GET operation returns the current version of an object. To
4297 * return a different version, use the <code>versionId</code> subresource.</p>
4298 * <note> <p>If the current version of the object is a delete marker, Amazon S3
4299 * behaves as if the object was deleted and includes <code>x-amz-delete-marker:
4300 * true</code> in the response.</p> </note> <p>For more information about
4301 * versioning, see <a>PutBucketVersioning</a>. </p> <p> <b>Overriding Response
4302 * Header Values</b> </p> <p>There are times when you want to override certain
4303 * response header values in a GET response. For example, you might override the
4304 * Content-Disposition response header value in your GET request.</p> <p>You can
4305 * override values for a set of response headers using the following query
4306 * parameters. These response header values are sent only on a successful request,
4307 * that is, when status code 200 OK is returned. The set of headers you can
4308 * override using these parameters is a subset of the headers that Amazon S3
4309 * accepts when you create an object. The response headers that you can override
4310 * for the GET response are <code>Content-Type</code>,
4311 * <code>Content-Language</code>, <code>Expires</code>, <code>Cache-Control</code>,
4312 * <code>Content-Disposition</code>, and <code>Content-Encoding</code>. To override
4313 * these header values in the GET response, you use the following request
4314 * parameters.</p> <note> <p>You must sign the request, either using an
4315 * Authorization header or a presigned URL, when using these parameters. They
4316 * cannot be used with an unsigned (anonymous) request.</p> </note> <ul> <li> <p>
4317 * <code>response-content-type</code> </p> </li> <li> <p>
4318 * <code>response-content-language</code> </p> </li> <li> <p>
4319 * <code>response-expires</code> </p> </li> <li> <p>
4320 * <code>response-cache-control</code> </p> </li> <li> <p>
4321 * <code>response-content-disposition</code> </p> </li> <li> <p>
4322 * <code>response-content-encoding</code> </p> </li> </ul> <p> <b>Additional
4323 * Considerations about Request Headers</b> </p> <p>If both of the
4324 * <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present
4325 * in the request as follows: <code>If-Match</code> condition evaluates to
4326 * <code>true</code>, and; <code>If-Unmodified-Since</code> condition evaluates to
4327 * <code>false</code>; then, S3 returns 200 OK and the data requested. </p> <p>If
4328 * both of the <code>If-None-Match</code> and <code>If-Modified-Since</code>
4329 * headers are present in the request as follows:<code> If-None-Match</code>
4330 * condition evaluates to <code>false</code>, and; <code>If-Modified-Since</code>
4331 * condition evaluates to <code>true</code>; then, S3 returns 304 Not Modified
4332 * response code.</p> <p>For more information about conditional requests, see <a
4333 * href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p> <p>The following
4334 * operations are related to <code>GetObject</code>:</p> <ul> <li> <p>
4335 * <a>ListBuckets</a> </p> </li> <li> <p> <a>GetObjectAcl</a> </p> </li>
4336 * </ul><p><h3>See Also:</h3> <a
4337 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject">AWS API
4338 * Reference</a></p>
4339 *
4340 * Queues the request into a thread executor and triggers associated callback when operation has finished.
4341 */
4342 virtual void GetObjectAsync(const Model::GetObjectRequest& request, const GetObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
4343
4344 /**
4345 * <p>Returns the access control list (ACL) of an object. To use this operation,
4346 * you must have READ_ACP access to the object.</p> <p> <b>Versioning</b> </p>
4347 * <p>By default, GET returns ACL information about the current version of an
4348 * object. To return ACL information about a different version, use the versionId
4349 * subresource.</p> <p>The following operations are related to
4350 * <code>GetObjectAcl</code>:</p> <ul> <li> <p> <a>GetObject</a> </p> </li> <li>
4351 * <p> <a>DeleteObject</a> </p> </li> <li> <p> <a>PutObject</a> </p> </li>
4352 * </ul><p><h3>See Also:</h3> <a
4353 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl">AWS API
4354 * Reference</a></p>
4355 */
4356 virtual Model::GetObjectAclOutcome GetObjectAcl(const Model::GetObjectAclRequest& request) const;
4357
4358 /**
4359 * <p>Returns the access control list (ACL) of an object. To use this operation,
4360 * you must have READ_ACP access to the object.</p> <p> <b>Versioning</b> </p>
4361 * <p>By default, GET returns ACL information about the current version of an
4362 * object. To return ACL information about a different version, use the versionId
4363 * subresource.</p> <p>The following operations are related to
4364 * <code>GetObjectAcl</code>:</p> <ul> <li> <p> <a>GetObject</a> </p> </li> <li>
4365 * <p> <a>DeleteObject</a> </p> </li> <li> <p> <a>PutObject</a> </p> </li>
4366 * </ul><p><h3>See Also:</h3> <a
4367 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl">AWS API
4368 * Reference</a></p>
4369 *
4370 * returns a future to the operation so that it can be executed in parallel to other requests.
4371 */
4372 virtual Model::GetObjectAclOutcomeCallable GetObjectAclCallable(const Model::GetObjectAclRequest& request) const;
4373
4374 /**
4375 * <p>Returns the access control list (ACL) of an object. To use this operation,
4376 * you must have READ_ACP access to the object.</p> <p> <b>Versioning</b> </p>
4377 * <p>By default, GET returns ACL information about the current version of an
4378 * object. To return ACL information about a different version, use the versionId
4379 * subresource.</p> <p>The following operations are related to
4380 * <code>GetObjectAcl</code>:</p> <ul> <li> <p> <a>GetObject</a> </p> </li> <li>
4381 * <p> <a>DeleteObject</a> </p> </li> <li> <p> <a>PutObject</a> </p> </li>
4382 * </ul><p><h3>See Also:</h3> <a
4383 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl">AWS API
4384 * Reference</a></p>
4385 *
4386 * Queues the request into a thread executor and triggers associated callback when operation has finished.
4387 */
4388 virtual void GetObjectAclAsync(const Model::GetObjectAclRequest& request, const GetObjectAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
4389
4390 /**
4391 * <p>Gets an object's current Legal Hold status. For more information, see <a
4392 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
4393 * Objects</a>.</p><p><h3>See Also:</h3> <a
4394 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLegalHold">AWS
4395 * API Reference</a></p>
4396 */
4397 virtual Model::GetObjectLegalHoldOutcome GetObjectLegalHold(const Model::GetObjectLegalHoldRequest& request) const;
4398
4399 /**
4400 * <p>Gets an object's current Legal Hold status. For more information, see <a
4401 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
4402 * Objects</a>.</p><p><h3>See Also:</h3> <a
4403 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLegalHold">AWS
4404 * API Reference</a></p>
4405 *
4406 * returns a future to the operation so that it can be executed in parallel to other requests.
4407 */
4408 virtual Model::GetObjectLegalHoldOutcomeCallable GetObjectLegalHoldCallable(const Model::GetObjectLegalHoldRequest& request) const;
4409
4410 /**
4411 * <p>Gets an object's current Legal Hold status. For more information, see <a
4412 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
4413 * Objects</a>.</p><p><h3>See Also:</h3> <a
4414 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLegalHold">AWS
4415 * API Reference</a></p>
4416 *
4417 * Queues the request into a thread executor and triggers associated callback when operation has finished.
4418 */
4419 virtual void GetObjectLegalHoldAsync(const Model::GetObjectLegalHoldRequest& request, const GetObjectLegalHoldResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
4420
4421 /**
4422 * <p>Gets the Object Lock configuration for a bucket. The rule specified in the
4423 * Object Lock configuration will be applied by default to every new object placed
4424 * in the specified bucket. For more information, see <a
4425 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
4426 * Objects</a>.</p><p><h3>See Also:</h3> <a
4427 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLockConfiguration">AWS
4428 * API Reference</a></p>
4429 */
4430 virtual Model::GetObjectLockConfigurationOutcome GetObjectLockConfiguration(const Model::GetObjectLockConfigurationRequest& request) const;
4431
4432 /**
4433 * <p>Gets the Object Lock configuration for a bucket. The rule specified in the
4434 * Object Lock configuration will be applied by default to every new object placed
4435 * in the specified bucket. For more information, see <a
4436 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
4437 * Objects</a>.</p><p><h3>See Also:</h3> <a
4438 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLockConfiguration">AWS
4439 * API Reference</a></p>
4440 *
4441 * returns a future to the operation so that it can be executed in parallel to other requests.
4442 */
4443 virtual Model::GetObjectLockConfigurationOutcomeCallable GetObjectLockConfigurationCallable(const Model::GetObjectLockConfigurationRequest& request) const;
4444
4445 /**
4446 * <p>Gets the Object Lock configuration for a bucket. The rule specified in the
4447 * Object Lock configuration will be applied by default to every new object placed
4448 * in the specified bucket. For more information, see <a
4449 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
4450 * Objects</a>.</p><p><h3>See Also:</h3> <a
4451 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLockConfiguration">AWS
4452 * API Reference</a></p>
4453 *
4454 * Queues the request into a thread executor and triggers associated callback when operation has finished.
4455 */
4456 virtual void GetObjectLockConfigurationAsync(const Model::GetObjectLockConfigurationRequest& request, const GetObjectLockConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
4457
4458 /**
4459 * <p>Retrieves an object's retention settings. For more information, see <a
4460 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
4461 * Objects</a>.</p><p><h3>See Also:</h3> <a
4462 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectRetention">AWS
4463 * API Reference</a></p>
4464 */
4465 virtual Model::GetObjectRetentionOutcome GetObjectRetention(const Model::GetObjectRetentionRequest& request) const;
4466
4467 /**
4468 * <p>Retrieves an object's retention settings. For more information, see <a
4469 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
4470 * Objects</a>.</p><p><h3>See Also:</h3> <a
4471 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectRetention">AWS
4472 * API Reference</a></p>
4473 *
4474 * returns a future to the operation so that it can be executed in parallel to other requests.
4475 */
4476 virtual Model::GetObjectRetentionOutcomeCallable GetObjectRetentionCallable(const Model::GetObjectRetentionRequest& request) const;
4477
4478 /**
4479 * <p>Retrieves an object's retention settings. For more information, see <a
4480 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
4481 * Objects</a>.</p><p><h3>See Also:</h3> <a
4482 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectRetention">AWS
4483 * API Reference</a></p>
4484 *
4485 * Queues the request into a thread executor and triggers associated callback when operation has finished.
4486 */
4487 virtual void GetObjectRetentionAsync(const Model::GetObjectRetentionRequest& request, const GetObjectRetentionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
4488
4489 /**
4490 * <p>Returns the tag-set of an object. You send the GET request against the
4491 * tagging subresource associated with the object.</p> <p>To use this operation,
4492 * you must have permission to perform the <code>s3:GetObjectTagging</code> action.
4493 * By default, the GET operation returns information about current version of an
4494 * object. For a versioned bucket, you can have multiple versions of an object in
4495 * your bucket. To retrieve tags of any other version, use the versionId query
4496 * parameter. You also need permission for the
4497 * <code>s3:GetObjectVersionTagging</code> action.</p> <p> By default, the bucket
4498 * owner has this permission and can grant this permission to others.</p> <p> For
4499 * information about the Amazon S3 object tagging feature, see <a
4500 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html">Object
4501 * Tagging</a>.</p> <p>The following operation is related to
4502 * <code>GetObjectTagging</code>:</p> <ul> <li> <p> <a>PutObjectTagging</a> </p>
4503 * </li> </ul><p><h3>See Also:</h3> <a
4504 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging">AWS
4505 * API Reference</a></p>
4506 */
4507 virtual Model::GetObjectTaggingOutcome GetObjectTagging(const Model::GetObjectTaggingRequest& request) const;
4508
4509 /**
4510 * <p>Returns the tag-set of an object. You send the GET request against the
4511 * tagging subresource associated with the object.</p> <p>To use this operation,
4512 * you must have permission to perform the <code>s3:GetObjectTagging</code> action.
4513 * By default, the GET operation returns information about current version of an
4514 * object. For a versioned bucket, you can have multiple versions of an object in
4515 * your bucket. To retrieve tags of any other version, use the versionId query
4516 * parameter. You also need permission for the
4517 * <code>s3:GetObjectVersionTagging</code> action.</p> <p> By default, the bucket
4518 * owner has this permission and can grant this permission to others.</p> <p> For
4519 * information about the Amazon S3 object tagging feature, see <a
4520 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html">Object
4521 * Tagging</a>.</p> <p>The following operation is related to
4522 * <code>GetObjectTagging</code>:</p> <ul> <li> <p> <a>PutObjectTagging</a> </p>
4523 * </li> </ul><p><h3>See Also:</h3> <a
4524 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging">AWS
4525 * API Reference</a></p>
4526 *
4527 * returns a future to the operation so that it can be executed in parallel to other requests.
4528 */
4529 virtual Model::GetObjectTaggingOutcomeCallable GetObjectTaggingCallable(const Model::GetObjectTaggingRequest& request) const;
4530
4531 /**
4532 * <p>Returns the tag-set of an object. You send the GET request against the
4533 * tagging subresource associated with the object.</p> <p>To use this operation,
4534 * you must have permission to perform the <code>s3:GetObjectTagging</code> action.
4535 * By default, the GET operation returns information about current version of an
4536 * object. For a versioned bucket, you can have multiple versions of an object in
4537 * your bucket. To retrieve tags of any other version, use the versionId query
4538 * parameter. You also need permission for the
4539 * <code>s3:GetObjectVersionTagging</code> action.</p> <p> By default, the bucket
4540 * owner has this permission and can grant this permission to others.</p> <p> For
4541 * information about the Amazon S3 object tagging feature, see <a
4542 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html">Object
4543 * Tagging</a>.</p> <p>The following operation is related to
4544 * <code>GetObjectTagging</code>:</p> <ul> <li> <p> <a>PutObjectTagging</a> </p>
4545 * </li> </ul><p><h3>See Also:</h3> <a
4546 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging">AWS
4547 * API Reference</a></p>
4548 *
4549 * Queues the request into a thread executor and triggers associated callback when operation has finished.
4550 */
4551 virtual void GetObjectTaggingAsync(const Model::GetObjectTaggingRequest& request, const GetObjectTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
4552
4553 /**
4554 * <p>Return torrent files from a bucket. BitTorrent can save you bandwidth when
4555 * you're distributing large files. For more information about BitTorrent, see <a
4556 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html">Amazon S3
4557 * Torrent</a>.</p> <note> <p>You can get torrent only for objects that are less
4558 * than 5 GB in size and that are not encrypted using server-side encryption with
4559 * customer-provided encryption key.</p> </note> <p>To use GET, you must have READ
4560 * access to the object.</p> <p>The following operation is related to
4561 * <code>GetObjectTorrent</code>:</p> <ul> <li> <p> <a>GetObject</a> </p> </li>
4562 * </ul><p><h3>See Also:</h3> <a
4563 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent">AWS
4564 * API Reference</a></p>
4565 */
4566 virtual Model::GetObjectTorrentOutcome GetObjectTorrent(const Model::GetObjectTorrentRequest& request) const;
4567
4568 /**
4569 * <p>Return torrent files from a bucket. BitTorrent can save you bandwidth when
4570 * you're distributing large files. For more information about BitTorrent, see <a
4571 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html">Amazon S3
4572 * Torrent</a>.</p> <note> <p>You can get torrent only for objects that are less
4573 * than 5 GB in size and that are not encrypted using server-side encryption with
4574 * customer-provided encryption key.</p> </note> <p>To use GET, you must have READ
4575 * access to the object.</p> <p>The following operation is related to
4576 * <code>GetObjectTorrent</code>:</p> <ul> <li> <p> <a>GetObject</a> </p> </li>
4577 * </ul><p><h3>See Also:</h3> <a
4578 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent">AWS
4579 * API Reference</a></p>
4580 *
4581 * returns a future to the operation so that it can be executed in parallel to other requests.
4582 */
4583 virtual Model::GetObjectTorrentOutcomeCallable GetObjectTorrentCallable(const Model::GetObjectTorrentRequest& request) const;
4584
4585 /**
4586 * <p>Return torrent files from a bucket. BitTorrent can save you bandwidth when
4587 * you're distributing large files. For more information about BitTorrent, see <a
4588 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html">Amazon S3
4589 * Torrent</a>.</p> <note> <p>You can get torrent only for objects that are less
4590 * than 5 GB in size and that are not encrypted using server-side encryption with
4591 * customer-provided encryption key.</p> </note> <p>To use GET, you must have READ
4592 * access to the object.</p> <p>The following operation is related to
4593 * <code>GetObjectTorrent</code>:</p> <ul> <li> <p> <a>GetObject</a> </p> </li>
4594 * </ul><p><h3>See Also:</h3> <a
4595 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent">AWS
4596 * API Reference</a></p>
4597 *
4598 * Queues the request into a thread executor and triggers associated callback when operation has finished.
4599 */
4600 virtual void GetObjectTorrentAsync(const Model::GetObjectTorrentRequest& request, const GetObjectTorrentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
4601
4602 /**
4603 * <p>Retrieves the <code>PublicAccessBlock</code> configuration for an Amazon S3
4604 * bucket. To use this operation, you must have the
4605 * <code>s3:GetBucketPublicAccessBlock</code> permission. For more information
4606 * about Amazon S3 permissions, see <a
4607 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
4608 * Permissions in a Policy</a>.</p> <important> <p>When Amazon S3 evaluates the
4609 * <code>PublicAccessBlock</code> configuration for a bucket or an object, it
4610 * checks the <code>PublicAccessBlock</code> configuration for both the bucket (or
4611 * the bucket that contains the object) and the bucket owner's account. If the
4612 * <code>PublicAccessBlock</code> settings are different between the bucket and the
4613 * account, Amazon S3 uses the most restrictive combination of the bucket-level and
4614 * account-level settings.</p> </important> <p>For more information about when
4615 * Amazon S3 considers a bucket or an object public, see <a
4616 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status">The
4617 * Meaning of "Public"</a>.</p> <p>The following operations are related to
4618 * <code>GetPublicAccessBlock</code>:</p> <ul> <li> <p> <a
4619 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html">Using
4620 * Amazon S3 Block Public Access</a> </p> </li> <li> <p>
4621 * <a>PutPublicAccessBlock</a> </p> </li> <li> <p> <a>GetPublicAccessBlock</a> </p>
4622 * </li> <li> <p> <a>DeletePublicAccessBlock</a> </p> </li> </ul><p><h3>See
4623 * Also:</h3> <a
4624 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetPublicAccessBlock">AWS
4625 * API Reference</a></p>
4626 */
4627 virtual Model::GetPublicAccessBlockOutcome GetPublicAccessBlock(const Model::GetPublicAccessBlockRequest& request) const;
4628
4629 /**
4630 * <p>Retrieves the <code>PublicAccessBlock</code> configuration for an Amazon S3
4631 * bucket. To use this operation, you must have the
4632 * <code>s3:GetBucketPublicAccessBlock</code> permission. For more information
4633 * about Amazon S3 permissions, see <a
4634 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
4635 * Permissions in a Policy</a>.</p> <important> <p>When Amazon S3 evaluates the
4636 * <code>PublicAccessBlock</code> configuration for a bucket or an object, it
4637 * checks the <code>PublicAccessBlock</code> configuration for both the bucket (or
4638 * the bucket that contains the object) and the bucket owner's account. If the
4639 * <code>PublicAccessBlock</code> settings are different between the bucket and the
4640 * account, Amazon S3 uses the most restrictive combination of the bucket-level and
4641 * account-level settings.</p> </important> <p>For more information about when
4642 * Amazon S3 considers a bucket or an object public, see <a
4643 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status">The
4644 * Meaning of "Public"</a>.</p> <p>The following operations are related to
4645 * <code>GetPublicAccessBlock</code>:</p> <ul> <li> <p> <a
4646 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html">Using
4647 * Amazon S3 Block Public Access</a> </p> </li> <li> <p>
4648 * <a>PutPublicAccessBlock</a> </p> </li> <li> <p> <a>GetPublicAccessBlock</a> </p>
4649 * </li> <li> <p> <a>DeletePublicAccessBlock</a> </p> </li> </ul><p><h3>See
4650 * Also:</h3> <a
4651 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetPublicAccessBlock">AWS
4652 * API Reference</a></p>
4653 *
4654 * returns a future to the operation so that it can be executed in parallel to other requests.
4655 */
4656 virtual Model::GetPublicAccessBlockOutcomeCallable GetPublicAccessBlockCallable(const Model::GetPublicAccessBlockRequest& request) const;
4657
4658 /**
4659 * <p>Retrieves the <code>PublicAccessBlock</code> configuration for an Amazon S3
4660 * bucket. To use this operation, you must have the
4661 * <code>s3:GetBucketPublicAccessBlock</code> permission. For more information
4662 * about Amazon S3 permissions, see <a
4663 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
4664 * Permissions in a Policy</a>.</p> <important> <p>When Amazon S3 evaluates the
4665 * <code>PublicAccessBlock</code> configuration for a bucket or an object, it
4666 * checks the <code>PublicAccessBlock</code> configuration for both the bucket (or
4667 * the bucket that contains the object) and the bucket owner's account. If the
4668 * <code>PublicAccessBlock</code> settings are different between the bucket and the
4669 * account, Amazon S3 uses the most restrictive combination of the bucket-level and
4670 * account-level settings.</p> </important> <p>For more information about when
4671 * Amazon S3 considers a bucket or an object public, see <a
4672 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status">The
4673 * Meaning of "Public"</a>.</p> <p>The following operations are related to
4674 * <code>GetPublicAccessBlock</code>:</p> <ul> <li> <p> <a
4675 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html">Using
4676 * Amazon S3 Block Public Access</a> </p> </li> <li> <p>
4677 * <a>PutPublicAccessBlock</a> </p> </li> <li> <p> <a>GetPublicAccessBlock</a> </p>
4678 * </li> <li> <p> <a>DeletePublicAccessBlock</a> </p> </li> </ul><p><h3>See
4679 * Also:</h3> <a
4680 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetPublicAccessBlock">AWS
4681 * API Reference</a></p>
4682 *
4683 * Queues the request into a thread executor and triggers associated callback when operation has finished.
4684 */
4685 virtual void GetPublicAccessBlockAsync(const Model::GetPublicAccessBlockRequest& request, const GetPublicAccessBlockResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
4686
4687 /**
4688 * <p>This operation is useful to determine if a bucket exists and you have
4689 * permission to access it. The operation returns a <code>200 OK</code> if the
4690 * bucket exists and you have permission to access it. Otherwise, the operation
4691 * might return responses such as <code>404 Not Found</code> and <code>403
4692 * Forbidden</code>. </p> <p>To use this operation, you must have permissions to
4693 * perform the <code>s3:ListBucket</code> action. The bucket owner has this
4694 * permission by default and can grant this permission to others. For more
4695 * information about permissions, see <a
4696 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
4697 * Related to Bucket Subresource Operations</a> and <a
4698 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
4699 * Access Permissions to Your Amazon S3 Resources</a>.</p><p><h3>See Also:</h3>
4700 * <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket">AWS
4701 * API Reference</a></p>
4702 */
4703 virtual Model::HeadBucketOutcome HeadBucket(const Model::HeadBucketRequest& request) const;
4704
4705 /**
4706 * <p>This operation is useful to determine if a bucket exists and you have
4707 * permission to access it. The operation returns a <code>200 OK</code> if the
4708 * bucket exists and you have permission to access it. Otherwise, the operation
4709 * might return responses such as <code>404 Not Found</code> and <code>403
4710 * Forbidden</code>. </p> <p>To use this operation, you must have permissions to
4711 * perform the <code>s3:ListBucket</code> action. The bucket owner has this
4712 * permission by default and can grant this permission to others. For more
4713 * information about permissions, see <a
4714 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
4715 * Related to Bucket Subresource Operations</a> and <a
4716 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
4717 * Access Permissions to Your Amazon S3 Resources</a>.</p><p><h3>See Also:</h3>
4718 * <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket">AWS
4719 * API Reference</a></p>
4720 *
4721 * returns a future to the operation so that it can be executed in parallel to other requests.
4722 */
4723 virtual Model::HeadBucketOutcomeCallable HeadBucketCallable(const Model::HeadBucketRequest& request) const;
4724
4725 /**
4726 * <p>This operation is useful to determine if a bucket exists and you have
4727 * permission to access it. The operation returns a <code>200 OK</code> if the
4728 * bucket exists and you have permission to access it. Otherwise, the operation
4729 * might return responses such as <code>404 Not Found</code> and <code>403
4730 * Forbidden</code>. </p> <p>To use this operation, you must have permissions to
4731 * perform the <code>s3:ListBucket</code> action. The bucket owner has this
4732 * permission by default and can grant this permission to others. For more
4733 * information about permissions, see <a
4734 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
4735 * Related to Bucket Subresource Operations</a> and <a
4736 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
4737 * Access Permissions to Your Amazon S3 Resources</a>.</p><p><h3>See Also:</h3>
4738 * <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket">AWS
4739 * API Reference</a></p>
4740 *
4741 * Queues the request into a thread executor and triggers associated callback when operation has finished.
4742 */
4743 virtual void HeadBucketAsync(const Model::HeadBucketRequest& request, const HeadBucketResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
4744
4745 /**
4746 * <p>The HEAD operation retrieves metadata from an object without returning the
4747 * object itself. This operation is useful if you're only interested in an object's
4748 * metadata. To use HEAD, you must have READ access to the object.</p> <p>A
4749 * <code>HEAD</code> request has the same options as a <code>GET</code> operation
4750 * on an object. The response is identical to the <code>GET</code> response except
4751 * that there is no response body.</p> <p>If you encrypt an object by using
4752 * server-side encryption with customer-provided encryption keys (SSE-C) when you
4753 * store the object in Amazon S3, then when you retrieve the metadata from the
4754 * object, you must use the following headers:</p> <ul> <li>
4755 * <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
4756 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
4757 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> <p>For more
4758 * information about SSE-C, see <a
4759 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
4760 * Encryption (Using Customer-Provided Encryption Keys)</a>.</p> <note>
4761 * <p>Encryption request headers, like <code>x-amz-server-side-encryption</code>,
4762 * should not be sent for GET requests if your object uses server-side encryption
4763 * with CMKs stored in AWS KMS (SSE-KMS) or server-side encryption with Amazon
4764 * S3–managed encryption keys (SSE-S3). If your object does use these types of
4765 * keys, you’ll get an HTTP 400 BadRequest error.</p> </note> <p>Request headers
4766 * are limited to 8 KB in size. For more information, see <a
4767 * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html">Common
4768 * Request Headers</a>.</p> <p>Consider the following when using request
4769 * headers:</p> <ul> <li> <p> Consideration 1 – If both of the
4770 * <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present
4771 * in the request as follows:</p> <ul> <li> <p> <code>If-Match</code> condition
4772 * evaluates to <code>true</code>, and;</p> </li> <li> <p>
4773 * <code>If-Unmodified-Since</code> condition evaluates to <code>false</code>;</p>
4774 * </li> </ul> <p>Then Amazon S3 returns <code>200 OK</code> and the data
4775 * requested.</p> </li> <li> <p> Consideration 2 – If both of the
4776 * <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are
4777 * present in the request as follows:</p> <ul> <li> <p> <code>If-None-Match</code>
4778 * condition evaluates to <code>false</code>, and;</p> </li> <li> <p>
4779 * <code>If-Modified-Since</code> condition evaluates to <code>true</code>;</p>
4780 * </li> </ul> <p>Then Amazon S3 returns the <code>304 Not Modified</code> response
4781 * code.</p> </li> </ul> <p>For more information about conditional requests, see <a
4782 * href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p> <p>
4783 * <b>Permissions</b> </p> <p>You need the <code>s3:GetObject</code> permission for
4784 * this operation. For more information, see <a
4785 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
4786 * Permissions in a Policy</a>. If the object you request does not exist, the error
4787 * Amazon S3 returns depends on whether you also have the s3:ListBucket
4788 * permission.</p> <ul> <li> <p>If you have the <code>s3:ListBucket</code>
4789 * permission on the bucket, Amazon S3 returns an HTTP status code 404 ("no such
4790 * key") error.</p> </li> <li> <p>If you don’t have the <code>s3:ListBucket</code>
4791 * permission, Amazon S3 returns an HTTP status code 403 ("access denied")
4792 * error.</p> </li> </ul> <p>The following operation is related to
4793 * <code>HeadObject</code>:</p> <ul> <li> <p> <a>GetObject</a> </p> </li>
4794 * </ul><p><h3>See Also:</h3> <a
4795 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject">AWS API
4796 * Reference</a></p>
4797 */
4798 virtual Model::HeadObjectOutcome HeadObject(const Model::HeadObjectRequest& request) const;
4799
4800 /**
4801 * <p>The HEAD operation retrieves metadata from an object without returning the
4802 * object itself. This operation is useful if you're only interested in an object's
4803 * metadata. To use HEAD, you must have READ access to the object.</p> <p>A
4804 * <code>HEAD</code> request has the same options as a <code>GET</code> operation
4805 * on an object. The response is identical to the <code>GET</code> response except
4806 * that there is no response body.</p> <p>If you encrypt an object by using
4807 * server-side encryption with customer-provided encryption keys (SSE-C) when you
4808 * store the object in Amazon S3, then when you retrieve the metadata from the
4809 * object, you must use the following headers:</p> <ul> <li>
4810 * <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
4811 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
4812 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> <p>For more
4813 * information about SSE-C, see <a
4814 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
4815 * Encryption (Using Customer-Provided Encryption Keys)</a>.</p> <note>
4816 * <p>Encryption request headers, like <code>x-amz-server-side-encryption</code>,
4817 * should not be sent for GET requests if your object uses server-side encryption
4818 * with CMKs stored in AWS KMS (SSE-KMS) or server-side encryption with Amazon
4819 * S3–managed encryption keys (SSE-S3). If your object does use these types of
4820 * keys, you’ll get an HTTP 400 BadRequest error.</p> </note> <p>Request headers
4821 * are limited to 8 KB in size. For more information, see <a
4822 * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html">Common
4823 * Request Headers</a>.</p> <p>Consider the following when using request
4824 * headers:</p> <ul> <li> <p> Consideration 1 – If both of the
4825 * <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present
4826 * in the request as follows:</p> <ul> <li> <p> <code>If-Match</code> condition
4827 * evaluates to <code>true</code>, and;</p> </li> <li> <p>
4828 * <code>If-Unmodified-Since</code> condition evaluates to <code>false</code>;</p>
4829 * </li> </ul> <p>Then Amazon S3 returns <code>200 OK</code> and the data
4830 * requested.</p> </li> <li> <p> Consideration 2 – If both of the
4831 * <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are
4832 * present in the request as follows:</p> <ul> <li> <p> <code>If-None-Match</code>
4833 * condition evaluates to <code>false</code>, and;</p> </li> <li> <p>
4834 * <code>If-Modified-Since</code> condition evaluates to <code>true</code>;</p>
4835 * </li> </ul> <p>Then Amazon S3 returns the <code>304 Not Modified</code> response
4836 * code.</p> </li> </ul> <p>For more information about conditional requests, see <a
4837 * href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p> <p>
4838 * <b>Permissions</b> </p> <p>You need the <code>s3:GetObject</code> permission for
4839 * this operation. For more information, see <a
4840 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
4841 * Permissions in a Policy</a>. If the object you request does not exist, the error
4842 * Amazon S3 returns depends on whether you also have the s3:ListBucket
4843 * permission.</p> <ul> <li> <p>If you have the <code>s3:ListBucket</code>
4844 * permission on the bucket, Amazon S3 returns an HTTP status code 404 ("no such
4845 * key") error.</p> </li> <li> <p>If you don’t have the <code>s3:ListBucket</code>
4846 * permission, Amazon S3 returns an HTTP status code 403 ("access denied")
4847 * error.</p> </li> </ul> <p>The following operation is related to
4848 * <code>HeadObject</code>:</p> <ul> <li> <p> <a>GetObject</a> </p> </li>
4849 * </ul><p><h3>See Also:</h3> <a
4850 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject">AWS API
4851 * Reference</a></p>
4852 *
4853 * returns a future to the operation so that it can be executed in parallel to other requests.
4854 */
4855 virtual Model::HeadObjectOutcomeCallable HeadObjectCallable(const Model::HeadObjectRequest& request) const;
4856
4857 /**
4858 * <p>The HEAD operation retrieves metadata from an object without returning the
4859 * object itself. This operation is useful if you're only interested in an object's
4860 * metadata. To use HEAD, you must have READ access to the object.</p> <p>A
4861 * <code>HEAD</code> request has the same options as a <code>GET</code> operation
4862 * on an object. The response is identical to the <code>GET</code> response except
4863 * that there is no response body.</p> <p>If you encrypt an object by using
4864 * server-side encryption with customer-provided encryption keys (SSE-C) when you
4865 * store the object in Amazon S3, then when you retrieve the metadata from the
4866 * object, you must use the following headers:</p> <ul> <li>
4867 * <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
4868 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
4869 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> <p>For more
4870 * information about SSE-C, see <a
4871 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
4872 * Encryption (Using Customer-Provided Encryption Keys)</a>.</p> <note>
4873 * <p>Encryption request headers, like <code>x-amz-server-side-encryption</code>,
4874 * should not be sent for GET requests if your object uses server-side encryption
4875 * with CMKs stored in AWS KMS (SSE-KMS) or server-side encryption with Amazon
4876 * S3–managed encryption keys (SSE-S3). If your object does use these types of
4877 * keys, you’ll get an HTTP 400 BadRequest error.</p> </note> <p>Request headers
4878 * are limited to 8 KB in size. For more information, see <a
4879 * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html">Common
4880 * Request Headers</a>.</p> <p>Consider the following when using request
4881 * headers:</p> <ul> <li> <p> Consideration 1 – If both of the
4882 * <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present
4883 * in the request as follows:</p> <ul> <li> <p> <code>If-Match</code> condition
4884 * evaluates to <code>true</code>, and;</p> </li> <li> <p>
4885 * <code>If-Unmodified-Since</code> condition evaluates to <code>false</code>;</p>
4886 * </li> </ul> <p>Then Amazon S3 returns <code>200 OK</code> and the data
4887 * requested.</p> </li> <li> <p> Consideration 2 – If both of the
4888 * <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are
4889 * present in the request as follows:</p> <ul> <li> <p> <code>If-None-Match</code>
4890 * condition evaluates to <code>false</code>, and;</p> </li> <li> <p>
4891 * <code>If-Modified-Since</code> condition evaluates to <code>true</code>;</p>
4892 * </li> </ul> <p>Then Amazon S3 returns the <code>304 Not Modified</code> response
4893 * code.</p> </li> </ul> <p>For more information about conditional requests, see <a
4894 * href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p> <p>
4895 * <b>Permissions</b> </p> <p>You need the <code>s3:GetObject</code> permission for
4896 * this operation. For more information, see <a
4897 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
4898 * Permissions in a Policy</a>. If the object you request does not exist, the error
4899 * Amazon S3 returns depends on whether you also have the s3:ListBucket
4900 * permission.</p> <ul> <li> <p>If you have the <code>s3:ListBucket</code>
4901 * permission on the bucket, Amazon S3 returns an HTTP status code 404 ("no such
4902 * key") error.</p> </li> <li> <p>If you don’t have the <code>s3:ListBucket</code>
4903 * permission, Amazon S3 returns an HTTP status code 403 ("access denied")
4904 * error.</p> </li> </ul> <p>The following operation is related to
4905 * <code>HeadObject</code>:</p> <ul> <li> <p> <a>GetObject</a> </p> </li>
4906 * </ul><p><h3>See Also:</h3> <a
4907 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject">AWS API
4908 * Reference</a></p>
4909 *
4910 * Queues the request into a thread executor and triggers associated callback when operation has finished.
4911 */
4912 virtual void HeadObjectAsync(const Model::HeadObjectRequest& request, const HeadObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
4913
4914 /**
4915 * <p>Lists the analytics configurations for the bucket. You can have up to 1,000
4916 * analytics configurations per bucket.</p> <p>This operation supports list
4917 * pagination and does not return more than 100 configurations at a time. You
4918 * should always check the <code>IsTruncated</code> element in the response. If
4919 * there are no more configurations to list, <code>IsTruncated</code> is set to
4920 * false. If there are more configurations to list, <code>IsTruncated</code> is set
4921 * to true, and there will be a value in <code>NextContinuationToken</code>. You
4922 * use the <code>NextContinuationToken</code> value to continue the pagination of
4923 * the list by passing the value in continuation-token in the request to
4924 * <code>GET</code> the next page.</p> <p>To use this operation, you must have
4925 * permissions to perform the <code>s3:GetAnalyticsConfiguration</code> action. The
4926 * bucket owner has this permission by default. The bucket owner can grant this
4927 * permission to others. For more information about permissions, see <a
4928 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
4929 * Related to Bucket Subresource Operations</a> and <a
4930 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
4931 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
4932 * Amazon S3 analytics feature, see <a
4933 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html">Amazon
4934 * S3 Analytics – Storage Class Analysis</a>. </p> <p>The following operations are
4935 * related to <code>ListBucketAnalyticsConfigurations</code>:</p> <ul> <li> <p>
4936 * <a>GetBucketAnalyticsConfiguration</a> </p> </li> <li> <p>
4937 * <a>DeleteBucketAnalyticsConfiguration</a> </p> </li> <li> <p>
4938 * <a>PutBucketAnalyticsConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
4939 * <a
4940 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations">AWS
4941 * API Reference</a></p>
4942 */
4943 virtual Model::ListBucketAnalyticsConfigurationsOutcome ListBucketAnalyticsConfigurations(const Model::ListBucketAnalyticsConfigurationsRequest& request) const;
4944
4945 /**
4946 * <p>Lists the analytics configurations for the bucket. You can have up to 1,000
4947 * analytics configurations per bucket.</p> <p>This operation supports list
4948 * pagination and does not return more than 100 configurations at a time. You
4949 * should always check the <code>IsTruncated</code> element in the response. If
4950 * there are no more configurations to list, <code>IsTruncated</code> is set to
4951 * false. If there are more configurations to list, <code>IsTruncated</code> is set
4952 * to true, and there will be a value in <code>NextContinuationToken</code>. You
4953 * use the <code>NextContinuationToken</code> value to continue the pagination of
4954 * the list by passing the value in continuation-token in the request to
4955 * <code>GET</code> the next page.</p> <p>To use this operation, you must have
4956 * permissions to perform the <code>s3:GetAnalyticsConfiguration</code> action. The
4957 * bucket owner has this permission by default. The bucket owner can grant this
4958 * permission to others. For more information about permissions, see <a
4959 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
4960 * Related to Bucket Subresource Operations</a> and <a
4961 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
4962 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
4963 * Amazon S3 analytics feature, see <a
4964 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html">Amazon
4965 * S3 Analytics – Storage Class Analysis</a>. </p> <p>The following operations are
4966 * related to <code>ListBucketAnalyticsConfigurations</code>:</p> <ul> <li> <p>
4967 * <a>GetBucketAnalyticsConfiguration</a> </p> </li> <li> <p>
4968 * <a>DeleteBucketAnalyticsConfiguration</a> </p> </li> <li> <p>
4969 * <a>PutBucketAnalyticsConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
4970 * <a
4971 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations">AWS
4972 * API Reference</a></p>
4973 *
4974 * returns a future to the operation so that it can be executed in parallel to other requests.
4975 */
4976 virtual Model::ListBucketAnalyticsConfigurationsOutcomeCallable ListBucketAnalyticsConfigurationsCallable(const Model::ListBucketAnalyticsConfigurationsRequest& request) const;
4977
4978 /**
4979 * <p>Lists the analytics configurations for the bucket. You can have up to 1,000
4980 * analytics configurations per bucket.</p> <p>This operation supports list
4981 * pagination and does not return more than 100 configurations at a time. You
4982 * should always check the <code>IsTruncated</code> element in the response. If
4983 * there are no more configurations to list, <code>IsTruncated</code> is set to
4984 * false. If there are more configurations to list, <code>IsTruncated</code> is set
4985 * to true, and there will be a value in <code>NextContinuationToken</code>. You
4986 * use the <code>NextContinuationToken</code> value to continue the pagination of
4987 * the list by passing the value in continuation-token in the request to
4988 * <code>GET</code> the next page.</p> <p>To use this operation, you must have
4989 * permissions to perform the <code>s3:GetAnalyticsConfiguration</code> action. The
4990 * bucket owner has this permission by default. The bucket owner can grant this
4991 * permission to others. For more information about permissions, see <a
4992 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
4993 * Related to Bucket Subresource Operations</a> and <a
4994 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
4995 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
4996 * Amazon S3 analytics feature, see <a
4997 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html">Amazon
4998 * S3 Analytics – Storage Class Analysis</a>. </p> <p>The following operations are
4999 * related to <code>ListBucketAnalyticsConfigurations</code>:</p> <ul> <li> <p>
5000 * <a>GetBucketAnalyticsConfiguration</a> </p> </li> <li> <p>
5001 * <a>DeleteBucketAnalyticsConfiguration</a> </p> </li> <li> <p>
5002 * <a>PutBucketAnalyticsConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
5003 * <a
5004 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations">AWS
5005 * API Reference</a></p>
5006 *
5007 * Queues the request into a thread executor and triggers associated callback when operation has finished.
5008 */
5009 virtual void ListBucketAnalyticsConfigurationsAsync(const Model::ListBucketAnalyticsConfigurationsRequest& request, const ListBucketAnalyticsConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
5010
5011 /**
5012 * <p>Returns a list of inventory configurations for the bucket. You can have up to
5013 * 1,000 analytics configurations per bucket.</p> <p>This operation supports list
5014 * pagination and does not return more than 100 configurations at a time. Always
5015 * check the <code>IsTruncated</code> element in the response. If there are no more
5016 * configurations to list, <code>IsTruncated</code> is set to false. If there are
5017 * more configurations to list, <code>IsTruncated</code> is set to true, and there
5018 * is a value in <code>NextContinuationToken</code>. You use the
5019 * <code>NextContinuationToken</code> value to continue the pagination of the list
5020 * by passing the value in continuation-token in the request to <code>GET</code>
5021 * the next page.</p> <p> To use this operation, you must have permissions to
5022 * perform the <code>s3:GetInventoryConfiguration</code> action. The bucket owner
5023 * has this permission by default. The bucket owner can grant this permission to
5024 * others. For more information about permissions, see <a
5025 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
5026 * Related to Bucket Subresource Operations</a> and <a
5027 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
5028 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
5029 * the Amazon S3 inventory feature, see <a
5030 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html">Amazon
5031 * S3 Inventory</a> </p> <p>The following operations are related to
5032 * <code>ListBucketInventoryConfigurations</code>:</p> <ul> <li> <p>
5033 * <a>GetBucketInventoryConfiguration</a> </p> </li> <li> <p>
5034 * <a>DeleteBucketInventoryConfiguration</a> </p> </li> <li> <p>
5035 * <a>PutBucketInventoryConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
5036 * <a
5037 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations">AWS
5038 * API Reference</a></p>
5039 */
5040 virtual Model::ListBucketInventoryConfigurationsOutcome ListBucketInventoryConfigurations(const Model::ListBucketInventoryConfigurationsRequest& request) const;
5041
5042 /**
5043 * <p>Returns a list of inventory configurations for the bucket. You can have up to
5044 * 1,000 analytics configurations per bucket.</p> <p>This operation supports list
5045 * pagination and does not return more than 100 configurations at a time. Always
5046 * check the <code>IsTruncated</code> element in the response. If there are no more
5047 * configurations to list, <code>IsTruncated</code> is set to false. If there are
5048 * more configurations to list, <code>IsTruncated</code> is set to true, and there
5049 * is a value in <code>NextContinuationToken</code>. You use the
5050 * <code>NextContinuationToken</code> value to continue the pagination of the list
5051 * by passing the value in continuation-token in the request to <code>GET</code>
5052 * the next page.</p> <p> To use this operation, you must have permissions to
5053 * perform the <code>s3:GetInventoryConfiguration</code> action. The bucket owner
5054 * has this permission by default. The bucket owner can grant this permission to
5055 * others. For more information about permissions, see <a
5056 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
5057 * Related to Bucket Subresource Operations</a> and <a
5058 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
5059 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
5060 * the Amazon S3 inventory feature, see <a
5061 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html">Amazon
5062 * S3 Inventory</a> </p> <p>The following operations are related to
5063 * <code>ListBucketInventoryConfigurations</code>:</p> <ul> <li> <p>
5064 * <a>GetBucketInventoryConfiguration</a> </p> </li> <li> <p>
5065 * <a>DeleteBucketInventoryConfiguration</a> </p> </li> <li> <p>
5066 * <a>PutBucketInventoryConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
5067 * <a
5068 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations">AWS
5069 * API Reference</a></p>
5070 *
5071 * returns a future to the operation so that it can be executed in parallel to other requests.
5072 */
5073 virtual Model::ListBucketInventoryConfigurationsOutcomeCallable ListBucketInventoryConfigurationsCallable(const Model::ListBucketInventoryConfigurationsRequest& request) const;
5074
5075 /**
5076 * <p>Returns a list of inventory configurations for the bucket. You can have up to
5077 * 1,000 analytics configurations per bucket.</p> <p>This operation supports list
5078 * pagination and does not return more than 100 configurations at a time. Always
5079 * check the <code>IsTruncated</code> element in the response. If there are no more
5080 * configurations to list, <code>IsTruncated</code> is set to false. If there are
5081 * more configurations to list, <code>IsTruncated</code> is set to true, and there
5082 * is a value in <code>NextContinuationToken</code>. You use the
5083 * <code>NextContinuationToken</code> value to continue the pagination of the list
5084 * by passing the value in continuation-token in the request to <code>GET</code>
5085 * the next page.</p> <p> To use this operation, you must have permissions to
5086 * perform the <code>s3:GetInventoryConfiguration</code> action. The bucket owner
5087 * has this permission by default. The bucket owner can grant this permission to
5088 * others. For more information about permissions, see <a
5089 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
5090 * Related to Bucket Subresource Operations</a> and <a
5091 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
5092 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
5093 * the Amazon S3 inventory feature, see <a
5094 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html">Amazon
5095 * S3 Inventory</a> </p> <p>The following operations are related to
5096 * <code>ListBucketInventoryConfigurations</code>:</p> <ul> <li> <p>
5097 * <a>GetBucketInventoryConfiguration</a> </p> </li> <li> <p>
5098 * <a>DeleteBucketInventoryConfiguration</a> </p> </li> <li> <p>
5099 * <a>PutBucketInventoryConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
5100 * <a
5101 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations">AWS
5102 * API Reference</a></p>
5103 *
5104 * Queues the request into a thread executor and triggers associated callback when operation has finished.
5105 */
5106 virtual void ListBucketInventoryConfigurationsAsync(const Model::ListBucketInventoryConfigurationsRequest& request, const ListBucketInventoryConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
5107
5108 /**
5109 * <p>Lists the metrics configurations for the bucket. The metrics configurations
5110 * are only for the request metrics of the bucket and do not provide information on
5111 * daily storage metrics. You can have up to 1,000 configurations per bucket.</p>
5112 * <p>This operation supports list pagination and does not return more than 100
5113 * configurations at a time. Always check the <code>IsTruncated</code> element in
5114 * the response. If there are no more configurations to list,
5115 * <code>IsTruncated</code> is set to false. If there are more configurations to
5116 * list, <code>IsTruncated</code> is set to true, and there is a value in
5117 * <code>NextContinuationToken</code>. You use the
5118 * <code>NextContinuationToken</code> value to continue the pagination of the list
5119 * by passing the value in <code>continuation-token</code> in the request to
5120 * <code>GET</code> the next page.</p> <p>To use this operation, you must have
5121 * permissions to perform the <code>s3:GetMetricsConfiguration</code> action. The
5122 * bucket owner has this permission by default. The bucket owner can grant this
5123 * permission to others. For more information about permissions, see <a
5124 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
5125 * Related to Bucket Subresource Operations</a> and <a
5126 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
5127 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For more information
5128 * about metrics configurations and CloudWatch request metrics, see <a
5129 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
5130 * Metrics with Amazon CloudWatch</a>.</p> <p>The following operations are related
5131 * to <code>ListBucketMetricsConfigurations</code>:</p> <ul> <li> <p>
5132 * <a>PutBucketMetricsConfiguration</a> </p> </li> <li> <p>
5133 * <a>GetBucketMetricsConfiguration</a> </p> </li> <li> <p>
5134 * <a>DeleteBucketMetricsConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
5135 * <a
5136 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations">AWS
5137 * API Reference</a></p>
5138 */
5139 virtual Model::ListBucketMetricsConfigurationsOutcome ListBucketMetricsConfigurations(const Model::ListBucketMetricsConfigurationsRequest& request) const;
5140
5141 /**
5142 * <p>Lists the metrics configurations for the bucket. The metrics configurations
5143 * are only for the request metrics of the bucket and do not provide information on
5144 * daily storage metrics. You can have up to 1,000 configurations per bucket.</p>
5145 * <p>This operation supports list pagination and does not return more than 100
5146 * configurations at a time. Always check the <code>IsTruncated</code> element in
5147 * the response. If there are no more configurations to list,
5148 * <code>IsTruncated</code> is set to false. If there are more configurations to
5149 * list, <code>IsTruncated</code> is set to true, and there is a value in
5150 * <code>NextContinuationToken</code>. You use the
5151 * <code>NextContinuationToken</code> value to continue the pagination of the list
5152 * by passing the value in <code>continuation-token</code> in the request to
5153 * <code>GET</code> the next page.</p> <p>To use this operation, you must have
5154 * permissions to perform the <code>s3:GetMetricsConfiguration</code> action. The
5155 * bucket owner has this permission by default. The bucket owner can grant this
5156 * permission to others. For more information about permissions, see <a
5157 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
5158 * Related to Bucket Subresource Operations</a> and <a
5159 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
5160 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For more information
5161 * about metrics configurations and CloudWatch request metrics, see <a
5162 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
5163 * Metrics with Amazon CloudWatch</a>.</p> <p>The following operations are related
5164 * to <code>ListBucketMetricsConfigurations</code>:</p> <ul> <li> <p>
5165 * <a>PutBucketMetricsConfiguration</a> </p> </li> <li> <p>
5166 * <a>GetBucketMetricsConfiguration</a> </p> </li> <li> <p>
5167 * <a>DeleteBucketMetricsConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
5168 * <a
5169 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations">AWS
5170 * API Reference</a></p>
5171 *
5172 * returns a future to the operation so that it can be executed in parallel to other requests.
5173 */
5174 virtual Model::ListBucketMetricsConfigurationsOutcomeCallable ListBucketMetricsConfigurationsCallable(const Model::ListBucketMetricsConfigurationsRequest& request) const;
5175
5176 /**
5177 * <p>Lists the metrics configurations for the bucket. The metrics configurations
5178 * are only for the request metrics of the bucket and do not provide information on
5179 * daily storage metrics. You can have up to 1,000 configurations per bucket.</p>
5180 * <p>This operation supports list pagination and does not return more than 100
5181 * configurations at a time. Always check the <code>IsTruncated</code> element in
5182 * the response. If there are no more configurations to list,
5183 * <code>IsTruncated</code> is set to false. If there are more configurations to
5184 * list, <code>IsTruncated</code> is set to true, and there is a value in
5185 * <code>NextContinuationToken</code>. You use the
5186 * <code>NextContinuationToken</code> value to continue the pagination of the list
5187 * by passing the value in <code>continuation-token</code> in the request to
5188 * <code>GET</code> the next page.</p> <p>To use this operation, you must have
5189 * permissions to perform the <code>s3:GetMetricsConfiguration</code> action. The
5190 * bucket owner has this permission by default. The bucket owner can grant this
5191 * permission to others. For more information about permissions, see <a
5192 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
5193 * Related to Bucket Subresource Operations</a> and <a
5194 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
5195 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For more information
5196 * about metrics configurations and CloudWatch request metrics, see <a
5197 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
5198 * Metrics with Amazon CloudWatch</a>.</p> <p>The following operations are related
5199 * to <code>ListBucketMetricsConfigurations</code>:</p> <ul> <li> <p>
5200 * <a>PutBucketMetricsConfiguration</a> </p> </li> <li> <p>
5201 * <a>GetBucketMetricsConfiguration</a> </p> </li> <li> <p>
5202 * <a>DeleteBucketMetricsConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
5203 * <a
5204 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations">AWS
5205 * API Reference</a></p>
5206 *
5207 * Queues the request into a thread executor and triggers associated callback when operation has finished.
5208 */
5209 virtual void ListBucketMetricsConfigurationsAsync(const Model::ListBucketMetricsConfigurationsRequest& request, const ListBucketMetricsConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
5210
5211 /**
5212 * <p>Returns a list of all buckets owned by the authenticated sender of the
5213 * request.</p><p><h3>See Also:</h3> <a
5214 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets">AWS API
5215 * Reference</a></p>
5216 */
5217 virtual Model::ListBucketsOutcome ListBuckets() const;
5218
5219 /**
5220 * <p>Returns a list of all buckets owned by the authenticated sender of the
5221 * request.</p><p><h3>See Also:</h3> <a
5222 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets">AWS API
5223 * Reference</a></p>
5224 *
5225 * returns a future to the operation so that it can be executed in parallel to other requests.
5226 */
5227 virtual Model::ListBucketsOutcomeCallable ListBucketsCallable() const;
5228
5229 /**
5230 * <p>Returns a list of all buckets owned by the authenticated sender of the
5231 * request.</p><p><h3>See Also:</h3> <a
5232 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets">AWS API
5233 * Reference</a></p>
5234 *
5235 * Queues the request into a thread executor and triggers associated callback when operation has finished.
5236 */
5237 virtual void ListBucketsAsync(const ListBucketsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
5238 /**
5239 * <p>This operation lists in-progress multipart uploads. An in-progress multipart
5240 * upload is a multipart upload that has been initiated using the Initiate
5241 * Multipart Upload request, but has not yet been completed or aborted.</p> <p>This
5242 * operation returns at most 1,000 multipart uploads in the response. 1,000
5243 * multipart uploads is the maximum number of uploads a response can include, which
5244 * is also the default value. You can further limit the number of uploads in a
5245 * response by specifying the <code>max-uploads</code> parameter in the response.
5246 * If additional multipart uploads satisfy the list criteria, the response will
5247 * contain an <code>IsTruncated</code> element with the value true. To list the
5248 * additional multipart uploads, use the <code>key-marker</code> and
5249 * <code>upload-id-marker</code> request parameters.</p> <p>In the response, the
5250 * uploads are sorted by key. If your application has initiated more than one
5251 * multipart upload using the same object key, then uploads in the response are
5252 * first sorted by key. Additionally, uploads are sorted in ascending order within
5253 * each key by the upload initiation time.</p> <p>For more information on multipart
5254 * uploads, see <a
5255 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html">Uploading
5256 * Objects Using Multipart Upload</a>.</p> <p>For information on permissions
5257 * required to use the multipart upload API, see <a
5258 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
5259 * Upload API and Permissions</a>.</p> <p>The following operations are related to
5260 * <code>ListMultipartUploads</code>:</p> <ul> <li> <p>
5261 * <a>CreateMultipartUpload</a> </p> </li> <li> <p> <a>UploadPart</a> </p> </li>
5262 * <li> <p> <a>CompleteMultipartUpload</a> </p> </li> <li> <p> <a>ListParts</a>
5263 * </p> </li> <li> <p> <a>AbortMultipartUpload</a> </p> </li> </ul><p><h3>See
5264 * Also:</h3> <a
5265 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads">AWS
5266 * API Reference</a></p>
5267 */
5268 virtual Model::ListMultipartUploadsOutcome ListMultipartUploads(const Model::ListMultipartUploadsRequest& request) const;
5269
5270 /**
5271 * <p>This operation lists in-progress multipart uploads. An in-progress multipart
5272 * upload is a multipart upload that has been initiated using the Initiate
5273 * Multipart Upload request, but has not yet been completed or aborted.</p> <p>This
5274 * operation returns at most 1,000 multipart uploads in the response. 1,000
5275 * multipart uploads is the maximum number of uploads a response can include, which
5276 * is also the default value. You can further limit the number of uploads in a
5277 * response by specifying the <code>max-uploads</code> parameter in the response.
5278 * If additional multipart uploads satisfy the list criteria, the response will
5279 * contain an <code>IsTruncated</code> element with the value true. To list the
5280 * additional multipart uploads, use the <code>key-marker</code> and
5281 * <code>upload-id-marker</code> request parameters.</p> <p>In the response, the
5282 * uploads are sorted by key. If your application has initiated more than one
5283 * multipart upload using the same object key, then uploads in the response are
5284 * first sorted by key. Additionally, uploads are sorted in ascending order within
5285 * each key by the upload initiation time.</p> <p>For more information on multipart
5286 * uploads, see <a
5287 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html">Uploading
5288 * Objects Using Multipart Upload</a>.</p> <p>For information on permissions
5289 * required to use the multipart upload API, see <a
5290 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
5291 * Upload API and Permissions</a>.</p> <p>The following operations are related to
5292 * <code>ListMultipartUploads</code>:</p> <ul> <li> <p>
5293 * <a>CreateMultipartUpload</a> </p> </li> <li> <p> <a>UploadPart</a> </p> </li>
5294 * <li> <p> <a>CompleteMultipartUpload</a> </p> </li> <li> <p> <a>ListParts</a>
5295 * </p> </li> <li> <p> <a>AbortMultipartUpload</a> </p> </li> </ul><p><h3>See
5296 * Also:</h3> <a
5297 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads">AWS
5298 * API Reference</a></p>
5299 *
5300 * returns a future to the operation so that it can be executed in parallel to other requests.
5301 */
5302 virtual Model::ListMultipartUploadsOutcomeCallable ListMultipartUploadsCallable(const Model::ListMultipartUploadsRequest& request) const;
5303
5304 /**
5305 * <p>This operation lists in-progress multipart uploads. An in-progress multipart
5306 * upload is a multipart upload that has been initiated using the Initiate
5307 * Multipart Upload request, but has not yet been completed or aborted.</p> <p>This
5308 * operation returns at most 1,000 multipart uploads in the response. 1,000
5309 * multipart uploads is the maximum number of uploads a response can include, which
5310 * is also the default value. You can further limit the number of uploads in a
5311 * response by specifying the <code>max-uploads</code> parameter in the response.
5312 * If additional multipart uploads satisfy the list criteria, the response will
5313 * contain an <code>IsTruncated</code> element with the value true. To list the
5314 * additional multipart uploads, use the <code>key-marker</code> and
5315 * <code>upload-id-marker</code> request parameters.</p> <p>In the response, the
5316 * uploads are sorted by key. If your application has initiated more than one
5317 * multipart upload using the same object key, then uploads in the response are
5318 * first sorted by key. Additionally, uploads are sorted in ascending order within
5319 * each key by the upload initiation time.</p> <p>For more information on multipart
5320 * uploads, see <a
5321 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html">Uploading
5322 * Objects Using Multipart Upload</a>.</p> <p>For information on permissions
5323 * required to use the multipart upload API, see <a
5324 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
5325 * Upload API and Permissions</a>.</p> <p>The following operations are related to
5326 * <code>ListMultipartUploads</code>:</p> <ul> <li> <p>
5327 * <a>CreateMultipartUpload</a> </p> </li> <li> <p> <a>UploadPart</a> </p> </li>
5328 * <li> <p> <a>CompleteMultipartUpload</a> </p> </li> <li> <p> <a>ListParts</a>
5329 * </p> </li> <li> <p> <a>AbortMultipartUpload</a> </p> </li> </ul><p><h3>See
5330 * Also:</h3> <a
5331 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads">AWS
5332 * API Reference</a></p>
5333 *
5334 * Queues the request into a thread executor and triggers associated callback when operation has finished.
5335 */
5336 virtual void ListMultipartUploadsAsync(const Model::ListMultipartUploadsRequest& request, const ListMultipartUploadsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
5337
5338 /**
5339 * <p>Returns metadata about all of the versions of objects in a bucket. You can
5340 * also use request parameters as selection criteria to return metadata about a
5341 * subset of all the object versions. </p> <note> <p> A 200 OK response can contain
5342 * valid or invalid XML. Make sure to design your application to parse the contents
5343 * of the response and handle it appropriately.</p> </note> <p>To use this
5344 * operation, you must have READ access to the bucket.</p> <p>The following
5345 * operations are related to <code>ListObjectVersions</code>:</p> <ul> <li> <p>
5346 * <a>ListObjectsV2</a> </p> </li> <li> <p> <a>GetObject</a> </p> </li> <li> <p>
5347 * <a>PutObject</a> </p> </li> <li> <p> <a>DeleteObject</a> </p> </li>
5348 * </ul><p><h3>See Also:</h3> <a
5349 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions">AWS
5350 * API Reference</a></p>
5351 */
5352 virtual Model::ListObjectVersionsOutcome ListObjectVersions(const Model::ListObjectVersionsRequest& request) const;
5353
5354 /**
5355 * <p>Returns metadata about all of the versions of objects in a bucket. You can
5356 * also use request parameters as selection criteria to return metadata about a
5357 * subset of all the object versions. </p> <note> <p> A 200 OK response can contain
5358 * valid or invalid XML. Make sure to design your application to parse the contents
5359 * of the response and handle it appropriately.</p> </note> <p>To use this
5360 * operation, you must have READ access to the bucket.</p> <p>The following
5361 * operations are related to <code>ListObjectVersions</code>:</p> <ul> <li> <p>
5362 * <a>ListObjectsV2</a> </p> </li> <li> <p> <a>GetObject</a> </p> </li> <li> <p>
5363 * <a>PutObject</a> </p> </li> <li> <p> <a>DeleteObject</a> </p> </li>
5364 * </ul><p><h3>See Also:</h3> <a
5365 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions">AWS
5366 * API Reference</a></p>
5367 *
5368 * returns a future to the operation so that it can be executed in parallel to other requests.
5369 */
5370 virtual Model::ListObjectVersionsOutcomeCallable ListObjectVersionsCallable(const Model::ListObjectVersionsRequest& request) const;
5371
5372 /**
5373 * <p>Returns metadata about all of the versions of objects in a bucket. You can
5374 * also use request parameters as selection criteria to return metadata about a
5375 * subset of all the object versions. </p> <note> <p> A 200 OK response can contain
5376 * valid or invalid XML. Make sure to design your application to parse the contents
5377 * of the response and handle it appropriately.</p> </note> <p>To use this
5378 * operation, you must have READ access to the bucket.</p> <p>The following
5379 * operations are related to <code>ListObjectVersions</code>:</p> <ul> <li> <p>
5380 * <a>ListObjectsV2</a> </p> </li> <li> <p> <a>GetObject</a> </p> </li> <li> <p>
5381 * <a>PutObject</a> </p> </li> <li> <p> <a>DeleteObject</a> </p> </li>
5382 * </ul><p><h3>See Also:</h3> <a
5383 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions">AWS
5384 * API Reference</a></p>
5385 *
5386 * Queues the request into a thread executor and triggers associated callback when operation has finished.
5387 */
5388 virtual void ListObjectVersionsAsync(const Model::ListObjectVersionsRequest& request, const ListObjectVersionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
5389
5390 /**
5391 * <p>Returns some or all (up to 1,000) of the objects in a bucket. You can use the
5392 * request parameters as selection criteria to return a subset of the objects in a
5393 * bucket. A 200 OK response can contain valid or invalid XML. Be sure to design
5394 * your application to parse the contents of the response and handle it
5395 * appropriately.</p> <important> <p>This API has been revised. We recommend that
5396 * you use the newer version, <a>ListObjectsV2</a>, when developing applications.
5397 * For backward compatibility, Amazon S3 continues to support
5398 * <code>ListObjects</code>.</p> </important> <p>The following operations are
5399 * related to <code>ListObjects</code>:</p> <ul> <li> <p> <a>ListObjectsV2</a> </p>
5400 * </li> <li> <p> <a>GetObject</a> </p> </li> <li> <p> <a>PutObject</a> </p> </li>
5401 * <li> <p> <a>CreateBucket</a> </p> </li> <li> <p> <a>ListBuckets</a> </p> </li>
5402 * </ul><p><h3>See Also:</h3> <a
5403 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects">AWS API
5404 * Reference</a></p>
5405 */
5406 virtual Model::ListObjectsOutcome ListObjects(const Model::ListObjectsRequest& request) const;
5407
5408 /**
5409 * <p>Returns some or all (up to 1,000) of the objects in a bucket. You can use the
5410 * request parameters as selection criteria to return a subset of the objects in a
5411 * bucket. A 200 OK response can contain valid or invalid XML. Be sure to design
5412 * your application to parse the contents of the response and handle it
5413 * appropriately.</p> <important> <p>This API has been revised. We recommend that
5414 * you use the newer version, <a>ListObjectsV2</a>, when developing applications.
5415 * For backward compatibility, Amazon S3 continues to support
5416 * <code>ListObjects</code>.</p> </important> <p>The following operations are
5417 * related to <code>ListObjects</code>:</p> <ul> <li> <p> <a>ListObjectsV2</a> </p>
5418 * </li> <li> <p> <a>GetObject</a> </p> </li> <li> <p> <a>PutObject</a> </p> </li>
5419 * <li> <p> <a>CreateBucket</a> </p> </li> <li> <p> <a>ListBuckets</a> </p> </li>
5420 * </ul><p><h3>See Also:</h3> <a
5421 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects">AWS API
5422 * Reference</a></p>
5423 *
5424 * returns a future to the operation so that it can be executed in parallel to other requests.
5425 */
5426 virtual Model::ListObjectsOutcomeCallable ListObjectsCallable(const Model::ListObjectsRequest& request) const;
5427
5428 /**
5429 * <p>Returns some or all (up to 1,000) of the objects in a bucket. You can use the
5430 * request parameters as selection criteria to return a subset of the objects in a
5431 * bucket. A 200 OK response can contain valid or invalid XML. Be sure to design
5432 * your application to parse the contents of the response and handle it
5433 * appropriately.</p> <important> <p>This API has been revised. We recommend that
5434 * you use the newer version, <a>ListObjectsV2</a>, when developing applications.
5435 * For backward compatibility, Amazon S3 continues to support
5436 * <code>ListObjects</code>.</p> </important> <p>The following operations are
5437 * related to <code>ListObjects</code>:</p> <ul> <li> <p> <a>ListObjectsV2</a> </p>
5438 * </li> <li> <p> <a>GetObject</a> </p> </li> <li> <p> <a>PutObject</a> </p> </li>
5439 * <li> <p> <a>CreateBucket</a> </p> </li> <li> <p> <a>ListBuckets</a> </p> </li>
5440 * </ul><p><h3>See Also:</h3> <a
5441 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects">AWS API
5442 * Reference</a></p>
5443 *
5444 * Queues the request into a thread executor and triggers associated callback when operation has finished.
5445 */
5446 virtual void ListObjectsAsync(const Model::ListObjectsRequest& request, const ListObjectsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
5447
5448 /**
5449 * <p>Returns some or all (up to 1,000) of the objects in a bucket. You can use the
5450 * request parameters as selection criteria to return a subset of the objects in a
5451 * bucket. A <code>200 OK</code> response can contain valid or invalid XML. Make
5452 * sure to design your application to parse the contents of the response and handle
5453 * it appropriately.</p> <p>To use this operation, you must have READ access to the
5454 * bucket.</p> <p>To use this operation in an AWS Identity and Access Management
5455 * (IAM) policy, you must have permissions to perform the
5456 * <code>s3:ListBucket</code> action. The bucket owner has this permission by
5457 * default and can grant this permission to others. For more information about
5458 * permissions, see <a
5459 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
5460 * Related to Bucket Subresource Operations</a> and <a
5461 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
5462 * Access Permissions to Your Amazon S3 Resources</a>.</p> <important> <p>This
5463 * section describes the latest revision of the API. We recommend that you use this
5464 * revised API for application development. For backward compatibility, Amazon S3
5465 * continues to support the prior version of this API, <a>ListObjects</a>.</p>
5466 * </important> <p>To get a list of your buckets, see <a>ListBuckets</a>.</p>
5467 * <p>The following operations are related to <code>ListObjectsV2</code>:</p> <ul>
5468 * <li> <p> <a>GetObject</a> </p> </li> <li> <p> <a>PutObject</a> </p> </li> <li>
5469 * <p> <a>CreateBucket</a> </p> </li> </ul><p><h3>See Also:</h3> <a
5470 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2">AWS
5471 * API Reference</a></p>
5472 */
5473 virtual Model::ListObjectsV2Outcome ListObjectsV2(const Model::ListObjectsV2Request& request) const;
5474
5475 /**
5476 * <p>Returns some or all (up to 1,000) of the objects in a bucket. You can use the
5477 * request parameters as selection criteria to return a subset of the objects in a
5478 * bucket. A <code>200 OK</code> response can contain valid or invalid XML. Make
5479 * sure to design your application to parse the contents of the response and handle
5480 * it appropriately.</p> <p>To use this operation, you must have READ access to the
5481 * bucket.</p> <p>To use this operation in an AWS Identity and Access Management
5482 * (IAM) policy, you must have permissions to perform the
5483 * <code>s3:ListBucket</code> action. The bucket owner has this permission by
5484 * default and can grant this permission to others. For more information about
5485 * permissions, see <a
5486 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
5487 * Related to Bucket Subresource Operations</a> and <a
5488 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
5489 * Access Permissions to Your Amazon S3 Resources</a>.</p> <important> <p>This
5490 * section describes the latest revision of the API. We recommend that you use this
5491 * revised API for application development. For backward compatibility, Amazon S3
5492 * continues to support the prior version of this API, <a>ListObjects</a>.</p>
5493 * </important> <p>To get a list of your buckets, see <a>ListBuckets</a>.</p>
5494 * <p>The following operations are related to <code>ListObjectsV2</code>:</p> <ul>
5495 * <li> <p> <a>GetObject</a> </p> </li> <li> <p> <a>PutObject</a> </p> </li> <li>
5496 * <p> <a>CreateBucket</a> </p> </li> </ul><p><h3>See Also:</h3> <a
5497 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2">AWS
5498 * API Reference</a></p>
5499 *
5500 * returns a future to the operation so that it can be executed in parallel to other requests.
5501 */
5502 virtual Model::ListObjectsV2OutcomeCallable ListObjectsV2Callable(const Model::ListObjectsV2Request& request) const;
5503
5504 /**
5505 * <p>Returns some or all (up to 1,000) of the objects in a bucket. You can use the
5506 * request parameters as selection criteria to return a subset of the objects in a
5507 * bucket. A <code>200 OK</code> response can contain valid or invalid XML. Make
5508 * sure to design your application to parse the contents of the response and handle
5509 * it appropriately.</p> <p>To use this operation, you must have READ access to the
5510 * bucket.</p> <p>To use this operation in an AWS Identity and Access Management
5511 * (IAM) policy, you must have permissions to perform the
5512 * <code>s3:ListBucket</code> action. The bucket owner has this permission by
5513 * default and can grant this permission to others. For more information about
5514 * permissions, see <a
5515 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
5516 * Related to Bucket Subresource Operations</a> and <a
5517 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
5518 * Access Permissions to Your Amazon S3 Resources</a>.</p> <important> <p>This
5519 * section describes the latest revision of the API. We recommend that you use this
5520 * revised API for application development. For backward compatibility, Amazon S3
5521 * continues to support the prior version of this API, <a>ListObjects</a>.</p>
5522 * </important> <p>To get a list of your buckets, see <a>ListBuckets</a>.</p>
5523 * <p>The following operations are related to <code>ListObjectsV2</code>:</p> <ul>
5524 * <li> <p> <a>GetObject</a> </p> </li> <li> <p> <a>PutObject</a> </p> </li> <li>
5525 * <p> <a>CreateBucket</a> </p> </li> </ul><p><h3>See Also:</h3> <a
5526 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2">AWS
5527 * API Reference</a></p>
5528 *
5529 * Queues the request into a thread executor and triggers associated callback when operation has finished.
5530 */
5531 virtual void ListObjectsV2Async(const Model::ListObjectsV2Request& request, const ListObjectsV2ResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
5532
5533 /**
5534 * <p>Lists the parts that have been uploaded for a specific multipart upload. This
5535 * operation must include the upload ID, which you obtain by sending the initiate
5536 * multipart upload request (see <a>CreateMultipartUpload</a>). This request
5537 * returns a maximum of 1,000 uploaded parts. The default number of parts returned
5538 * is 1,000 parts. You can restrict the number of parts returned by specifying the
5539 * <code>max-parts</code> request parameter. If your multipart upload consists of
5540 * more than 1,000 parts, the response returns an <code>IsTruncated</code> field
5541 * with the value of true, and a <code>NextPartNumberMarker</code> element. In
5542 * subsequent <code>ListParts</code> requests you can include the
5543 * part-number-marker query string parameter and set its value to the
5544 * <code>NextPartNumberMarker</code> field value from the previous response.</p>
5545 * <p>For more information on multipart uploads, see <a
5546 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html">Uploading
5547 * Objects Using Multipart Upload</a>.</p> <p>For information on permissions
5548 * required to use the multipart upload API, see <a
5549 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
5550 * Upload API and Permissions</a>.</p> <p>The following operations are related to
5551 * <code>ListParts</code>:</p> <ul> <li> <p> <a>CreateMultipartUpload</a> </p>
5552 * </li> <li> <p> <a>UploadPart</a> </p> </li> <li> <p>
5553 * <a>CompleteMultipartUpload</a> </p> </li> <li> <p> <a>AbortMultipartUpload</a>
5554 * </p> </li> <li> <p> <a>ListMultipartUploads</a> </p> </li> </ul><p><h3>See
5555 * Also:</h3> <a
5556 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts">AWS API
5557 * Reference</a></p>
5558 */
5559 virtual Model::ListPartsOutcome ListParts(const Model::ListPartsRequest& request) const;
5560
5561 /**
5562 * <p>Lists the parts that have been uploaded for a specific multipart upload. This
5563 * operation must include the upload ID, which you obtain by sending the initiate
5564 * multipart upload request (see <a>CreateMultipartUpload</a>). This request
5565 * returns a maximum of 1,000 uploaded parts. The default number of parts returned
5566 * is 1,000 parts. You can restrict the number of parts returned by specifying the
5567 * <code>max-parts</code> request parameter. If your multipart upload consists of
5568 * more than 1,000 parts, the response returns an <code>IsTruncated</code> field
5569 * with the value of true, and a <code>NextPartNumberMarker</code> element. In
5570 * subsequent <code>ListParts</code> requests you can include the
5571 * part-number-marker query string parameter and set its value to the
5572 * <code>NextPartNumberMarker</code> field value from the previous response.</p>
5573 * <p>For more information on multipart uploads, see <a
5574 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html">Uploading
5575 * Objects Using Multipart Upload</a>.</p> <p>For information on permissions
5576 * required to use the multipart upload API, see <a
5577 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
5578 * Upload API and Permissions</a>.</p> <p>The following operations are related to
5579 * <code>ListParts</code>:</p> <ul> <li> <p> <a>CreateMultipartUpload</a> </p>
5580 * </li> <li> <p> <a>UploadPart</a> </p> </li> <li> <p>
5581 * <a>CompleteMultipartUpload</a> </p> </li> <li> <p> <a>AbortMultipartUpload</a>
5582 * </p> </li> <li> <p> <a>ListMultipartUploads</a> </p> </li> </ul><p><h3>See
5583 * Also:</h3> <a
5584 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts">AWS API
5585 * Reference</a></p>
5586 *
5587 * returns a future to the operation so that it can be executed in parallel to other requests.
5588 */
5589 virtual Model::ListPartsOutcomeCallable ListPartsCallable(const Model::ListPartsRequest& request) const;
5590
5591 /**
5592 * <p>Lists the parts that have been uploaded for a specific multipart upload. This
5593 * operation must include the upload ID, which you obtain by sending the initiate
5594 * multipart upload request (see <a>CreateMultipartUpload</a>). This request
5595 * returns a maximum of 1,000 uploaded parts. The default number of parts returned
5596 * is 1,000 parts. You can restrict the number of parts returned by specifying the
5597 * <code>max-parts</code> request parameter. If your multipart upload consists of
5598 * more than 1,000 parts, the response returns an <code>IsTruncated</code> field
5599 * with the value of true, and a <code>NextPartNumberMarker</code> element. In
5600 * subsequent <code>ListParts</code> requests you can include the
5601 * part-number-marker query string parameter and set its value to the
5602 * <code>NextPartNumberMarker</code> field value from the previous response.</p>
5603 * <p>For more information on multipart uploads, see <a
5604 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html">Uploading
5605 * Objects Using Multipart Upload</a>.</p> <p>For information on permissions
5606 * required to use the multipart upload API, see <a
5607 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
5608 * Upload API and Permissions</a>.</p> <p>The following operations are related to
5609 * <code>ListParts</code>:</p> <ul> <li> <p> <a>CreateMultipartUpload</a> </p>
5610 * </li> <li> <p> <a>UploadPart</a> </p> </li> <li> <p>
5611 * <a>CompleteMultipartUpload</a> </p> </li> <li> <p> <a>AbortMultipartUpload</a>
5612 * </p> </li> <li> <p> <a>ListMultipartUploads</a> </p> </li> </ul><p><h3>See
5613 * Also:</h3> <a
5614 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts">AWS API
5615 * Reference</a></p>
5616 *
5617 * Queues the request into a thread executor and triggers associated callback when operation has finished.
5618 */
5619 virtual void ListPartsAsync(const Model::ListPartsRequest& request, const ListPartsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
5620
5621 /**
5622 * <p>Sets the accelerate configuration of an existing bucket. Amazon S3 Transfer
5623 * Acceleration is a bucket-level feature that enables you to perform faster data
5624 * transfers to Amazon S3.</p> <p> To use this operation, you must have permission
5625 * to perform the s3:PutAccelerateConfiguration action. The bucket owner has this
5626 * permission by default. The bucket owner can grant this permission to others. For
5627 * more information about permissions, see <a
5628 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
5629 * Related to Bucket Subresource Operations</a> and <a
5630 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
5631 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p> The Transfer
5632 * Acceleration state of a bucket can be set to one of the following two
5633 * values:</p> <ul> <li> <p> Enabled – Enables accelerated data transfers to the
5634 * bucket.</p> </li> <li> <p> Suspended – Disables accelerated data transfers to
5635 * the bucket.</p> </li> </ul> <p>The <a>GetBucketAccelerateConfiguration</a>
5636 * operation returns the transfer acceleration state of a bucket.</p> <p>After
5637 * setting the Transfer Acceleration state of a bucket to Enabled, it might take up
5638 * to thirty minutes before the data transfer rates to the bucket increase.</p> <p>
5639 * The name of the bucket used for Transfer Acceleration must be DNS-compliant and
5640 * must not contain periods (".").</p> <p> For more information about transfer
5641 * acceleration, see <a
5642 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html">Transfer
5643 * Acceleration</a>.</p> <p>The following operations are related to
5644 * <code>PutBucketAccelerateConfiguration</code>:</p> <ul> <li> <p>
5645 * <a>GetBucketAccelerateConfiguration</a> </p> </li> <li> <p> <a>CreateBucket</a>
5646 * </p> </li> </ul><p><h3>See Also:</h3> <a
5647 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration">AWS
5648 * API Reference</a></p>
5649 */
5650 virtual Model::PutBucketAccelerateConfigurationOutcome PutBucketAccelerateConfiguration(const Model::PutBucketAccelerateConfigurationRequest& request) const;
5651
5652 /**
5653 * <p>Sets the accelerate configuration of an existing bucket. Amazon S3 Transfer
5654 * Acceleration is a bucket-level feature that enables you to perform faster data
5655 * transfers to Amazon S3.</p> <p> To use this operation, you must have permission
5656 * to perform the s3:PutAccelerateConfiguration action. The bucket owner has this
5657 * permission by default. The bucket owner can grant this permission to others. For
5658 * more information about permissions, see <a
5659 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
5660 * Related to Bucket Subresource Operations</a> and <a
5661 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
5662 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p> The Transfer
5663 * Acceleration state of a bucket can be set to one of the following two
5664 * values:</p> <ul> <li> <p> Enabled – Enables accelerated data transfers to the
5665 * bucket.</p> </li> <li> <p> Suspended – Disables accelerated data transfers to
5666 * the bucket.</p> </li> </ul> <p>The <a>GetBucketAccelerateConfiguration</a>
5667 * operation returns the transfer acceleration state of a bucket.</p> <p>After
5668 * setting the Transfer Acceleration state of a bucket to Enabled, it might take up
5669 * to thirty minutes before the data transfer rates to the bucket increase.</p> <p>
5670 * The name of the bucket used for Transfer Acceleration must be DNS-compliant and
5671 * must not contain periods (".").</p> <p> For more information about transfer
5672 * acceleration, see <a
5673 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html">Transfer
5674 * Acceleration</a>.</p> <p>The following operations are related to
5675 * <code>PutBucketAccelerateConfiguration</code>:</p> <ul> <li> <p>
5676 * <a>GetBucketAccelerateConfiguration</a> </p> </li> <li> <p> <a>CreateBucket</a>
5677 * </p> </li> </ul><p><h3>See Also:</h3> <a
5678 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration">AWS
5679 * API Reference</a></p>
5680 *
5681 * returns a future to the operation so that it can be executed in parallel to other requests.
5682 */
5683 virtual Model::PutBucketAccelerateConfigurationOutcomeCallable PutBucketAccelerateConfigurationCallable(const Model::PutBucketAccelerateConfigurationRequest& request) const;
5684
5685 /**
5686 * <p>Sets the accelerate configuration of an existing bucket. Amazon S3 Transfer
5687 * Acceleration is a bucket-level feature that enables you to perform faster data
5688 * transfers to Amazon S3.</p> <p> To use this operation, you must have permission
5689 * to perform the s3:PutAccelerateConfiguration action. The bucket owner has this
5690 * permission by default. The bucket owner can grant this permission to others. For
5691 * more information about permissions, see <a
5692 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
5693 * Related to Bucket Subresource Operations</a> and <a
5694 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
5695 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p> The Transfer
5696 * Acceleration state of a bucket can be set to one of the following two
5697 * values:</p> <ul> <li> <p> Enabled – Enables accelerated data transfers to the
5698 * bucket.</p> </li> <li> <p> Suspended – Disables accelerated data transfers to
5699 * the bucket.</p> </li> </ul> <p>The <a>GetBucketAccelerateConfiguration</a>
5700 * operation returns the transfer acceleration state of a bucket.</p> <p>After
5701 * setting the Transfer Acceleration state of a bucket to Enabled, it might take up
5702 * to thirty minutes before the data transfer rates to the bucket increase.</p> <p>
5703 * The name of the bucket used for Transfer Acceleration must be DNS-compliant and
5704 * must not contain periods (".").</p> <p> For more information about transfer
5705 * acceleration, see <a
5706 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html">Transfer
5707 * Acceleration</a>.</p> <p>The following operations are related to
5708 * <code>PutBucketAccelerateConfiguration</code>:</p> <ul> <li> <p>
5709 * <a>GetBucketAccelerateConfiguration</a> </p> </li> <li> <p> <a>CreateBucket</a>
5710 * </p> </li> </ul><p><h3>See Also:</h3> <a
5711 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration">AWS
5712 * API Reference</a></p>
5713 *
5714 * Queues the request into a thread executor and triggers associated callback when operation has finished.
5715 */
5716 virtual void PutBucketAccelerateConfigurationAsync(const Model::PutBucketAccelerateConfigurationRequest& request, const PutBucketAccelerateConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
5717
5718 /**
5719 * <p>Sets the permissions on an existing bucket using access control lists (ACL).
5720 * For more information, see <a
5721 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using
5722 * ACLs</a>. To set the ACL of a bucket, you must have <code>WRITE_ACP</code>
5723 * permission.</p> <p>You can use one of the following two ways to set a bucket's
5724 * permissions:</p> <ul> <li> <p>Specify the ACL in the request body</p> </li> <li>
5725 * <p>Specify permissions using request headers</p> </li> </ul> <note> <p>You
5726 * cannot specify access permission using both the body and the request
5727 * headers.</p> </note> <p>Depending on your application needs, you may choose to
5728 * set the ACL on a bucket using either the request body or the headers. For
5729 * example, if you have an existing application that updates a bucket ACL using the
5730 * request body, then you can continue to use that approach.</p> <p> <b>Access
5731 * Permissions</b> </p> <p>You can set access permissions using one of the
5732 * following methods:</p> <ul> <li> <p>Specify a canned ACL with the
5733 * <code>x-amz-acl</code> request header. Amazon S3 supports a set of predefined
5734 * ACLs, known as <i>canned ACLs</i>. Each canned ACL has a predefined set of
5735 * grantees and permissions. Specify the canned ACL name as the value of
5736 * <code>x-amz-acl</code>. If you use this header, you cannot use other access
5737 * control-specific headers in your request. For more information, see <a
5738 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
5739 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly with the
5740 * <code>x-amz-grant-read</code>, <code>x-amz-grant-read-acp</code>,
5741 * <code>x-amz-grant-write-acp</code>, and <code>x-amz-grant-full-control</code>
5742 * headers. When using these headers, you specify explicit access permissions and
5743 * grantees (AWS accounts or Amazon S3 groups) who will receive the permission. If
5744 * you use these ACL-specific headers, you cannot use the <code>x-amz-acl</code>
5745 * header to set a canned ACL. These parameters map to the set of permissions that
5746 * Amazon S3 supports in an ACL. For more information, see <a
5747 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
5748 * Control List (ACL) Overview</a>.</p> <p>You specify each grantee as a type=value
5749 * pair, where the type is one of the following:</p> <ul> <li> <p>
5750 * <code>emailAddress</code> – if the value specified is the email address of an
5751 * AWS account</p> </li> <li> <p> <code>id</code> – if the value specified is the
5752 * canonical user ID of an AWS account</p> </li> <li> <p> <code>uri</code> – if you
5753 * are granting permissions to a predefined group</p> </li> </ul> <p>For example,
5754 * the following <code>x-amz-grant-write</code> header grants create, overwrite,
5755 * and delete objects permission to LogDelivery group predefined by Amazon S3 and
5756 * two AWS accounts identified by their email addresses.</p> <p>
5757 * <code>x-amz-grant-write: uri="http://acs.amazonaws.com/groups/s3/LogDelivery",
5758 * emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com" </code> </p> </li>
5759 * </ul> <p>You can use either a canned ACL or specify access permissions
5760 * explicitly. You cannot do both.</p> <p> <b>Grantee Values</b> </p> <p>You can
5761 * specify the person (grantee) to whom you're assigning access rights (using
5762 * request elements) in the following ways:</p> <ul> <li> <p>By Email address:</p>
5763 * <p> <code>&lt;Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5764 * xsi:type="AmazonCustomerByEmail"&gt;&lt;EmailAddress&gt;&lt;&gt;Grantees@email.com&lt;&gt;&lt;/EmailAddress&gt;lt;/Grantee&gt;</code>
5765 * </p> <p>The grantee is resolved to the CanonicalUser and, in a response to a GET
5766 * Object acl request, appears as the CanonicalUser.</p> </li> <li> <p>By the
5767 * person's ID:</p> <p> <code>&lt;Grantee
5768 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5769 * xsi:type="CanonicalUser"&gt;&lt;ID&gt;&lt;&gt;ID&lt;&gt;&lt;/ID&gt;&lt;DisplayName&gt;&lt;&gt;GranteesEmail&lt;&gt;&lt;/DisplayName&gt;
5770 * &lt;/Grantee&gt;</code> </p> <p>DisplayName is optional and ignored in the
5771 * request</p> </li> <li> <p>By URI:</p> <p> <code>&lt;Grantee
5772 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5773 * xsi:type="Group"&gt;&lt;URI&gt;&lt;&gt;http://acs.amazonaws.com/groups/global/AuthenticatedUsers&lt;&gt;&lt;/URI&gt;&lt;/Grantee&gt;</code>
5774 * </p> </li> </ul> <p class="title"> <b>Related Resources</b> </p> <ul> <li> <p>
5775 * <a>CreateBucket</a> </p> </li> <li> <p> <a>DeleteBucket</a> </p> </li> <li> <p>
5776 * <a>GetObjectAcl</a> </p> </li> </ul><p><h3>See Also:</h3> <a
5777 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl">AWS API
5778 * Reference</a></p>
5779 */
5780 virtual Model::PutBucketAclOutcome PutBucketAcl(const Model::PutBucketAclRequest& request) const;
5781
5782 /**
5783 * <p>Sets the permissions on an existing bucket using access control lists (ACL).
5784 * For more information, see <a
5785 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using
5786 * ACLs</a>. To set the ACL of a bucket, you must have <code>WRITE_ACP</code>
5787 * permission.</p> <p>You can use one of the following two ways to set a bucket's
5788 * permissions:</p> <ul> <li> <p>Specify the ACL in the request body</p> </li> <li>
5789 * <p>Specify permissions using request headers</p> </li> </ul> <note> <p>You
5790 * cannot specify access permission using both the body and the request
5791 * headers.</p> </note> <p>Depending on your application needs, you may choose to
5792 * set the ACL on a bucket using either the request body or the headers. For
5793 * example, if you have an existing application that updates a bucket ACL using the
5794 * request body, then you can continue to use that approach.</p> <p> <b>Access
5795 * Permissions</b> </p> <p>You can set access permissions using one of the
5796 * following methods:</p> <ul> <li> <p>Specify a canned ACL with the
5797 * <code>x-amz-acl</code> request header. Amazon S3 supports a set of predefined
5798 * ACLs, known as <i>canned ACLs</i>. Each canned ACL has a predefined set of
5799 * grantees and permissions. Specify the canned ACL name as the value of
5800 * <code>x-amz-acl</code>. If you use this header, you cannot use other access
5801 * control-specific headers in your request. For more information, see <a
5802 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
5803 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly with the
5804 * <code>x-amz-grant-read</code>, <code>x-amz-grant-read-acp</code>,
5805 * <code>x-amz-grant-write-acp</code>, and <code>x-amz-grant-full-control</code>
5806 * headers. When using these headers, you specify explicit access permissions and
5807 * grantees (AWS accounts or Amazon S3 groups) who will receive the permission. If
5808 * you use these ACL-specific headers, you cannot use the <code>x-amz-acl</code>
5809 * header to set a canned ACL. These parameters map to the set of permissions that
5810 * Amazon S3 supports in an ACL. For more information, see <a
5811 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
5812 * Control List (ACL) Overview</a>.</p> <p>You specify each grantee as a type=value
5813 * pair, where the type is one of the following:</p> <ul> <li> <p>
5814 * <code>emailAddress</code> – if the value specified is the email address of an
5815 * AWS account</p> </li> <li> <p> <code>id</code> – if the value specified is the
5816 * canonical user ID of an AWS account</p> </li> <li> <p> <code>uri</code> – if you
5817 * are granting permissions to a predefined group</p> </li> </ul> <p>For example,
5818 * the following <code>x-amz-grant-write</code> header grants create, overwrite,
5819 * and delete objects permission to LogDelivery group predefined by Amazon S3 and
5820 * two AWS accounts identified by their email addresses.</p> <p>
5821 * <code>x-amz-grant-write: uri="http://acs.amazonaws.com/groups/s3/LogDelivery",
5822 * emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com" </code> </p> </li>
5823 * </ul> <p>You can use either a canned ACL or specify access permissions
5824 * explicitly. You cannot do both.</p> <p> <b>Grantee Values</b> </p> <p>You can
5825 * specify the person (grantee) to whom you're assigning access rights (using
5826 * request elements) in the following ways:</p> <ul> <li> <p>By Email address:</p>
5827 * <p> <code>&lt;Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5828 * xsi:type="AmazonCustomerByEmail"&gt;&lt;EmailAddress&gt;&lt;&gt;Grantees@email.com&lt;&gt;&lt;/EmailAddress&gt;lt;/Grantee&gt;</code>
5829 * </p> <p>The grantee is resolved to the CanonicalUser and, in a response to a GET
5830 * Object acl request, appears as the CanonicalUser.</p> </li> <li> <p>By the
5831 * person's ID:</p> <p> <code>&lt;Grantee
5832 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5833 * xsi:type="CanonicalUser"&gt;&lt;ID&gt;&lt;&gt;ID&lt;&gt;&lt;/ID&gt;&lt;DisplayName&gt;&lt;&gt;GranteesEmail&lt;&gt;&lt;/DisplayName&gt;
5834 * &lt;/Grantee&gt;</code> </p> <p>DisplayName is optional and ignored in the
5835 * request</p> </li> <li> <p>By URI:</p> <p> <code>&lt;Grantee
5836 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5837 * xsi:type="Group"&gt;&lt;URI&gt;&lt;&gt;http://acs.amazonaws.com/groups/global/AuthenticatedUsers&lt;&gt;&lt;/URI&gt;&lt;/Grantee&gt;</code>
5838 * </p> </li> </ul> <p class="title"> <b>Related Resources</b> </p> <ul> <li> <p>
5839 * <a>CreateBucket</a> </p> </li> <li> <p> <a>DeleteBucket</a> </p> </li> <li> <p>
5840 * <a>GetObjectAcl</a> </p> </li> </ul><p><h3>See Also:</h3> <a
5841 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl">AWS API
5842 * Reference</a></p>
5843 *
5844 * returns a future to the operation so that it can be executed in parallel to other requests.
5845 */
5846 virtual Model::PutBucketAclOutcomeCallable PutBucketAclCallable(const Model::PutBucketAclRequest& request) const;
5847
5848 /**
5849 * <p>Sets the permissions on an existing bucket using access control lists (ACL).
5850 * For more information, see <a
5851 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using
5852 * ACLs</a>. To set the ACL of a bucket, you must have <code>WRITE_ACP</code>
5853 * permission.</p> <p>You can use one of the following two ways to set a bucket's
5854 * permissions:</p> <ul> <li> <p>Specify the ACL in the request body</p> </li> <li>
5855 * <p>Specify permissions using request headers</p> </li> </ul> <note> <p>You
5856 * cannot specify access permission using both the body and the request
5857 * headers.</p> </note> <p>Depending on your application needs, you may choose to
5858 * set the ACL on a bucket using either the request body or the headers. For
5859 * example, if you have an existing application that updates a bucket ACL using the
5860 * request body, then you can continue to use that approach.</p> <p> <b>Access
5861 * Permissions</b> </p> <p>You can set access permissions using one of the
5862 * following methods:</p> <ul> <li> <p>Specify a canned ACL with the
5863 * <code>x-amz-acl</code> request header. Amazon S3 supports a set of predefined
5864 * ACLs, known as <i>canned ACLs</i>. Each canned ACL has a predefined set of
5865 * grantees and permissions. Specify the canned ACL name as the value of
5866 * <code>x-amz-acl</code>. If you use this header, you cannot use other access
5867 * control-specific headers in your request. For more information, see <a
5868 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
5869 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly with the
5870 * <code>x-amz-grant-read</code>, <code>x-amz-grant-read-acp</code>,
5871 * <code>x-amz-grant-write-acp</code>, and <code>x-amz-grant-full-control</code>
5872 * headers. When using these headers, you specify explicit access permissions and
5873 * grantees (AWS accounts or Amazon S3 groups) who will receive the permission. If
5874 * you use these ACL-specific headers, you cannot use the <code>x-amz-acl</code>
5875 * header to set a canned ACL. These parameters map to the set of permissions that
5876 * Amazon S3 supports in an ACL. For more information, see <a
5877 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
5878 * Control List (ACL) Overview</a>.</p> <p>You specify each grantee as a type=value
5879 * pair, where the type is one of the following:</p> <ul> <li> <p>
5880 * <code>emailAddress</code> – if the value specified is the email address of an
5881 * AWS account</p> </li> <li> <p> <code>id</code> – if the value specified is the
5882 * canonical user ID of an AWS account</p> </li> <li> <p> <code>uri</code> – if you
5883 * are granting permissions to a predefined group</p> </li> </ul> <p>For example,
5884 * the following <code>x-amz-grant-write</code> header grants create, overwrite,
5885 * and delete objects permission to LogDelivery group predefined by Amazon S3 and
5886 * two AWS accounts identified by their email addresses.</p> <p>
5887 * <code>x-amz-grant-write: uri="http://acs.amazonaws.com/groups/s3/LogDelivery",
5888 * emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com" </code> </p> </li>
5889 * </ul> <p>You can use either a canned ACL or specify access permissions
5890 * explicitly. You cannot do both.</p> <p> <b>Grantee Values</b> </p> <p>You can
5891 * specify the person (grantee) to whom you're assigning access rights (using
5892 * request elements) in the following ways:</p> <ul> <li> <p>By Email address:</p>
5893 * <p> <code>&lt;Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5894 * xsi:type="AmazonCustomerByEmail"&gt;&lt;EmailAddress&gt;&lt;&gt;Grantees@email.com&lt;&gt;&lt;/EmailAddress&gt;lt;/Grantee&gt;</code>
5895 * </p> <p>The grantee is resolved to the CanonicalUser and, in a response to a GET
5896 * Object acl request, appears as the CanonicalUser.</p> </li> <li> <p>By the
5897 * person's ID:</p> <p> <code>&lt;Grantee
5898 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5899 * xsi:type="CanonicalUser"&gt;&lt;ID&gt;&lt;&gt;ID&lt;&gt;&lt;/ID&gt;&lt;DisplayName&gt;&lt;&gt;GranteesEmail&lt;&gt;&lt;/DisplayName&gt;
5900 * &lt;/Grantee&gt;</code> </p> <p>DisplayName is optional and ignored in the
5901 * request</p> </li> <li> <p>By URI:</p> <p> <code>&lt;Grantee
5902 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5903 * xsi:type="Group"&gt;&lt;URI&gt;&lt;&gt;http://acs.amazonaws.com/groups/global/AuthenticatedUsers&lt;&gt;&lt;/URI&gt;&lt;/Grantee&gt;</code>
5904 * </p> </li> </ul> <p class="title"> <b>Related Resources</b> </p> <ul> <li> <p>
5905 * <a>CreateBucket</a> </p> </li> <li> <p> <a>DeleteBucket</a> </p> </li> <li> <p>
5906 * <a>GetObjectAcl</a> </p> </li> </ul><p><h3>See Also:</h3> <a
5907 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl">AWS API
5908 * Reference</a></p>
5909 *
5910 * Queues the request into a thread executor and triggers associated callback when operation has finished.
5911 */
5912 virtual void PutBucketAclAsync(const Model::PutBucketAclRequest& request, const PutBucketAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
5913
5914 /**
5915 * <p>Sets an analytics configuration for the bucket (specified by the analytics
5916 * configuration ID). You can have up to 1,000 analytics configurations per
5917 * bucket.</p> <p>You can choose to have storage class analysis export analysis
5918 * reports sent to a comma-separated values (CSV) flat file. See the
5919 * <code>DataExport</code> request element. Reports are updated daily and are based
5920 * on the object filters that you configure. When selecting data export, you
5921 * specify a destination bucket and an optional destination prefix where the file
5922 * is written. You can export the data to a destination bucket in a different
5923 * account. However, the destination bucket must be in the same Region as the
5924 * bucket that you are making the PUT analytics configuration to. For more
5925 * information, see <a
5926 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html">Amazon
5927 * S3 Analytics – Storage Class Analysis</a>. </p> <important> <p>You must create a
5928 * bucket policy on the destination bucket where the exported file is written to
5929 * grant permissions to Amazon S3 to write objects to the bucket. For an example
5930 * policy, see <a
5931 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9">Granting
5932 * Permissions for Amazon S3 Inventory and Storage Class Analysis</a>.</p>
5933 * </important> <p>To use this operation, you must have permissions to perform the
5934 * <code>s3:PutAnalyticsConfiguration</code> action. The bucket owner has this
5935 * permission by default. The bucket owner can grant this permission to others. For
5936 * more information about permissions, see <a
5937 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
5938 * Related to Bucket Subresource Operations</a> and <a
5939 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
5940 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p class="title">
5941 * <b>Special Errors</b> </p> <ul> <li> <ul> <li> <p> <i>HTTP Error: HTTP 400 Bad
5942 * Request</i> </p> </li> <li> <p> <i>Code: InvalidArgument</i> </p> </li> <li> <p>
5943 * <i>Cause: Invalid argument.</i> </p> </li> </ul> </li> <li> <ul> <li> <p>
5944 * <i>HTTP Error: HTTP 400 Bad Request</i> </p> </li> <li> <p> <i>Code:
5945 * TooManyConfigurations</i> </p> </li> <li> <p> <i>Cause: You are attempting to
5946 * create a new configuration but have already reached the 1,000-configuration
5947 * limit.</i> </p> </li> </ul> </li> <li> <ul> <li> <p> <i>HTTP Error: HTTP 403
5948 * Forbidden</i> </p> </li> <li> <p> <i>Code: AccessDenied</i> </p> </li> <li> <p>
5949 * <i>Cause: You are not the owner of the specified bucket, or you do not have the
5950 * s3:PutAnalyticsConfiguration bucket permission to set the configuration on the
5951 * bucket.</i> </p> </li> </ul> </li> </ul> <p class="title"> <b>Related
5952 * Resources</b> </p> <ul> <li> <p> </p> </li> <li> <p> </p> </li> <li> <p> </p>
5953 * </li> </ul><p><h3>See Also:</h3> <a
5954 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration">AWS
5955 * API Reference</a></p>
5956 */
5957 virtual Model::PutBucketAnalyticsConfigurationOutcome PutBucketAnalyticsConfiguration(const Model::PutBucketAnalyticsConfigurationRequest& request) const;
5958
5959 /**
5960 * <p>Sets an analytics configuration for the bucket (specified by the analytics
5961 * configuration ID). You can have up to 1,000 analytics configurations per
5962 * bucket.</p> <p>You can choose to have storage class analysis export analysis
5963 * reports sent to a comma-separated values (CSV) flat file. See the
5964 * <code>DataExport</code> request element. Reports are updated daily and are based
5965 * on the object filters that you configure. When selecting data export, you
5966 * specify a destination bucket and an optional destination prefix where the file
5967 * is written. You can export the data to a destination bucket in a different
5968 * account. However, the destination bucket must be in the same Region as the
5969 * bucket that you are making the PUT analytics configuration to. For more
5970 * information, see <a
5971 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html">Amazon
5972 * S3 Analytics – Storage Class Analysis</a>. </p> <important> <p>You must create a
5973 * bucket policy on the destination bucket where the exported file is written to
5974 * grant permissions to Amazon S3 to write objects to the bucket. For an example
5975 * policy, see <a
5976 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9">Granting
5977 * Permissions for Amazon S3 Inventory and Storage Class Analysis</a>.</p>
5978 * </important> <p>To use this operation, you must have permissions to perform the
5979 * <code>s3:PutAnalyticsConfiguration</code> action. The bucket owner has this
5980 * permission by default. The bucket owner can grant this permission to others. For
5981 * more information about permissions, see <a
5982 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
5983 * Related to Bucket Subresource Operations</a> and <a
5984 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
5985 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p class="title">
5986 * <b>Special Errors</b> </p> <ul> <li> <ul> <li> <p> <i>HTTP Error: HTTP 400 Bad
5987 * Request</i> </p> </li> <li> <p> <i>Code: InvalidArgument</i> </p> </li> <li> <p>
5988 * <i>Cause: Invalid argument.</i> </p> </li> </ul> </li> <li> <ul> <li> <p>
5989 * <i>HTTP Error: HTTP 400 Bad Request</i> </p> </li> <li> <p> <i>Code:
5990 * TooManyConfigurations</i> </p> </li> <li> <p> <i>Cause: You are attempting to
5991 * create a new configuration but have already reached the 1,000-configuration
5992 * limit.</i> </p> </li> </ul> </li> <li> <ul> <li> <p> <i>HTTP Error: HTTP 403
5993 * Forbidden</i> </p> </li> <li> <p> <i>Code: AccessDenied</i> </p> </li> <li> <p>
5994 * <i>Cause: You are not the owner of the specified bucket, or you do not have the
5995 * s3:PutAnalyticsConfiguration bucket permission to set the configuration on the
5996 * bucket.</i> </p> </li> </ul> </li> </ul> <p class="title"> <b>Related
5997 * Resources</b> </p> <ul> <li> <p> </p> </li> <li> <p> </p> </li> <li> <p> </p>
5998 * </li> </ul><p><h3>See Also:</h3> <a
5999 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration">AWS
6000 * API Reference</a></p>
6001 *
6002 * returns a future to the operation so that it can be executed in parallel to other requests.
6003 */
6004 virtual Model::PutBucketAnalyticsConfigurationOutcomeCallable PutBucketAnalyticsConfigurationCallable(const Model::PutBucketAnalyticsConfigurationRequest& request) const;
6005
6006 /**
6007 * <p>Sets an analytics configuration for the bucket (specified by the analytics
6008 * configuration ID). You can have up to 1,000 analytics configurations per
6009 * bucket.</p> <p>You can choose to have storage class analysis export analysis
6010 * reports sent to a comma-separated values (CSV) flat file. See the
6011 * <code>DataExport</code> request element. Reports are updated daily and are based
6012 * on the object filters that you configure. When selecting data export, you
6013 * specify a destination bucket and an optional destination prefix where the file
6014 * is written. You can export the data to a destination bucket in a different
6015 * account. However, the destination bucket must be in the same Region as the
6016 * bucket that you are making the PUT analytics configuration to. For more
6017 * information, see <a
6018 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html">Amazon
6019 * S3 Analytics – Storage Class Analysis</a>. </p> <important> <p>You must create a
6020 * bucket policy on the destination bucket where the exported file is written to
6021 * grant permissions to Amazon S3 to write objects to the bucket. For an example
6022 * policy, see <a
6023 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9">Granting
6024 * Permissions for Amazon S3 Inventory and Storage Class Analysis</a>.</p>
6025 * </important> <p>To use this operation, you must have permissions to perform the
6026 * <code>s3:PutAnalyticsConfiguration</code> action. The bucket owner has this
6027 * permission by default. The bucket owner can grant this permission to others. For
6028 * more information about permissions, see <a
6029 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
6030 * Related to Bucket Subresource Operations</a> and <a
6031 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
6032 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p class="title">
6033 * <b>Special Errors</b> </p> <ul> <li> <ul> <li> <p> <i>HTTP Error: HTTP 400 Bad
6034 * Request</i> </p> </li> <li> <p> <i>Code: InvalidArgument</i> </p> </li> <li> <p>
6035 * <i>Cause: Invalid argument.</i> </p> </li> </ul> </li> <li> <ul> <li> <p>
6036 * <i>HTTP Error: HTTP 400 Bad Request</i> </p> </li> <li> <p> <i>Code:
6037 * TooManyConfigurations</i> </p> </li> <li> <p> <i>Cause: You are attempting to
6038 * create a new configuration but have already reached the 1,000-configuration
6039 * limit.</i> </p> </li> </ul> </li> <li> <ul> <li> <p> <i>HTTP Error: HTTP 403
6040 * Forbidden</i> </p> </li> <li> <p> <i>Code: AccessDenied</i> </p> </li> <li> <p>
6041 * <i>Cause: You are not the owner of the specified bucket, or you do not have the
6042 * s3:PutAnalyticsConfiguration bucket permission to set the configuration on the
6043 * bucket.</i> </p> </li> </ul> </li> </ul> <p class="title"> <b>Related
6044 * Resources</b> </p> <ul> <li> <p> </p> </li> <li> <p> </p> </li> <li> <p> </p>
6045 * </li> </ul><p><h3>See Also:</h3> <a
6046 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration">AWS
6047 * API Reference</a></p>
6048 *
6049 * Queues the request into a thread executor and triggers associated callback when operation has finished.
6050 */
6051 virtual void PutBucketAnalyticsConfigurationAsync(const Model::PutBucketAnalyticsConfigurationRequest& request, const PutBucketAnalyticsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
6052
6053 /**
6054 * <p>Sets the <code>cors</code> configuration for your bucket. If the
6055 * configuration exists, Amazon S3 replaces it.</p> <p>To use this operation, you
6056 * must be allowed to perform the <code>s3:PutBucketCORS</code> action. By default,
6057 * the bucket owner has this permission and can grant it to others.</p> <p>You set
6058 * this configuration on a bucket so that the bucket can service cross-origin
6059 * requests. For example, you might want to enable a request whose origin is
6060 * <code>http://www.example.com</code> to access your Amazon S3 bucket at
6061 * <code>my.example.bucket.com</code> by using the browser's
6062 * <code>XMLHttpRequest</code> capability.</p> <p>To enable cross-origin resource
6063 * sharing (CORS) on a bucket, you add the <code>cors</code> subresource to the
6064 * bucket. The <code>cors</code> subresource is an XML document in which you
6065 * configure rules that identify origins and the HTTP methods that can be executed
6066 * on your bucket. The document is limited to 64 KB in size. </p> <p>When Amazon S3
6067 * receives a cross-origin request (or a pre-flight OPTIONS request) against a
6068 * bucket, it evaluates the <code>cors</code> configuration on the bucket and uses
6069 * the first <code>CORSRule</code> rule that matches the incoming browser request
6070 * to enable a cross-origin request. For a rule to match, the following conditions
6071 * must be met:</p> <ul> <li> <p>The request's <code>Origin</code> header must
6072 * match <code>AllowedOrigin</code> elements.</p> </li> <li> <p>The request method
6073 * (for example, GET, PUT, HEAD, and so on) or the
6074 * <code>Access-Control-Request-Method</code> header in case of a pre-flight
6075 * <code>OPTIONS</code> request must be one of the <code>AllowedMethod</code>
6076 * elements. </p> </li> <li> <p>Every header specified in the
6077 * <code>Access-Control-Request-Headers</code> request header of a pre-flight
6078 * request must match an <code>AllowedHeader</code> element. </p> </li> </ul> <p>
6079 * For more information about CORS, go to <a
6080 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html">Enabling
6081 * Cross-Origin Resource Sharing</a> in the <i>Amazon Simple Storage Service
6082 * Developer Guide</i>.</p> <p class="title"> <b>Related Resources</b> </p> <ul>
6083 * <li> <p> <a>GetBucketCors</a> </p> </li> <li> <p> <a>DeleteBucketCors</a> </p>
6084 * </li> <li> <p> <a>RESTOPTIONSobject</a> </p> </li> </ul><p><h3>See Also:</h3>
6085 * <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors">AWS
6086 * API Reference</a></p>
6087 */
6088 virtual Model::PutBucketCorsOutcome PutBucketCors(const Model::PutBucketCorsRequest& request) const;
6089
6090 /**
6091 * <p>Sets the <code>cors</code> configuration for your bucket. If the
6092 * configuration exists, Amazon S3 replaces it.</p> <p>To use this operation, you
6093 * must be allowed to perform the <code>s3:PutBucketCORS</code> action. By default,
6094 * the bucket owner has this permission and can grant it to others.</p> <p>You set
6095 * this configuration on a bucket so that the bucket can service cross-origin
6096 * requests. For example, you might want to enable a request whose origin is
6097 * <code>http://www.example.com</code> to access your Amazon S3 bucket at
6098 * <code>my.example.bucket.com</code> by using the browser's
6099 * <code>XMLHttpRequest</code> capability.</p> <p>To enable cross-origin resource
6100 * sharing (CORS) on a bucket, you add the <code>cors</code> subresource to the
6101 * bucket. The <code>cors</code> subresource is an XML document in which you
6102 * configure rules that identify origins and the HTTP methods that can be executed
6103 * on your bucket. The document is limited to 64 KB in size. </p> <p>When Amazon S3
6104 * receives a cross-origin request (or a pre-flight OPTIONS request) against a
6105 * bucket, it evaluates the <code>cors</code> configuration on the bucket and uses
6106 * the first <code>CORSRule</code> rule that matches the incoming browser request
6107 * to enable a cross-origin request. For a rule to match, the following conditions
6108 * must be met:</p> <ul> <li> <p>The request's <code>Origin</code> header must
6109 * match <code>AllowedOrigin</code> elements.</p> </li> <li> <p>The request method
6110 * (for example, GET, PUT, HEAD, and so on) or the
6111 * <code>Access-Control-Request-Method</code> header in case of a pre-flight
6112 * <code>OPTIONS</code> request must be one of the <code>AllowedMethod</code>
6113 * elements. </p> </li> <li> <p>Every header specified in the
6114 * <code>Access-Control-Request-Headers</code> request header of a pre-flight
6115 * request must match an <code>AllowedHeader</code> element. </p> </li> </ul> <p>
6116 * For more information about CORS, go to <a
6117 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html">Enabling
6118 * Cross-Origin Resource Sharing</a> in the <i>Amazon Simple Storage Service
6119 * Developer Guide</i>.</p> <p class="title"> <b>Related Resources</b> </p> <ul>
6120 * <li> <p> <a>GetBucketCors</a> </p> </li> <li> <p> <a>DeleteBucketCors</a> </p>
6121 * </li> <li> <p> <a>RESTOPTIONSobject</a> </p> </li> </ul><p><h3>See Also:</h3>
6122 * <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors">AWS
6123 * API Reference</a></p>
6124 *
6125 * returns a future to the operation so that it can be executed in parallel to other requests.
6126 */
6127 virtual Model::PutBucketCorsOutcomeCallable PutBucketCorsCallable(const Model::PutBucketCorsRequest& request) const;
6128
6129 /**
6130 * <p>Sets the <code>cors</code> configuration for your bucket. If the
6131 * configuration exists, Amazon S3 replaces it.</p> <p>To use this operation, you
6132 * must be allowed to perform the <code>s3:PutBucketCORS</code> action. By default,
6133 * the bucket owner has this permission and can grant it to others.</p> <p>You set
6134 * this configuration on a bucket so that the bucket can service cross-origin
6135 * requests. For example, you might want to enable a request whose origin is
6136 * <code>http://www.example.com</code> to access your Amazon S3 bucket at
6137 * <code>my.example.bucket.com</code> by using the browser's
6138 * <code>XMLHttpRequest</code> capability.</p> <p>To enable cross-origin resource
6139 * sharing (CORS) on a bucket, you add the <code>cors</code> subresource to the
6140 * bucket. The <code>cors</code> subresource is an XML document in which you
6141 * configure rules that identify origins and the HTTP methods that can be executed
6142 * on your bucket. The document is limited to 64 KB in size. </p> <p>When Amazon S3
6143 * receives a cross-origin request (or a pre-flight OPTIONS request) against a
6144 * bucket, it evaluates the <code>cors</code> configuration on the bucket and uses
6145 * the first <code>CORSRule</code> rule that matches the incoming browser request
6146 * to enable a cross-origin request. For a rule to match, the following conditions
6147 * must be met:</p> <ul> <li> <p>The request's <code>Origin</code> header must
6148 * match <code>AllowedOrigin</code> elements.</p> </li> <li> <p>The request method
6149 * (for example, GET, PUT, HEAD, and so on) or the
6150 * <code>Access-Control-Request-Method</code> header in case of a pre-flight
6151 * <code>OPTIONS</code> request must be one of the <code>AllowedMethod</code>
6152 * elements. </p> </li> <li> <p>Every header specified in the
6153 * <code>Access-Control-Request-Headers</code> request header of a pre-flight
6154 * request must match an <code>AllowedHeader</code> element. </p> </li> </ul> <p>
6155 * For more information about CORS, go to <a
6156 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html">Enabling
6157 * Cross-Origin Resource Sharing</a> in the <i>Amazon Simple Storage Service
6158 * Developer Guide</i>.</p> <p class="title"> <b>Related Resources</b> </p> <ul>
6159 * <li> <p> <a>GetBucketCors</a> </p> </li> <li> <p> <a>DeleteBucketCors</a> </p>
6160 * </li> <li> <p> <a>RESTOPTIONSobject</a> </p> </li> </ul><p><h3>See Also:</h3>
6161 * <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors">AWS
6162 * API Reference</a></p>
6163 *
6164 * Queues the request into a thread executor and triggers associated callback when operation has finished.
6165 */
6166 virtual void PutBucketCorsAsync(const Model::PutBucketCorsRequest& request, const PutBucketCorsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
6167
6168 /**
6169 * <p>This implementation of the <code>PUT</code> operation uses the
6170 * <code>encryption</code> subresource to set the default encryption state of an
6171 * existing bucket.</p> <p>This implementation of the <code>PUT</code> operation
6172 * sets default encryption for a buckets using server-side encryption with Amazon
6173 * S3-managed keys SSE-S3 or AWS KMS customer master keys (CMKs) (SSE-KMS)
6174 * bucket.</p> <important> <p>This operation requires AWS Signature Version 4. For
6175 * more information, see <a href="sig-v4-authenticating-requests.html">
6176 * Authenticating Requests (AWS Signature Version 4)</a>. </p> </important> <p>To
6177 * use this operation, you must have permissions to perform the
6178 * <code>s3:PutEncryptionConfiguration</code> action. The bucket owner has this
6179 * permission by default. The bucket owner can grant this permission to others. For
6180 * more information about permissions, see <a
6181 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
6182 * Related to Bucket Subresource Operations</a> and <a
6183 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
6184 * Access Permissions to Your Amazon S3 Resources</a> in the Amazon Simple Storage
6185 * Service Developer Guide. </p> <p class="title"> <b>Related Resources</b> </p>
6186 * <ul> <li> <p> <a>GetBucketEncryption</a> </p> </li> <li> <p>
6187 * <a>DeleteBucketEncryption</a> </p> </li> </ul><p><h3>See Also:</h3> <a
6188 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption">AWS
6189 * API Reference</a></p>
6190 */
6191 virtual Model::PutBucketEncryptionOutcome PutBucketEncryption(const Model::PutBucketEncryptionRequest& request) const;
6192
6193 /**
6194 * <p>This implementation of the <code>PUT</code> operation uses the
6195 * <code>encryption</code> subresource to set the default encryption state of an
6196 * existing bucket.</p> <p>This implementation of the <code>PUT</code> operation
6197 * sets default encryption for a buckets using server-side encryption with Amazon
6198 * S3-managed keys SSE-S3 or AWS KMS customer master keys (CMKs) (SSE-KMS)
6199 * bucket.</p> <important> <p>This operation requires AWS Signature Version 4. For
6200 * more information, see <a href="sig-v4-authenticating-requests.html">
6201 * Authenticating Requests (AWS Signature Version 4)</a>. </p> </important> <p>To
6202 * use this operation, you must have permissions to perform the
6203 * <code>s3:PutEncryptionConfiguration</code> action. The bucket owner has this
6204 * permission by default. The bucket owner can grant this permission to others. For
6205 * more information about permissions, see <a
6206 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
6207 * Related to Bucket Subresource Operations</a> and <a
6208 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
6209 * Access Permissions to Your Amazon S3 Resources</a> in the Amazon Simple Storage
6210 * Service Developer Guide. </p> <p class="title"> <b>Related Resources</b> </p>
6211 * <ul> <li> <p> <a>GetBucketEncryption</a> </p> </li> <li> <p>
6212 * <a>DeleteBucketEncryption</a> </p> </li> </ul><p><h3>See Also:</h3> <a
6213 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption">AWS
6214 * API Reference</a></p>
6215 *
6216 * returns a future to the operation so that it can be executed in parallel to other requests.
6217 */
6218 virtual Model::PutBucketEncryptionOutcomeCallable PutBucketEncryptionCallable(const Model::PutBucketEncryptionRequest& request) const;
6219
6220 /**
6221 * <p>This implementation of the <code>PUT</code> operation uses the
6222 * <code>encryption</code> subresource to set the default encryption state of an
6223 * existing bucket.</p> <p>This implementation of the <code>PUT</code> operation
6224 * sets default encryption for a buckets using server-side encryption with Amazon
6225 * S3-managed keys SSE-S3 or AWS KMS customer master keys (CMKs) (SSE-KMS)
6226 * bucket.</p> <important> <p>This operation requires AWS Signature Version 4. For
6227 * more information, see <a href="sig-v4-authenticating-requests.html">
6228 * Authenticating Requests (AWS Signature Version 4)</a>. </p> </important> <p>To
6229 * use this operation, you must have permissions to perform the
6230 * <code>s3:PutEncryptionConfiguration</code> action. The bucket owner has this
6231 * permission by default. The bucket owner can grant this permission to others. For
6232 * more information about permissions, see <a
6233 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
6234 * Related to Bucket Subresource Operations</a> and <a
6235 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
6236 * Access Permissions to Your Amazon S3 Resources</a> in the Amazon Simple Storage
6237 * Service Developer Guide. </p> <p class="title"> <b>Related Resources</b> </p>
6238 * <ul> <li> <p> <a>GetBucketEncryption</a> </p> </li> <li> <p>
6239 * <a>DeleteBucketEncryption</a> </p> </li> </ul><p><h3>See Also:</h3> <a
6240 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption">AWS
6241 * API Reference</a></p>
6242 *
6243 * Queues the request into a thread executor and triggers associated callback when operation has finished.
6244 */
6245 virtual void PutBucketEncryptionAsync(const Model::PutBucketEncryptionRequest& request, const PutBucketEncryptionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
6246
6247 /**
6248 * <p>This implementation of the <code>PUT</code> operation adds an inventory
6249 * configuration (identified by the inventory ID) to the bucket. You can have up to
6250 * 1,000 inventory configurations per bucket. </p> <p>Amazon S3 inventory generates
6251 * inventories of the objects in the bucket on a daily or weekly basis, and the
6252 * results are published to a flat file. The bucket that is inventoried is called
6253 * the <i>source</i> bucket, and the bucket where the inventory flat file is stored
6254 * is called the <i>destination</i> bucket. The <i>destination</i> bucket must be
6255 * in the same AWS Region as the <i>source</i> bucket. </p> <p>When you configure
6256 * an inventory for a <i>source</i> bucket, you specify the <i>destination</i>
6257 * bucket where you want the inventory to be stored, and whether to generate the
6258 * inventory daily or weekly. You can also configure what object metadata to
6259 * include and whether to inventory all object versions or only current versions.
6260 * For more information, see <a
6261 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//storage-inventory.html">Amazon
6262 * S3 Inventory</a> in the Amazon Simple Storage Service Developer Guide.</p>
6263 * <important> <p>You must create a bucket policy on the <i>destination</i> bucket
6264 * to grant permissions to Amazon S3 to write objects to the bucket in the defined
6265 * location. For an example policy, see <a
6266 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9">
6267 * Granting Permissions for Amazon S3 Inventory and Storage Class Analysis.</a>
6268 * </p> </important> <p>To use this operation, you must have permissions to perform
6269 * the <code>s3:PutInventoryConfiguration</code> action. The bucket owner has this
6270 * permission by default and can grant this permission to others. For more
6271 * information about permissions, see <a
6272 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
6273 * Related to Bucket Subresource Operations</a> and <a
6274 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//s3-access-control.html">Managing
6275 * Access Permissions to Your Amazon S3 Resources</a> in the Amazon Simple Storage
6276 * Service Developer Guide.</p> <p class="title"> <b>Special Errors</b> </p> <ul>
6277 * <li> <p class="title"> <b>HTTP 400 Bad Request Error</b> </p> <ul> <li> <p>
6278 * <i>Code:</i> InvalidArgument</p> </li> <li> <p> <i>Cause:</i> Invalid
6279 * Argument</p> </li> </ul> </li> <li> <p class="title"> <b>HTTP 400 Bad Request
6280 * Error</b> </p> <ul> <li> <p> <i>Code:</i> TooManyConfigurations</p> </li> <li>
6281 * <p> <i>Cause:</i> You are attempting to create a new configuration but have
6282 * already reached the 1,000-configuration limit. </p> </li> </ul> </li> <li> <p
6283 * class="title"> <b>HTTP 403 Forbidden Error</b> </p> <ul> <li> <p> <i>Code:</i>
6284 * AccessDenied</p> </li> <li> <p> <i>Cause:</i> You are not the owner of the
6285 * specified bucket, or you do not have the
6286 * <code>s3:PutInventoryConfiguration</code> bucket permission to set the
6287 * configuration on the bucket </p> </li> </ul> </li> </ul> <p class="title">
6288 * <b>Related Resources</b> </p> <ul> <li> <p>
6289 * <a>GetBucketInventoryConfiguration</a> </p> </li> <li> <p>
6290 * <a>DeleteBucketInventoryConfiguration</a> </p> </li> <li> <p>
6291 * <a>ListBucketInventoryConfigurations</a> </p> </li> </ul><p><h3>See Also:</h3>
6292 * <a
6293 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration">AWS
6294 * API Reference</a></p>
6295 */
6296 virtual Model::PutBucketInventoryConfigurationOutcome PutBucketInventoryConfiguration(const Model::PutBucketInventoryConfigurationRequest& request) const;
6297
6298 /**
6299 * <p>This implementation of the <code>PUT</code> operation adds an inventory
6300 * configuration (identified by the inventory ID) to the bucket. You can have up to
6301 * 1,000 inventory configurations per bucket. </p> <p>Amazon S3 inventory generates
6302 * inventories of the objects in the bucket on a daily or weekly basis, and the
6303 * results are published to a flat file. The bucket that is inventoried is called
6304 * the <i>source</i> bucket, and the bucket where the inventory flat file is stored
6305 * is called the <i>destination</i> bucket. The <i>destination</i> bucket must be
6306 * in the same AWS Region as the <i>source</i> bucket. </p> <p>When you configure
6307 * an inventory for a <i>source</i> bucket, you specify the <i>destination</i>
6308 * bucket where you want the inventory to be stored, and whether to generate the
6309 * inventory daily or weekly. You can also configure what object metadata to
6310 * include and whether to inventory all object versions or only current versions.
6311 * For more information, see <a
6312 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//storage-inventory.html">Amazon
6313 * S3 Inventory</a> in the Amazon Simple Storage Service Developer Guide.</p>
6314 * <important> <p>You must create a bucket policy on the <i>destination</i> bucket
6315 * to grant permissions to Amazon S3 to write objects to the bucket in the defined
6316 * location. For an example policy, see <a
6317 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9">
6318 * Granting Permissions for Amazon S3 Inventory and Storage Class Analysis.</a>
6319 * </p> </important> <p>To use this operation, you must have permissions to perform
6320 * the <code>s3:PutInventoryConfiguration</code> action. The bucket owner has this
6321 * permission by default and can grant this permission to others. For more
6322 * information about permissions, see <a
6323 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
6324 * Related to Bucket Subresource Operations</a> and <a
6325 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//s3-access-control.html">Managing
6326 * Access Permissions to Your Amazon S3 Resources</a> in the Amazon Simple Storage
6327 * Service Developer Guide.</p> <p class="title"> <b>Special Errors</b> </p> <ul>
6328 * <li> <p class="title"> <b>HTTP 400 Bad Request Error</b> </p> <ul> <li> <p>
6329 * <i>Code:</i> InvalidArgument</p> </li> <li> <p> <i>Cause:</i> Invalid
6330 * Argument</p> </li> </ul> </li> <li> <p class="title"> <b>HTTP 400 Bad Request
6331 * Error</b> </p> <ul> <li> <p> <i>Code:</i> TooManyConfigurations</p> </li> <li>
6332 * <p> <i>Cause:</i> You are attempting to create a new configuration but have
6333 * already reached the 1,000-configuration limit. </p> </li> </ul> </li> <li> <p
6334 * class="title"> <b>HTTP 403 Forbidden Error</b> </p> <ul> <li> <p> <i>Code:</i>
6335 * AccessDenied</p> </li> <li> <p> <i>Cause:</i> You are not the owner of the
6336 * specified bucket, or you do not have the
6337 * <code>s3:PutInventoryConfiguration</code> bucket permission to set the
6338 * configuration on the bucket </p> </li> </ul> </li> </ul> <p class="title">
6339 * <b>Related Resources</b> </p> <ul> <li> <p>
6340 * <a>GetBucketInventoryConfiguration</a> </p> </li> <li> <p>
6341 * <a>DeleteBucketInventoryConfiguration</a> </p> </li> <li> <p>
6342 * <a>ListBucketInventoryConfigurations</a> </p> </li> </ul><p><h3>See Also:</h3>
6343 * <a
6344 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration">AWS
6345 * API Reference</a></p>
6346 *
6347 * returns a future to the operation so that it can be executed in parallel to other requests.
6348 */
6349 virtual Model::PutBucketInventoryConfigurationOutcomeCallable PutBucketInventoryConfigurationCallable(const Model::PutBucketInventoryConfigurationRequest& request) const;
6350
6351 /**
6352 * <p>This implementation of the <code>PUT</code> operation adds an inventory
6353 * configuration (identified by the inventory ID) to the bucket. You can have up to
6354 * 1,000 inventory configurations per bucket. </p> <p>Amazon S3 inventory generates
6355 * inventories of the objects in the bucket on a daily or weekly basis, and the
6356 * results are published to a flat file. The bucket that is inventoried is called
6357 * the <i>source</i> bucket, and the bucket where the inventory flat file is stored
6358 * is called the <i>destination</i> bucket. The <i>destination</i> bucket must be
6359 * in the same AWS Region as the <i>source</i> bucket. </p> <p>When you configure
6360 * an inventory for a <i>source</i> bucket, you specify the <i>destination</i>
6361 * bucket where you want the inventory to be stored, and whether to generate the
6362 * inventory daily or weekly. You can also configure what object metadata to
6363 * include and whether to inventory all object versions or only current versions.
6364 * For more information, see <a
6365 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//storage-inventory.html">Amazon
6366 * S3 Inventory</a> in the Amazon Simple Storage Service Developer Guide.</p>
6367 * <important> <p>You must create a bucket policy on the <i>destination</i> bucket
6368 * to grant permissions to Amazon S3 to write objects to the bucket in the defined
6369 * location. For an example policy, see <a
6370 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9">
6371 * Granting Permissions for Amazon S3 Inventory and Storage Class Analysis.</a>
6372 * </p> </important> <p>To use this operation, you must have permissions to perform
6373 * the <code>s3:PutInventoryConfiguration</code> action. The bucket owner has this
6374 * permission by default and can grant this permission to others. For more
6375 * information about permissions, see <a
6376 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
6377 * Related to Bucket Subresource Operations</a> and <a
6378 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev//s3-access-control.html">Managing
6379 * Access Permissions to Your Amazon S3 Resources</a> in the Amazon Simple Storage
6380 * Service Developer Guide.</p> <p class="title"> <b>Special Errors</b> </p> <ul>
6381 * <li> <p class="title"> <b>HTTP 400 Bad Request Error</b> </p> <ul> <li> <p>
6382 * <i>Code:</i> InvalidArgument</p> </li> <li> <p> <i>Cause:</i> Invalid
6383 * Argument</p> </li> </ul> </li> <li> <p class="title"> <b>HTTP 400 Bad Request
6384 * Error</b> </p> <ul> <li> <p> <i>Code:</i> TooManyConfigurations</p> </li> <li>
6385 * <p> <i>Cause:</i> You are attempting to create a new configuration but have
6386 * already reached the 1,000-configuration limit. </p> </li> </ul> </li> <li> <p
6387 * class="title"> <b>HTTP 403 Forbidden Error</b> </p> <ul> <li> <p> <i>Code:</i>
6388 * AccessDenied</p> </li> <li> <p> <i>Cause:</i> You are not the owner of the
6389 * specified bucket, or you do not have the
6390 * <code>s3:PutInventoryConfiguration</code> bucket permission to set the
6391 * configuration on the bucket </p> </li> </ul> </li> </ul> <p class="title">
6392 * <b>Related Resources</b> </p> <ul> <li> <p>
6393 * <a>GetBucketInventoryConfiguration</a> </p> </li> <li> <p>
6394 * <a>DeleteBucketInventoryConfiguration</a> </p> </li> <li> <p>
6395 * <a>ListBucketInventoryConfigurations</a> </p> </li> </ul><p><h3>See Also:</h3>
6396 * <a
6397 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration">AWS
6398 * API Reference</a></p>
6399 *
6400 * Queues the request into a thread executor and triggers associated callback when operation has finished.
6401 */
6402 virtual void PutBucketInventoryConfigurationAsync(const Model::PutBucketInventoryConfigurationRequest& request, const PutBucketInventoryConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
6403
6404 /**
6405 * <p>Creates a new lifecycle configuration for the bucket or replaces an existing
6406 * lifecycle configuration. For information about lifecycle configuration, see <a
6407 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
6408 * Access Permissions to Your Amazon S3 Resources</a>.</p> <note> <p>Bucket
6409 * lifecycle configuration now supports specifying a lifecycle rule using an object
6410 * key name prefix, one or more object tags, or a combination of both. Accordingly,
6411 * this section describes the latest API. The previous version of the API supported
6412 * filtering based only on an object key name prefix, which is supported for
6413 * backward compatibility. For the related API description, see
6414 * <a>PutBucketLifecycle</a>.</p> </note> <p> <b>Rules</b> </p> <p>You specify the
6415 * lifecycle configuration in your request body. The lifecycle configuration is
6416 * specified as XML consisting of one or more rules. Each rule consists of the
6417 * following:</p> <ul> <li> <p>Filter identifying a subset of objects to which the
6418 * rule applies. The filter can be based on a key name prefix, object tags, or a
6419 * combination of both.</p> </li> <li> <p>Status whether the rule is in effect.</p>
6420 * </li> <li> <p>One or more lifecycle transition and expiration actions that you
6421 * want Amazon S3 to perform on the objects identified by the filter. If the state
6422 * of your bucket is versioning-enabled or versioning-suspended, you can have many
6423 * versions of the same object (one current version and zero or more noncurrent
6424 * versions). Amazon S3 provides predefined actions that you can specify for
6425 * current and noncurrent object versions.</p> </li> </ul> <p>For more information,
6426 * see <a
6427 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html">Object
6428 * Lifecycle Management</a> and <a
6429 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html">Lifecycle
6430 * Configuration Elements</a>.</p> <p> <b>Permissions</b> </p> <p>By default, all
6431 * Amazon S3 resources are private, including buckets, objects, and related
6432 * subresources (for example, lifecycle configuration and website configuration).
6433 * Only the resource owner (that is, the AWS account that created it) can access
6434 * the resource. The resource owner can optionally grant access permissions to
6435 * others by writing an access policy. For this operation, a user must get the
6436 * s3:PutLifecycleConfiguration permission.</p> <p>You can also explicitly deny
6437 * permissions. Explicit deny also supersedes any other permissions. If you want to
6438 * block users or accounts from removing or deleting objects from your bucket, you
6439 * must deny them permissions for the following actions:</p> <ul> <li>
6440 * <p>s3:DeleteObject</p> </li> <li> <p>s3:DeleteObjectVersion</p> </li> <li>
6441 * <p>s3:PutLifecycleConfiguration</p> </li> </ul> <p>For more information about
6442 * permissions, see <a
6443 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
6444 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>The following are
6445 * related to <code>PutBucketLifecycleConfiguration</code>:</p> <ul> <li> <p> <a
6446 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-configuration-examples.html">Examples
6447 * of Lifecycle Configuration</a> </p> </li> <li> <p>
6448 * <a>GetBucketLifecycleConfiguration</a> </p> </li> <li> <p>
6449 * <a>DeleteBucketLifecycle</a> </p> </li> </ul><p><h3>See Also:</h3> <a
6450 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration">AWS
6451 * API Reference</a></p>
6452 */
6453 virtual Model::PutBucketLifecycleConfigurationOutcome PutBucketLifecycleConfiguration(const Model::PutBucketLifecycleConfigurationRequest& request) const;
6454
6455 /**
6456 * <p>Creates a new lifecycle configuration for the bucket or replaces an existing
6457 * lifecycle configuration. For information about lifecycle configuration, see <a
6458 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
6459 * Access Permissions to Your Amazon S3 Resources</a>.</p> <note> <p>Bucket
6460 * lifecycle configuration now supports specifying a lifecycle rule using an object
6461 * key name prefix, one or more object tags, or a combination of both. Accordingly,
6462 * this section describes the latest API. The previous version of the API supported
6463 * filtering based only on an object key name prefix, which is supported for
6464 * backward compatibility. For the related API description, see
6465 * <a>PutBucketLifecycle</a>.</p> </note> <p> <b>Rules</b> </p> <p>You specify the
6466 * lifecycle configuration in your request body. The lifecycle configuration is
6467 * specified as XML consisting of one or more rules. Each rule consists of the
6468 * following:</p> <ul> <li> <p>Filter identifying a subset of objects to which the
6469 * rule applies. The filter can be based on a key name prefix, object tags, or a
6470 * combination of both.</p> </li> <li> <p>Status whether the rule is in effect.</p>
6471 * </li> <li> <p>One or more lifecycle transition and expiration actions that you
6472 * want Amazon S3 to perform on the objects identified by the filter. If the state
6473 * of your bucket is versioning-enabled or versioning-suspended, you can have many
6474 * versions of the same object (one current version and zero or more noncurrent
6475 * versions). Amazon S3 provides predefined actions that you can specify for
6476 * current and noncurrent object versions.</p> </li> </ul> <p>For more information,
6477 * see <a
6478 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html">Object
6479 * Lifecycle Management</a> and <a
6480 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html">Lifecycle
6481 * Configuration Elements</a>.</p> <p> <b>Permissions</b> </p> <p>By default, all
6482 * Amazon S3 resources are private, including buckets, objects, and related
6483 * subresources (for example, lifecycle configuration and website configuration).
6484 * Only the resource owner (that is, the AWS account that created it) can access
6485 * the resource. The resource owner can optionally grant access permissions to
6486 * others by writing an access policy. For this operation, a user must get the
6487 * s3:PutLifecycleConfiguration permission.</p> <p>You can also explicitly deny
6488 * permissions. Explicit deny also supersedes any other permissions. If you want to
6489 * block users or accounts from removing or deleting objects from your bucket, you
6490 * must deny them permissions for the following actions:</p> <ul> <li>
6491 * <p>s3:DeleteObject</p> </li> <li> <p>s3:DeleteObjectVersion</p> </li> <li>
6492 * <p>s3:PutLifecycleConfiguration</p> </li> </ul> <p>For more information about
6493 * permissions, see <a
6494 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
6495 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>The following are
6496 * related to <code>PutBucketLifecycleConfiguration</code>:</p> <ul> <li> <p> <a
6497 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-configuration-examples.html">Examples
6498 * of Lifecycle Configuration</a> </p> </li> <li> <p>
6499 * <a>GetBucketLifecycleConfiguration</a> </p> </li> <li> <p>
6500 * <a>DeleteBucketLifecycle</a> </p> </li> </ul><p><h3>See Also:</h3> <a
6501 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration">AWS
6502 * API Reference</a></p>
6503 *
6504 * returns a future to the operation so that it can be executed in parallel to other requests.
6505 */
6506 virtual Model::PutBucketLifecycleConfigurationOutcomeCallable PutBucketLifecycleConfigurationCallable(const Model::PutBucketLifecycleConfigurationRequest& request) const;
6507
6508 /**
6509 * <p>Creates a new lifecycle configuration for the bucket or replaces an existing
6510 * lifecycle configuration. For information about lifecycle configuration, see <a
6511 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
6512 * Access Permissions to Your Amazon S3 Resources</a>.</p> <note> <p>Bucket
6513 * lifecycle configuration now supports specifying a lifecycle rule using an object
6514 * key name prefix, one or more object tags, or a combination of both. Accordingly,
6515 * this section describes the latest API. The previous version of the API supported
6516 * filtering based only on an object key name prefix, which is supported for
6517 * backward compatibility. For the related API description, see
6518 * <a>PutBucketLifecycle</a>.</p> </note> <p> <b>Rules</b> </p> <p>You specify the
6519 * lifecycle configuration in your request body. The lifecycle configuration is
6520 * specified as XML consisting of one or more rules. Each rule consists of the
6521 * following:</p> <ul> <li> <p>Filter identifying a subset of objects to which the
6522 * rule applies. The filter can be based on a key name prefix, object tags, or a
6523 * combination of both.</p> </li> <li> <p>Status whether the rule is in effect.</p>
6524 * </li> <li> <p>One or more lifecycle transition and expiration actions that you
6525 * want Amazon S3 to perform on the objects identified by the filter. If the state
6526 * of your bucket is versioning-enabled or versioning-suspended, you can have many
6527 * versions of the same object (one current version and zero or more noncurrent
6528 * versions). Amazon S3 provides predefined actions that you can specify for
6529 * current and noncurrent object versions.</p> </li> </ul> <p>For more information,
6530 * see <a
6531 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html">Object
6532 * Lifecycle Management</a> and <a
6533 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html">Lifecycle
6534 * Configuration Elements</a>.</p> <p> <b>Permissions</b> </p> <p>By default, all
6535 * Amazon S3 resources are private, including buckets, objects, and related
6536 * subresources (for example, lifecycle configuration and website configuration).
6537 * Only the resource owner (that is, the AWS account that created it) can access
6538 * the resource. The resource owner can optionally grant access permissions to
6539 * others by writing an access policy. For this operation, a user must get the
6540 * s3:PutLifecycleConfiguration permission.</p> <p>You can also explicitly deny
6541 * permissions. Explicit deny also supersedes any other permissions. If you want to
6542 * block users or accounts from removing or deleting objects from your bucket, you
6543 * must deny them permissions for the following actions:</p> <ul> <li>
6544 * <p>s3:DeleteObject</p> </li> <li> <p>s3:DeleteObjectVersion</p> </li> <li>
6545 * <p>s3:PutLifecycleConfiguration</p> </li> </ul> <p>For more information about
6546 * permissions, see <a
6547 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
6548 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>The following are
6549 * related to <code>PutBucketLifecycleConfiguration</code>:</p> <ul> <li> <p> <a
6550 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-configuration-examples.html">Examples
6551 * of Lifecycle Configuration</a> </p> </li> <li> <p>
6552 * <a>GetBucketLifecycleConfiguration</a> </p> </li> <li> <p>
6553 * <a>DeleteBucketLifecycle</a> </p> </li> </ul><p><h3>See Also:</h3> <a
6554 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration">AWS
6555 * API Reference</a></p>
6556 *
6557 * Queues the request into a thread executor and triggers associated callback when operation has finished.
6558 */
6559 virtual void PutBucketLifecycleConfigurationAsync(const Model::PutBucketLifecycleConfigurationRequest& request, const PutBucketLifecycleConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
6560
6561 /**
6562 * <p>Set the logging parameters for a bucket and to specify permissions for who
6563 * can view and modify the logging parameters. All logs are saved to buckets in the
6564 * same AWS Region as the source bucket. To set the logging status of a bucket, you
6565 * must be the bucket owner.</p> <p>The bucket owner is automatically granted
6566 * FULL_CONTROL to all logs. You use the <code>Grantee</code> request element to
6567 * grant access to other people. The <code>Permissions</code> request element
6568 * specifies the kind of access the grantee has to the logs.</p> <p> <b>Grantee
6569 * Values</b> </p> <p>You can specify the person (grantee) to whom you're assigning
6570 * access rights (using request elements) in the following ways:</p> <ul> <li>
6571 * <p>By the person's ID:</p> <p> <code>&lt;Grantee
6572 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6573 * xsi:type="CanonicalUser"&gt;&lt;ID&gt;&lt;&gt;ID&lt;&gt;&lt;/ID&gt;&lt;DisplayName&gt;&lt;&gt;GranteesEmail&lt;&gt;&lt;/DisplayName&gt;
6574 * &lt;/Grantee&gt;</code> </p> <p>DisplayName is optional and ignored in the
6575 * request.</p> </li> <li> <p>By Email address:</p> <p> <code> &lt;Grantee
6576 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6577 * xsi:type="AmazonCustomerByEmail"&gt;&lt;EmailAddress&gt;&lt;&gt;Grantees@email.com&lt;&gt;&lt;/EmailAddress&gt;&lt;/Grantee&gt;</code>
6578 * </p> <p>The grantee is resolved to the CanonicalUser and, in a response to a GET
6579 * Object acl request, appears as the CanonicalUser.</p> </li> <li> <p>By URI:</p>
6580 * <p> <code>&lt;Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6581 * xsi:type="Group"&gt;&lt;URI&gt;&lt;&gt;http://acs.amazonaws.com/groups/global/AuthenticatedUsers&lt;&gt;&lt;/URI&gt;&lt;/Grantee&gt;</code>
6582 * </p> </li> </ul> <p>To enable logging, you use LoggingEnabled and its children
6583 * request elements. To disable logging, you use an empty BucketLoggingStatus
6584 * request element:</p> <p> <code>&lt;BucketLoggingStatus
6585 * xmlns="http://doc.s3.amazonaws.com/2006-03-01" /&gt;</code> </p> <p>For more
6586 * information about server access logging, see <a
6587 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs.html">Server
6588 * Access Logging</a>. </p> <p>For more information about creating a bucket, see
6589 * <a>CreateBucket</a>. For more information about returning the logging status of
6590 * a bucket, see <a>GetBucketLogging</a>.</p> <p>The following operations are
6591 * related to <code>PutBucketLogging</code>:</p> <ul> <li> <p> <a>PutObject</a>
6592 * </p> </li> <li> <p> <a>DeleteBucket</a> </p> </li> <li> <p> <a>CreateBucket</a>
6593 * </p> </li> <li> <p> <a>GetBucketLogging</a> </p> </li> </ul><p><h3>See
6594 * Also:</h3> <a
6595 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging">AWS
6596 * API Reference</a></p>
6597 */
6598 virtual Model::PutBucketLoggingOutcome PutBucketLogging(const Model::PutBucketLoggingRequest& request) const;
6599
6600 /**
6601 * <p>Set the logging parameters for a bucket and to specify permissions for who
6602 * can view and modify the logging parameters. All logs are saved to buckets in the
6603 * same AWS Region as the source bucket. To set the logging status of a bucket, you
6604 * must be the bucket owner.</p> <p>The bucket owner is automatically granted
6605 * FULL_CONTROL to all logs. You use the <code>Grantee</code> request element to
6606 * grant access to other people. The <code>Permissions</code> request element
6607 * specifies the kind of access the grantee has to the logs.</p> <p> <b>Grantee
6608 * Values</b> </p> <p>You can specify the person (grantee) to whom you're assigning
6609 * access rights (using request elements) in the following ways:</p> <ul> <li>
6610 * <p>By the person's ID:</p> <p> <code>&lt;Grantee
6611 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6612 * xsi:type="CanonicalUser"&gt;&lt;ID&gt;&lt;&gt;ID&lt;&gt;&lt;/ID&gt;&lt;DisplayName&gt;&lt;&gt;GranteesEmail&lt;&gt;&lt;/DisplayName&gt;
6613 * &lt;/Grantee&gt;</code> </p> <p>DisplayName is optional and ignored in the
6614 * request.</p> </li> <li> <p>By Email address:</p> <p> <code> &lt;Grantee
6615 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6616 * xsi:type="AmazonCustomerByEmail"&gt;&lt;EmailAddress&gt;&lt;&gt;Grantees@email.com&lt;&gt;&lt;/EmailAddress&gt;&lt;/Grantee&gt;</code>
6617 * </p> <p>The grantee is resolved to the CanonicalUser and, in a response to a GET
6618 * Object acl request, appears as the CanonicalUser.</p> </li> <li> <p>By URI:</p>
6619 * <p> <code>&lt;Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6620 * xsi:type="Group"&gt;&lt;URI&gt;&lt;&gt;http://acs.amazonaws.com/groups/global/AuthenticatedUsers&lt;&gt;&lt;/URI&gt;&lt;/Grantee&gt;</code>
6621 * </p> </li> </ul> <p>To enable logging, you use LoggingEnabled and its children
6622 * request elements. To disable logging, you use an empty BucketLoggingStatus
6623 * request element:</p> <p> <code>&lt;BucketLoggingStatus
6624 * xmlns="http://doc.s3.amazonaws.com/2006-03-01" /&gt;</code> </p> <p>For more
6625 * information about server access logging, see <a
6626 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs.html">Server
6627 * Access Logging</a>. </p> <p>For more information about creating a bucket, see
6628 * <a>CreateBucket</a>. For more information about returning the logging status of
6629 * a bucket, see <a>GetBucketLogging</a>.</p> <p>The following operations are
6630 * related to <code>PutBucketLogging</code>:</p> <ul> <li> <p> <a>PutObject</a>
6631 * </p> </li> <li> <p> <a>DeleteBucket</a> </p> </li> <li> <p> <a>CreateBucket</a>
6632 * </p> </li> <li> <p> <a>GetBucketLogging</a> </p> </li> </ul><p><h3>See
6633 * Also:</h3> <a
6634 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging">AWS
6635 * API Reference</a></p>
6636 *
6637 * returns a future to the operation so that it can be executed in parallel to other requests.
6638 */
6639 virtual Model::PutBucketLoggingOutcomeCallable PutBucketLoggingCallable(const Model::PutBucketLoggingRequest& request) const;
6640
6641 /**
6642 * <p>Set the logging parameters for a bucket and to specify permissions for who
6643 * can view and modify the logging parameters. All logs are saved to buckets in the
6644 * same AWS Region as the source bucket. To set the logging status of a bucket, you
6645 * must be the bucket owner.</p> <p>The bucket owner is automatically granted
6646 * FULL_CONTROL to all logs. You use the <code>Grantee</code> request element to
6647 * grant access to other people. The <code>Permissions</code> request element
6648 * specifies the kind of access the grantee has to the logs.</p> <p> <b>Grantee
6649 * Values</b> </p> <p>You can specify the person (grantee) to whom you're assigning
6650 * access rights (using request elements) in the following ways:</p> <ul> <li>
6651 * <p>By the person's ID:</p> <p> <code>&lt;Grantee
6652 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6653 * xsi:type="CanonicalUser"&gt;&lt;ID&gt;&lt;&gt;ID&lt;&gt;&lt;/ID&gt;&lt;DisplayName&gt;&lt;&gt;GranteesEmail&lt;&gt;&lt;/DisplayName&gt;
6654 * &lt;/Grantee&gt;</code> </p> <p>DisplayName is optional and ignored in the
6655 * request.</p> </li> <li> <p>By Email address:</p> <p> <code> &lt;Grantee
6656 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6657 * xsi:type="AmazonCustomerByEmail"&gt;&lt;EmailAddress&gt;&lt;&gt;Grantees@email.com&lt;&gt;&lt;/EmailAddress&gt;&lt;/Grantee&gt;</code>
6658 * </p> <p>The grantee is resolved to the CanonicalUser and, in a response to a GET
6659 * Object acl request, appears as the CanonicalUser.</p> </li> <li> <p>By URI:</p>
6660 * <p> <code>&lt;Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6661 * xsi:type="Group"&gt;&lt;URI&gt;&lt;&gt;http://acs.amazonaws.com/groups/global/AuthenticatedUsers&lt;&gt;&lt;/URI&gt;&lt;/Grantee&gt;</code>
6662 * </p> </li> </ul> <p>To enable logging, you use LoggingEnabled and its children
6663 * request elements. To disable logging, you use an empty BucketLoggingStatus
6664 * request element:</p> <p> <code>&lt;BucketLoggingStatus
6665 * xmlns="http://doc.s3.amazonaws.com/2006-03-01" /&gt;</code> </p> <p>For more
6666 * information about server access logging, see <a
6667 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs.html">Server
6668 * Access Logging</a>. </p> <p>For more information about creating a bucket, see
6669 * <a>CreateBucket</a>. For more information about returning the logging status of
6670 * a bucket, see <a>GetBucketLogging</a>.</p> <p>The following operations are
6671 * related to <code>PutBucketLogging</code>:</p> <ul> <li> <p> <a>PutObject</a>
6672 * </p> </li> <li> <p> <a>DeleteBucket</a> </p> </li> <li> <p> <a>CreateBucket</a>
6673 * </p> </li> <li> <p> <a>GetBucketLogging</a> </p> </li> </ul><p><h3>See
6674 * Also:</h3> <a
6675 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging">AWS
6676 * API Reference</a></p>
6677 *
6678 * Queues the request into a thread executor and triggers associated callback when operation has finished.
6679 */
6680 virtual void PutBucketLoggingAsync(const Model::PutBucketLoggingRequest& request, const PutBucketLoggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
6681
6682 /**
6683 * <p>Sets a metrics configuration (specified by the metrics configuration ID) for
6684 * the bucket. You can have up to 1,000 metrics configurations per bucket. If
6685 * you're updating an existing metrics configuration, note that this is a full
6686 * replacement of the existing metrics configuration. If you don't include the
6687 * elements you want to keep, they are erased.</p> <p>To use this operation, you
6688 * must have permissions to perform the <code>s3:PutMetricsConfiguration</code>
6689 * action. The bucket owner has this permission by default. The bucket owner can
6690 * grant this permission to others. For more information about permissions, see <a
6691 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
6692 * Related to Bucket Subresource Operations</a> and <a
6693 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
6694 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
6695 * CloudWatch request metrics for Amazon S3, see <a
6696 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
6697 * Metrics with Amazon CloudWatch</a>.</p> <p>The following operations are related
6698 * to <code>PutBucketMetricsConfiguration</code>:</p> <ul> <li> <p>
6699 * <a>DeleteBucketMetricsConfiguration</a> </p> </li> <li> <p>
6700 * <a>PutBucketMetricsConfiguration</a> </p> </li> <li> <p>
6701 * <a>ListBucketMetricsConfigurations</a> </p> </li> </ul> <p>
6702 * <code>GetBucketLifecycle</code> has the following special error:</p> <ul> <li>
6703 * <p>Error code: <code>TooManyConfigurations</code> </p> <ul> <li> <p>Description:
6704 * You are attempting to create a new configuration but have already reached the
6705 * 1,000-configuration limit.</p> </li> <li> <p>HTTP Status Code: HTTP 400 Bad
6706 * Request</p> </li> </ul> </li> </ul><p><h3>See Also:</h3> <a
6707 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration">AWS
6708 * API Reference</a></p>
6709 */
6710 virtual Model::PutBucketMetricsConfigurationOutcome PutBucketMetricsConfiguration(const Model::PutBucketMetricsConfigurationRequest& request) const;
6711
6712 /**
6713 * <p>Sets a metrics configuration (specified by the metrics configuration ID) for
6714 * the bucket. You can have up to 1,000 metrics configurations per bucket. If
6715 * you're updating an existing metrics configuration, note that this is a full
6716 * replacement of the existing metrics configuration. If you don't include the
6717 * elements you want to keep, they are erased.</p> <p>To use this operation, you
6718 * must have permissions to perform the <code>s3:PutMetricsConfiguration</code>
6719 * action. The bucket owner has this permission by default. The bucket owner can
6720 * grant this permission to others. For more information about permissions, see <a
6721 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
6722 * Related to Bucket Subresource Operations</a> and <a
6723 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
6724 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
6725 * CloudWatch request metrics for Amazon S3, see <a
6726 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
6727 * Metrics with Amazon CloudWatch</a>.</p> <p>The following operations are related
6728 * to <code>PutBucketMetricsConfiguration</code>:</p> <ul> <li> <p>
6729 * <a>DeleteBucketMetricsConfiguration</a> </p> </li> <li> <p>
6730 * <a>PutBucketMetricsConfiguration</a> </p> </li> <li> <p>
6731 * <a>ListBucketMetricsConfigurations</a> </p> </li> </ul> <p>
6732 * <code>GetBucketLifecycle</code> has the following special error:</p> <ul> <li>
6733 * <p>Error code: <code>TooManyConfigurations</code> </p> <ul> <li> <p>Description:
6734 * You are attempting to create a new configuration but have already reached the
6735 * 1,000-configuration limit.</p> </li> <li> <p>HTTP Status Code: HTTP 400 Bad
6736 * Request</p> </li> </ul> </li> </ul><p><h3>See Also:</h3> <a
6737 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration">AWS
6738 * API Reference</a></p>
6739 *
6740 * returns a future to the operation so that it can be executed in parallel to other requests.
6741 */
6742 virtual Model::PutBucketMetricsConfigurationOutcomeCallable PutBucketMetricsConfigurationCallable(const Model::PutBucketMetricsConfigurationRequest& request) const;
6743
6744 /**
6745 * <p>Sets a metrics configuration (specified by the metrics configuration ID) for
6746 * the bucket. You can have up to 1,000 metrics configurations per bucket. If
6747 * you're updating an existing metrics configuration, note that this is a full
6748 * replacement of the existing metrics configuration. If you don't include the
6749 * elements you want to keep, they are erased.</p> <p>To use this operation, you
6750 * must have permissions to perform the <code>s3:PutMetricsConfiguration</code>
6751 * action. The bucket owner has this permission by default. The bucket owner can
6752 * grant this permission to others. For more information about permissions, see <a
6753 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
6754 * Related to Bucket Subresource Operations</a> and <a
6755 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
6756 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
6757 * CloudWatch request metrics for Amazon S3, see <a
6758 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
6759 * Metrics with Amazon CloudWatch</a>.</p> <p>The following operations are related
6760 * to <code>PutBucketMetricsConfiguration</code>:</p> <ul> <li> <p>
6761 * <a>DeleteBucketMetricsConfiguration</a> </p> </li> <li> <p>
6762 * <a>PutBucketMetricsConfiguration</a> </p> </li> <li> <p>
6763 * <a>ListBucketMetricsConfigurations</a> </p> </li> </ul> <p>
6764 * <code>GetBucketLifecycle</code> has the following special error:</p> <ul> <li>
6765 * <p>Error code: <code>TooManyConfigurations</code> </p> <ul> <li> <p>Description:
6766 * You are attempting to create a new configuration but have already reached the
6767 * 1,000-configuration limit.</p> </li> <li> <p>HTTP Status Code: HTTP 400 Bad
6768 * Request</p> </li> </ul> </li> </ul><p><h3>See Also:</h3> <a
6769 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration">AWS
6770 * API Reference</a></p>
6771 *
6772 * Queues the request into a thread executor and triggers associated callback when operation has finished.
6773 */
6774 virtual void PutBucketMetricsConfigurationAsync(const Model::PutBucketMetricsConfigurationRequest& request, const PutBucketMetricsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
6775
6776 /**
6777 * <p>Enables notifications of specified events for a bucket. For more information
6778 * about event notifications, see <a
6779 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Configuring
6780 * Event Notifications</a>.</p> <p>Using this API, you can replace an existing
6781 * notification configuration. The configuration is an XML file that defines the
6782 * event types that you want Amazon S3 to publish and the destination where you
6783 * want Amazon S3 to publish an event notification when it detects an event of the
6784 * specified type.</p> <p>By default, your bucket has no event notifications
6785 * configured. That is, the notification configuration will be an empty
6786 * <code>NotificationConfiguration</code>.</p> <p>
6787 * <code>&lt;NotificationConfiguration&gt;</code> </p> <p>
6788 * <code>&lt;/NotificationConfiguration&gt;</code> </p> <p>This operation replaces
6789 * the existing notification configuration with the configuration you include in
6790 * the request body.</p> <p>After Amazon S3 receives this request, it first
6791 * verifies that any Amazon Simple Notification Service (Amazon SNS) or Amazon
6792 * Simple Queue Service (Amazon SQS) destination exists, and that the bucket owner
6793 * has permission to publish to it by sending a test notification. In the case of
6794 * AWS Lambda destinations, Amazon S3 verifies that the Lambda function permissions
6795 * grant Amazon S3 permission to invoke the function from the Amazon S3 bucket. For
6796 * more information, see <a
6797 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Configuring
6798 * Notifications for Amazon S3 Events</a>.</p> <p>You can disable notifications by
6799 * adding the empty NotificationConfiguration element.</p> <p>By default, only the
6800 * bucket owner can configure notifications on a bucket. However, bucket owners can
6801 * use a bucket policy to grant permission to other users to set this configuration
6802 * with <code>s3:PutBucketNotification</code> permission.</p> <note> <p>The PUT
6803 * notification is an atomic operation. For example, suppose your notification
6804 * configuration includes SNS topic, SQS queue, and Lambda function configurations.
6805 * When you send a PUT request with this configuration, Amazon S3 sends test
6806 * messages to your SNS topic. If the message fails, the entire PUT operation will
6807 * fail, and Amazon S3 will not add the configuration to your bucket.</p> </note>
6808 * <p> <b>Responses</b> </p> <p>If the configuration in the request body includes
6809 * only one <code>TopicConfiguration</code> specifying only the
6810 * <code>s3:ReducedRedundancyLostObject</code> event type, the response will also
6811 * include the <code>x-amz-sns-test-message-id</code> header containing the message
6812 * ID of the test notification sent to the topic.</p> <p>The following operation is
6813 * related to <code>PutBucketNotificationConfiguration</code>:</p> <ul> <li> <p>
6814 * <a>GetBucketNotificationConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
6815 * <a
6816 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration">AWS
6817 * API Reference</a></p>
6818 */
6819 virtual Model::PutBucketNotificationConfigurationOutcome PutBucketNotificationConfiguration(const Model::PutBucketNotificationConfigurationRequest& request) const;
6820
6821 /**
6822 * <p>Enables notifications of specified events for a bucket. For more information
6823 * about event notifications, see <a
6824 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Configuring
6825 * Event Notifications</a>.</p> <p>Using this API, you can replace an existing
6826 * notification configuration. The configuration is an XML file that defines the
6827 * event types that you want Amazon S3 to publish and the destination where you
6828 * want Amazon S3 to publish an event notification when it detects an event of the
6829 * specified type.</p> <p>By default, your bucket has no event notifications
6830 * configured. That is, the notification configuration will be an empty
6831 * <code>NotificationConfiguration</code>.</p> <p>
6832 * <code>&lt;NotificationConfiguration&gt;</code> </p> <p>
6833 * <code>&lt;/NotificationConfiguration&gt;</code> </p> <p>This operation replaces
6834 * the existing notification configuration with the configuration you include in
6835 * the request body.</p> <p>After Amazon S3 receives this request, it first
6836 * verifies that any Amazon Simple Notification Service (Amazon SNS) or Amazon
6837 * Simple Queue Service (Amazon SQS) destination exists, and that the bucket owner
6838 * has permission to publish to it by sending a test notification. In the case of
6839 * AWS Lambda destinations, Amazon S3 verifies that the Lambda function permissions
6840 * grant Amazon S3 permission to invoke the function from the Amazon S3 bucket. For
6841 * more information, see <a
6842 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Configuring
6843 * Notifications for Amazon S3 Events</a>.</p> <p>You can disable notifications by
6844 * adding the empty NotificationConfiguration element.</p> <p>By default, only the
6845 * bucket owner can configure notifications on a bucket. However, bucket owners can
6846 * use a bucket policy to grant permission to other users to set this configuration
6847 * with <code>s3:PutBucketNotification</code> permission.</p> <note> <p>The PUT
6848 * notification is an atomic operation. For example, suppose your notification
6849 * configuration includes SNS topic, SQS queue, and Lambda function configurations.
6850 * When you send a PUT request with this configuration, Amazon S3 sends test
6851 * messages to your SNS topic. If the message fails, the entire PUT operation will
6852 * fail, and Amazon S3 will not add the configuration to your bucket.</p> </note>
6853 * <p> <b>Responses</b> </p> <p>If the configuration in the request body includes
6854 * only one <code>TopicConfiguration</code> specifying only the
6855 * <code>s3:ReducedRedundancyLostObject</code> event type, the response will also
6856 * include the <code>x-amz-sns-test-message-id</code> header containing the message
6857 * ID of the test notification sent to the topic.</p> <p>The following operation is
6858 * related to <code>PutBucketNotificationConfiguration</code>:</p> <ul> <li> <p>
6859 * <a>GetBucketNotificationConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
6860 * <a
6861 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration">AWS
6862 * API Reference</a></p>
6863 *
6864 * returns a future to the operation so that it can be executed in parallel to other requests.
6865 */
6866 virtual Model::PutBucketNotificationConfigurationOutcomeCallable PutBucketNotificationConfigurationCallable(const Model::PutBucketNotificationConfigurationRequest& request) const;
6867
6868 /**
6869 * <p>Enables notifications of specified events for a bucket. For more information
6870 * about event notifications, see <a
6871 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Configuring
6872 * Event Notifications</a>.</p> <p>Using this API, you can replace an existing
6873 * notification configuration. The configuration is an XML file that defines the
6874 * event types that you want Amazon S3 to publish and the destination where you
6875 * want Amazon S3 to publish an event notification when it detects an event of the
6876 * specified type.</p> <p>By default, your bucket has no event notifications
6877 * configured. That is, the notification configuration will be an empty
6878 * <code>NotificationConfiguration</code>.</p> <p>
6879 * <code>&lt;NotificationConfiguration&gt;</code> </p> <p>
6880 * <code>&lt;/NotificationConfiguration&gt;</code> </p> <p>This operation replaces
6881 * the existing notification configuration with the configuration you include in
6882 * the request body.</p> <p>After Amazon S3 receives this request, it first
6883 * verifies that any Amazon Simple Notification Service (Amazon SNS) or Amazon
6884 * Simple Queue Service (Amazon SQS) destination exists, and that the bucket owner
6885 * has permission to publish to it by sending a test notification. In the case of
6886 * AWS Lambda destinations, Amazon S3 verifies that the Lambda function permissions
6887 * grant Amazon S3 permission to invoke the function from the Amazon S3 bucket. For
6888 * more information, see <a
6889 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Configuring
6890 * Notifications for Amazon S3 Events</a>.</p> <p>You can disable notifications by
6891 * adding the empty NotificationConfiguration element.</p> <p>By default, only the
6892 * bucket owner can configure notifications on a bucket. However, bucket owners can
6893 * use a bucket policy to grant permission to other users to set this configuration
6894 * with <code>s3:PutBucketNotification</code> permission.</p> <note> <p>The PUT
6895 * notification is an atomic operation. For example, suppose your notification
6896 * configuration includes SNS topic, SQS queue, and Lambda function configurations.
6897 * When you send a PUT request with this configuration, Amazon S3 sends test
6898 * messages to your SNS topic. If the message fails, the entire PUT operation will
6899 * fail, and Amazon S3 will not add the configuration to your bucket.</p> </note>
6900 * <p> <b>Responses</b> </p> <p>If the configuration in the request body includes
6901 * only one <code>TopicConfiguration</code> specifying only the
6902 * <code>s3:ReducedRedundancyLostObject</code> event type, the response will also
6903 * include the <code>x-amz-sns-test-message-id</code> header containing the message
6904 * ID of the test notification sent to the topic.</p> <p>The following operation is
6905 * related to <code>PutBucketNotificationConfiguration</code>:</p> <ul> <li> <p>
6906 * <a>GetBucketNotificationConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
6907 * <a
6908 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration">AWS
6909 * API Reference</a></p>
6910 *
6911 * Queues the request into a thread executor and triggers associated callback when operation has finished.
6912 */
6913 virtual void PutBucketNotificationConfigurationAsync(const Model::PutBucketNotificationConfigurationRequest& request, const PutBucketNotificationConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
6914
6915 /**
6916 * <p>Applies an Amazon S3 bucket policy to an Amazon S3 bucket. If you are using
6917 * an identity other than the root user of the AWS account that owns the bucket,
6918 * the calling identity must have the <code>PutBucketPolicy</code> permissions on
6919 * the specified bucket and belong to the bucket owner's account in order to use
6920 * this operation.</p> <p>If you don't have <code>PutBucketPolic</code>y
6921 * permissions, Amazon S3 returns a <code>403 Access Denied</code> error. If you
6922 * have the correct permissions, but you're not using an identity that belongs to
6923 * the bucket owner's account, Amazon S3 returns a <code>405 Method Not
6924 * Allowed</code> error.</p> <important> <p> As a security precaution, the root
6925 * user of the AWS account that owns a bucket can always use this operation, even
6926 * if the policy explicitly denies the root user the ability to perform this
6927 * action. </p> </important> <p>For more information about bucket policies, see <a
6928 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html">Using
6929 * Bucket Policies and User Policies</a>.</p> <p>The following operations are
6930 * related to <code>PutBucketPolicy</code>:</p> <ul> <li> <p> <a>CreateBucket</a>
6931 * </p> </li> <li> <p> <a>DeleteBucket</a> </p> </li> </ul><p><h3>See Also:</h3>
6932 * <a
6933 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy">AWS
6934 * API Reference</a></p>
6935 */
6936 virtual Model::PutBucketPolicyOutcome PutBucketPolicy(const Model::PutBucketPolicyRequest& request) const;
6937
6938 /**
6939 * <p>Applies an Amazon S3 bucket policy to an Amazon S3 bucket. If you are using
6940 * an identity other than the root user of the AWS account that owns the bucket,
6941 * the calling identity must have the <code>PutBucketPolicy</code> permissions on
6942 * the specified bucket and belong to the bucket owner's account in order to use
6943 * this operation.</p> <p>If you don't have <code>PutBucketPolic</code>y
6944 * permissions, Amazon S3 returns a <code>403 Access Denied</code> error. If you
6945 * have the correct permissions, but you're not using an identity that belongs to
6946 * the bucket owner's account, Amazon S3 returns a <code>405 Method Not
6947 * Allowed</code> error.</p> <important> <p> As a security precaution, the root
6948 * user of the AWS account that owns a bucket can always use this operation, even
6949 * if the policy explicitly denies the root user the ability to perform this
6950 * action. </p> </important> <p>For more information about bucket policies, see <a
6951 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html">Using
6952 * Bucket Policies and User Policies</a>.</p> <p>The following operations are
6953 * related to <code>PutBucketPolicy</code>:</p> <ul> <li> <p> <a>CreateBucket</a>
6954 * </p> </li> <li> <p> <a>DeleteBucket</a> </p> </li> </ul><p><h3>See Also:</h3>
6955 * <a
6956 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy">AWS
6957 * API Reference</a></p>
6958 *
6959 * returns a future to the operation so that it can be executed in parallel to other requests.
6960 */
6961 virtual Model::PutBucketPolicyOutcomeCallable PutBucketPolicyCallable(const Model::PutBucketPolicyRequest& request) const;
6962
6963 /**
6964 * <p>Applies an Amazon S3 bucket policy to an Amazon S3 bucket. If you are using
6965 * an identity other than the root user of the AWS account that owns the bucket,
6966 * the calling identity must have the <code>PutBucketPolicy</code> permissions on
6967 * the specified bucket and belong to the bucket owner's account in order to use
6968 * this operation.</p> <p>If you don't have <code>PutBucketPolic</code>y
6969 * permissions, Amazon S3 returns a <code>403 Access Denied</code> error. If you
6970 * have the correct permissions, but you're not using an identity that belongs to
6971 * the bucket owner's account, Amazon S3 returns a <code>405 Method Not
6972 * Allowed</code> error.</p> <important> <p> As a security precaution, the root
6973 * user of the AWS account that owns a bucket can always use this operation, even
6974 * if the policy explicitly denies the root user the ability to perform this
6975 * action. </p> </important> <p>For more information about bucket policies, see <a
6976 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html">Using
6977 * Bucket Policies and User Policies</a>.</p> <p>The following operations are
6978 * related to <code>PutBucketPolicy</code>:</p> <ul> <li> <p> <a>CreateBucket</a>
6979 * </p> </li> <li> <p> <a>DeleteBucket</a> </p> </li> </ul><p><h3>See Also:</h3>
6980 * <a
6981 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy">AWS
6982 * API Reference</a></p>
6983 *
6984 * Queues the request into a thread executor and triggers associated callback when operation has finished.
6985 */
6986 virtual void PutBucketPolicyAsync(const Model::PutBucketPolicyRequest& request, const PutBucketPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
6987
6988 /**
6989 * <p> Creates a replication configuration or replaces an existing one. For more
6990 * information, see <a
6991 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html">Replication</a>
6992 * in the <i>Amazon S3 Developer Guide</i>. </p> <note> <p>To perform this
6993 * operation, the user or role performing the operation must have the <a
6994 * href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html">iam:PassRole</a>
6995 * permission.</p> </note> <p>Specify the replication configuration in the request
6996 * body. In the replication configuration, you provide the name of the destination
6997 * bucket where you want Amazon S3 to replicate objects, the IAM role that Amazon
6998 * S3 can assume to replicate objects on your behalf, and other relevant
6999 * information.</p> <p>A replication configuration must include at least one rule,
7000 * and can contain a maximum of 1,000. Each rule identifies a subset of objects to
7001 * replicate by filtering the objects in the source bucket. To choose additional
7002 * subsets of objects to replicate, add a rule for each subset. All rules must
7003 * specify the same destination bucket.</p> <p>To specify a subset of the objects
7004 * in the source bucket to apply a replication rule to, add the Filter element as a
7005 * child of the Rule element. You can filter objects based on an object key prefix,
7006 * one or more object tags, or both. When you add the Filter element in the
7007 * configuration, you must also add the following elements:
7008 * <code>DeleteMarkerReplication</code>, <code>Status</code>, and
7009 * <code>Priority</code>.</p> <p>For information about enabling versioning on a
7010 * bucket, see <a
7011 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html">Using
7012 * Versioning</a>.</p> <p>By default, a resource owner, in this case the AWS
7013 * account that created the bucket, can perform this operation. The resource owner
7014 * can also grant others permissions to perform the operation. For more information
7015 * about permissions, see <a
7016 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
7017 * Permissions in a Policy</a> and <a
7018 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
7019 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p> <b>Handling
7020 * Replication of Encrypted Objects</b> </p> <p>By default, Amazon S3 doesn't
7021 * replicate objects that are stored at rest using server-side encryption with CMKs
7022 * stored in AWS KMS. To replicate AWS KMS-encrypted objects, add the following:
7023 * <code>SourceSelectionCriteria</code>, <code>SseKmsEncryptedObjects</code>,
7024 * <code>Status</code>, <code>EncryptionConfiguration</code>, and
7025 * <code>ReplicaKmsKeyID</code>. For information about replication configuration,
7026 * see <a
7027 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-config-for-kms-objects.html">Replicating
7028 * Objects Created with SSE Using CMKs stored in AWS KMS</a>.</p> <p>For
7029 * information on <code>PutBucketReplication</code> errors, see
7030 * <a>ReplicationErrorCodeList</a> </p> <p>The following operations are related to
7031 * <code>PutBucketReplication</code>:</p> <ul> <li> <p> <a>GetBucketReplication</a>
7032 * </p> </li> <li> <p> <a>DeleteBucketReplication</a> </p> </li> </ul><p><h3>See
7033 * Also:</h3> <a
7034 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication">AWS
7035 * API Reference</a></p>
7036 */
7037 virtual Model::PutBucketReplicationOutcome PutBucketReplication(const Model::PutBucketReplicationRequest& request) const;
7038
7039 /**
7040 * <p> Creates a replication configuration or replaces an existing one. For more
7041 * information, see <a
7042 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html">Replication</a>
7043 * in the <i>Amazon S3 Developer Guide</i>. </p> <note> <p>To perform this
7044 * operation, the user or role performing the operation must have the <a
7045 * href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html">iam:PassRole</a>
7046 * permission.</p> </note> <p>Specify the replication configuration in the request
7047 * body. In the replication configuration, you provide the name of the destination
7048 * bucket where you want Amazon S3 to replicate objects, the IAM role that Amazon
7049 * S3 can assume to replicate objects on your behalf, and other relevant
7050 * information.</p> <p>A replication configuration must include at least one rule,
7051 * and can contain a maximum of 1,000. Each rule identifies a subset of objects to
7052 * replicate by filtering the objects in the source bucket. To choose additional
7053 * subsets of objects to replicate, add a rule for each subset. All rules must
7054 * specify the same destination bucket.</p> <p>To specify a subset of the objects
7055 * in the source bucket to apply a replication rule to, add the Filter element as a
7056 * child of the Rule element. You can filter objects based on an object key prefix,
7057 * one or more object tags, or both. When you add the Filter element in the
7058 * configuration, you must also add the following elements:
7059 * <code>DeleteMarkerReplication</code>, <code>Status</code>, and
7060 * <code>Priority</code>.</p> <p>For information about enabling versioning on a
7061 * bucket, see <a
7062 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html">Using
7063 * Versioning</a>.</p> <p>By default, a resource owner, in this case the AWS
7064 * account that created the bucket, can perform this operation. The resource owner
7065 * can also grant others permissions to perform the operation. For more information
7066 * about permissions, see <a
7067 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
7068 * Permissions in a Policy</a> and <a
7069 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
7070 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p> <b>Handling
7071 * Replication of Encrypted Objects</b> </p> <p>By default, Amazon S3 doesn't
7072 * replicate objects that are stored at rest using server-side encryption with CMKs
7073 * stored in AWS KMS. To replicate AWS KMS-encrypted objects, add the following:
7074 * <code>SourceSelectionCriteria</code>, <code>SseKmsEncryptedObjects</code>,
7075 * <code>Status</code>, <code>EncryptionConfiguration</code>, and
7076 * <code>ReplicaKmsKeyID</code>. For information about replication configuration,
7077 * see <a
7078 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-config-for-kms-objects.html">Replicating
7079 * Objects Created with SSE Using CMKs stored in AWS KMS</a>.</p> <p>For
7080 * information on <code>PutBucketReplication</code> errors, see
7081 * <a>ReplicationErrorCodeList</a> </p> <p>The following operations are related to
7082 * <code>PutBucketReplication</code>:</p> <ul> <li> <p> <a>GetBucketReplication</a>
7083 * </p> </li> <li> <p> <a>DeleteBucketReplication</a> </p> </li> </ul><p><h3>See
7084 * Also:</h3> <a
7085 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication">AWS
7086 * API Reference</a></p>
7087 *
7088 * returns a future to the operation so that it can be executed in parallel to other requests.
7089 */
7090 virtual Model::PutBucketReplicationOutcomeCallable PutBucketReplicationCallable(const Model::PutBucketReplicationRequest& request) const;
7091
7092 /**
7093 * <p> Creates a replication configuration or replaces an existing one. For more
7094 * information, see <a
7095 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html">Replication</a>
7096 * in the <i>Amazon S3 Developer Guide</i>. </p> <note> <p>To perform this
7097 * operation, the user or role performing the operation must have the <a
7098 * href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html">iam:PassRole</a>
7099 * permission.</p> </note> <p>Specify the replication configuration in the request
7100 * body. In the replication configuration, you provide the name of the destination
7101 * bucket where you want Amazon S3 to replicate objects, the IAM role that Amazon
7102 * S3 can assume to replicate objects on your behalf, and other relevant
7103 * information.</p> <p>A replication configuration must include at least one rule,
7104 * and can contain a maximum of 1,000. Each rule identifies a subset of objects to
7105 * replicate by filtering the objects in the source bucket. To choose additional
7106 * subsets of objects to replicate, add a rule for each subset. All rules must
7107 * specify the same destination bucket.</p> <p>To specify a subset of the objects
7108 * in the source bucket to apply a replication rule to, add the Filter element as a
7109 * child of the Rule element. You can filter objects based on an object key prefix,
7110 * one or more object tags, or both. When you add the Filter element in the
7111 * configuration, you must also add the following elements:
7112 * <code>DeleteMarkerReplication</code>, <code>Status</code>, and
7113 * <code>Priority</code>.</p> <p>For information about enabling versioning on a
7114 * bucket, see <a
7115 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html">Using
7116 * Versioning</a>.</p> <p>By default, a resource owner, in this case the AWS
7117 * account that created the bucket, can perform this operation. The resource owner
7118 * can also grant others permissions to perform the operation. For more information
7119 * about permissions, see <a
7120 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
7121 * Permissions in a Policy</a> and <a
7122 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
7123 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p> <b>Handling
7124 * Replication of Encrypted Objects</b> </p> <p>By default, Amazon S3 doesn't
7125 * replicate objects that are stored at rest using server-side encryption with CMKs
7126 * stored in AWS KMS. To replicate AWS KMS-encrypted objects, add the following:
7127 * <code>SourceSelectionCriteria</code>, <code>SseKmsEncryptedObjects</code>,
7128 * <code>Status</code>, <code>EncryptionConfiguration</code>, and
7129 * <code>ReplicaKmsKeyID</code>. For information about replication configuration,
7130 * see <a
7131 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-config-for-kms-objects.html">Replicating
7132 * Objects Created with SSE Using CMKs stored in AWS KMS</a>.</p> <p>For
7133 * information on <code>PutBucketReplication</code> errors, see
7134 * <a>ReplicationErrorCodeList</a> </p> <p>The following operations are related to
7135 * <code>PutBucketReplication</code>:</p> <ul> <li> <p> <a>GetBucketReplication</a>
7136 * </p> </li> <li> <p> <a>DeleteBucketReplication</a> </p> </li> </ul><p><h3>See
7137 * Also:</h3> <a
7138 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication">AWS
7139 * API Reference</a></p>
7140 *
7141 * Queues the request into a thread executor and triggers associated callback when operation has finished.
7142 */
7143 virtual void PutBucketReplicationAsync(const Model::PutBucketReplicationRequest& request, const PutBucketReplicationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
7144
7145 /**
7146 * <p>Sets the request payment configuration for a bucket. By default, the bucket
7147 * owner pays for downloads from the bucket. This configuration parameter enables
7148 * the bucket owner (only) to specify that the person requesting the download will
7149 * be charged for the download. For more information, see <a
7150 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html">Requester
7151 * Pays Buckets</a>.</p> <p>The following operations are related to
7152 * <code>PutBucketRequestPayment</code>:</p> <ul> <li> <p> <a>CreateBucket</a> </p>
7153 * </li> <li> <p> <a>GetBucketRequestPayment</a> </p> </li> </ul><p><h3>See
7154 * Also:</h3> <a
7155 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment">AWS
7156 * API Reference</a></p>
7157 */
7158 virtual Model::PutBucketRequestPaymentOutcome PutBucketRequestPayment(const Model::PutBucketRequestPaymentRequest& request) const;
7159
7160 /**
7161 * <p>Sets the request payment configuration for a bucket. By default, the bucket
7162 * owner pays for downloads from the bucket. This configuration parameter enables
7163 * the bucket owner (only) to specify that the person requesting the download will
7164 * be charged for the download. For more information, see <a
7165 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html">Requester
7166 * Pays Buckets</a>.</p> <p>The following operations are related to
7167 * <code>PutBucketRequestPayment</code>:</p> <ul> <li> <p> <a>CreateBucket</a> </p>
7168 * </li> <li> <p> <a>GetBucketRequestPayment</a> </p> </li> </ul><p><h3>See
7169 * Also:</h3> <a
7170 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment">AWS
7171 * API Reference</a></p>
7172 *
7173 * returns a future to the operation so that it can be executed in parallel to other requests.
7174 */
7175 virtual Model::PutBucketRequestPaymentOutcomeCallable PutBucketRequestPaymentCallable(const Model::PutBucketRequestPaymentRequest& request) const;
7176
7177 /**
7178 * <p>Sets the request payment configuration for a bucket. By default, the bucket
7179 * owner pays for downloads from the bucket. This configuration parameter enables
7180 * the bucket owner (only) to specify that the person requesting the download will
7181 * be charged for the download. For more information, see <a
7182 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html">Requester
7183 * Pays Buckets</a>.</p> <p>The following operations are related to
7184 * <code>PutBucketRequestPayment</code>:</p> <ul> <li> <p> <a>CreateBucket</a> </p>
7185 * </li> <li> <p> <a>GetBucketRequestPayment</a> </p> </li> </ul><p><h3>See
7186 * Also:</h3> <a
7187 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment">AWS
7188 * API Reference</a></p>
7189 *
7190 * Queues the request into a thread executor and triggers associated callback when operation has finished.
7191 */
7192 virtual void PutBucketRequestPaymentAsync(const Model::PutBucketRequestPaymentRequest& request, const PutBucketRequestPaymentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
7193
7194 /**
7195 * <p>Sets the tags for a bucket.</p> <p>Use tags to organize your AWS bill to
7196 * reflect your own cost structure. To do this, sign up to get your AWS account
7197 * bill with tag key values included. Then, to see the cost of combined resources,
7198 * organize your billing information according to resources with the same tag key
7199 * values. For example, you can tag several resources with a specific application
7200 * name, and then organize your billing information to see the total cost of that
7201 * application across several services. For more information, see <a
7202 * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html">Cost
7203 * Allocation and Tagging</a>.</p> <note> <p>Within a bucket, if you add a tag that
7204 * has the same key as an existing tag, the new value overwrites the old value. For
7205 * more information, see <a
7206 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/CostAllocTagging.html">Using
7207 * Cost Allocation in Amazon S3 Bucket Tags</a>.</p> </note> <p>To use this
7208 * operation, you must have permissions to perform the
7209 * <code>s3:PutBucketTagging</code> action. The bucket owner has this permission by
7210 * default and can grant this permission to others. For more information about
7211 * permissions, see <a
7212 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
7213 * Related to Bucket Subresource Operations</a> and <a
7214 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
7215 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>
7216 * <code>PutBucketTagging</code> has the following special errors:</p> <ul> <li>
7217 * <p>Error code: <code>InvalidTagError</code> </p> <ul> <li> <p>Description: The
7218 * tag provided was not a valid tag. This error can occur if the tag did not pass
7219 * input validation. For information about tag restrictions, see <a
7220 * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2//allocation-tag-restrictions.html">User-Defined
7221 * Tag Restrictions</a> and <a
7222 * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2//aws-tag-restrictions.html">AWS-Generated
7223 * Cost Allocation Tag Restrictions</a>.</p> </li> </ul> </li> <li> <p>Error code:
7224 * <code>MalformedXMLError</code> </p> <ul> <li> <p>Description: The XML provided
7225 * does not match the schema.</p> </li> </ul> </li> <li> <p>Error code:
7226 * <code>OperationAbortedError </code> </p> <ul> <li> <p>Description: A conflicting
7227 * conditional operation is currently in progress against this resource. Please try
7228 * again.</p> </li> </ul> </li> <li> <p>Error code: <code>InternalError</code> </p>
7229 * <ul> <li> <p>Description: The service was unable to apply the provided tag to
7230 * the bucket.</p> </li> </ul> </li> </ul> <p>The following operations are related
7231 * to <code>PutBucketTagging</code>:</p> <ul> <li> <p> <a>GetBucketTagging</a> </p>
7232 * </li> <li> <p> <a>DeleteBucketTagging</a> </p> </li> </ul><p><h3>See Also:</h3>
7233 * <a
7234 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging">AWS
7235 * API Reference</a></p>
7236 */
7237 virtual Model::PutBucketTaggingOutcome PutBucketTagging(const Model::PutBucketTaggingRequest& request) const;
7238
7239 /**
7240 * <p>Sets the tags for a bucket.</p> <p>Use tags to organize your AWS bill to
7241 * reflect your own cost structure. To do this, sign up to get your AWS account
7242 * bill with tag key values included. Then, to see the cost of combined resources,
7243 * organize your billing information according to resources with the same tag key
7244 * values. For example, you can tag several resources with a specific application
7245 * name, and then organize your billing information to see the total cost of that
7246 * application across several services. For more information, see <a
7247 * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html">Cost
7248 * Allocation and Tagging</a>.</p> <note> <p>Within a bucket, if you add a tag that
7249 * has the same key as an existing tag, the new value overwrites the old value. For
7250 * more information, see <a
7251 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/CostAllocTagging.html">Using
7252 * Cost Allocation in Amazon S3 Bucket Tags</a>.</p> </note> <p>To use this
7253 * operation, you must have permissions to perform the
7254 * <code>s3:PutBucketTagging</code> action. The bucket owner has this permission by
7255 * default and can grant this permission to others. For more information about
7256 * permissions, see <a
7257 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
7258 * Related to Bucket Subresource Operations</a> and <a
7259 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
7260 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>
7261 * <code>PutBucketTagging</code> has the following special errors:</p> <ul> <li>
7262 * <p>Error code: <code>InvalidTagError</code> </p> <ul> <li> <p>Description: The
7263 * tag provided was not a valid tag. This error can occur if the tag did not pass
7264 * input validation. For information about tag restrictions, see <a
7265 * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2//allocation-tag-restrictions.html">User-Defined
7266 * Tag Restrictions</a> and <a
7267 * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2//aws-tag-restrictions.html">AWS-Generated
7268 * Cost Allocation Tag Restrictions</a>.</p> </li> </ul> </li> <li> <p>Error code:
7269 * <code>MalformedXMLError</code> </p> <ul> <li> <p>Description: The XML provided
7270 * does not match the schema.</p> </li> </ul> </li> <li> <p>Error code:
7271 * <code>OperationAbortedError </code> </p> <ul> <li> <p>Description: A conflicting
7272 * conditional operation is currently in progress against this resource. Please try
7273 * again.</p> </li> </ul> </li> <li> <p>Error code: <code>InternalError</code> </p>
7274 * <ul> <li> <p>Description: The service was unable to apply the provided tag to
7275 * the bucket.</p> </li> </ul> </li> </ul> <p>The following operations are related
7276 * to <code>PutBucketTagging</code>:</p> <ul> <li> <p> <a>GetBucketTagging</a> </p>
7277 * </li> <li> <p> <a>DeleteBucketTagging</a> </p> </li> </ul><p><h3>See Also:</h3>
7278 * <a
7279 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging">AWS
7280 * API Reference</a></p>
7281 *
7282 * returns a future to the operation so that it can be executed in parallel to other requests.
7283 */
7284 virtual Model::PutBucketTaggingOutcomeCallable PutBucketTaggingCallable(const Model::PutBucketTaggingRequest& request) const;
7285
7286 /**
7287 * <p>Sets the tags for a bucket.</p> <p>Use tags to organize your AWS bill to
7288 * reflect your own cost structure. To do this, sign up to get your AWS account
7289 * bill with tag key values included. Then, to see the cost of combined resources,
7290 * organize your billing information according to resources with the same tag key
7291 * values. For example, you can tag several resources with a specific application
7292 * name, and then organize your billing information to see the total cost of that
7293 * application across several services. For more information, see <a
7294 * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html">Cost
7295 * Allocation and Tagging</a>.</p> <note> <p>Within a bucket, if you add a tag that
7296 * has the same key as an existing tag, the new value overwrites the old value. For
7297 * more information, see <a
7298 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/CostAllocTagging.html">Using
7299 * Cost Allocation in Amazon S3 Bucket Tags</a>.</p> </note> <p>To use this
7300 * operation, you must have permissions to perform the
7301 * <code>s3:PutBucketTagging</code> action. The bucket owner has this permission by
7302 * default and can grant this permission to others. For more information about
7303 * permissions, see <a
7304 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
7305 * Related to Bucket Subresource Operations</a> and <a
7306 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
7307 * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>
7308 * <code>PutBucketTagging</code> has the following special errors:</p> <ul> <li>
7309 * <p>Error code: <code>InvalidTagError</code> </p> <ul> <li> <p>Description: The
7310 * tag provided was not a valid tag. This error can occur if the tag did not pass
7311 * input validation. For information about tag restrictions, see <a
7312 * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2//allocation-tag-restrictions.html">User-Defined
7313 * Tag Restrictions</a> and <a
7314 * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2//aws-tag-restrictions.html">AWS-Generated
7315 * Cost Allocation Tag Restrictions</a>.</p> </li> </ul> </li> <li> <p>Error code:
7316 * <code>MalformedXMLError</code> </p> <ul> <li> <p>Description: The XML provided
7317 * does not match the schema.</p> </li> </ul> </li> <li> <p>Error code:
7318 * <code>OperationAbortedError </code> </p> <ul> <li> <p>Description: A conflicting
7319 * conditional operation is currently in progress against this resource. Please try
7320 * again.</p> </li> </ul> </li> <li> <p>Error code: <code>InternalError</code> </p>
7321 * <ul> <li> <p>Description: The service was unable to apply the provided tag to
7322 * the bucket.</p> </li> </ul> </li> </ul> <p>The following operations are related
7323 * to <code>PutBucketTagging</code>:</p> <ul> <li> <p> <a>GetBucketTagging</a> </p>
7324 * </li> <li> <p> <a>DeleteBucketTagging</a> </p> </li> </ul><p><h3>See Also:</h3>
7325 * <a
7326 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging">AWS
7327 * API Reference</a></p>
7328 *
7329 * Queues the request into a thread executor and triggers associated callback when operation has finished.
7330 */
7331 virtual void PutBucketTaggingAsync(const Model::PutBucketTaggingRequest& request, const PutBucketTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
7332
7333 /**
7334 * <p>Sets the versioning state of an existing bucket. To set the versioning state,
7335 * you must be the bucket owner.</p> <p>You can set the versioning state with one
7336 * of the following values:</p> <p> <b>Enabled</b>—Enables versioning for the
7337 * objects in the bucket. All objects added to the bucket receive a unique version
7338 * ID.</p> <p> <b>Suspended</b>—Disables versioning for the objects in the bucket.
7339 * All objects added to the bucket receive the version ID null.</p> <p>If the
7340 * versioning state has never been set on a bucket, it has no versioning state; a
7341 * <a>GetBucketVersioning</a> request does not return a versioning state value.</p>
7342 * <p>If the bucket owner enables MFA Delete in the bucket versioning
7343 * configuration, the bucket owner must include the <code>x-amz-mfa request</code>
7344 * header and the <code>Status</code> and the <code>MfaDelete</code> request
7345 * elements in a request to set the versioning state of the bucket.</p> <important>
7346 * <p>If you have an object expiration lifecycle policy in your non-versioned
7347 * bucket and you want to maintain the same permanent delete behavior when you
7348 * enable versioning, you must add a noncurrent expiration policy. The noncurrent
7349 * expiration lifecycle policy will manage the deletes of the noncurrent object
7350 * versions in the version-enabled bucket. (A version-enabled bucket maintains one
7351 * current and zero or more noncurrent object versions.) For more information, see
7352 * <a
7353 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-and-other-bucket-config">Lifecycle
7354 * and Versioning</a>.</p> </important> <p class="title"> <b>Related Resources</b>
7355 * </p> <ul> <li> <p> <a>CreateBucket</a> </p> </li> <li> <p> <a>DeleteBucket</a>
7356 * </p> </li> <li> <p> <a>GetBucketVersioning</a> </p> </li> </ul><p><h3>See
7357 * Also:</h3> <a
7358 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning">AWS
7359 * API Reference</a></p>
7360 */
7361 virtual Model::PutBucketVersioningOutcome PutBucketVersioning(const Model::PutBucketVersioningRequest& request) const;
7362
7363 /**
7364 * <p>Sets the versioning state of an existing bucket. To set the versioning state,
7365 * you must be the bucket owner.</p> <p>You can set the versioning state with one
7366 * of the following values:</p> <p> <b>Enabled</b>—Enables versioning for the
7367 * objects in the bucket. All objects added to the bucket receive a unique version
7368 * ID.</p> <p> <b>Suspended</b>—Disables versioning for the objects in the bucket.
7369 * All objects added to the bucket receive the version ID null.</p> <p>If the
7370 * versioning state has never been set on a bucket, it has no versioning state; a
7371 * <a>GetBucketVersioning</a> request does not return a versioning state value.</p>
7372 * <p>If the bucket owner enables MFA Delete in the bucket versioning
7373 * configuration, the bucket owner must include the <code>x-amz-mfa request</code>
7374 * header and the <code>Status</code> and the <code>MfaDelete</code> request
7375 * elements in a request to set the versioning state of the bucket.</p> <important>
7376 * <p>If you have an object expiration lifecycle policy in your non-versioned
7377 * bucket and you want to maintain the same permanent delete behavior when you
7378 * enable versioning, you must add a noncurrent expiration policy. The noncurrent
7379 * expiration lifecycle policy will manage the deletes of the noncurrent object
7380 * versions in the version-enabled bucket. (A version-enabled bucket maintains one
7381 * current and zero or more noncurrent object versions.) For more information, see
7382 * <a
7383 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-and-other-bucket-config">Lifecycle
7384 * and Versioning</a>.</p> </important> <p class="title"> <b>Related Resources</b>
7385 * </p> <ul> <li> <p> <a>CreateBucket</a> </p> </li> <li> <p> <a>DeleteBucket</a>
7386 * </p> </li> <li> <p> <a>GetBucketVersioning</a> </p> </li> </ul><p><h3>See
7387 * Also:</h3> <a
7388 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning">AWS
7389 * API Reference</a></p>
7390 *
7391 * returns a future to the operation so that it can be executed in parallel to other requests.
7392 */
7393 virtual Model::PutBucketVersioningOutcomeCallable PutBucketVersioningCallable(const Model::PutBucketVersioningRequest& request) const;
7394
7395 /**
7396 * <p>Sets the versioning state of an existing bucket. To set the versioning state,
7397 * you must be the bucket owner.</p> <p>You can set the versioning state with one
7398 * of the following values:</p> <p> <b>Enabled</b>—Enables versioning for the
7399 * objects in the bucket. All objects added to the bucket receive a unique version
7400 * ID.</p> <p> <b>Suspended</b>—Disables versioning for the objects in the bucket.
7401 * All objects added to the bucket receive the version ID null.</p> <p>If the
7402 * versioning state has never been set on a bucket, it has no versioning state; a
7403 * <a>GetBucketVersioning</a> request does not return a versioning state value.</p>
7404 * <p>If the bucket owner enables MFA Delete in the bucket versioning
7405 * configuration, the bucket owner must include the <code>x-amz-mfa request</code>
7406 * header and the <code>Status</code> and the <code>MfaDelete</code> request
7407 * elements in a request to set the versioning state of the bucket.</p> <important>
7408 * <p>If you have an object expiration lifecycle policy in your non-versioned
7409 * bucket and you want to maintain the same permanent delete behavior when you
7410 * enable versioning, you must add a noncurrent expiration policy. The noncurrent
7411 * expiration lifecycle policy will manage the deletes of the noncurrent object
7412 * versions in the version-enabled bucket. (A version-enabled bucket maintains one
7413 * current and zero or more noncurrent object versions.) For more information, see
7414 * <a
7415 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-and-other-bucket-config">Lifecycle
7416 * and Versioning</a>.</p> </important> <p class="title"> <b>Related Resources</b>
7417 * </p> <ul> <li> <p> <a>CreateBucket</a> </p> </li> <li> <p> <a>DeleteBucket</a>
7418 * </p> </li> <li> <p> <a>GetBucketVersioning</a> </p> </li> </ul><p><h3>See
7419 * Also:</h3> <a
7420 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning">AWS
7421 * API Reference</a></p>
7422 *
7423 * Queues the request into a thread executor and triggers associated callback when operation has finished.
7424 */
7425 virtual void PutBucketVersioningAsync(const Model::PutBucketVersioningRequest& request, const PutBucketVersioningResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
7426
7427 /**
7428 * <p>Sets the configuration of the website that is specified in the
7429 * <code>website</code> subresource. To configure a bucket as a website, you can
7430 * add this subresource on the bucket with website configuration information such
7431 * as the file name of the index document and any redirect rules. For more
7432 * information, see <a
7433 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
7434 * Websites on Amazon S3</a>.</p> <p>This PUT operation requires the
7435 * <code>S3:PutBucketWebsite</code> permission. By default, only the bucket owner
7436 * can configure the website attached to a bucket; however, bucket owners can allow
7437 * other users to set the website configuration by writing a bucket policy that
7438 * grants them the <code>S3:PutBucketWebsite</code> permission.</p> <p>To redirect
7439 * all website requests sent to the bucket's website endpoint, you add a website
7440 * configuration with the following elements. Because all requests are sent to
7441 * another website, you don't need to provide index document name for the
7442 * bucket.</p> <ul> <li> <p> <code>WebsiteConfiguration</code> </p> </li> <li> <p>
7443 * <code>RedirectAllRequestsTo</code> </p> </li> <li> <p> <code>HostName</code>
7444 * </p> </li> <li> <p> <code>Protocol</code> </p> </li> </ul> <p>If you want
7445 * granular control over redirects, you can use the following elements to add
7446 * routing rules that describe conditions for redirecting requests and information
7447 * about the redirect destination. In this case, the website configuration must
7448 * provide an index document for the bucket, because some requests might not be
7449 * redirected. </p> <ul> <li> <p> <code>WebsiteConfiguration</code> </p> </li> <li>
7450 * <p> <code>IndexDocument</code> </p> </li> <li> <p> <code>Suffix</code> </p>
7451 * </li> <li> <p> <code>ErrorDocument</code> </p> </li> <li> <p> <code>Key</code>
7452 * </p> </li> <li> <p> <code>RoutingRules</code> </p> </li> <li> <p>
7453 * <code>RoutingRule</code> </p> </li> <li> <p> <code>Condition</code> </p> </li>
7454 * <li> <p> <code>HttpErrorCodeReturnedEquals</code> </p> </li> <li> <p>
7455 * <code>KeyPrefixEquals</code> </p> </li> <li> <p> <code>Redirect</code> </p>
7456 * </li> <li> <p> <code>Protocol</code> </p> </li> <li> <p> <code>HostName</code>
7457 * </p> </li> <li> <p> <code>ReplaceKeyPrefixWith</code> </p> </li> <li> <p>
7458 * <code>ReplaceKeyWith</code> </p> </li> <li> <p> <code>HttpRedirectCode</code>
7459 * </p> </li> </ul><p><h3>See Also:</h3> <a
7460 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite">AWS
7461 * API Reference</a></p>
7462 */
7463 virtual Model::PutBucketWebsiteOutcome PutBucketWebsite(const Model::PutBucketWebsiteRequest& request) const;
7464
7465 /**
7466 * <p>Sets the configuration of the website that is specified in the
7467 * <code>website</code> subresource. To configure a bucket as a website, you can
7468 * add this subresource on the bucket with website configuration information such
7469 * as the file name of the index document and any redirect rules. For more
7470 * information, see <a
7471 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
7472 * Websites on Amazon S3</a>.</p> <p>This PUT operation requires the
7473 * <code>S3:PutBucketWebsite</code> permission. By default, only the bucket owner
7474 * can configure the website attached to a bucket; however, bucket owners can allow
7475 * other users to set the website configuration by writing a bucket policy that
7476 * grants them the <code>S3:PutBucketWebsite</code> permission.</p> <p>To redirect
7477 * all website requests sent to the bucket's website endpoint, you add a website
7478 * configuration with the following elements. Because all requests are sent to
7479 * another website, you don't need to provide index document name for the
7480 * bucket.</p> <ul> <li> <p> <code>WebsiteConfiguration</code> </p> </li> <li> <p>
7481 * <code>RedirectAllRequestsTo</code> </p> </li> <li> <p> <code>HostName</code>
7482 * </p> </li> <li> <p> <code>Protocol</code> </p> </li> </ul> <p>If you want
7483 * granular control over redirects, you can use the following elements to add
7484 * routing rules that describe conditions for redirecting requests and information
7485 * about the redirect destination. In this case, the website configuration must
7486 * provide an index document for the bucket, because some requests might not be
7487 * redirected. </p> <ul> <li> <p> <code>WebsiteConfiguration</code> </p> </li> <li>
7488 * <p> <code>IndexDocument</code> </p> </li> <li> <p> <code>Suffix</code> </p>
7489 * </li> <li> <p> <code>ErrorDocument</code> </p> </li> <li> <p> <code>Key</code>
7490 * </p> </li> <li> <p> <code>RoutingRules</code> </p> </li> <li> <p>
7491 * <code>RoutingRule</code> </p> </li> <li> <p> <code>Condition</code> </p> </li>
7492 * <li> <p> <code>HttpErrorCodeReturnedEquals</code> </p> </li> <li> <p>
7493 * <code>KeyPrefixEquals</code> </p> </li> <li> <p> <code>Redirect</code> </p>
7494 * </li> <li> <p> <code>Protocol</code> </p> </li> <li> <p> <code>HostName</code>
7495 * </p> </li> <li> <p> <code>ReplaceKeyPrefixWith</code> </p> </li> <li> <p>
7496 * <code>ReplaceKeyWith</code> </p> </li> <li> <p> <code>HttpRedirectCode</code>
7497 * </p> </li> </ul><p><h3>See Also:</h3> <a
7498 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite">AWS
7499 * API Reference</a></p>
7500 *
7501 * returns a future to the operation so that it can be executed in parallel to other requests.
7502 */
7503 virtual Model::PutBucketWebsiteOutcomeCallable PutBucketWebsiteCallable(const Model::PutBucketWebsiteRequest& request) const;
7504
7505 /**
7506 * <p>Sets the configuration of the website that is specified in the
7507 * <code>website</code> subresource. To configure a bucket as a website, you can
7508 * add this subresource on the bucket with website configuration information such
7509 * as the file name of the index document and any redirect rules. For more
7510 * information, see <a
7511 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
7512 * Websites on Amazon S3</a>.</p> <p>This PUT operation requires the
7513 * <code>S3:PutBucketWebsite</code> permission. By default, only the bucket owner
7514 * can configure the website attached to a bucket; however, bucket owners can allow
7515 * other users to set the website configuration by writing a bucket policy that
7516 * grants them the <code>S3:PutBucketWebsite</code> permission.</p> <p>To redirect
7517 * all website requests sent to the bucket's website endpoint, you add a website
7518 * configuration with the following elements. Because all requests are sent to
7519 * another website, you don't need to provide index document name for the
7520 * bucket.</p> <ul> <li> <p> <code>WebsiteConfiguration</code> </p> </li> <li> <p>
7521 * <code>RedirectAllRequestsTo</code> </p> </li> <li> <p> <code>HostName</code>
7522 * </p> </li> <li> <p> <code>Protocol</code> </p> </li> </ul> <p>If you want
7523 * granular control over redirects, you can use the following elements to add
7524 * routing rules that describe conditions for redirecting requests and information
7525 * about the redirect destination. In this case, the website configuration must
7526 * provide an index document for the bucket, because some requests might not be
7527 * redirected. </p> <ul> <li> <p> <code>WebsiteConfiguration</code> </p> </li> <li>
7528 * <p> <code>IndexDocument</code> </p> </li> <li> <p> <code>Suffix</code> </p>
7529 * </li> <li> <p> <code>ErrorDocument</code> </p> </li> <li> <p> <code>Key</code>
7530 * </p> </li> <li> <p> <code>RoutingRules</code> </p> </li> <li> <p>
7531 * <code>RoutingRule</code> </p> </li> <li> <p> <code>Condition</code> </p> </li>
7532 * <li> <p> <code>HttpErrorCodeReturnedEquals</code> </p> </li> <li> <p>
7533 * <code>KeyPrefixEquals</code> </p> </li> <li> <p> <code>Redirect</code> </p>
7534 * </li> <li> <p> <code>Protocol</code> </p> </li> <li> <p> <code>HostName</code>
7535 * </p> </li> <li> <p> <code>ReplaceKeyPrefixWith</code> </p> </li> <li> <p>
7536 * <code>ReplaceKeyWith</code> </p> </li> <li> <p> <code>HttpRedirectCode</code>
7537 * </p> </li> </ul><p><h3>See Also:</h3> <a
7538 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite">AWS
7539 * API Reference</a></p>
7540 *
7541 * Queues the request into a thread executor and triggers associated callback when operation has finished.
7542 */
7543 virtual void PutBucketWebsiteAsync(const Model::PutBucketWebsiteRequest& request, const PutBucketWebsiteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
7544
7545 /**
7546 * <p>Adds an object to a bucket. You must have WRITE permissions on a bucket to
7547 * add an object to it.</p> <p>Amazon S3 never adds partial objects; if you receive
7548 * a success response, Amazon S3 added the entire object to the bucket.</p>
7549 * <p>Amazon S3 is a distributed system. If it receives multiple write requests for
7550 * the same object simultaneously, it overwrites all but the last object written.
7551 * Amazon S3 does not provide object locking; if you need this, make sure to build
7552 * it into your application layer or use versioning instead.</p> <p>To ensure that
7553 * data is not corrupted traversing the network, use the <code>Content-MD5</code>
7554 * header. When you use this header, Amazon S3 checks the object against the
7555 * provided MD5 value and, if they do not match, returns an error. Additionally,
7556 * you can calculate the MD5 while putting an object to Amazon S3 and compare the
7557 * returned ETag to the calculated MD5 value.</p> <note> <p>To configure your
7558 * application to send the request headers before sending the request body, use the
7559 * <code>100-continue</code> HTTP status code. For PUT operations, this helps you
7560 * avoid sending the message body if the message is rejected based on the headers
7561 * (for example, because authentication fails or a redirect occurs). For more
7562 * information on the <code>100-continue</code> HTTP status code, see Section 8.2.3
7563 * of <a
7564 * href="http://www.ietf.org/rfc/rfc2616.txt">http://www.ietf.org/rfc/rfc2616.txt</a>.</p>
7565 * </note> <p>You can optionally request server-side encryption. With server-side
7566 * encryption, Amazon S3 encrypts your data as it writes it to disks in its data
7567 * centers and decrypts the data when you access it. You have the option to provide
7568 * your own encryption key or use AWS managed encryption keys. For more
7569 * information, see <a
7570 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">Using
7571 * Server-Side Encryption</a>.</p> <dl> <dt>Access Permissions</dt> <dd> <p>You can
7572 * optionally specify the accounts or groups that should be granted specific
7573 * permissions on the new object. There are two ways to grant the permissions using
7574 * the request headers:</p> <ul> <li> <p>Specify a canned ACL with the
7575 * <code>x-amz-acl</code> request header. For more information, see <a
7576 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
7577 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly with the
7578 * <code>x-amz-grant-read</code>, <code>x-amz-grant-read-acp</code>,
7579 * <code>x-amz-grant-write-acp</code>, and <code>x-amz-grant-full-control</code>
7580 * headers. These parameters map to the set of permissions that Amazon S3 supports
7581 * in an ACL. For more information, see <a
7582 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
7583 * Control List (ACL) Overview</a>.</p> </li> </ul> <p>You can use either a canned
7584 * ACL or specify access permissions explicitly. You cannot do both.</p> </dd>
7585 * <dt>Server-Side- Encryption-Specific Request Headers</dt> <dd> <p>You can
7586 * optionally tell Amazon S3 to encrypt data at rest using server-side encryption.
7587 * Server-side encryption is for data encryption at rest. Amazon S3 encrypts your
7588 * data as it writes it to disks in its data centers and decrypts it when you
7589 * access it. The option you use depends on whether you want to use AWS managed
7590 * encryption keys or provide your own encryption key. </p> <ul> <li> <p>Use
7591 * encryption keys managed by Amazon S3 or customer master keys (CMKs) stored in
7592 * AWS Key Management Service (AWS KMS) – If you want AWS to manage the keys used
7593 * to encrypt data, specify the following headers in the request.</p> <ul> <li>
7594 * <p>x-amz-server-side​-encryption</p> </li> <li>
7595 * <p>x-amz-server-side-encryption-aws-kms-key-id</p> </li> <li>
7596 * <p>x-amz-server-side-encryption-context</p> </li> </ul> <note> <p>If you specify
7597 * <code>x-amz-server-side-encryption:aws:kms</code>, but don't provide
7598 * <code>x-amz-server-side- encryption-aws-kms-key-id</code>, Amazon S3 uses the
7599 * AWS managed CMK in AWS KMS to protect the data.</p> </note> <important> <p>All
7600 * GET and PUT requests for an object protected by AWS KMS fail if you don't make
7601 * them with SSL or by using SigV4.</p> </important> <p>For more information about
7602 * server-side encryption with CMKs stored in AWS KMS (SSE-KMS), see <a
7603 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
7604 * Data Using Server-Side Encryption with CMKs stored in AWS</a>.</p> </li> <li>
7605 * <p>Use customer-provided encryption keys – If you want to manage your own
7606 * encryption keys, provide all the following headers in the request.</p> <ul> <li>
7607 * <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
7608 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
7609 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> <p>For more
7610 * information about server-side encryption with CMKs stored in KMS (SSE-KMS), see
7611 * <a
7612 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
7613 * Data Using Server-Side Encryption with CMKs stored in AWS KMS</a>.</p> </li>
7614 * </ul> </dd> <dt>Access-Control-List (ACL)-Specific Request Headers</dt> <dd>
7615 * <p>You also can use the following access control–related headers with this
7616 * operation. By default, all objects are private. Only the owner has full access
7617 * control. When adding a new object, you can grant permissions to individual AWS
7618 * accounts or to predefined groups defined by Amazon S3. These permissions are
7619 * then added to the Access Control List (ACL) on the object. For more information,
7620 * see <a
7621 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using
7622 * ACLs</a>. With this operation, you can grant access permissions using one of the
7623 * following two methods:</p> <ul> <li> <p>Specify a canned ACL
7624 * (<code>x-amz-acl</code>) — Amazon S3 supports a set of predefined ACLs, known as
7625 * canned ACLs. Each canned ACL has a predefined set of grantees and permissions.
7626 * For more information, see <a
7627 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
7628 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly — To explicitly
7629 * grant access permissions to specific AWS accounts or groups, use the following
7630 * headers. Each header maps to specific permissions that Amazon S3 supports in an
7631 * ACL. For more information, see <a
7632 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
7633 * Control List (ACL) Overview</a>. In the header, you specify a list of grantees
7634 * who get the specific permission. To grant permissions explicitly use:</p> <ul>
7635 * <li> <p>x-amz-grant-read</p> </li> <li> <p>x-amz-grant-write</p> </li> <li>
7636 * <p>x-amz-grant-read-acp</p> </li> <li> <p>x-amz-grant-write-acp</p> </li> <li>
7637 * <p>x-amz-grant-full-control</p> </li> </ul> <p>You specify each grantee as a
7638 * type=value pair, where the type is one of the following:</p> <ul> <li> <p>
7639 * <code>emailAddress</code> – if the value specified is the email address of an
7640 * AWS account</p> <important> <p>Using email addresses to specify a grantee is
7641 * only supported in the following AWS Regions: </p> <ul> <li> <p>US East (N.
7642 * Virginia)</p> </li> <li> <p>US West (N. California)</p> </li> <li> <p> US West
7643 * (Oregon)</p> </li> <li> <p> Asia Pacific (Singapore)</p> </li> <li> <p>Asia
7644 * Pacific (Sydney)</p> </li> <li> <p>Asia Pacific (Tokyo)</p> </li> <li> <p>EU
7645 * (Ireland)</p> </li> <li> <p>South America (São Paulo)</p> </li> </ul> <p>For a
7646 * list of all the Amazon S3 supported Regions and endpoints, see <a
7647 * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
7648 * and Endpoints</a> in the AWS General Reference</p> </important> </li> <li> <p>
7649 * <code>id</code> – if the value specified is the canonical user ID of an AWS
7650 * account</p> </li> <li> <p> <code>uri</code> – if you are granting permissions to
7651 * a predefined group</p> </li> </ul> <p>For example, the following
7652 * <code>x-amz-grant-read</code> header grants the AWS accounts identified by email
7653 * addresses permissions to read object data and its metadata:</p> <p>
7654 * <code>x-amz-grant-read: emailAddress="xyz@amazon.com",
7655 * emailAddress="abc@amazon.com" </code> </p> </li> </ul> </dd> <dt>Server-Side-
7656 * Encryption-Specific Request Headers</dt> <dd> <p>You can optionally tell Amazon
7657 * S3 to encrypt data at rest using server-side encryption. Server-side encryption
7658 * is for data encryption at rest. Amazon S3 encrypts your data as it writes it to
7659 * disks in its data centers and decrypts it when you access it. The option you use
7660 * depends on whether you want to use AWS-managed encryption keys or provide your
7661 * own encryption key. </p> <ul> <li> <p>Use encryption keys managed by Amazon S3
7662 * or customer master keys (CMKs) stored in AWS Key Management Service (AWS KMS) –
7663 * If you want AWS to manage the keys used to encrypt data, specify the following
7664 * headers in the request.</p> <ul> <li> <p>x-amz-server-side​-encryption</p> </li>
7665 * <li> <p>x-amz-server-side-encryption-aws-kms-key-id</p> </li> <li>
7666 * <p>x-amz-server-side-encryption-context</p> </li> </ul> <note> <p>If you specify
7667 * <code>x-amz-server-side-encryption:aws:kms</code>, but don't provide
7668 * <code>x-amz-server-side- encryption-aws-kms-key-id</code>, Amazon S3 uses the
7669 * default AWS KMS CMK to protect the data.</p> </note> <important> <p>All GET and
7670 * PUT requests for an object protected by AWS KMS fail if you don't make them with
7671 * SSL or by using SigV4.</p> </important> <p>For more information about
7672 * server-side encryption with CMKs stored in AWS KMS (SSE-KMS), see <a
7673 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
7674 * Data Using Server-Side Encryption with CMKs stored in AWS KMS</a>.</p> </li>
7675 * <li> <p>Use customer-provided encryption keys – If you want to manage your own
7676 * encryption keys, provide all the following headers in the request.</p> <note>
7677 * <p>If you use this feature, the ETag value that Amazon S3 returns in the
7678 * response is not the MD5 of the object.</p> </note> <ul> <li>
7679 * <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
7680 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
7681 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> <p>For more
7682 * information about server-side encryption with CMKs stored in AWS KMS (SSE-KMS),
7683 * see <a
7684 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
7685 * Data Using Server-Side Encryption with CMKs stored in AWS KMS</a>.</p> </li>
7686 * </ul> </dd> </dl> <p> <b>Storage Class Options</b> </p> <p>By default, Amazon S3
7687 * uses the Standard storage class to store newly created objects. The Standard
7688 * storage class provides high durability and high availability. You can specify
7689 * other storage classes depending on the performance needs. For more information,
7690 * see <a
7691 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
7692 * Classes</a> in the Amazon Simple Storage Service Developer Guide.</p> <p>
7693 * <b>Versioning</b> </p> <p>If you enable versioning for a bucket, Amazon S3
7694 * automatically generates a unique version ID for the object being stored. Amazon
7695 * S3 returns this ID in the response using the <code>x-amz-version-id
7696 * response</code> header. If versioning is suspended, Amazon S3 always uses null
7697 * as the version ID for the object stored. For more information about returning
7698 * the versioning state of a bucket, see <a>GetBucketVersioning</a>. If you enable
7699 * versioning for a bucket, when Amazon S3 receives multiple write requests for the
7700 * same object simultaneously, it stores all of the objects.</p> <p class="title">
7701 * <b>Related Resources</b> </p> <ul> <li> <p> <a>CopyObject</a> </p> </li> <li>
7702 * <p> <a>DeleteObject</a> </p> </li> </ul><p><h3>See Also:</h3> <a
7703 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject">AWS API
7704 * Reference</a></p>
7705 */
7706 virtual Model::PutObjectOutcome PutObject(const Model::PutObjectRequest& request) const;
7707
7708 /**
7709 * <p>Adds an object to a bucket. You must have WRITE permissions on a bucket to
7710 * add an object to it.</p> <p>Amazon S3 never adds partial objects; if you receive
7711 * a success response, Amazon S3 added the entire object to the bucket.</p>
7712 * <p>Amazon S3 is a distributed system. If it receives multiple write requests for
7713 * the same object simultaneously, it overwrites all but the last object written.
7714 * Amazon S3 does not provide object locking; if you need this, make sure to build
7715 * it into your application layer or use versioning instead.</p> <p>To ensure that
7716 * data is not corrupted traversing the network, use the <code>Content-MD5</code>
7717 * header. When you use this header, Amazon S3 checks the object against the
7718 * provided MD5 value and, if they do not match, returns an error. Additionally,
7719 * you can calculate the MD5 while putting an object to Amazon S3 and compare the
7720 * returned ETag to the calculated MD5 value.</p> <note> <p>To configure your
7721 * application to send the request headers before sending the request body, use the
7722 * <code>100-continue</code> HTTP status code. For PUT operations, this helps you
7723 * avoid sending the message body if the message is rejected based on the headers
7724 * (for example, because authentication fails or a redirect occurs). For more
7725 * information on the <code>100-continue</code> HTTP status code, see Section 8.2.3
7726 * of <a
7727 * href="http://www.ietf.org/rfc/rfc2616.txt">http://www.ietf.org/rfc/rfc2616.txt</a>.</p>
7728 * </note> <p>You can optionally request server-side encryption. With server-side
7729 * encryption, Amazon S3 encrypts your data as it writes it to disks in its data
7730 * centers and decrypts the data when you access it. You have the option to provide
7731 * your own encryption key or use AWS managed encryption keys. For more
7732 * information, see <a
7733 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">Using
7734 * Server-Side Encryption</a>.</p> <dl> <dt>Access Permissions</dt> <dd> <p>You can
7735 * optionally specify the accounts or groups that should be granted specific
7736 * permissions on the new object. There are two ways to grant the permissions using
7737 * the request headers:</p> <ul> <li> <p>Specify a canned ACL with the
7738 * <code>x-amz-acl</code> request header. For more information, see <a
7739 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
7740 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly with the
7741 * <code>x-amz-grant-read</code>, <code>x-amz-grant-read-acp</code>,
7742 * <code>x-amz-grant-write-acp</code>, and <code>x-amz-grant-full-control</code>
7743 * headers. These parameters map to the set of permissions that Amazon S3 supports
7744 * in an ACL. For more information, see <a
7745 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
7746 * Control List (ACL) Overview</a>.</p> </li> </ul> <p>You can use either a canned
7747 * ACL or specify access permissions explicitly. You cannot do both.</p> </dd>
7748 * <dt>Server-Side- Encryption-Specific Request Headers</dt> <dd> <p>You can
7749 * optionally tell Amazon S3 to encrypt data at rest using server-side encryption.
7750 * Server-side encryption is for data encryption at rest. Amazon S3 encrypts your
7751 * data as it writes it to disks in its data centers and decrypts it when you
7752 * access it. The option you use depends on whether you want to use AWS managed
7753 * encryption keys or provide your own encryption key. </p> <ul> <li> <p>Use
7754 * encryption keys managed by Amazon S3 or customer master keys (CMKs) stored in
7755 * AWS Key Management Service (AWS KMS) – If you want AWS to manage the keys used
7756 * to encrypt data, specify the following headers in the request.</p> <ul> <li>
7757 * <p>x-amz-server-side​-encryption</p> </li> <li>
7758 * <p>x-amz-server-side-encryption-aws-kms-key-id</p> </li> <li>
7759 * <p>x-amz-server-side-encryption-context</p> </li> </ul> <note> <p>If you specify
7760 * <code>x-amz-server-side-encryption:aws:kms</code>, but don't provide
7761 * <code>x-amz-server-side- encryption-aws-kms-key-id</code>, Amazon S3 uses the
7762 * AWS managed CMK in AWS KMS to protect the data.</p> </note> <important> <p>All
7763 * GET and PUT requests for an object protected by AWS KMS fail if you don't make
7764 * them with SSL or by using SigV4.</p> </important> <p>For more information about
7765 * server-side encryption with CMKs stored in AWS KMS (SSE-KMS), see <a
7766 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
7767 * Data Using Server-Side Encryption with CMKs stored in AWS</a>.</p> </li> <li>
7768 * <p>Use customer-provided encryption keys – If you want to manage your own
7769 * encryption keys, provide all the following headers in the request.</p> <ul> <li>
7770 * <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
7771 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
7772 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> <p>For more
7773 * information about server-side encryption with CMKs stored in KMS (SSE-KMS), see
7774 * <a
7775 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
7776 * Data Using Server-Side Encryption with CMKs stored in AWS KMS</a>.</p> </li>
7777 * </ul> </dd> <dt>Access-Control-List (ACL)-Specific Request Headers</dt> <dd>
7778 * <p>You also can use the following access control–related headers with this
7779 * operation. By default, all objects are private. Only the owner has full access
7780 * control. When adding a new object, you can grant permissions to individual AWS
7781 * accounts or to predefined groups defined by Amazon S3. These permissions are
7782 * then added to the Access Control List (ACL) on the object. For more information,
7783 * see <a
7784 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using
7785 * ACLs</a>. With this operation, you can grant access permissions using one of the
7786 * following two methods:</p> <ul> <li> <p>Specify a canned ACL
7787 * (<code>x-amz-acl</code>) — Amazon S3 supports a set of predefined ACLs, known as
7788 * canned ACLs. Each canned ACL has a predefined set of grantees and permissions.
7789 * For more information, see <a
7790 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
7791 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly — To explicitly
7792 * grant access permissions to specific AWS accounts or groups, use the following
7793 * headers. Each header maps to specific permissions that Amazon S3 supports in an
7794 * ACL. For more information, see <a
7795 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
7796 * Control List (ACL) Overview</a>. In the header, you specify a list of grantees
7797 * who get the specific permission. To grant permissions explicitly use:</p> <ul>
7798 * <li> <p>x-amz-grant-read</p> </li> <li> <p>x-amz-grant-write</p> </li> <li>
7799 * <p>x-amz-grant-read-acp</p> </li> <li> <p>x-amz-grant-write-acp</p> </li> <li>
7800 * <p>x-amz-grant-full-control</p> </li> </ul> <p>You specify each grantee as a
7801 * type=value pair, where the type is one of the following:</p> <ul> <li> <p>
7802 * <code>emailAddress</code> – if the value specified is the email address of an
7803 * AWS account</p> <important> <p>Using email addresses to specify a grantee is
7804 * only supported in the following AWS Regions: </p> <ul> <li> <p>US East (N.
7805 * Virginia)</p> </li> <li> <p>US West (N. California)</p> </li> <li> <p> US West
7806 * (Oregon)</p> </li> <li> <p> Asia Pacific (Singapore)</p> </li> <li> <p>Asia
7807 * Pacific (Sydney)</p> </li> <li> <p>Asia Pacific (Tokyo)</p> </li> <li> <p>EU
7808 * (Ireland)</p> </li> <li> <p>South America (São Paulo)</p> </li> </ul> <p>For a
7809 * list of all the Amazon S3 supported Regions and endpoints, see <a
7810 * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
7811 * and Endpoints</a> in the AWS General Reference</p> </important> </li> <li> <p>
7812 * <code>id</code> – if the value specified is the canonical user ID of an AWS
7813 * account</p> </li> <li> <p> <code>uri</code> – if you are granting permissions to
7814 * a predefined group</p> </li> </ul> <p>For example, the following
7815 * <code>x-amz-grant-read</code> header grants the AWS accounts identified by email
7816 * addresses permissions to read object data and its metadata:</p> <p>
7817 * <code>x-amz-grant-read: emailAddress="xyz@amazon.com",
7818 * emailAddress="abc@amazon.com" </code> </p> </li> </ul> </dd> <dt>Server-Side-
7819 * Encryption-Specific Request Headers</dt> <dd> <p>You can optionally tell Amazon
7820 * S3 to encrypt data at rest using server-side encryption. Server-side encryption
7821 * is for data encryption at rest. Amazon S3 encrypts your data as it writes it to
7822 * disks in its data centers and decrypts it when you access it. The option you use
7823 * depends on whether you want to use AWS-managed encryption keys or provide your
7824 * own encryption key. </p> <ul> <li> <p>Use encryption keys managed by Amazon S3
7825 * or customer master keys (CMKs) stored in AWS Key Management Service (AWS KMS) –
7826 * If you want AWS to manage the keys used to encrypt data, specify the following
7827 * headers in the request.</p> <ul> <li> <p>x-amz-server-side​-encryption</p> </li>
7828 * <li> <p>x-amz-server-side-encryption-aws-kms-key-id</p> </li> <li>
7829 * <p>x-amz-server-side-encryption-context</p> </li> </ul> <note> <p>If you specify
7830 * <code>x-amz-server-side-encryption:aws:kms</code>, but don't provide
7831 * <code>x-amz-server-side- encryption-aws-kms-key-id</code>, Amazon S3 uses the
7832 * default AWS KMS CMK to protect the data.</p> </note> <important> <p>All GET and
7833 * PUT requests for an object protected by AWS KMS fail if you don't make them with
7834 * SSL or by using SigV4.</p> </important> <p>For more information about
7835 * server-side encryption with CMKs stored in AWS KMS (SSE-KMS), see <a
7836 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
7837 * Data Using Server-Side Encryption with CMKs stored in AWS KMS</a>.</p> </li>
7838 * <li> <p>Use customer-provided encryption keys – If you want to manage your own
7839 * encryption keys, provide all the following headers in the request.</p> <note>
7840 * <p>If you use this feature, the ETag value that Amazon S3 returns in the
7841 * response is not the MD5 of the object.</p> </note> <ul> <li>
7842 * <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
7843 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
7844 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> <p>For more
7845 * information about server-side encryption with CMKs stored in AWS KMS (SSE-KMS),
7846 * see <a
7847 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
7848 * Data Using Server-Side Encryption with CMKs stored in AWS KMS</a>.</p> </li>
7849 * </ul> </dd> </dl> <p> <b>Storage Class Options</b> </p> <p>By default, Amazon S3
7850 * uses the Standard storage class to store newly created objects. The Standard
7851 * storage class provides high durability and high availability. You can specify
7852 * other storage classes depending on the performance needs. For more information,
7853 * see <a
7854 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
7855 * Classes</a> in the Amazon Simple Storage Service Developer Guide.</p> <p>
7856 * <b>Versioning</b> </p> <p>If you enable versioning for a bucket, Amazon S3
7857 * automatically generates a unique version ID for the object being stored. Amazon
7858 * S3 returns this ID in the response using the <code>x-amz-version-id
7859 * response</code> header. If versioning is suspended, Amazon S3 always uses null
7860 * as the version ID for the object stored. For more information about returning
7861 * the versioning state of a bucket, see <a>GetBucketVersioning</a>. If you enable
7862 * versioning for a bucket, when Amazon S3 receives multiple write requests for the
7863 * same object simultaneously, it stores all of the objects.</p> <p class="title">
7864 * <b>Related Resources</b> </p> <ul> <li> <p> <a>CopyObject</a> </p> </li> <li>
7865 * <p> <a>DeleteObject</a> </p> </li> </ul><p><h3>See Also:</h3> <a
7866 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject">AWS API
7867 * Reference</a></p>
7868 *
7869 * returns a future to the operation so that it can be executed in parallel to other requests.
7870 */
7871 virtual Model::PutObjectOutcomeCallable PutObjectCallable(const Model::PutObjectRequest& request) const;
7872
7873 /**
7874 * <p>Adds an object to a bucket. You must have WRITE permissions on a bucket to
7875 * add an object to it.</p> <p>Amazon S3 never adds partial objects; if you receive
7876 * a success response, Amazon S3 added the entire object to the bucket.</p>
7877 * <p>Amazon S3 is a distributed system. If it receives multiple write requests for
7878 * the same object simultaneously, it overwrites all but the last object written.
7879 * Amazon S3 does not provide object locking; if you need this, make sure to build
7880 * it into your application layer or use versioning instead.</p> <p>To ensure that
7881 * data is not corrupted traversing the network, use the <code>Content-MD5</code>
7882 * header. When you use this header, Amazon S3 checks the object against the
7883 * provided MD5 value and, if they do not match, returns an error. Additionally,
7884 * you can calculate the MD5 while putting an object to Amazon S3 and compare the
7885 * returned ETag to the calculated MD5 value.</p> <note> <p>To configure your
7886 * application to send the request headers before sending the request body, use the
7887 * <code>100-continue</code> HTTP status code. For PUT operations, this helps you
7888 * avoid sending the message body if the message is rejected based on the headers
7889 * (for example, because authentication fails or a redirect occurs). For more
7890 * information on the <code>100-continue</code> HTTP status code, see Section 8.2.3
7891 * of <a
7892 * href="http://www.ietf.org/rfc/rfc2616.txt">http://www.ietf.org/rfc/rfc2616.txt</a>.</p>
7893 * </note> <p>You can optionally request server-side encryption. With server-side
7894 * encryption, Amazon S3 encrypts your data as it writes it to disks in its data
7895 * centers and decrypts the data when you access it. You have the option to provide
7896 * your own encryption key or use AWS managed encryption keys. For more
7897 * information, see <a
7898 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">Using
7899 * Server-Side Encryption</a>.</p> <dl> <dt>Access Permissions</dt> <dd> <p>You can
7900 * optionally specify the accounts or groups that should be granted specific
7901 * permissions on the new object. There are two ways to grant the permissions using
7902 * the request headers:</p> <ul> <li> <p>Specify a canned ACL with the
7903 * <code>x-amz-acl</code> request header. For more information, see <a
7904 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
7905 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly with the
7906 * <code>x-amz-grant-read</code>, <code>x-amz-grant-read-acp</code>,
7907 * <code>x-amz-grant-write-acp</code>, and <code>x-amz-grant-full-control</code>
7908 * headers. These parameters map to the set of permissions that Amazon S3 supports
7909 * in an ACL. For more information, see <a
7910 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
7911 * Control List (ACL) Overview</a>.</p> </li> </ul> <p>You can use either a canned
7912 * ACL or specify access permissions explicitly. You cannot do both.</p> </dd>
7913 * <dt>Server-Side- Encryption-Specific Request Headers</dt> <dd> <p>You can
7914 * optionally tell Amazon S3 to encrypt data at rest using server-side encryption.
7915 * Server-side encryption is for data encryption at rest. Amazon S3 encrypts your
7916 * data as it writes it to disks in its data centers and decrypts it when you
7917 * access it. The option you use depends on whether you want to use AWS managed
7918 * encryption keys or provide your own encryption key. </p> <ul> <li> <p>Use
7919 * encryption keys managed by Amazon S3 or customer master keys (CMKs) stored in
7920 * AWS Key Management Service (AWS KMS) – If you want AWS to manage the keys used
7921 * to encrypt data, specify the following headers in the request.</p> <ul> <li>
7922 * <p>x-amz-server-side​-encryption</p> </li> <li>
7923 * <p>x-amz-server-side-encryption-aws-kms-key-id</p> </li> <li>
7924 * <p>x-amz-server-side-encryption-context</p> </li> </ul> <note> <p>If you specify
7925 * <code>x-amz-server-side-encryption:aws:kms</code>, but don't provide
7926 * <code>x-amz-server-side- encryption-aws-kms-key-id</code>, Amazon S3 uses the
7927 * AWS managed CMK in AWS KMS to protect the data.</p> </note> <important> <p>All
7928 * GET and PUT requests for an object protected by AWS KMS fail if you don't make
7929 * them with SSL or by using SigV4.</p> </important> <p>For more information about
7930 * server-side encryption with CMKs stored in AWS KMS (SSE-KMS), see <a
7931 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
7932 * Data Using Server-Side Encryption with CMKs stored in AWS</a>.</p> </li> <li>
7933 * <p>Use customer-provided encryption keys – If you want to manage your own
7934 * encryption keys, provide all the following headers in the request.</p> <ul> <li>
7935 * <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
7936 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
7937 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> <p>For more
7938 * information about server-side encryption with CMKs stored in KMS (SSE-KMS), see
7939 * <a
7940 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
7941 * Data Using Server-Side Encryption with CMKs stored in AWS KMS</a>.</p> </li>
7942 * </ul> </dd> <dt>Access-Control-List (ACL)-Specific Request Headers</dt> <dd>
7943 * <p>You also can use the following access control–related headers with this
7944 * operation. By default, all objects are private. Only the owner has full access
7945 * control. When adding a new object, you can grant permissions to individual AWS
7946 * accounts or to predefined groups defined by Amazon S3. These permissions are
7947 * then added to the Access Control List (ACL) on the object. For more information,
7948 * see <a
7949 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using
7950 * ACLs</a>. With this operation, you can grant access permissions using one of the
7951 * following two methods:</p> <ul> <li> <p>Specify a canned ACL
7952 * (<code>x-amz-acl</code>) — Amazon S3 supports a set of predefined ACLs, known as
7953 * canned ACLs. Each canned ACL has a predefined set of grantees and permissions.
7954 * For more information, see <a
7955 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
7956 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly — To explicitly
7957 * grant access permissions to specific AWS accounts or groups, use the following
7958 * headers. Each header maps to specific permissions that Amazon S3 supports in an
7959 * ACL. For more information, see <a
7960 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
7961 * Control List (ACL) Overview</a>. In the header, you specify a list of grantees
7962 * who get the specific permission. To grant permissions explicitly use:</p> <ul>
7963 * <li> <p>x-amz-grant-read</p> </li> <li> <p>x-amz-grant-write</p> </li> <li>
7964 * <p>x-amz-grant-read-acp</p> </li> <li> <p>x-amz-grant-write-acp</p> </li> <li>
7965 * <p>x-amz-grant-full-control</p> </li> </ul> <p>You specify each grantee as a
7966 * type=value pair, where the type is one of the following:</p> <ul> <li> <p>
7967 * <code>emailAddress</code> – if the value specified is the email address of an
7968 * AWS account</p> <important> <p>Using email addresses to specify a grantee is
7969 * only supported in the following AWS Regions: </p> <ul> <li> <p>US East (N.
7970 * Virginia)</p> </li> <li> <p>US West (N. California)</p> </li> <li> <p> US West
7971 * (Oregon)</p> </li> <li> <p> Asia Pacific (Singapore)</p> </li> <li> <p>Asia
7972 * Pacific (Sydney)</p> </li> <li> <p>Asia Pacific (Tokyo)</p> </li> <li> <p>EU
7973 * (Ireland)</p> </li> <li> <p>South America (São Paulo)</p> </li> </ul> <p>For a
7974 * list of all the Amazon S3 supported Regions and endpoints, see <a
7975 * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
7976 * and Endpoints</a> in the AWS General Reference</p> </important> </li> <li> <p>
7977 * <code>id</code> – if the value specified is the canonical user ID of an AWS
7978 * account</p> </li> <li> <p> <code>uri</code> – if you are granting permissions to
7979 * a predefined group</p> </li> </ul> <p>For example, the following
7980 * <code>x-amz-grant-read</code> header grants the AWS accounts identified by email
7981 * addresses permissions to read object data and its metadata:</p> <p>
7982 * <code>x-amz-grant-read: emailAddress="xyz@amazon.com",
7983 * emailAddress="abc@amazon.com" </code> </p> </li> </ul> </dd> <dt>Server-Side-
7984 * Encryption-Specific Request Headers</dt> <dd> <p>You can optionally tell Amazon
7985 * S3 to encrypt data at rest using server-side encryption. Server-side encryption
7986 * is for data encryption at rest. Amazon S3 encrypts your data as it writes it to
7987 * disks in its data centers and decrypts it when you access it. The option you use
7988 * depends on whether you want to use AWS-managed encryption keys or provide your
7989 * own encryption key. </p> <ul> <li> <p>Use encryption keys managed by Amazon S3
7990 * or customer master keys (CMKs) stored in AWS Key Management Service (AWS KMS) –
7991 * If you want AWS to manage the keys used to encrypt data, specify the following
7992 * headers in the request.</p> <ul> <li> <p>x-amz-server-side​-encryption</p> </li>
7993 * <li> <p>x-amz-server-side-encryption-aws-kms-key-id</p> </li> <li>
7994 * <p>x-amz-server-side-encryption-context</p> </li> </ul> <note> <p>If you specify
7995 * <code>x-amz-server-side-encryption:aws:kms</code>, but don't provide
7996 * <code>x-amz-server-side- encryption-aws-kms-key-id</code>, Amazon S3 uses the
7997 * default AWS KMS CMK to protect the data.</p> </note> <important> <p>All GET and
7998 * PUT requests for an object protected by AWS KMS fail if you don't make them with
7999 * SSL or by using SigV4.</p> </important> <p>For more information about
8000 * server-side encryption with CMKs stored in AWS KMS (SSE-KMS), see <a
8001 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
8002 * Data Using Server-Side Encryption with CMKs stored in AWS KMS</a>.</p> </li>
8003 * <li> <p>Use customer-provided encryption keys – If you want to manage your own
8004 * encryption keys, provide all the following headers in the request.</p> <note>
8005 * <p>If you use this feature, the ETag value that Amazon S3 returns in the
8006 * response is not the MD5 of the object.</p> </note> <ul> <li>
8007 * <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
8008 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
8009 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> <p>For more
8010 * information about server-side encryption with CMKs stored in AWS KMS (SSE-KMS),
8011 * see <a
8012 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
8013 * Data Using Server-Side Encryption with CMKs stored in AWS KMS</a>.</p> </li>
8014 * </ul> </dd> </dl> <p> <b>Storage Class Options</b> </p> <p>By default, Amazon S3
8015 * uses the Standard storage class to store newly created objects. The Standard
8016 * storage class provides high durability and high availability. You can specify
8017 * other storage classes depending on the performance needs. For more information,
8018 * see <a
8019 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
8020 * Classes</a> in the Amazon Simple Storage Service Developer Guide.</p> <p>
8021 * <b>Versioning</b> </p> <p>If you enable versioning for a bucket, Amazon S3
8022 * automatically generates a unique version ID for the object being stored. Amazon
8023 * S3 returns this ID in the response using the <code>x-amz-version-id
8024 * response</code> header. If versioning is suspended, Amazon S3 always uses null
8025 * as the version ID for the object stored. For more information about returning
8026 * the versioning state of a bucket, see <a>GetBucketVersioning</a>. If you enable
8027 * versioning for a bucket, when Amazon S3 receives multiple write requests for the
8028 * same object simultaneously, it stores all of the objects.</p> <p class="title">
8029 * <b>Related Resources</b> </p> <ul> <li> <p> <a>CopyObject</a> </p> </li> <li>
8030 * <p> <a>DeleteObject</a> </p> </li> </ul><p><h3>See Also:</h3> <a
8031 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject">AWS API
8032 * Reference</a></p>
8033 *
8034 * Queues the request into a thread executor and triggers associated callback when operation has finished.
8035 */
8036 virtual void PutObjectAsync(const Model::PutObjectRequest& request, const PutObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
8037
8038 /**
8039 * <p>Uses the <code>acl</code> subresource to set the access control list (ACL)
8040 * permissions for an object that already exists in a bucket. You must have
8041 * <code>WRITE_ACP</code> permission to set the ACL of an object.</p> <p>Depending
8042 * on your application needs, you can choose to set the ACL on an object using
8043 * either the request body or the headers. For example, if you have an existing
8044 * application that updates a bucket ACL using the request body, you can continue
8045 * to use that approach.</p> <p> <b>Access Permissions</b> </p> <p>You can set
8046 * access permissions using one of the following methods:</p> <ul> <li> <p>Specify
8047 * a canned ACL with the <code>x-amz-acl</code> request header. Amazon S3 supports
8048 * a set of predefined ACLs, known as canned ACLs. Each canned ACL has a predefined
8049 * set of grantees and permissions. Specify the canned ACL name as the value of
8050 * <code>x-amz-ac</code>l. If you use this header, you cannot use other access
8051 * control-specific headers in your request. For more information, see <a
8052 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
8053 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly with the
8054 * <code>x-amz-grant-read</code>, <code>x-amz-grant-read-acp</code>,
8055 * <code>x-amz-grant-write-acp</code>, and <code>x-amz-grant-full-control</code>
8056 * headers. When using these headers, you specify explicit access permissions and
8057 * grantees (AWS accounts or Amazon S3 groups) who will receive the permission. If
8058 * you use these ACL-specific headers, you cannot use <code>x-amz-acl</code> header
8059 * to set a canned ACL. These parameters map to the set of permissions that Amazon
8060 * S3 supports in an ACL. For more information, see <a
8061 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
8062 * Control List (ACL) Overview</a>.</p> <p>You specify each grantee as a type=value
8063 * pair, where the type is one of the following:</p> <ul> <li> <p>
8064 * <code>emailAddress</code> – if the value specified is the email address of an
8065 * AWS account</p> </li> <li> <p> <code>id</code> – if the value specified is the
8066 * canonical user ID of an AWS account</p> </li> <li> <p> <code>uri</code> – if you
8067 * are granting permissions to a predefined group</p> </li> </ul> <p>For example,
8068 * the following <code>x-amz-grant-read</code> header grants list objects
8069 * permission to the two AWS accounts identified by their email addresses.</p> <p>
8070 * <code>x-amz-grant-read: emailAddress="xyz@amazon.com",
8071 * emailAddress="abc@amazon.com" </code> </p> </li> </ul> <p>You can use either a
8072 * canned ACL or specify access permissions explicitly. You cannot do both.</p> <p>
8073 * <b>Grantee Values</b> </p> <p>You can specify the person (grantee) to whom
8074 * you're assigning access rights (using request elements) in the following
8075 * ways:</p> <ul> <li> <p>By Email address:</p> <p> <code>&lt;Grantee
8076 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8077 * xsi:type="AmazonCustomerByEmail"&gt;&lt;EmailAddress&gt;&lt;&gt;Grantees@email.com&lt;&gt;&lt;/EmailAddress&gt;lt;/Grantee&gt;</code>
8078 * </p> <p>The grantee is resolved to the CanonicalUser and, in a response to a GET
8079 * Object acl request, appears as the CanonicalUser.</p> </li> <li> <p>By the
8080 * person's ID:</p> <p> <code>&lt;Grantee
8081 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8082 * xsi:type="CanonicalUser"&gt;&lt;ID&gt;&lt;&gt;ID&lt;&gt;&lt;/ID&gt;&lt;DisplayName&gt;&lt;&gt;GranteesEmail&lt;&gt;&lt;/DisplayName&gt;
8083 * &lt;/Grantee&gt;</code> </p> <p>DisplayName is optional and ignored in the
8084 * request.</p> </li> <li> <p>By URI:</p> <p> <code>&lt;Grantee
8085 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8086 * xsi:type="Group"&gt;&lt;URI&gt;&lt;&gt;http://acs.amazonaws.com/groups/global/AuthenticatedUsers&lt;&gt;&lt;/URI&gt;&lt;/Grantee&gt;</code>
8087 * </p> </li> </ul> <p> <b>Versioning</b> </p> <p>The ACL of an object is set at
8088 * the object version level. By default, PUT sets the ACL of the current version of
8089 * an object. To set the ACL of a different version, use the <code>versionId</code>
8090 * subresource.</p> <p class="title"> <b>Related Resources</b> </p> <ul> <li> <p>
8091 * <a>CopyObject</a> </p> </li> <li> <p> <a>GetObject</a> </p> </li>
8092 * </ul><p><h3>See Also:</h3> <a
8093 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl">AWS API
8094 * Reference</a></p>
8095 */
8096 virtual Model::PutObjectAclOutcome PutObjectAcl(const Model::PutObjectAclRequest& request) const;
8097
8098 /**
8099 * <p>Uses the <code>acl</code> subresource to set the access control list (ACL)
8100 * permissions for an object that already exists in a bucket. You must have
8101 * <code>WRITE_ACP</code> permission to set the ACL of an object.</p> <p>Depending
8102 * on your application needs, you can choose to set the ACL on an object using
8103 * either the request body or the headers. For example, if you have an existing
8104 * application that updates a bucket ACL using the request body, you can continue
8105 * to use that approach.</p> <p> <b>Access Permissions</b> </p> <p>You can set
8106 * access permissions using one of the following methods:</p> <ul> <li> <p>Specify
8107 * a canned ACL with the <code>x-amz-acl</code> request header. Amazon S3 supports
8108 * a set of predefined ACLs, known as canned ACLs. Each canned ACL has a predefined
8109 * set of grantees and permissions. Specify the canned ACL name as the value of
8110 * <code>x-amz-ac</code>l. If you use this header, you cannot use other access
8111 * control-specific headers in your request. For more information, see <a
8112 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
8113 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly with the
8114 * <code>x-amz-grant-read</code>, <code>x-amz-grant-read-acp</code>,
8115 * <code>x-amz-grant-write-acp</code>, and <code>x-amz-grant-full-control</code>
8116 * headers. When using these headers, you specify explicit access permissions and
8117 * grantees (AWS accounts or Amazon S3 groups) who will receive the permission. If
8118 * you use these ACL-specific headers, you cannot use <code>x-amz-acl</code> header
8119 * to set a canned ACL. These parameters map to the set of permissions that Amazon
8120 * S3 supports in an ACL. For more information, see <a
8121 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
8122 * Control List (ACL) Overview</a>.</p> <p>You specify each grantee as a type=value
8123 * pair, where the type is one of the following:</p> <ul> <li> <p>
8124 * <code>emailAddress</code> – if the value specified is the email address of an
8125 * AWS account</p> </li> <li> <p> <code>id</code> – if the value specified is the
8126 * canonical user ID of an AWS account</p> </li> <li> <p> <code>uri</code> – if you
8127 * are granting permissions to a predefined group</p> </li> </ul> <p>For example,
8128 * the following <code>x-amz-grant-read</code> header grants list objects
8129 * permission to the two AWS accounts identified by their email addresses.</p> <p>
8130 * <code>x-amz-grant-read: emailAddress="xyz@amazon.com",
8131 * emailAddress="abc@amazon.com" </code> </p> </li> </ul> <p>You can use either a
8132 * canned ACL or specify access permissions explicitly. You cannot do both.</p> <p>
8133 * <b>Grantee Values</b> </p> <p>You can specify the person (grantee) to whom
8134 * you're assigning access rights (using request elements) in the following
8135 * ways:</p> <ul> <li> <p>By Email address:</p> <p> <code>&lt;Grantee
8136 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8137 * xsi:type="AmazonCustomerByEmail"&gt;&lt;EmailAddress&gt;&lt;&gt;Grantees@email.com&lt;&gt;&lt;/EmailAddress&gt;lt;/Grantee&gt;</code>
8138 * </p> <p>The grantee is resolved to the CanonicalUser and, in a response to a GET
8139 * Object acl request, appears as the CanonicalUser.</p> </li> <li> <p>By the
8140 * person's ID:</p> <p> <code>&lt;Grantee
8141 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8142 * xsi:type="CanonicalUser"&gt;&lt;ID&gt;&lt;&gt;ID&lt;&gt;&lt;/ID&gt;&lt;DisplayName&gt;&lt;&gt;GranteesEmail&lt;&gt;&lt;/DisplayName&gt;
8143 * &lt;/Grantee&gt;</code> </p> <p>DisplayName is optional and ignored in the
8144 * request.</p> </li> <li> <p>By URI:</p> <p> <code>&lt;Grantee
8145 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8146 * xsi:type="Group"&gt;&lt;URI&gt;&lt;&gt;http://acs.amazonaws.com/groups/global/AuthenticatedUsers&lt;&gt;&lt;/URI&gt;&lt;/Grantee&gt;</code>
8147 * </p> </li> </ul> <p> <b>Versioning</b> </p> <p>The ACL of an object is set at
8148 * the object version level. By default, PUT sets the ACL of the current version of
8149 * an object. To set the ACL of a different version, use the <code>versionId</code>
8150 * subresource.</p> <p class="title"> <b>Related Resources</b> </p> <ul> <li> <p>
8151 * <a>CopyObject</a> </p> </li> <li> <p> <a>GetObject</a> </p> </li>
8152 * </ul><p><h3>See Also:</h3> <a
8153 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl">AWS API
8154 * Reference</a></p>
8155 *
8156 * returns a future to the operation so that it can be executed in parallel to other requests.
8157 */
8158 virtual Model::PutObjectAclOutcomeCallable PutObjectAclCallable(const Model::PutObjectAclRequest& request) const;
8159
8160 /**
8161 * <p>Uses the <code>acl</code> subresource to set the access control list (ACL)
8162 * permissions for an object that already exists in a bucket. You must have
8163 * <code>WRITE_ACP</code> permission to set the ACL of an object.</p> <p>Depending
8164 * on your application needs, you can choose to set the ACL on an object using
8165 * either the request body or the headers. For example, if you have an existing
8166 * application that updates a bucket ACL using the request body, you can continue
8167 * to use that approach.</p> <p> <b>Access Permissions</b> </p> <p>You can set
8168 * access permissions using one of the following methods:</p> <ul> <li> <p>Specify
8169 * a canned ACL with the <code>x-amz-acl</code> request header. Amazon S3 supports
8170 * a set of predefined ACLs, known as canned ACLs. Each canned ACL has a predefined
8171 * set of grantees and permissions. Specify the canned ACL name as the value of
8172 * <code>x-amz-ac</code>l. If you use this header, you cannot use other access
8173 * control-specific headers in your request. For more information, see <a
8174 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
8175 * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly with the
8176 * <code>x-amz-grant-read</code>, <code>x-amz-grant-read-acp</code>,
8177 * <code>x-amz-grant-write-acp</code>, and <code>x-amz-grant-full-control</code>
8178 * headers. When using these headers, you specify explicit access permissions and
8179 * grantees (AWS accounts or Amazon S3 groups) who will receive the permission. If
8180 * you use these ACL-specific headers, you cannot use <code>x-amz-acl</code> header
8181 * to set a canned ACL. These parameters map to the set of permissions that Amazon
8182 * S3 supports in an ACL. For more information, see <a
8183 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
8184 * Control List (ACL) Overview</a>.</p> <p>You specify each grantee as a type=value
8185 * pair, where the type is one of the following:</p> <ul> <li> <p>
8186 * <code>emailAddress</code> – if the value specified is the email address of an
8187 * AWS account</p> </li> <li> <p> <code>id</code> – if the value specified is the
8188 * canonical user ID of an AWS account</p> </li> <li> <p> <code>uri</code> – if you
8189 * are granting permissions to a predefined group</p> </li> </ul> <p>For example,
8190 * the following <code>x-amz-grant-read</code> header grants list objects
8191 * permission to the two AWS accounts identified by their email addresses.</p> <p>
8192 * <code>x-amz-grant-read: emailAddress="xyz@amazon.com",
8193 * emailAddress="abc@amazon.com" </code> </p> </li> </ul> <p>You can use either a
8194 * canned ACL or specify access permissions explicitly. You cannot do both.</p> <p>
8195 * <b>Grantee Values</b> </p> <p>You can specify the person (grantee) to whom
8196 * you're assigning access rights (using request elements) in the following
8197 * ways:</p> <ul> <li> <p>By Email address:</p> <p> <code>&lt;Grantee
8198 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8199 * xsi:type="AmazonCustomerByEmail"&gt;&lt;EmailAddress&gt;&lt;&gt;Grantees@email.com&lt;&gt;&lt;/EmailAddress&gt;lt;/Grantee&gt;</code>
8200 * </p> <p>The grantee is resolved to the CanonicalUser and, in a response to a GET
8201 * Object acl request, appears as the CanonicalUser.</p> </li> <li> <p>By the
8202 * person's ID:</p> <p> <code>&lt;Grantee
8203 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8204 * xsi:type="CanonicalUser"&gt;&lt;ID&gt;&lt;&gt;ID&lt;&gt;&lt;/ID&gt;&lt;DisplayName&gt;&lt;&gt;GranteesEmail&lt;&gt;&lt;/DisplayName&gt;
8205 * &lt;/Grantee&gt;</code> </p> <p>DisplayName is optional and ignored in the
8206 * request.</p> </li> <li> <p>By URI:</p> <p> <code>&lt;Grantee
8207 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8208 * xsi:type="Group"&gt;&lt;URI&gt;&lt;&gt;http://acs.amazonaws.com/groups/global/AuthenticatedUsers&lt;&gt;&lt;/URI&gt;&lt;/Grantee&gt;</code>
8209 * </p> </li> </ul> <p> <b>Versioning</b> </p> <p>The ACL of an object is set at
8210 * the object version level. By default, PUT sets the ACL of the current version of
8211 * an object. To set the ACL of a different version, use the <code>versionId</code>
8212 * subresource.</p> <p class="title"> <b>Related Resources</b> </p> <ul> <li> <p>
8213 * <a>CopyObject</a> </p> </li> <li> <p> <a>GetObject</a> </p> </li>
8214 * </ul><p><h3>See Also:</h3> <a
8215 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl">AWS API
8216 * Reference</a></p>
8217 *
8218 * Queues the request into a thread executor and triggers associated callback when operation has finished.
8219 */
8220 virtual void PutObjectAclAsync(const Model::PutObjectAclRequest& request, const PutObjectAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
8221
8222 /**
8223 * <p>Applies a Legal Hold configuration to the specified object.</p> <p
8224 * class="title"> <b>Related Resources</b> </p> <ul> <li> <p> <a
8225 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
8226 * Objects</a> </p> </li> </ul><p><h3>See Also:</h3> <a
8227 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLegalHold">AWS
8228 * API Reference</a></p>
8229 */
8230 virtual Model::PutObjectLegalHoldOutcome PutObjectLegalHold(const Model::PutObjectLegalHoldRequest& request) const;
8231
8232 /**
8233 * <p>Applies a Legal Hold configuration to the specified object.</p> <p
8234 * class="title"> <b>Related Resources</b> </p> <ul> <li> <p> <a
8235 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
8236 * Objects</a> </p> </li> </ul><p><h3>See Also:</h3> <a
8237 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLegalHold">AWS
8238 * API Reference</a></p>
8239 *
8240 * returns a future to the operation so that it can be executed in parallel to other requests.
8241 */
8242 virtual Model::PutObjectLegalHoldOutcomeCallable PutObjectLegalHoldCallable(const Model::PutObjectLegalHoldRequest& request) const;
8243
8244 /**
8245 * <p>Applies a Legal Hold configuration to the specified object.</p> <p
8246 * class="title"> <b>Related Resources</b> </p> <ul> <li> <p> <a
8247 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
8248 * Objects</a> </p> </li> </ul><p><h3>See Also:</h3> <a
8249 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLegalHold">AWS
8250 * API Reference</a></p>
8251 *
8252 * Queues the request into a thread executor and triggers associated callback when operation has finished.
8253 */
8254 virtual void PutObjectLegalHoldAsync(const Model::PutObjectLegalHoldRequest& request, const PutObjectLegalHoldResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
8255
8256 /**
8257 * <p>Places an Object Lock configuration on the specified bucket. The rule
8258 * specified in the Object Lock configuration will be applied by default to every
8259 * new object placed in the specified bucket.</p> <note> <p>
8260 * <code>DefaultRetention</code> requires either Days or Years. You can't specify
8261 * both at the same time.</p> </note> <p class="title"> <b>Related Resources</b>
8262 * </p> <ul> <li> <p> <a
8263 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
8264 * Objects</a> </p> </li> </ul><p><h3>See Also:</h3> <a
8265 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLockConfiguration">AWS
8266 * API Reference</a></p>
8267 */
8268 virtual Model::PutObjectLockConfigurationOutcome PutObjectLockConfiguration(const Model::PutObjectLockConfigurationRequest& request) const;
8269
8270 /**
8271 * <p>Places an Object Lock configuration on the specified bucket. The rule
8272 * specified in the Object Lock configuration will be applied by default to every
8273 * new object placed in the specified bucket.</p> <note> <p>
8274 * <code>DefaultRetention</code> requires either Days or Years. You can't specify
8275 * both at the same time.</p> </note> <p class="title"> <b>Related Resources</b>
8276 * </p> <ul> <li> <p> <a
8277 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
8278 * Objects</a> </p> </li> </ul><p><h3>See Also:</h3> <a
8279 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLockConfiguration">AWS
8280 * API Reference</a></p>
8281 *
8282 * returns a future to the operation so that it can be executed in parallel to other requests.
8283 */
8284 virtual Model::PutObjectLockConfigurationOutcomeCallable PutObjectLockConfigurationCallable(const Model::PutObjectLockConfigurationRequest& request) const;
8285
8286 /**
8287 * <p>Places an Object Lock configuration on the specified bucket. The rule
8288 * specified in the Object Lock configuration will be applied by default to every
8289 * new object placed in the specified bucket.</p> <note> <p>
8290 * <code>DefaultRetention</code> requires either Days or Years. You can't specify
8291 * both at the same time.</p> </note> <p class="title"> <b>Related Resources</b>
8292 * </p> <ul> <li> <p> <a
8293 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
8294 * Objects</a> </p> </li> </ul><p><h3>See Also:</h3> <a
8295 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLockConfiguration">AWS
8296 * API Reference</a></p>
8297 *
8298 * Queues the request into a thread executor and triggers associated callback when operation has finished.
8299 */
8300 virtual void PutObjectLockConfigurationAsync(const Model::PutObjectLockConfigurationRequest& request, const PutObjectLockConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
8301
8302 /**
8303 * <p>Places an Object Retention configuration on an object.</p> <p class="title">
8304 * <b>Related Resources</b> </p> <ul> <li> <p> <a
8305 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
8306 * Objects</a> </p> </li> </ul><p><h3>See Also:</h3> <a
8307 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectRetention">AWS
8308 * API Reference</a></p>
8309 */
8310 virtual Model::PutObjectRetentionOutcome PutObjectRetention(const Model::PutObjectRetentionRequest& request) const;
8311
8312 /**
8313 * <p>Places an Object Retention configuration on an object.</p> <p class="title">
8314 * <b>Related Resources</b> </p> <ul> <li> <p> <a
8315 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
8316 * Objects</a> </p> </li> </ul><p><h3>See Also:</h3> <a
8317 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectRetention">AWS
8318 * API Reference</a></p>
8319 *
8320 * returns a future to the operation so that it can be executed in parallel to other requests.
8321 */
8322 virtual Model::PutObjectRetentionOutcomeCallable PutObjectRetentionCallable(const Model::PutObjectRetentionRequest& request) const;
8323
8324 /**
8325 * <p>Places an Object Retention configuration on an object.</p> <p class="title">
8326 * <b>Related Resources</b> </p> <ul> <li> <p> <a
8327 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
8328 * Objects</a> </p> </li> </ul><p><h3>See Also:</h3> <a
8329 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectRetention">AWS
8330 * API Reference</a></p>
8331 *
8332 * Queues the request into a thread executor and triggers associated callback when operation has finished.
8333 */
8334 virtual void PutObjectRetentionAsync(const Model::PutObjectRetentionRequest& request, const PutObjectRetentionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
8335
8336 /**
8337 * <p>Sets the supplied tag-set to an object that already exists in a bucket</p>
8338 * <p>A tag is a key-value pair. You can associate tags with an object by sending a
8339 * PUT request against the tagging subresource that is associated with the object.
8340 * You can retrieve tags by sending a GET request. For more information, see
8341 * <a>GetObjectTagging</a>.</p> <p>For tagging-related restrictions related to
8342 * characters and encodings, see <a
8343 * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html">Tag
8344 * Restrictions</a>. Note that Amazon S3 limits the maximum number of tags to 10
8345 * tags per object.</p> <p>To use this operation, you must have permission to
8346 * perform the <code>s3:PutObjectTagging</code> action. By default, the bucket
8347 * owner has this permission and can grant this permission to others.</p> <p>To put
8348 * tags of any other version, use the <code>versionId</code> query parameter. You
8349 * also need permission for the <code>s3:PutObjectVersionTagging</code> action.</p>
8350 * <p>For information about the Amazon S3 object tagging feature, see <a
8351 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html">Object
8352 * Tagging</a>.</p> <p class="title"> <b>Special Errors</b> </p> <ul> <li> <p
8353 * class="title"> <b/> </p> <ul> <li> <p> <i>Code: InvalidTagError </i> </p> </li>
8354 * <li> <p> <i>Cause: The tag provided was not a valid tag. This error can occur if
8355 * the tag did not pass input validation. For more information, see <a
8356 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html">Object
8357 * Tagging</a>.</i> </p> </li> </ul> </li> <li> <p class="title"> <b/> </p> <ul>
8358 * <li> <p> <i>Code: MalformedXMLError </i> </p> </li> <li> <p> <i>Cause: The XML
8359 * provided does not match the schema.</i> </p> </li> </ul> </li> <li> <ul> <li>
8360 * <p> <i>Code: OperationAbortedError </i> </p> </li> <li> <p> <i>Cause: A
8361 * conflicting conditional operation is currently in progress against this
8362 * resource. Please try again.</i> </p> </li> </ul> </li> <li> <ul> <li> <p>
8363 * <i>Code: InternalError</i> </p> </li> <li> <p> <i>Cause: The service was unable
8364 * to apply the provided tag to the object.</i> </p> </li> </ul> </li> </ul> <p
8365 * class="title"> <b>Related Resources</b> </p> <ul> <li> <p>
8366 * <a>GetObjectTagging</a> </p> </li> </ul><p><h3>See Also:</h3> <a
8367 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging">AWS
8368 * API Reference</a></p>
8369 */
8370 virtual Model::PutObjectTaggingOutcome PutObjectTagging(const Model::PutObjectTaggingRequest& request) const;
8371
8372 /**
8373 * <p>Sets the supplied tag-set to an object that already exists in a bucket</p>
8374 * <p>A tag is a key-value pair. You can associate tags with an object by sending a
8375 * PUT request against the tagging subresource that is associated with the object.
8376 * You can retrieve tags by sending a GET request. For more information, see
8377 * <a>GetObjectTagging</a>.</p> <p>For tagging-related restrictions related to
8378 * characters and encodings, see <a
8379 * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html">Tag
8380 * Restrictions</a>. Note that Amazon S3 limits the maximum number of tags to 10
8381 * tags per object.</p> <p>To use this operation, you must have permission to
8382 * perform the <code>s3:PutObjectTagging</code> action. By default, the bucket
8383 * owner has this permission and can grant this permission to others.</p> <p>To put
8384 * tags of any other version, use the <code>versionId</code> query parameter. You
8385 * also need permission for the <code>s3:PutObjectVersionTagging</code> action.</p>
8386 * <p>For information about the Amazon S3 object tagging feature, see <a
8387 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html">Object
8388 * Tagging</a>.</p> <p class="title"> <b>Special Errors</b> </p> <ul> <li> <p
8389 * class="title"> <b/> </p> <ul> <li> <p> <i>Code: InvalidTagError </i> </p> </li>
8390 * <li> <p> <i>Cause: The tag provided was not a valid tag. This error can occur if
8391 * the tag did not pass input validation. For more information, see <a
8392 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html">Object
8393 * Tagging</a>.</i> </p> </li> </ul> </li> <li> <p class="title"> <b/> </p> <ul>
8394 * <li> <p> <i>Code: MalformedXMLError </i> </p> </li> <li> <p> <i>Cause: The XML
8395 * provided does not match the schema.</i> </p> </li> </ul> </li> <li> <ul> <li>
8396 * <p> <i>Code: OperationAbortedError </i> </p> </li> <li> <p> <i>Cause: A
8397 * conflicting conditional operation is currently in progress against this
8398 * resource. Please try again.</i> </p> </li> </ul> </li> <li> <ul> <li> <p>
8399 * <i>Code: InternalError</i> </p> </li> <li> <p> <i>Cause: The service was unable
8400 * to apply the provided tag to the object.</i> </p> </li> </ul> </li> </ul> <p
8401 * class="title"> <b>Related Resources</b> </p> <ul> <li> <p>
8402 * <a>GetObjectTagging</a> </p> </li> </ul><p><h3>See Also:</h3> <a
8403 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging">AWS
8404 * API Reference</a></p>
8405 *
8406 * returns a future to the operation so that it can be executed in parallel to other requests.
8407 */
8408 virtual Model::PutObjectTaggingOutcomeCallable PutObjectTaggingCallable(const Model::PutObjectTaggingRequest& request) const;
8409
8410 /**
8411 * <p>Sets the supplied tag-set to an object that already exists in a bucket</p>
8412 * <p>A tag is a key-value pair. You can associate tags with an object by sending a
8413 * PUT request against the tagging subresource that is associated with the object.
8414 * You can retrieve tags by sending a GET request. For more information, see
8415 * <a>GetObjectTagging</a>.</p> <p>For tagging-related restrictions related to
8416 * characters and encodings, see <a
8417 * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html">Tag
8418 * Restrictions</a>. Note that Amazon S3 limits the maximum number of tags to 10
8419 * tags per object.</p> <p>To use this operation, you must have permission to
8420 * perform the <code>s3:PutObjectTagging</code> action. By default, the bucket
8421 * owner has this permission and can grant this permission to others.</p> <p>To put
8422 * tags of any other version, use the <code>versionId</code> query parameter. You
8423 * also need permission for the <code>s3:PutObjectVersionTagging</code> action.</p>
8424 * <p>For information about the Amazon S3 object tagging feature, see <a
8425 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html">Object
8426 * Tagging</a>.</p> <p class="title"> <b>Special Errors</b> </p> <ul> <li> <p
8427 * class="title"> <b/> </p> <ul> <li> <p> <i>Code: InvalidTagError </i> </p> </li>
8428 * <li> <p> <i>Cause: The tag provided was not a valid tag. This error can occur if
8429 * the tag did not pass input validation. For more information, see <a
8430 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html">Object
8431 * Tagging</a>.</i> </p> </li> </ul> </li> <li> <p class="title"> <b/> </p> <ul>
8432 * <li> <p> <i>Code: MalformedXMLError </i> </p> </li> <li> <p> <i>Cause: The XML
8433 * provided does not match the schema.</i> </p> </li> </ul> </li> <li> <ul> <li>
8434 * <p> <i>Code: OperationAbortedError </i> </p> </li> <li> <p> <i>Cause: A
8435 * conflicting conditional operation is currently in progress against this
8436 * resource. Please try again.</i> </p> </li> </ul> </li> <li> <ul> <li> <p>
8437 * <i>Code: InternalError</i> </p> </li> <li> <p> <i>Cause: The service was unable
8438 * to apply the provided tag to the object.</i> </p> </li> </ul> </li> </ul> <p
8439 * class="title"> <b>Related Resources</b> </p> <ul> <li> <p>
8440 * <a>GetObjectTagging</a> </p> </li> </ul><p><h3>See Also:</h3> <a
8441 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging">AWS
8442 * API Reference</a></p>
8443 *
8444 * Queues the request into a thread executor and triggers associated callback when operation has finished.
8445 */
8446 virtual void PutObjectTaggingAsync(const Model::PutObjectTaggingRequest& request, const PutObjectTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
8447
8448 /**
8449 * <p>Creates or modifies the <code>PublicAccessBlock</code> configuration for an
8450 * Amazon S3 bucket. To use this operation, you must have the
8451 * <code>s3:PutBucketPublicAccessBlock</code> permission. For more information
8452 * about Amazon S3 permissions, see <a
8453 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
8454 * Permissions in a Policy</a>.</p> <important> <p>When Amazon S3 evaluates the
8455 * <code>PublicAccessBlock</code> configuration for a bucket or an object, it
8456 * checks the <code>PublicAccessBlock</code> configuration for both the bucket (or
8457 * the bucket that contains the object) and the bucket owner's account. If the
8458 * <code>PublicAccessBlock</code> configurations are different between the bucket
8459 * and the account, Amazon S3 uses the most restrictive combination of the
8460 * bucket-level and account-level settings.</p> </important> <p>For more
8461 * information about when Amazon S3 considers a bucket or an object public, see <a
8462 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status">The
8463 * Meaning of "Public"</a>.</p> <p class="title"> <b>Related Resources</b> </p>
8464 * <ul> <li> <p> <a>GetPublicAccessBlock</a> </p> </li> <li> <p>
8465 * <a>DeletePublicAccessBlock</a> </p> </li> <li> <p> <a>GetBucketPolicyStatus</a>
8466 * </p> </li> <li> <p> <a
8467 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html">Using
8468 * Amazon S3 Block Public Access</a> </p> </li> </ul><p><h3>See Also:</h3> <a
8469 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutPublicAccessBlock">AWS
8470 * API Reference</a></p>
8471 */
8472 virtual Model::PutPublicAccessBlockOutcome PutPublicAccessBlock(const Model::PutPublicAccessBlockRequest& request) const;
8473
8474 /**
8475 * <p>Creates or modifies the <code>PublicAccessBlock</code> configuration for an
8476 * Amazon S3 bucket. To use this operation, you must have the
8477 * <code>s3:PutBucketPublicAccessBlock</code> permission. For more information
8478 * about Amazon S3 permissions, see <a
8479 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
8480 * Permissions in a Policy</a>.</p> <important> <p>When Amazon S3 evaluates the
8481 * <code>PublicAccessBlock</code> configuration for a bucket or an object, it
8482 * checks the <code>PublicAccessBlock</code> configuration for both the bucket (or
8483 * the bucket that contains the object) and the bucket owner's account. If the
8484 * <code>PublicAccessBlock</code> configurations are different between the bucket
8485 * and the account, Amazon S3 uses the most restrictive combination of the
8486 * bucket-level and account-level settings.</p> </important> <p>For more
8487 * information about when Amazon S3 considers a bucket or an object public, see <a
8488 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status">The
8489 * Meaning of "Public"</a>.</p> <p class="title"> <b>Related Resources</b> </p>
8490 * <ul> <li> <p> <a>GetPublicAccessBlock</a> </p> </li> <li> <p>
8491 * <a>DeletePublicAccessBlock</a> </p> </li> <li> <p> <a>GetBucketPolicyStatus</a>
8492 * </p> </li> <li> <p> <a
8493 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html">Using
8494 * Amazon S3 Block Public Access</a> </p> </li> </ul><p><h3>See Also:</h3> <a
8495 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutPublicAccessBlock">AWS
8496 * API Reference</a></p>
8497 *
8498 * returns a future to the operation so that it can be executed in parallel to other requests.
8499 */
8500 virtual Model::PutPublicAccessBlockOutcomeCallable PutPublicAccessBlockCallable(const Model::PutPublicAccessBlockRequest& request) const;
8501
8502 /**
8503 * <p>Creates or modifies the <code>PublicAccessBlock</code> configuration for an
8504 * Amazon S3 bucket. To use this operation, you must have the
8505 * <code>s3:PutBucketPublicAccessBlock</code> permission. For more information
8506 * about Amazon S3 permissions, see <a
8507 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
8508 * Permissions in a Policy</a>.</p> <important> <p>When Amazon S3 evaluates the
8509 * <code>PublicAccessBlock</code> configuration for a bucket or an object, it
8510 * checks the <code>PublicAccessBlock</code> configuration for both the bucket (or
8511 * the bucket that contains the object) and the bucket owner's account. If the
8512 * <code>PublicAccessBlock</code> configurations are different between the bucket
8513 * and the account, Amazon S3 uses the most restrictive combination of the
8514 * bucket-level and account-level settings.</p> </important> <p>For more
8515 * information about when Amazon S3 considers a bucket or an object public, see <a
8516 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status">The
8517 * Meaning of "Public"</a>.</p> <p class="title"> <b>Related Resources</b> </p>
8518 * <ul> <li> <p> <a>GetPublicAccessBlock</a> </p> </li> <li> <p>
8519 * <a>DeletePublicAccessBlock</a> </p> </li> <li> <p> <a>GetBucketPolicyStatus</a>
8520 * </p> </li> <li> <p> <a
8521 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html">Using
8522 * Amazon S3 Block Public Access</a> </p> </li> </ul><p><h3>See Also:</h3> <a
8523 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutPublicAccessBlock">AWS
8524 * API Reference</a></p>
8525 *
8526 * Queues the request into a thread executor and triggers associated callback when operation has finished.
8527 */
8528 virtual void PutPublicAccessBlockAsync(const Model::PutPublicAccessBlockRequest& request, const PutPublicAccessBlockResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
8529
8530 /**
8531 * <p>Restores an archived copy of an object back into Amazon S3</p> <p>This
8532 * operation performs the following types of requests: </p> <ul> <li> <p>
8533 * <code>select</code> - Perform a select query on an archived object</p> </li>
8534 * <li> <p> <code>restore an archive</code> - Restore an archived object</p> </li>
8535 * </ul> <p>To use this operation, you must have permissions to perform the
8536 * <code>s3:RestoreObject</code> and <code>s3:GetObject</code> actions. The bucket
8537 * owner has this permission by default and can grant this permission to others.
8538 * For more information about permissions, see <a
8539 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
8540 * Related to Bucket Subresource Operations</a> and <a
8541 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
8542 * Access Permissions to Your Amazon S3 Resources</a> in the <i>Amazon Simple
8543 * Storage Service Developer Guide</i>.</p> <p> <b>Querying Archives with Select
8544 * Requests</b> </p> <p>You use a select type of request to perform SQL queries on
8545 * archived objects. The archived objects that are being queried by the select
8546 * request must be formatted as uncompressed comma-separated values (CSV) files.
8547 * You can run queries and custom analytics on your archived data without having to
8548 * restore your data to a hotter Amazon S3 tier. For an overview about select
8549 * requests, see <a
8550 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html">Querying
8551 * Archived Objects</a> in the <i>Amazon Simple Storage Service Developer
8552 * Guide</i>.</p> <p>When making a select request, do the following:</p> <ul> <li>
8553 * <p>Define an output location for the select query's output. This must be an
8554 * Amazon S3 bucket in the same AWS Region as the bucket that contains the archive
8555 * object that is being queried. The AWS account that initiates the job must have
8556 * permissions to write to the S3 bucket. You can specify the storage class and
8557 * encryption for the output objects stored in the bucket. For more information
8558 * about output, see <a
8559 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html">Querying
8560 * Archived Objects</a> in the <i>Amazon Simple Storage Service Developer
8561 * Guide</i>.</p> <p>For more information about the <code>S3</code> structure in
8562 * the request body, see the following:</p> <ul> <li> <p> <a>PutObject</a> </p>
8563 * </li> <li> <p> <a
8564 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Managing
8565 * Access with ACLs</a> in the <i>Amazon Simple Storage Service Developer Guide</i>
8566 * </p> </li> <li> <p> <a
8567 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html">Protecting
8568 * Data Using Server-Side Encryption</a> in the <i>Amazon Simple Storage Service
8569 * Developer Guide</i> </p> </li> </ul> </li> <li> <p>Define the SQL expression for
8570 * the <code>SELECT</code> type of restoration for your query in the request body's
8571 * <code>SelectParameters</code> structure. You can use expressions like the
8572 * following examples.</p> <ul> <li> <p>The following expression returns all
8573 * records from the specified object.</p> <p> <code>SELECT * FROM Object</code>
8574 * </p> </li> <li> <p>Assuming that you are not using any headers for data stored
8575 * in the object, you can specify columns with positional headers.</p> <p>
8576 * <code>SELECT s._1, s._2 FROM Object s WHERE s._3 &gt; 100</code> </p> </li> <li>
8577 * <p>If you have headers and you set the <code>fileHeaderInfo</code> in the
8578 * <code>CSV</code> structure in the request body to <code>USE</code>, you can
8579 * specify headers in the query. (If you set the <code>fileHeaderInfo</code> field
8580 * to <code>IGNORE</code>, the first row is skipped for the query.) You cannot mix
8581 * ordinal positions with header column names. </p> <p> <code>SELECT s.Id,
8582 * s.FirstName, s.SSN FROM S3Object s</code> </p> </li> </ul> </li> </ul> <p>For
8583 * more information about using SQL with Glacier Select restore, see <a
8584 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html">SQL
8585 * Reference for Amazon S3 Select and Glacier Select</a> in the <i>Amazon Simple
8586 * Storage Service Developer Guide</i>. </p> <p>When making a select request, you
8587 * can also do the following:</p> <ul> <li> <p>To expedite your queries, specify
8588 * the <code>Expedited</code> tier. For more information about tiers, see
8589 * "Restoring Archives," later in this topic.</p> </li> <li> <p>Specify details
8590 * about the data serialization format of both the input object that is being
8591 * queried and the serialization of the CSV-encoded query results.</p> </li> </ul>
8592 * <p>The following are additional important facts about the select feature:</p>
8593 * <ul> <li> <p>The output results are new Amazon S3 objects. Unlike archive
8594 * retrievals, they are stored until explicitly deleted-manually or through a
8595 * lifecycle policy.</p> </li> <li> <p>You can issue more than one select request
8596 * on the same Amazon S3 object. Amazon S3 doesn't deduplicate requests, so avoid
8597 * issuing duplicate requests.</p> </li> <li> <p> Amazon S3 accepts a select
8598 * request even if the object has already been restored. A select request doesn’t
8599 * return error response <code>409</code>.</p> </li> </ul> <p> <b>Restoring
8600 * Archives</b> </p> <p>Objects in the GLACIER and DEEP_ARCHIVE storage classes are
8601 * archived. To access an archived object, you must first initiate a restore
8602 * request. This restores a temporary copy of the archived object. In a restore
8603 * request, you specify the number of days that you want the restored copy to
8604 * exist. After the specified period, Amazon S3 deletes the temporary copy but the
8605 * object remains archived in the GLACIER or DEEP_ARCHIVE storage class that object
8606 * was restored from. </p> <p>To restore a specific object version, you can provide
8607 * a version ID. If you don't provide a version ID, Amazon S3 restores the current
8608 * version.</p> <p>The time it takes restore jobs to finish depends on which
8609 * storage class the object is being restored from and which data access tier you
8610 * specify. </p> <p>When restoring an archived object (or using a select request),
8611 * you can specify one of the following data access tier options in the
8612 * <code>Tier</code> element of the request body: </p> <ul> <li> <p> <b>
8613 * <code>Expedited</code> </b> - Expedited retrievals allow you to quickly access
8614 * your data stored in the GLACIER storage class when occasional urgent requests
8615 * for a subset of archives are required. For all but the largest archived objects
8616 * (250 MB+), data accessed using Expedited retrievals are typically made available
8617 * within 1–5 minutes. Provisioned capacity ensures that retrieval capacity for
8618 * Expedited retrievals is available when you need it. Expedited retrievals and
8619 * provisioned capacity are not available for the DEEP_ARCHIVE storage class.</p>
8620 * </li> <li> <p> <b> <code>Standard</code> </b> - Standard retrievals allow you to
8621 * access any of your archived objects within several hours. This is the default
8622 * option for the GLACIER and DEEP_ARCHIVE retrieval requests that do not specify
8623 * the retrieval option. Standard retrievals typically complete within 3-5 hours
8624 * from the GLACIER storage class and typically complete within 12 hours from the
8625 * DEEP_ARCHIVE storage class. </p> </li> <li> <p> <b> <code>Bulk</code> </b> -
8626 * Bulk retrievals are Amazon S3 Glacier’s lowest-cost retrieval option, enabling
8627 * you to retrieve large amounts, even petabytes, of data inexpensively in a day.
8628 * Bulk retrievals typically complete within 5-12 hours from the GLACIER storage
8629 * class and typically complete within 48 hours from the DEEP_ARCHIVE storage
8630 * class.</p> </li> </ul> <p>For more information about archive retrieval options
8631 * and provisioned capacity for <code>Expedited</code> data access, see <a
8632 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html">Restoring
8633 * Archived Objects</a> in the <i>Amazon Simple Storage Service Developer
8634 * Guide</i>. </p> <p>You can use Amazon S3 restore speed upgrade to change the
8635 * restore speed to a faster speed while it is in progress. You upgrade the speed
8636 * of an in-progress restoration by issuing another restore request to the same
8637 * object, setting a new <code>Tier</code> request element. When issuing a request
8638 * to upgrade the restore tier, you must choose a tier that is faster than the tier
8639 * that the in-progress restore is using. You must not change any other parameters,
8640 * such as the <code>Days</code> request element. For more information, see <a
8641 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html#restoring-objects-upgrade-tier.title.html">
8642 * Upgrading the Speed of an In-Progress Restore</a> in the <i>Amazon Simple
8643 * Storage Service Developer Guide</i>. </p> <p>To get the status of object
8644 * restoration, you can send a <code>HEAD</code> request. Operations return the
8645 * <code>x-amz-restore</code> header, which provides information about the
8646 * restoration status, in the response. You can use Amazon S3 event notifications
8647 * to notify you when a restore is initiated or completed. For more information,
8648 * see <a
8649 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Configuring
8650 * Amazon S3 Event Notifications</a> in the <i>Amazon Simple Storage Service
8651 * Developer Guide</i>.</p> <p>After restoring an archived object, you can update
8652 * the restoration period by reissuing the request with a new period. Amazon S3
8653 * updates the restoration period relative to the current time and charges only for
8654 * the request-there are no data transfer charges. You cannot update the
8655 * restoration period when Amazon S3 is actively processing your current restore
8656 * request for the object.</p> <p>If your bucket has a lifecycle configuration with
8657 * a rule that includes an expiration action, the object expiration overrides the
8658 * life span that you specify in a restore request. For example, if you restore an
8659 * object copy for 10 days, but the object is scheduled to expire in 3 days, Amazon
8660 * S3 deletes the object in 3 days. For more information about lifecycle
8661 * configuration, see <a>PutBucketLifecycleConfiguration</a> and <a
8662 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html">Object
8663 * Lifecycle Management</a> in <i>Amazon Simple Storage Service Developer
8664 * Guide</i>.</p> <p> <b>Responses</b> </p> <p>A successful operation returns
8665 * either the <code>200 OK</code> or <code>202 Accepted</code> status code. </p>
8666 * <ul> <li> <p>If the object copy is not previously restored, then Amazon S3
8667 * returns <code>202 Accepted</code> in the response. </p> </li> <li> <p>If the
8668 * object copy is previously restored, Amazon S3 returns <code>200 OK</code> in the
8669 * response. </p> </li> </ul> <p class="title"> <b>Special Errors</b> </p> <ul>
8670 * <li> <p class="title"> <b/> </p> <ul> <li> <p> <i>Code:
8671 * RestoreAlreadyInProgress</i> </p> </li> <li> <p> <i>Cause: Object restore is
8672 * already in progress. (This error does not apply to SELECT type requests.)</i>
8673 * </p> </li> <li> <p> <i>HTTP Status Code: 409 Conflict</i> </p> </li> <li> <p>
8674 * <i>SOAP Fault Code Prefix: Client</i> </p> </li> </ul> </li> <li> <p
8675 * class="title"> <b/> </p> <ul> <li> <p> <i>Code:
8676 * GlacierExpeditedRetrievalNotAvailable</i> </p> </li> <li> <p> <i>Cause: Glacier
8677 * expedited retrievals are currently not available. Try again later. (Returned if
8678 * there is insufficient capacity to process the Expedited request. This error
8679 * applies only to Expedited retrievals and not to Standard or Bulk
8680 * retrievals.)</i> </p> </li> <li> <p> <i>HTTP Status Code: 503</i> </p> </li>
8681 * <li> <p> <i>SOAP Fault Code Prefix: N/A</i> </p> </li> </ul> </li> </ul> <p
8682 * class="title"> <b>Related Resources</b> </p> <ul> <li> <p>
8683 * <a>PutBucketLifecycleConfiguration</a> </p> </li> <li> <p>
8684 * <a>GetBucketNotificationConfiguration</a> </p> </li> <li> <p> <a
8685 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html">SQL
8686 * Reference for Amazon S3 Select and Glacier Select </a> in the <i>Amazon Simple
8687 * Storage Service Developer Guide</i> </p> </li> </ul><p><h3>See Also:</h3> <a
8688 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject">AWS
8689 * API Reference</a></p>
8690 */
8691 virtual Model::RestoreObjectOutcome RestoreObject(const Model::RestoreObjectRequest& request) const;
8692
8693 /**
8694 * <p>Restores an archived copy of an object back into Amazon S3</p> <p>This
8695 * operation performs the following types of requests: </p> <ul> <li> <p>
8696 * <code>select</code> - Perform a select query on an archived object</p> </li>
8697 * <li> <p> <code>restore an archive</code> - Restore an archived object</p> </li>
8698 * </ul> <p>To use this operation, you must have permissions to perform the
8699 * <code>s3:RestoreObject</code> and <code>s3:GetObject</code> actions. The bucket
8700 * owner has this permission by default and can grant this permission to others.
8701 * For more information about permissions, see <a
8702 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
8703 * Related to Bucket Subresource Operations</a> and <a
8704 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
8705 * Access Permissions to Your Amazon S3 Resources</a> in the <i>Amazon Simple
8706 * Storage Service Developer Guide</i>.</p> <p> <b>Querying Archives with Select
8707 * Requests</b> </p> <p>You use a select type of request to perform SQL queries on
8708 * archived objects. The archived objects that are being queried by the select
8709 * request must be formatted as uncompressed comma-separated values (CSV) files.
8710 * You can run queries and custom analytics on your archived data without having to
8711 * restore your data to a hotter Amazon S3 tier. For an overview about select
8712 * requests, see <a
8713 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html">Querying
8714 * Archived Objects</a> in the <i>Amazon Simple Storage Service Developer
8715 * Guide</i>.</p> <p>When making a select request, do the following:</p> <ul> <li>
8716 * <p>Define an output location for the select query's output. This must be an
8717 * Amazon S3 bucket in the same AWS Region as the bucket that contains the archive
8718 * object that is being queried. The AWS account that initiates the job must have
8719 * permissions to write to the S3 bucket. You can specify the storage class and
8720 * encryption for the output objects stored in the bucket. For more information
8721 * about output, see <a
8722 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html">Querying
8723 * Archived Objects</a> in the <i>Amazon Simple Storage Service Developer
8724 * Guide</i>.</p> <p>For more information about the <code>S3</code> structure in
8725 * the request body, see the following:</p> <ul> <li> <p> <a>PutObject</a> </p>
8726 * </li> <li> <p> <a
8727 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Managing
8728 * Access with ACLs</a> in the <i>Amazon Simple Storage Service Developer Guide</i>
8729 * </p> </li> <li> <p> <a
8730 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html">Protecting
8731 * Data Using Server-Side Encryption</a> in the <i>Amazon Simple Storage Service
8732 * Developer Guide</i> </p> </li> </ul> </li> <li> <p>Define the SQL expression for
8733 * the <code>SELECT</code> type of restoration for your query in the request body's
8734 * <code>SelectParameters</code> structure. You can use expressions like the
8735 * following examples.</p> <ul> <li> <p>The following expression returns all
8736 * records from the specified object.</p> <p> <code>SELECT * FROM Object</code>
8737 * </p> </li> <li> <p>Assuming that you are not using any headers for data stored
8738 * in the object, you can specify columns with positional headers.</p> <p>
8739 * <code>SELECT s._1, s._2 FROM Object s WHERE s._3 &gt; 100</code> </p> </li> <li>
8740 * <p>If you have headers and you set the <code>fileHeaderInfo</code> in the
8741 * <code>CSV</code> structure in the request body to <code>USE</code>, you can
8742 * specify headers in the query. (If you set the <code>fileHeaderInfo</code> field
8743 * to <code>IGNORE</code>, the first row is skipped for the query.) You cannot mix
8744 * ordinal positions with header column names. </p> <p> <code>SELECT s.Id,
8745 * s.FirstName, s.SSN FROM S3Object s</code> </p> </li> </ul> </li> </ul> <p>For
8746 * more information about using SQL with Glacier Select restore, see <a
8747 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html">SQL
8748 * Reference for Amazon S3 Select and Glacier Select</a> in the <i>Amazon Simple
8749 * Storage Service Developer Guide</i>. </p> <p>When making a select request, you
8750 * can also do the following:</p> <ul> <li> <p>To expedite your queries, specify
8751 * the <code>Expedited</code> tier. For more information about tiers, see
8752 * "Restoring Archives," later in this topic.</p> </li> <li> <p>Specify details
8753 * about the data serialization format of both the input object that is being
8754 * queried and the serialization of the CSV-encoded query results.</p> </li> </ul>
8755 * <p>The following are additional important facts about the select feature:</p>
8756 * <ul> <li> <p>The output results are new Amazon S3 objects. Unlike archive
8757 * retrievals, they are stored until explicitly deleted-manually or through a
8758 * lifecycle policy.</p> </li> <li> <p>You can issue more than one select request
8759 * on the same Amazon S3 object. Amazon S3 doesn't deduplicate requests, so avoid
8760 * issuing duplicate requests.</p> </li> <li> <p> Amazon S3 accepts a select
8761 * request even if the object has already been restored. A select request doesn’t
8762 * return error response <code>409</code>.</p> </li> </ul> <p> <b>Restoring
8763 * Archives</b> </p> <p>Objects in the GLACIER and DEEP_ARCHIVE storage classes are
8764 * archived. To access an archived object, you must first initiate a restore
8765 * request. This restores a temporary copy of the archived object. In a restore
8766 * request, you specify the number of days that you want the restored copy to
8767 * exist. After the specified period, Amazon S3 deletes the temporary copy but the
8768 * object remains archived in the GLACIER or DEEP_ARCHIVE storage class that object
8769 * was restored from. </p> <p>To restore a specific object version, you can provide
8770 * a version ID. If you don't provide a version ID, Amazon S3 restores the current
8771 * version.</p> <p>The time it takes restore jobs to finish depends on which
8772 * storage class the object is being restored from and which data access tier you
8773 * specify. </p> <p>When restoring an archived object (or using a select request),
8774 * you can specify one of the following data access tier options in the
8775 * <code>Tier</code> element of the request body: </p> <ul> <li> <p> <b>
8776 * <code>Expedited</code> </b> - Expedited retrievals allow you to quickly access
8777 * your data stored in the GLACIER storage class when occasional urgent requests
8778 * for a subset of archives are required. For all but the largest archived objects
8779 * (250 MB+), data accessed using Expedited retrievals are typically made available
8780 * within 1–5 minutes. Provisioned capacity ensures that retrieval capacity for
8781 * Expedited retrievals is available when you need it. Expedited retrievals and
8782 * provisioned capacity are not available for the DEEP_ARCHIVE storage class.</p>
8783 * </li> <li> <p> <b> <code>Standard</code> </b> - Standard retrievals allow you to
8784 * access any of your archived objects within several hours. This is the default
8785 * option for the GLACIER and DEEP_ARCHIVE retrieval requests that do not specify
8786 * the retrieval option. Standard retrievals typically complete within 3-5 hours
8787 * from the GLACIER storage class and typically complete within 12 hours from the
8788 * DEEP_ARCHIVE storage class. </p> </li> <li> <p> <b> <code>Bulk</code> </b> -
8789 * Bulk retrievals are Amazon S3 Glacier’s lowest-cost retrieval option, enabling
8790 * you to retrieve large amounts, even petabytes, of data inexpensively in a day.
8791 * Bulk retrievals typically complete within 5-12 hours from the GLACIER storage
8792 * class and typically complete within 48 hours from the DEEP_ARCHIVE storage
8793 * class.</p> </li> </ul> <p>For more information about archive retrieval options
8794 * and provisioned capacity for <code>Expedited</code> data access, see <a
8795 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html">Restoring
8796 * Archived Objects</a> in the <i>Amazon Simple Storage Service Developer
8797 * Guide</i>. </p> <p>You can use Amazon S3 restore speed upgrade to change the
8798 * restore speed to a faster speed while it is in progress. You upgrade the speed
8799 * of an in-progress restoration by issuing another restore request to the same
8800 * object, setting a new <code>Tier</code> request element. When issuing a request
8801 * to upgrade the restore tier, you must choose a tier that is faster than the tier
8802 * that the in-progress restore is using. You must not change any other parameters,
8803 * such as the <code>Days</code> request element. For more information, see <a
8804 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html#restoring-objects-upgrade-tier.title.html">
8805 * Upgrading the Speed of an In-Progress Restore</a> in the <i>Amazon Simple
8806 * Storage Service Developer Guide</i>. </p> <p>To get the status of object
8807 * restoration, you can send a <code>HEAD</code> request. Operations return the
8808 * <code>x-amz-restore</code> header, which provides information about the
8809 * restoration status, in the response. You can use Amazon S3 event notifications
8810 * to notify you when a restore is initiated or completed. For more information,
8811 * see <a
8812 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Configuring
8813 * Amazon S3 Event Notifications</a> in the <i>Amazon Simple Storage Service
8814 * Developer Guide</i>.</p> <p>After restoring an archived object, you can update
8815 * the restoration period by reissuing the request with a new period. Amazon S3
8816 * updates the restoration period relative to the current time and charges only for
8817 * the request-there are no data transfer charges. You cannot update the
8818 * restoration period when Amazon S3 is actively processing your current restore
8819 * request for the object.</p> <p>If your bucket has a lifecycle configuration with
8820 * a rule that includes an expiration action, the object expiration overrides the
8821 * life span that you specify in a restore request. For example, if you restore an
8822 * object copy for 10 days, but the object is scheduled to expire in 3 days, Amazon
8823 * S3 deletes the object in 3 days. For more information about lifecycle
8824 * configuration, see <a>PutBucketLifecycleConfiguration</a> and <a
8825 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html">Object
8826 * Lifecycle Management</a> in <i>Amazon Simple Storage Service Developer
8827 * Guide</i>.</p> <p> <b>Responses</b> </p> <p>A successful operation returns
8828 * either the <code>200 OK</code> or <code>202 Accepted</code> status code. </p>
8829 * <ul> <li> <p>If the object copy is not previously restored, then Amazon S3
8830 * returns <code>202 Accepted</code> in the response. </p> </li> <li> <p>If the
8831 * object copy is previously restored, Amazon S3 returns <code>200 OK</code> in the
8832 * response. </p> </li> </ul> <p class="title"> <b>Special Errors</b> </p> <ul>
8833 * <li> <p class="title"> <b/> </p> <ul> <li> <p> <i>Code:
8834 * RestoreAlreadyInProgress</i> </p> </li> <li> <p> <i>Cause: Object restore is
8835 * already in progress. (This error does not apply to SELECT type requests.)</i>
8836 * </p> </li> <li> <p> <i>HTTP Status Code: 409 Conflict</i> </p> </li> <li> <p>
8837 * <i>SOAP Fault Code Prefix: Client</i> </p> </li> </ul> </li> <li> <p
8838 * class="title"> <b/> </p> <ul> <li> <p> <i>Code:
8839 * GlacierExpeditedRetrievalNotAvailable</i> </p> </li> <li> <p> <i>Cause: Glacier
8840 * expedited retrievals are currently not available. Try again later. (Returned if
8841 * there is insufficient capacity to process the Expedited request. This error
8842 * applies only to Expedited retrievals and not to Standard or Bulk
8843 * retrievals.)</i> </p> </li> <li> <p> <i>HTTP Status Code: 503</i> </p> </li>
8844 * <li> <p> <i>SOAP Fault Code Prefix: N/A</i> </p> </li> </ul> </li> </ul> <p
8845 * class="title"> <b>Related Resources</b> </p> <ul> <li> <p>
8846 * <a>PutBucketLifecycleConfiguration</a> </p> </li> <li> <p>
8847 * <a>GetBucketNotificationConfiguration</a> </p> </li> <li> <p> <a
8848 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html">SQL
8849 * Reference for Amazon S3 Select and Glacier Select </a> in the <i>Amazon Simple
8850 * Storage Service Developer Guide</i> </p> </li> </ul><p><h3>See Also:</h3> <a
8851 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject">AWS
8852 * API Reference</a></p>
8853 *
8854 * returns a future to the operation so that it can be executed in parallel to other requests.
8855 */
8856 virtual Model::RestoreObjectOutcomeCallable RestoreObjectCallable(const Model::RestoreObjectRequest& request) const;
8857
8858 /**
8859 * <p>Restores an archived copy of an object back into Amazon S3</p> <p>This
8860 * operation performs the following types of requests: </p> <ul> <li> <p>
8861 * <code>select</code> - Perform a select query on an archived object</p> </li>
8862 * <li> <p> <code>restore an archive</code> - Restore an archived object</p> </li>
8863 * </ul> <p>To use this operation, you must have permissions to perform the
8864 * <code>s3:RestoreObject</code> and <code>s3:GetObject</code> actions. The bucket
8865 * owner has this permission by default and can grant this permission to others.
8866 * For more information about permissions, see <a
8867 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
8868 * Related to Bucket Subresource Operations</a> and <a
8869 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Managing
8870 * Access Permissions to Your Amazon S3 Resources</a> in the <i>Amazon Simple
8871 * Storage Service Developer Guide</i>.</p> <p> <b>Querying Archives with Select
8872 * Requests</b> </p> <p>You use a select type of request to perform SQL queries on
8873 * archived objects. The archived objects that are being queried by the select
8874 * request must be formatted as uncompressed comma-separated values (CSV) files.
8875 * You can run queries and custom analytics on your archived data without having to
8876 * restore your data to a hotter Amazon S3 tier. For an overview about select
8877 * requests, see <a
8878 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html">Querying
8879 * Archived Objects</a> in the <i>Amazon Simple Storage Service Developer
8880 * Guide</i>.</p> <p>When making a select request, do the following:</p> <ul> <li>
8881 * <p>Define an output location for the select query's output. This must be an
8882 * Amazon S3 bucket in the same AWS Region as the bucket that contains the archive
8883 * object that is being queried. The AWS account that initiates the job must have
8884 * permissions to write to the S3 bucket. You can specify the storage class and
8885 * encryption for the output objects stored in the bucket. For more information
8886 * about output, see <a
8887 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html">Querying
8888 * Archived Objects</a> in the <i>Amazon Simple Storage Service Developer
8889 * Guide</i>.</p> <p>For more information about the <code>S3</code> structure in
8890 * the request body, see the following:</p> <ul> <li> <p> <a>PutObject</a> </p>
8891 * </li> <li> <p> <a
8892 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Managing
8893 * Access with ACLs</a> in the <i>Amazon Simple Storage Service Developer Guide</i>
8894 * </p> </li> <li> <p> <a
8895 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html">Protecting
8896 * Data Using Server-Side Encryption</a> in the <i>Amazon Simple Storage Service
8897 * Developer Guide</i> </p> </li> </ul> </li> <li> <p>Define the SQL expression for
8898 * the <code>SELECT</code> type of restoration for your query in the request body's
8899 * <code>SelectParameters</code> structure. You can use expressions like the
8900 * following examples.</p> <ul> <li> <p>The following expression returns all
8901 * records from the specified object.</p> <p> <code>SELECT * FROM Object</code>
8902 * </p> </li> <li> <p>Assuming that you are not using any headers for data stored
8903 * in the object, you can specify columns with positional headers.</p> <p>
8904 * <code>SELECT s._1, s._2 FROM Object s WHERE s._3 &gt; 100</code> </p> </li> <li>
8905 * <p>If you have headers and you set the <code>fileHeaderInfo</code> in the
8906 * <code>CSV</code> structure in the request body to <code>USE</code>, you can
8907 * specify headers in the query. (If you set the <code>fileHeaderInfo</code> field
8908 * to <code>IGNORE</code>, the first row is skipped for the query.) You cannot mix
8909 * ordinal positions with header column names. </p> <p> <code>SELECT s.Id,
8910 * s.FirstName, s.SSN FROM S3Object s</code> </p> </li> </ul> </li> </ul> <p>For
8911 * more information about using SQL with Glacier Select restore, see <a
8912 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html">SQL
8913 * Reference for Amazon S3 Select and Glacier Select</a> in the <i>Amazon Simple
8914 * Storage Service Developer Guide</i>. </p> <p>When making a select request, you
8915 * can also do the following:</p> <ul> <li> <p>To expedite your queries, specify
8916 * the <code>Expedited</code> tier. For more information about tiers, see
8917 * "Restoring Archives," later in this topic.</p> </li> <li> <p>Specify details
8918 * about the data serialization format of both the input object that is being
8919 * queried and the serialization of the CSV-encoded query results.</p> </li> </ul>
8920 * <p>The following are additional important facts about the select feature:</p>
8921 * <ul> <li> <p>The output results are new Amazon S3 objects. Unlike archive
8922 * retrievals, they are stored until explicitly deleted-manually or through a
8923 * lifecycle policy.</p> </li> <li> <p>You can issue more than one select request
8924 * on the same Amazon S3 object. Amazon S3 doesn't deduplicate requests, so avoid
8925 * issuing duplicate requests.</p> </li> <li> <p> Amazon S3 accepts a select
8926 * request even if the object has already been restored. A select request doesn’t
8927 * return error response <code>409</code>.</p> </li> </ul> <p> <b>Restoring
8928 * Archives</b> </p> <p>Objects in the GLACIER and DEEP_ARCHIVE storage classes are
8929 * archived. To access an archived object, you must first initiate a restore
8930 * request. This restores a temporary copy of the archived object. In a restore
8931 * request, you specify the number of days that you want the restored copy to
8932 * exist. After the specified period, Amazon S3 deletes the temporary copy but the
8933 * object remains archived in the GLACIER or DEEP_ARCHIVE storage class that object
8934 * was restored from. </p> <p>To restore a specific object version, you can provide
8935 * a version ID. If you don't provide a version ID, Amazon S3 restores the current
8936 * version.</p> <p>The time it takes restore jobs to finish depends on which
8937 * storage class the object is being restored from and which data access tier you
8938 * specify. </p> <p>When restoring an archived object (or using a select request),
8939 * you can specify one of the following data access tier options in the
8940 * <code>Tier</code> element of the request body: </p> <ul> <li> <p> <b>
8941 * <code>Expedited</code> </b> - Expedited retrievals allow you to quickly access
8942 * your data stored in the GLACIER storage class when occasional urgent requests
8943 * for a subset of archives are required. For all but the largest archived objects
8944 * (250 MB+), data accessed using Expedited retrievals are typically made available
8945 * within 1–5 minutes. Provisioned capacity ensures that retrieval capacity for
8946 * Expedited retrievals is available when you need it. Expedited retrievals and
8947 * provisioned capacity are not available for the DEEP_ARCHIVE storage class.</p>
8948 * </li> <li> <p> <b> <code>Standard</code> </b> - Standard retrievals allow you to
8949 * access any of your archived objects within several hours. This is the default
8950 * option for the GLACIER and DEEP_ARCHIVE retrieval requests that do not specify
8951 * the retrieval option. Standard retrievals typically complete within 3-5 hours
8952 * from the GLACIER storage class and typically complete within 12 hours from the
8953 * DEEP_ARCHIVE storage class. </p> </li> <li> <p> <b> <code>Bulk</code> </b> -
8954 * Bulk retrievals are Amazon S3 Glacier’s lowest-cost retrieval option, enabling
8955 * you to retrieve large amounts, even petabytes, of data inexpensively in a day.
8956 * Bulk retrievals typically complete within 5-12 hours from the GLACIER storage
8957 * class and typically complete within 48 hours from the DEEP_ARCHIVE storage
8958 * class.</p> </li> </ul> <p>For more information about archive retrieval options
8959 * and provisioned capacity for <code>Expedited</code> data access, see <a
8960 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html">Restoring
8961 * Archived Objects</a> in the <i>Amazon Simple Storage Service Developer
8962 * Guide</i>. </p> <p>You can use Amazon S3 restore speed upgrade to change the
8963 * restore speed to a faster speed while it is in progress. You upgrade the speed
8964 * of an in-progress restoration by issuing another restore request to the same
8965 * object, setting a new <code>Tier</code> request element. When issuing a request
8966 * to upgrade the restore tier, you must choose a tier that is faster than the tier
8967 * that the in-progress restore is using. You must not change any other parameters,
8968 * such as the <code>Days</code> request element. For more information, see <a
8969 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html#restoring-objects-upgrade-tier.title.html">
8970 * Upgrading the Speed of an In-Progress Restore</a> in the <i>Amazon Simple
8971 * Storage Service Developer Guide</i>. </p> <p>To get the status of object
8972 * restoration, you can send a <code>HEAD</code> request. Operations return the
8973 * <code>x-amz-restore</code> header, which provides information about the
8974 * restoration status, in the response. You can use Amazon S3 event notifications
8975 * to notify you when a restore is initiated or completed. For more information,
8976 * see <a
8977 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Configuring
8978 * Amazon S3 Event Notifications</a> in the <i>Amazon Simple Storage Service
8979 * Developer Guide</i>.</p> <p>After restoring an archived object, you can update
8980 * the restoration period by reissuing the request with a new period. Amazon S3
8981 * updates the restoration period relative to the current time and charges only for
8982 * the request-there are no data transfer charges. You cannot update the
8983 * restoration period when Amazon S3 is actively processing your current restore
8984 * request for the object.</p> <p>If your bucket has a lifecycle configuration with
8985 * a rule that includes an expiration action, the object expiration overrides the
8986 * life span that you specify in a restore request. For example, if you restore an
8987 * object copy for 10 days, but the object is scheduled to expire in 3 days, Amazon
8988 * S3 deletes the object in 3 days. For more information about lifecycle
8989 * configuration, see <a>PutBucketLifecycleConfiguration</a> and <a
8990 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html">Object
8991 * Lifecycle Management</a> in <i>Amazon Simple Storage Service Developer
8992 * Guide</i>.</p> <p> <b>Responses</b> </p> <p>A successful operation returns
8993 * either the <code>200 OK</code> or <code>202 Accepted</code> status code. </p>
8994 * <ul> <li> <p>If the object copy is not previously restored, then Amazon S3
8995 * returns <code>202 Accepted</code> in the response. </p> </li> <li> <p>If the
8996 * object copy is previously restored, Amazon S3 returns <code>200 OK</code> in the
8997 * response. </p> </li> </ul> <p class="title"> <b>Special Errors</b> </p> <ul>
8998 * <li> <p class="title"> <b/> </p> <ul> <li> <p> <i>Code:
8999 * RestoreAlreadyInProgress</i> </p> </li> <li> <p> <i>Cause: Object restore is
9000 * already in progress. (This error does not apply to SELECT type requests.)</i>
9001 * </p> </li> <li> <p> <i>HTTP Status Code: 409 Conflict</i> </p> </li> <li> <p>
9002 * <i>SOAP Fault Code Prefix: Client</i> </p> </li> </ul> </li> <li> <p
9003 * class="title"> <b/> </p> <ul> <li> <p> <i>Code:
9004 * GlacierExpeditedRetrievalNotAvailable</i> </p> </li> <li> <p> <i>Cause: Glacier
9005 * expedited retrievals are currently not available. Try again later. (Returned if
9006 * there is insufficient capacity to process the Expedited request. This error
9007 * applies only to Expedited retrievals and not to Standard or Bulk
9008 * retrievals.)</i> </p> </li> <li> <p> <i>HTTP Status Code: 503</i> </p> </li>
9009 * <li> <p> <i>SOAP Fault Code Prefix: N/A</i> </p> </li> </ul> </li> </ul> <p
9010 * class="title"> <b>Related Resources</b> </p> <ul> <li> <p>
9011 * <a>PutBucketLifecycleConfiguration</a> </p> </li> <li> <p>
9012 * <a>GetBucketNotificationConfiguration</a> </p> </li> <li> <p> <a
9013 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html">SQL
9014 * Reference for Amazon S3 Select and Glacier Select </a> in the <i>Amazon Simple
9015 * Storage Service Developer Guide</i> </p> </li> </ul><p><h3>See Also:</h3> <a
9016 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject">AWS
9017 * API Reference</a></p>
9018 *
9019 * Queues the request into a thread executor and triggers associated callback when operation has finished.
9020 */
9021 virtual void RestoreObjectAsync(const Model::RestoreObjectRequest& request, const RestoreObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
9022
9023 /**
9024 * <p>This operation filters the contents of an Amazon S3 object based on a simple
9025 * structured query language (SQL) statement. In the request, along with the SQL
9026 * expression, you must also specify a data serialization format (JSON, CSV, or
9027 * Apache Parquet) of the object. Amazon S3 uses this format to parse object data
9028 * into records, and returns only records that match the specified SQL expression.
9029 * You must also specify the data serialization format for the response.</p> <p>For
9030 * more information about Amazon S3 Select, see <a
9031 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html">Selecting
9032 * Content from Objects</a> in the <i>Amazon Simple Storage Service Developer
9033 * Guide</i>.</p> <p>For more information about using SQL with Amazon S3 Select,
9034 * see <a
9035 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html">
9036 * SQL Reference for Amazon S3 Select and Glacier Select</a> in the <i>Amazon
9037 * Simple Storage Service Developer Guide</i>.</p> <p/> <p> <b>Permissions</b> </p>
9038 * <p>You must have <code>s3:GetObject</code> permission for this operation. Amazon
9039 * S3 Select does not support anonymous access. For more information about
9040 * permissions, see <a
9041 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
9042 * Permissions in a Policy</a> in the <i>Amazon Simple Storage Service Developer
9043 * Guide</i>.</p> <p/> <p> <i>Object Data Formats</i> </p> <p>You can use Amazon S3
9044 * Select to query objects that have the following format properties:</p> <ul> <li>
9045 * <p> <i>CSV, JSON, and Parquet</i> - Objects must be in CSV, JSON, or Parquet
9046 * format.</p> </li> <li> <p> <i>UTF-8</i> - UTF-8 is the only encoding type Amazon
9047 * S3 Select supports.</p> </li> <li> <p> <i>GZIP or BZIP2</i> - CSV and JSON files
9048 * can be compressed using GZIP or BZIP2. GZIP and BZIP2 are the only compression
9049 * formats that Amazon S3 Select supports for CSV and JSON files. Amazon S3 Select
9050 * supports columnar compression for Parquet using GZIP or Snappy. Amazon S3 Select
9051 * does not support whole-object compression for Parquet objects.</p> </li> <li>
9052 * <p> <i>Server-side encryption</i> - Amazon S3 Select supports querying objects
9053 * that are protected with server-side encryption.</p> <p>For objects that are
9054 * encrypted with customer-provided encryption keys (SSE-C), you must use HTTPS,
9055 * and you must use the headers that are documented in the <a>GetObject</a>. For
9056 * more information about SSE-C, see <a
9057 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
9058 * Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon Simple
9059 * Storage Service Developer Guide</i>.</p> <p>For objects that are encrypted with
9060 * Amazon S3 managed encryption keys (SSE-S3) and customer master keys (CMKs)
9061 * stored in AWS Key Management Service (SSE-KMS), server-side encryption is
9062 * handled transparently, so you don't need to specify anything. For more
9063 * information about server-side encryption, including SSE-S3 and SSE-KMS, see <a
9064 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html">Protecting
9065 * Data Using Server-Side Encryption</a> in the <i>Amazon Simple Storage Service
9066 * Developer Guide</i>.</p> </li> </ul> <p> <b>Working with the Response Body</b>
9067 * </p> <p>Given the response size is unknown, Amazon S3 Select streams the
9068 * response as a series of messages and includes a <code>Transfer-Encoding</code>
9069 * header with <code>chunked</code> as its value in the response. For more
9070 * information, see <a>RESTSelectObjectAppendix</a> .</p> <p/> <p> <b>GetObject
9071 * Support</b> </p> <p>The <code>SelectObjectContent</code> operation does not
9072 * support the following <code>GetObject</code> functionality. For more
9073 * information, see <a>GetObject</a>.</p> <ul> <li> <p> <code>Range</code>: While
9074 * you can specify a scan range for a Amazon S3 Select request, see
9075 * <a>SelectObjectContentRequest$ScanRange</a> in the request parameters below, you
9076 * cannot specify the range of bytes of an object to return. </p> </li> <li>
9077 * <p>GLACIER, DEEP_ARCHIVE and REDUCED_REDUNDANCY storage classes: You cannot
9078 * specify the GLACIER, DEEP_ARCHIVE, or <code>REDUCED_REDUNDANCY</code> storage
9079 * classes. For more information, about storage classes see <a
9080 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#storage-class-intro">Storage
9081 * Classes</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
9082 * </li> </ul> <p/> <p> <b>Special Errors</b> </p> <p>For a list of special errors
9083 * for this operation and for general information about Amazon S3 errors and a list
9084 * of error codes, see <a>ErrorResponses</a> </p> <p class="title"> <b>Related
9085 * Resources</b> </p> <ul> <li> <p> <a>GetObject</a> </p> </li> <li> <p>
9086 * <a>GetBucketLifecycleConfiguration</a> </p> </li> <li> <p>
9087 * <a>PutBucketLifecycleConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
9088 * <a
9089 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent">AWS
9090 * API Reference</a></p>
9091 */
9092 virtual Model::SelectObjectContentOutcome SelectObjectContent(Model::SelectObjectContentRequest& request) const;
9093
9094 /**
9095 * <p>This operation filters the contents of an Amazon S3 object based on a simple
9096 * structured query language (SQL) statement. In the request, along with the SQL
9097 * expression, you must also specify a data serialization format (JSON, CSV, or
9098 * Apache Parquet) of the object. Amazon S3 uses this format to parse object data
9099 * into records, and returns only records that match the specified SQL expression.
9100 * You must also specify the data serialization format for the response.</p> <p>For
9101 * more information about Amazon S3 Select, see <a
9102 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html">Selecting
9103 * Content from Objects</a> in the <i>Amazon Simple Storage Service Developer
9104 * Guide</i>.</p> <p>For more information about using SQL with Amazon S3 Select,
9105 * see <a
9106 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html">
9107 * SQL Reference for Amazon S3 Select and Glacier Select</a> in the <i>Amazon
9108 * Simple Storage Service Developer Guide</i>.</p> <p/> <p> <b>Permissions</b> </p>
9109 * <p>You must have <code>s3:GetObject</code> permission for this operation. Amazon
9110 * S3 Select does not support anonymous access. For more information about
9111 * permissions, see <a
9112 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
9113 * Permissions in a Policy</a> in the <i>Amazon Simple Storage Service Developer
9114 * Guide</i>.</p> <p/> <p> <i>Object Data Formats</i> </p> <p>You can use Amazon S3
9115 * Select to query objects that have the following format properties:</p> <ul> <li>
9116 * <p> <i>CSV, JSON, and Parquet</i> - Objects must be in CSV, JSON, or Parquet
9117 * format.</p> </li> <li> <p> <i>UTF-8</i> - UTF-8 is the only encoding type Amazon
9118 * S3 Select supports.</p> </li> <li> <p> <i>GZIP or BZIP2</i> - CSV and JSON files
9119 * can be compressed using GZIP or BZIP2. GZIP and BZIP2 are the only compression
9120 * formats that Amazon S3 Select supports for CSV and JSON files. Amazon S3 Select
9121 * supports columnar compression for Parquet using GZIP or Snappy. Amazon S3 Select
9122 * does not support whole-object compression for Parquet objects.</p> </li> <li>
9123 * <p> <i>Server-side encryption</i> - Amazon S3 Select supports querying objects
9124 * that are protected with server-side encryption.</p> <p>For objects that are
9125 * encrypted with customer-provided encryption keys (SSE-C), you must use HTTPS,
9126 * and you must use the headers that are documented in the <a>GetObject</a>. For
9127 * more information about SSE-C, see <a
9128 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
9129 * Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon Simple
9130 * Storage Service Developer Guide</i>.</p> <p>For objects that are encrypted with
9131 * Amazon S3 managed encryption keys (SSE-S3) and customer master keys (CMKs)
9132 * stored in AWS Key Management Service (SSE-KMS), server-side encryption is
9133 * handled transparently, so you don't need to specify anything. For more
9134 * information about server-side encryption, including SSE-S3 and SSE-KMS, see <a
9135 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html">Protecting
9136 * Data Using Server-Side Encryption</a> in the <i>Amazon Simple Storage Service
9137 * Developer Guide</i>.</p> </li> </ul> <p> <b>Working with the Response Body</b>
9138 * </p> <p>Given the response size is unknown, Amazon S3 Select streams the
9139 * response as a series of messages and includes a <code>Transfer-Encoding</code>
9140 * header with <code>chunked</code> as its value in the response. For more
9141 * information, see <a>RESTSelectObjectAppendix</a> .</p> <p/> <p> <b>GetObject
9142 * Support</b> </p> <p>The <code>SelectObjectContent</code> operation does not
9143 * support the following <code>GetObject</code> functionality. For more
9144 * information, see <a>GetObject</a>.</p> <ul> <li> <p> <code>Range</code>: While
9145 * you can specify a scan range for a Amazon S3 Select request, see
9146 * <a>SelectObjectContentRequest$ScanRange</a> in the request parameters below, you
9147 * cannot specify the range of bytes of an object to return. </p> </li> <li>
9148 * <p>GLACIER, DEEP_ARCHIVE and REDUCED_REDUNDANCY storage classes: You cannot
9149 * specify the GLACIER, DEEP_ARCHIVE, or <code>REDUCED_REDUNDANCY</code> storage
9150 * classes. For more information, about storage classes see <a
9151 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#storage-class-intro">Storage
9152 * Classes</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
9153 * </li> </ul> <p/> <p> <b>Special Errors</b> </p> <p>For a list of special errors
9154 * for this operation and for general information about Amazon S3 errors and a list
9155 * of error codes, see <a>ErrorResponses</a> </p> <p class="title"> <b>Related
9156 * Resources</b> </p> <ul> <li> <p> <a>GetObject</a> </p> </li> <li> <p>
9157 * <a>GetBucketLifecycleConfiguration</a> </p> </li> <li> <p>
9158 * <a>PutBucketLifecycleConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
9159 * <a
9160 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent">AWS
9161 * API Reference</a></p>
9162 *
9163 * returns a future to the operation so that it can be executed in parallel to other requests.
9164 */
9165 virtual Model::SelectObjectContentOutcomeCallable SelectObjectContentCallable(Model::SelectObjectContentRequest& request) const;
9166
9167 /**
9168 * <p>This operation filters the contents of an Amazon S3 object based on a simple
9169 * structured query language (SQL) statement. In the request, along with the SQL
9170 * expression, you must also specify a data serialization format (JSON, CSV, or
9171 * Apache Parquet) of the object. Amazon S3 uses this format to parse object data
9172 * into records, and returns only records that match the specified SQL expression.
9173 * You must also specify the data serialization format for the response.</p> <p>For
9174 * more information about Amazon S3 Select, see <a
9175 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html">Selecting
9176 * Content from Objects</a> in the <i>Amazon Simple Storage Service Developer
9177 * Guide</i>.</p> <p>For more information about using SQL with Amazon S3 Select,
9178 * see <a
9179 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html">
9180 * SQL Reference for Amazon S3 Select and Glacier Select</a> in the <i>Amazon
9181 * Simple Storage Service Developer Guide</i>.</p> <p/> <p> <b>Permissions</b> </p>
9182 * <p>You must have <code>s3:GetObject</code> permission for this operation. Amazon
9183 * S3 Select does not support anonymous access. For more information about
9184 * permissions, see <a
9185 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
9186 * Permissions in a Policy</a> in the <i>Amazon Simple Storage Service Developer
9187 * Guide</i>.</p> <p/> <p> <i>Object Data Formats</i> </p> <p>You can use Amazon S3
9188 * Select to query objects that have the following format properties:</p> <ul> <li>
9189 * <p> <i>CSV, JSON, and Parquet</i> - Objects must be in CSV, JSON, or Parquet
9190 * format.</p> </li> <li> <p> <i>UTF-8</i> - UTF-8 is the only encoding type Amazon
9191 * S3 Select supports.</p> </li> <li> <p> <i>GZIP or BZIP2</i> - CSV and JSON files
9192 * can be compressed using GZIP or BZIP2. GZIP and BZIP2 are the only compression
9193 * formats that Amazon S3 Select supports for CSV and JSON files. Amazon S3 Select
9194 * supports columnar compression for Parquet using GZIP or Snappy. Amazon S3 Select
9195 * does not support whole-object compression for Parquet objects.</p> </li> <li>
9196 * <p> <i>Server-side encryption</i> - Amazon S3 Select supports querying objects
9197 * that are protected with server-side encryption.</p> <p>For objects that are
9198 * encrypted with customer-provided encryption keys (SSE-C), you must use HTTPS,
9199 * and you must use the headers that are documented in the <a>GetObject</a>. For
9200 * more information about SSE-C, see <a
9201 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
9202 * Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon Simple
9203 * Storage Service Developer Guide</i>.</p> <p>For objects that are encrypted with
9204 * Amazon S3 managed encryption keys (SSE-S3) and customer master keys (CMKs)
9205 * stored in AWS Key Management Service (SSE-KMS), server-side encryption is
9206 * handled transparently, so you don't need to specify anything. For more
9207 * information about server-side encryption, including SSE-S3 and SSE-KMS, see <a
9208 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html">Protecting
9209 * Data Using Server-Side Encryption</a> in the <i>Amazon Simple Storage Service
9210 * Developer Guide</i>.</p> </li> </ul> <p> <b>Working with the Response Body</b>
9211 * </p> <p>Given the response size is unknown, Amazon S3 Select streams the
9212 * response as a series of messages and includes a <code>Transfer-Encoding</code>
9213 * header with <code>chunked</code> as its value in the response. For more
9214 * information, see <a>RESTSelectObjectAppendix</a> .</p> <p/> <p> <b>GetObject
9215 * Support</b> </p> <p>The <code>SelectObjectContent</code> operation does not
9216 * support the following <code>GetObject</code> functionality. For more
9217 * information, see <a>GetObject</a>.</p> <ul> <li> <p> <code>Range</code>: While
9218 * you can specify a scan range for a Amazon S3 Select request, see
9219 * <a>SelectObjectContentRequest$ScanRange</a> in the request parameters below, you
9220 * cannot specify the range of bytes of an object to return. </p> </li> <li>
9221 * <p>GLACIER, DEEP_ARCHIVE and REDUCED_REDUNDANCY storage classes: You cannot
9222 * specify the GLACIER, DEEP_ARCHIVE, or <code>REDUCED_REDUNDANCY</code> storage
9223 * classes. For more information, about storage classes see <a
9224 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#storage-class-intro">Storage
9225 * Classes</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
9226 * </li> </ul> <p/> <p> <b>Special Errors</b> </p> <p>For a list of special errors
9227 * for this operation and for general information about Amazon S3 errors and a list
9228 * of error codes, see <a>ErrorResponses</a> </p> <p class="title"> <b>Related
9229 * Resources</b> </p> <ul> <li> <p> <a>GetObject</a> </p> </li> <li> <p>
9230 * <a>GetBucketLifecycleConfiguration</a> </p> </li> <li> <p>
9231 * <a>PutBucketLifecycleConfiguration</a> </p> </li> </ul><p><h3>See Also:</h3>
9232 * <a
9233 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent">AWS
9234 * API Reference</a></p>
9235 *
9236 * Queues the request into a thread executor and triggers associated callback when operation has finished.
9237 */
9238 virtual void SelectObjectContentAsync(Model::SelectObjectContentRequest& request, const SelectObjectContentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
9239
9240 /**
9241 * <p>Uploads a part in a multipart upload.</p> <note> <p>In this operation, you
9242 * provide part data in your request. However, you have an option to specify your
9243 * existing Amazon S3 object as a data source for the part you are uploading. To
9244 * upload a part from an existing object, you use the <a>UploadPartCopy</a>
9245 * operation. </p> </note> <p>You must initiate a multipart upload (see
9246 * <a>CreateMultipartUpload</a>) before you can upload any part. In response to
9247 * your initiate request, Amazon S3 returns an upload ID, a unique identifier, that
9248 * you must include in your upload part request.</p> <p>Part numbers can be any
9249 * number from 1 to 10,000, inclusive. A part number uniquely identifies a part and
9250 * also defines its position within the object being created. If you upload a new
9251 * part using the same part number that was used with a previous part, the
9252 * previously uploaded part is overwritten. Each part must be at least 5 MB in
9253 * size, except the last part. There is no size limit on the last part of your
9254 * multipart upload.</p> <p>To ensure that data is not corrupted when traversing
9255 * the network, specify the <code>Content-MD5</code> header in the upload part
9256 * request. Amazon S3 checks the part data against the provided MD5 value. If they
9257 * do not match, Amazon S3 returns an error. </p> <p> <b>Note:</b> After you
9258 * initiate multipart upload and upload one or more parts, you must either complete
9259 * or abort multipart upload in order to stop getting charged for storage of the
9260 * uploaded parts. Only after you either complete or abort multipart upload, Amazon
9261 * S3 frees up the parts storage and stops charging you for the parts storage.</p>
9262 * <p>For more information on multipart uploads, go to <a
9263 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html">Multipart
9264 * Upload Overview</a> in the <i>Amazon Simple Storage Service Developer Guide
9265 * </i>.</p> <p>For information on the permissions required to use the multipart
9266 * upload API, go to <a
9267 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
9268 * Upload API and Permissions</a> in the <i>Amazon Simple Storage Service Developer
9269 * Guide</i>.</p> <p>You can optionally request server-side encryption where Amazon
9270 * S3 encrypts your data as it writes it to disks in its data centers and decrypts
9271 * it for you when you access it. You have the option of providing your own
9272 * encryption key, or you can use the AWS managed encryption keys. If you choose to
9273 * provide your own encryption key, the request headers you provide in the request
9274 * must match the headers you used in the request to initiate the upload by using
9275 * <a>CreateMultipartUpload</a>. For more information, go to <a
9276 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">Using
9277 * Server-Side Encryption</a> in the <i>Amazon Simple Storage Service Developer
9278 * Guide</i>.</p> <p>Server-side encryption is supported by the S3 Multipart Upload
9279 * actions. Unless you are using a customer-provided encryption key, you don't need
9280 * to specify the encryption parameters in each UploadPart request. Instead, you
9281 * only need to specify the server-side encryption parameters in the initial
9282 * Initiate Multipart request. For more information, see
9283 * <a>CreateMultipartUpload</a>.</p> <p>If you requested server-side encryption
9284 * using a customer-provided encryption key in your initiate multipart upload
9285 * request, you must provide identical encryption information in each part upload
9286 * using the following headers.</p> <ul> <li>
9287 * <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
9288 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
9289 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> <p
9290 * class="title"> <b>Special Errors</b> </p> <ul> <li> <p class="title"> <b/> </p>
9291 * <ul> <li> <p> <i>Code: NoSuchUpload</i> </p> </li> <li> <p> <i>Cause: The
9292 * specified multipart upload does not exist. The upload ID might be invalid, or
9293 * the multipart upload might have been aborted or completed.</i> </p> </li> <li>
9294 * <p> <i> HTTP Status Code: 404 Not Found </i> </p> </li> <li> <p> <i>SOAP Fault
9295 * Code Prefix: Client</i> </p> </li> </ul> </li> </ul> <p class="title">
9296 * <b>Related Resources</b> </p> <ul> <li> <p> <a>CreateMultipartUpload</a> </p>
9297 * </li> <li> <p> <a>CompleteMultipartUpload</a> </p> </li> <li> <p>
9298 * <a>AbortMultipartUpload</a> </p> </li> <li> <p> <a>ListParts</a> </p> </li> <li>
9299 * <p> <a>ListMultipartUploads</a> </p> </li> </ul><p><h3>See Also:</h3> <a
9300 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart">AWS API
9301 * Reference</a></p>
9302 */
9303 virtual Model::UploadPartOutcome UploadPart(const Model::UploadPartRequest& request) const;
9304
9305 /**
9306 * <p>Uploads a part in a multipart upload.</p> <note> <p>In this operation, you
9307 * provide part data in your request. However, you have an option to specify your
9308 * existing Amazon S3 object as a data source for the part you are uploading. To
9309 * upload a part from an existing object, you use the <a>UploadPartCopy</a>
9310 * operation. </p> </note> <p>You must initiate a multipart upload (see
9311 * <a>CreateMultipartUpload</a>) before you can upload any part. In response to
9312 * your initiate request, Amazon S3 returns an upload ID, a unique identifier, that
9313 * you must include in your upload part request.</p> <p>Part numbers can be any
9314 * number from 1 to 10,000, inclusive. A part number uniquely identifies a part and
9315 * also defines its position within the object being created. If you upload a new
9316 * part using the same part number that was used with a previous part, the
9317 * previously uploaded part is overwritten. Each part must be at least 5 MB in
9318 * size, except the last part. There is no size limit on the last part of your
9319 * multipart upload.</p> <p>To ensure that data is not corrupted when traversing
9320 * the network, specify the <code>Content-MD5</code> header in the upload part
9321 * request. Amazon S3 checks the part data against the provided MD5 value. If they
9322 * do not match, Amazon S3 returns an error. </p> <p> <b>Note:</b> After you
9323 * initiate multipart upload and upload one or more parts, you must either complete
9324 * or abort multipart upload in order to stop getting charged for storage of the
9325 * uploaded parts. Only after you either complete or abort multipart upload, Amazon
9326 * S3 frees up the parts storage and stops charging you for the parts storage.</p>
9327 * <p>For more information on multipart uploads, go to <a
9328 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html">Multipart
9329 * Upload Overview</a> in the <i>Amazon Simple Storage Service Developer Guide
9330 * </i>.</p> <p>For information on the permissions required to use the multipart
9331 * upload API, go to <a
9332 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
9333 * Upload API and Permissions</a> in the <i>Amazon Simple Storage Service Developer
9334 * Guide</i>.</p> <p>You can optionally request server-side encryption where Amazon
9335 * S3 encrypts your data as it writes it to disks in its data centers and decrypts
9336 * it for you when you access it. You have the option of providing your own
9337 * encryption key, or you can use the AWS managed encryption keys. If you choose to
9338 * provide your own encryption key, the request headers you provide in the request
9339 * must match the headers you used in the request to initiate the upload by using
9340 * <a>CreateMultipartUpload</a>. For more information, go to <a
9341 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">Using
9342 * Server-Side Encryption</a> in the <i>Amazon Simple Storage Service Developer
9343 * Guide</i>.</p> <p>Server-side encryption is supported by the S3 Multipart Upload
9344 * actions. Unless you are using a customer-provided encryption key, you don't need
9345 * to specify the encryption parameters in each UploadPart request. Instead, you
9346 * only need to specify the server-side encryption parameters in the initial
9347 * Initiate Multipart request. For more information, see
9348 * <a>CreateMultipartUpload</a>.</p> <p>If you requested server-side encryption
9349 * using a customer-provided encryption key in your initiate multipart upload
9350 * request, you must provide identical encryption information in each part upload
9351 * using the following headers.</p> <ul> <li>
9352 * <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
9353 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
9354 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> <p
9355 * class="title"> <b>Special Errors</b> </p> <ul> <li> <p class="title"> <b/> </p>
9356 * <ul> <li> <p> <i>Code: NoSuchUpload</i> </p> </li> <li> <p> <i>Cause: The
9357 * specified multipart upload does not exist. The upload ID might be invalid, or
9358 * the multipart upload might have been aborted or completed.</i> </p> </li> <li>
9359 * <p> <i> HTTP Status Code: 404 Not Found </i> </p> </li> <li> <p> <i>SOAP Fault
9360 * Code Prefix: Client</i> </p> </li> </ul> </li> </ul> <p class="title">
9361 * <b>Related Resources</b> </p> <ul> <li> <p> <a>CreateMultipartUpload</a> </p>
9362 * </li> <li> <p> <a>CompleteMultipartUpload</a> </p> </li> <li> <p>
9363 * <a>AbortMultipartUpload</a> </p> </li> <li> <p> <a>ListParts</a> </p> </li> <li>
9364 * <p> <a>ListMultipartUploads</a> </p> </li> </ul><p><h3>See Also:</h3> <a
9365 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart">AWS API
9366 * Reference</a></p>
9367 *
9368 * returns a future to the operation so that it can be executed in parallel to other requests.
9369 */
9370 virtual Model::UploadPartOutcomeCallable UploadPartCallable(const Model::UploadPartRequest& request) const;
9371
9372 /**
9373 * <p>Uploads a part in a multipart upload.</p> <note> <p>In this operation, you
9374 * provide part data in your request. However, you have an option to specify your
9375 * existing Amazon S3 object as a data source for the part you are uploading. To
9376 * upload a part from an existing object, you use the <a>UploadPartCopy</a>
9377 * operation. </p> </note> <p>You must initiate a multipart upload (see
9378 * <a>CreateMultipartUpload</a>) before you can upload any part. In response to
9379 * your initiate request, Amazon S3 returns an upload ID, a unique identifier, that
9380 * you must include in your upload part request.</p> <p>Part numbers can be any
9381 * number from 1 to 10,000, inclusive. A part number uniquely identifies a part and
9382 * also defines its position within the object being created. If you upload a new
9383 * part using the same part number that was used with a previous part, the
9384 * previously uploaded part is overwritten. Each part must be at least 5 MB in
9385 * size, except the last part. There is no size limit on the last part of your
9386 * multipart upload.</p> <p>To ensure that data is not corrupted when traversing
9387 * the network, specify the <code>Content-MD5</code> header in the upload part
9388 * request. Amazon S3 checks the part data against the provided MD5 value. If they
9389 * do not match, Amazon S3 returns an error. </p> <p> <b>Note:</b> After you
9390 * initiate multipart upload and upload one or more parts, you must either complete
9391 * or abort multipart upload in order to stop getting charged for storage of the
9392 * uploaded parts. Only after you either complete or abort multipart upload, Amazon
9393 * S3 frees up the parts storage and stops charging you for the parts storage.</p>
9394 * <p>For more information on multipart uploads, go to <a
9395 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html">Multipart
9396 * Upload Overview</a> in the <i>Amazon Simple Storage Service Developer Guide
9397 * </i>.</p> <p>For information on the permissions required to use the multipart
9398 * upload API, go to <a
9399 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
9400 * Upload API and Permissions</a> in the <i>Amazon Simple Storage Service Developer
9401 * Guide</i>.</p> <p>You can optionally request server-side encryption where Amazon
9402 * S3 encrypts your data as it writes it to disks in its data centers and decrypts
9403 * it for you when you access it. You have the option of providing your own
9404 * encryption key, or you can use the AWS managed encryption keys. If you choose to
9405 * provide your own encryption key, the request headers you provide in the request
9406 * must match the headers you used in the request to initiate the upload by using
9407 * <a>CreateMultipartUpload</a>. For more information, go to <a
9408 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">Using
9409 * Server-Side Encryption</a> in the <i>Amazon Simple Storage Service Developer
9410 * Guide</i>.</p> <p>Server-side encryption is supported by the S3 Multipart Upload
9411 * actions. Unless you are using a customer-provided encryption key, you don't need
9412 * to specify the encryption parameters in each UploadPart request. Instead, you
9413 * only need to specify the server-side encryption parameters in the initial
9414 * Initiate Multipart request. For more information, see
9415 * <a>CreateMultipartUpload</a>.</p> <p>If you requested server-side encryption
9416 * using a customer-provided encryption key in your initiate multipart upload
9417 * request, you must provide identical encryption information in each part upload
9418 * using the following headers.</p> <ul> <li>
9419 * <p>x-amz-server-side​-encryption​-customer-algorithm</p> </li> <li>
9420 * <p>x-amz-server-side​-encryption​-customer-key</p> </li> <li>
9421 * <p>x-amz-server-side​-encryption​-customer-key-MD5</p> </li> </ul> <p
9422 * class="title"> <b>Special Errors</b> </p> <ul> <li> <p class="title"> <b/> </p>
9423 * <ul> <li> <p> <i>Code: NoSuchUpload</i> </p> </li> <li> <p> <i>Cause: The
9424 * specified multipart upload does not exist. The upload ID might be invalid, or
9425 * the multipart upload might have been aborted or completed.</i> </p> </li> <li>
9426 * <p> <i> HTTP Status Code: 404 Not Found </i> </p> </li> <li> <p> <i>SOAP Fault
9427 * Code Prefix: Client</i> </p> </li> </ul> </li> </ul> <p class="title">
9428 * <b>Related Resources</b> </p> <ul> <li> <p> <a>CreateMultipartUpload</a> </p>
9429 * </li> <li> <p> <a>CompleteMultipartUpload</a> </p> </li> <li> <p>
9430 * <a>AbortMultipartUpload</a> </p> </li> <li> <p> <a>ListParts</a> </p> </li> <li>
9431 * <p> <a>ListMultipartUploads</a> </p> </li> </ul><p><h3>See Also:</h3> <a
9432 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart">AWS API
9433 * Reference</a></p>
9434 *
9435 * Queues the request into a thread executor and triggers associated callback when operation has finished.
9436 */
9437 virtual void UploadPartAsync(const Model::UploadPartRequest& request, const UploadPartResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
9438
9439 /**
9440 * <p>Uploads a part by copying data from an existing object as data source. You
9441 * specify the data source by adding the request header
9442 * <code>x-amz-copy-source</code> in your request and a byte range by adding the
9443 * request header <code>x-amz-copy-source-range</code> in your request. </p> <p>The
9444 * minimum allowable part size for a multipart upload is 5 MB. For more information
9445 * about multipart upload limits, go to <a
9446 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/qfacts.html">Quick
9447 * Facts</a> in the <i>Amazon Simple Storage Service Developer Guide</i>. </p>
9448 * <note> <p>Instead of using an existing object as part data, you might use the
9449 * <a>UploadPart</a> operation and provide data in your request.</p> </note> <p>You
9450 * must initiate a multipart upload before you can upload any part. In response to
9451 * your initiate request. Amazon S3 returns a unique identifier, the upload ID,
9452 * that you must include in your upload part request.</p> <p>For more information
9453 * about using the <code>UploadPartCopy</code> operation, see the following:</p>
9454 * <ul> <li> <p>For conceptual information about multipart uploads, see <a
9455 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html">Uploading
9456 * Objects Using Multipart Upload</a> in the <i>Amazon Simple Storage Service
9457 * Developer Guide</i>.</p> </li> <li> <p>For information about permissions
9458 * required to use the multipart upload API, see <a
9459 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
9460 * Upload API and Permissions</a> in the <i>Amazon Simple Storage Service Developer
9461 * Guide</i>.</p> </li> <li> <p>For information about copying objects using a
9462 * single atomic operation vs. the multipart upload, see <a
9463 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectOperations.html">Operations
9464 * on Objects</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
9465 * </li> <li> <p>For information about using server-side encryption with
9466 * customer-provided encryption keys with the UploadPartCopy operation, see
9467 * <a>CopyObject</a> and <a>UploadPart</a>.</p> </li> </ul> <p>Note the following
9468 * additional considerations about the request headers
9469 * <code>x-amz-copy-source-if-match</code>,
9470 * <code>x-amz-copy-source-if-none-match</code>,
9471 * <code>x-amz-copy-source-if-unmodified-since</code>, and
9472 * <code>x-amz-copy-source-if-modified-since</code>:</p> <p> </p> <ul> <li> <p>
9473 * <b>Consideration 1</b> - If both of the <code>x-amz-copy-source-if-match</code>
9474 * and <code>x-amz-copy-source-if-unmodified-since</code> headers are present in
9475 * the request as follows:</p> <p> <code>x-amz-copy-source-if-match</code>
9476 * condition evaluates to <code>true</code>, and;</p> <p>
9477 * <code>x-amz-copy-source-if-unmodified-since</code> condition evaluates to
9478 * <code>false</code>;</p> <p>Amazon S3 returns <code>200 OK</code> and copies the
9479 * data. </p> </li> <li> <p> <b>Consideration 2</b> - If both of the
9480 * <code>x-amz-copy-source-if-none-match</code> and
9481 * <code>x-amz-copy-source-if-modified-since</code> headers are present in the
9482 * request as follows:</p> <p> <code>x-amz-copy-source-if-none-match</code>
9483 * condition evaluates to <code>false</code>, and;</p> <p>
9484 * <code>x-amz-copy-source-if-modified-since</code> condition evaluates to
9485 * <code>true</code>;</p> <p>Amazon S3 returns <code>412 Precondition Failed</code>
9486 * response code. </p> </li> </ul> <p> <b>Versioning</b> </p> <p>If your bucket has
9487 * versioning enabled, you could have multiple versions of the same object. By
9488 * default, <code>x-amz-copy-source</code> identifies the current version of the
9489 * object to copy. If the current version is a delete marker and you don't specify
9490 * a versionId in the <code>x-amz-copy-source</code>, Amazon S3 returns a 404
9491 * error, because the object does not exist. If you specify versionId in the
9492 * <code>x-amz-copy-source</code> and the versionId is a delete marker, Amazon S3
9493 * returns an HTTP 400 error, because you are not allowed to specify a delete
9494 * marker as a version for the <code>x-amz-copy-source</code>. </p> <p>You can
9495 * optionally specify a specific version of the source object to copy by adding the
9496 * <code>versionId</code> subresource as shown in the following example:</p> <p>
9497 * <code>x-amz-copy-source: /bucket/object?versionId=version id</code> </p> <p
9498 * class="title"> <b>Special Errors</b> </p> <ul> <li> <p class="title"> <b/> </p>
9499 * <ul> <li> <p> <i>Code: NoSuchUpload</i> </p> </li> <li> <p> <i>Cause: The
9500 * specified multipart upload does not exist. The upload ID might be invalid, or
9501 * the multipart upload might have been aborted or completed.</i> </p> </li> <li>
9502 * <p> <i>HTTP Status Code: 404 Not Found</i> </p> </li> </ul> </li> <li> <p
9503 * class="title"> <b/> </p> <ul> <li> <p> <i>Code: InvalidRequest</i> </p> </li>
9504 * <li> <p> <i>Cause: The specified copy source is not supported as a byte-range
9505 * copy source.</i> </p> </li> <li> <p> <i>HTTP Status Code: 400 Bad Request</i>
9506 * </p> </li> </ul> </li> </ul> <p class="title"> <b>Related Resources</b> </p>
9507 * <ul> <li> <p> <a>CreateMultipartUpload</a> </p> </li> <li> <p> <a>UploadPart</a>
9508 * </p> </li> <li> <p> <a>CompleteMultipartUpload</a> </p> </li> <li> <p>
9509 * <a>AbortMultipartUpload</a> </p> </li> <li> <p> <a>ListParts</a> </p> </li> <li>
9510 * <p> <a>ListMultipartUploads</a> </p> </li> </ul><p><h3>See Also:</h3> <a
9511 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy">AWS
9512 * API Reference</a></p>
9513 */
9514 virtual Model::UploadPartCopyOutcome UploadPartCopy(const Model::UploadPartCopyRequest& request) const;
9515
9516 /**
9517 * <p>Uploads a part by copying data from an existing object as data source. You
9518 * specify the data source by adding the request header
9519 * <code>x-amz-copy-source</code> in your request and a byte range by adding the
9520 * request header <code>x-amz-copy-source-range</code> in your request. </p> <p>The
9521 * minimum allowable part size for a multipart upload is 5 MB. For more information
9522 * about multipart upload limits, go to <a
9523 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/qfacts.html">Quick
9524 * Facts</a> in the <i>Amazon Simple Storage Service Developer Guide</i>. </p>
9525 * <note> <p>Instead of using an existing object as part data, you might use the
9526 * <a>UploadPart</a> operation and provide data in your request.</p> </note> <p>You
9527 * must initiate a multipart upload before you can upload any part. In response to
9528 * your initiate request. Amazon S3 returns a unique identifier, the upload ID,
9529 * that you must include in your upload part request.</p> <p>For more information
9530 * about using the <code>UploadPartCopy</code> operation, see the following:</p>
9531 * <ul> <li> <p>For conceptual information about multipart uploads, see <a
9532 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html">Uploading
9533 * Objects Using Multipart Upload</a> in the <i>Amazon Simple Storage Service
9534 * Developer Guide</i>.</p> </li> <li> <p>For information about permissions
9535 * required to use the multipart upload API, see <a
9536 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
9537 * Upload API and Permissions</a> in the <i>Amazon Simple Storage Service Developer
9538 * Guide</i>.</p> </li> <li> <p>For information about copying objects using a
9539 * single atomic operation vs. the multipart upload, see <a
9540 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectOperations.html">Operations
9541 * on Objects</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
9542 * </li> <li> <p>For information about using server-side encryption with
9543 * customer-provided encryption keys with the UploadPartCopy operation, see
9544 * <a>CopyObject</a> and <a>UploadPart</a>.</p> </li> </ul> <p>Note the following
9545 * additional considerations about the request headers
9546 * <code>x-amz-copy-source-if-match</code>,
9547 * <code>x-amz-copy-source-if-none-match</code>,
9548 * <code>x-amz-copy-source-if-unmodified-since</code>, and
9549 * <code>x-amz-copy-source-if-modified-since</code>:</p> <p> </p> <ul> <li> <p>
9550 * <b>Consideration 1</b> - If both of the <code>x-amz-copy-source-if-match</code>
9551 * and <code>x-amz-copy-source-if-unmodified-since</code> headers are present in
9552 * the request as follows:</p> <p> <code>x-amz-copy-source-if-match</code>
9553 * condition evaluates to <code>true</code>, and;</p> <p>
9554 * <code>x-amz-copy-source-if-unmodified-since</code> condition evaluates to
9555 * <code>false</code>;</p> <p>Amazon S3 returns <code>200 OK</code> and copies the
9556 * data. </p> </li> <li> <p> <b>Consideration 2</b> - If both of the
9557 * <code>x-amz-copy-source-if-none-match</code> and
9558 * <code>x-amz-copy-source-if-modified-since</code> headers are present in the
9559 * request as follows:</p> <p> <code>x-amz-copy-source-if-none-match</code>
9560 * condition evaluates to <code>false</code>, and;</p> <p>
9561 * <code>x-amz-copy-source-if-modified-since</code> condition evaluates to
9562 * <code>true</code>;</p> <p>Amazon S3 returns <code>412 Precondition Failed</code>
9563 * response code. </p> </li> </ul> <p> <b>Versioning</b> </p> <p>If your bucket has
9564 * versioning enabled, you could have multiple versions of the same object. By
9565 * default, <code>x-amz-copy-source</code> identifies the current version of the
9566 * object to copy. If the current version is a delete marker and you don't specify
9567 * a versionId in the <code>x-amz-copy-source</code>, Amazon S3 returns a 404
9568 * error, because the object does not exist. If you specify versionId in the
9569 * <code>x-amz-copy-source</code> and the versionId is a delete marker, Amazon S3
9570 * returns an HTTP 400 error, because you are not allowed to specify a delete
9571 * marker as a version for the <code>x-amz-copy-source</code>. </p> <p>You can
9572 * optionally specify a specific version of the source object to copy by adding the
9573 * <code>versionId</code> subresource as shown in the following example:</p> <p>
9574 * <code>x-amz-copy-source: /bucket/object?versionId=version id</code> </p> <p
9575 * class="title"> <b>Special Errors</b> </p> <ul> <li> <p class="title"> <b/> </p>
9576 * <ul> <li> <p> <i>Code: NoSuchUpload</i> </p> </li> <li> <p> <i>Cause: The
9577 * specified multipart upload does not exist. The upload ID might be invalid, or
9578 * the multipart upload might have been aborted or completed.</i> </p> </li> <li>
9579 * <p> <i>HTTP Status Code: 404 Not Found</i> </p> </li> </ul> </li> <li> <p
9580 * class="title"> <b/> </p> <ul> <li> <p> <i>Code: InvalidRequest</i> </p> </li>
9581 * <li> <p> <i>Cause: The specified copy source is not supported as a byte-range
9582 * copy source.</i> </p> </li> <li> <p> <i>HTTP Status Code: 400 Bad Request</i>
9583 * </p> </li> </ul> </li> </ul> <p class="title"> <b>Related Resources</b> </p>
9584 * <ul> <li> <p> <a>CreateMultipartUpload</a> </p> </li> <li> <p> <a>UploadPart</a>
9585 * </p> </li> <li> <p> <a>CompleteMultipartUpload</a> </p> </li> <li> <p>
9586 * <a>AbortMultipartUpload</a> </p> </li> <li> <p> <a>ListParts</a> </p> </li> <li>
9587 * <p> <a>ListMultipartUploads</a> </p> </li> </ul><p><h3>See Also:</h3> <a
9588 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy">AWS
9589 * API Reference</a></p>
9590 *
9591 * returns a future to the operation so that it can be executed in parallel to other requests.
9592 */
9593 virtual Model::UploadPartCopyOutcomeCallable UploadPartCopyCallable(const Model::UploadPartCopyRequest& request) const;
9594
9595 /**
9596 * <p>Uploads a part by copying data from an existing object as data source. You
9597 * specify the data source by adding the request header
9598 * <code>x-amz-copy-source</code> in your request and a byte range by adding the
9599 * request header <code>x-amz-copy-source-range</code> in your request. </p> <p>The
9600 * minimum allowable part size for a multipart upload is 5 MB. For more information
9601 * about multipart upload limits, go to <a
9602 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/qfacts.html">Quick
9603 * Facts</a> in the <i>Amazon Simple Storage Service Developer Guide</i>. </p>
9604 * <note> <p>Instead of using an existing object as part data, you might use the
9605 * <a>UploadPart</a> operation and provide data in your request.</p> </note> <p>You
9606 * must initiate a multipart upload before you can upload any part. In response to
9607 * your initiate request. Amazon S3 returns a unique identifier, the upload ID,
9608 * that you must include in your upload part request.</p> <p>For more information
9609 * about using the <code>UploadPartCopy</code> operation, see the following:</p>
9610 * <ul> <li> <p>For conceptual information about multipart uploads, see <a
9611 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html">Uploading
9612 * Objects Using Multipart Upload</a> in the <i>Amazon Simple Storage Service
9613 * Developer Guide</i>.</p> </li> <li> <p>For information about permissions
9614 * required to use the multipart upload API, see <a
9615 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
9616 * Upload API and Permissions</a> in the <i>Amazon Simple Storage Service Developer
9617 * Guide</i>.</p> </li> <li> <p>For information about copying objects using a
9618 * single atomic operation vs. the multipart upload, see <a
9619 * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectOperations.html">Operations
9620 * on Objects</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
9621 * </li> <li> <p>For information about using server-side encryption with
9622 * customer-provided encryption keys with the UploadPartCopy operation, see
9623 * <a>CopyObject</a> and <a>UploadPart</a>.</p> </li> </ul> <p>Note the following
9624 * additional considerations about the request headers
9625 * <code>x-amz-copy-source-if-match</code>,
9626 * <code>x-amz-copy-source-if-none-match</code>,
9627 * <code>x-amz-copy-source-if-unmodified-since</code>, and
9628 * <code>x-amz-copy-source-if-modified-since</code>:</p> <p> </p> <ul> <li> <p>
9629 * <b>Consideration 1</b> - If both of the <code>x-amz-copy-source-if-match</code>
9630 * and <code>x-amz-copy-source-if-unmodified-since</code> headers are present in
9631 * the request as follows:</p> <p> <code>x-amz-copy-source-if-match</code>
9632 * condition evaluates to <code>true</code>, and;</p> <p>
9633 * <code>x-amz-copy-source-if-unmodified-since</code> condition evaluates to
9634 * <code>false</code>;</p> <p>Amazon S3 returns <code>200 OK</code> and copies the
9635 * data. </p> </li> <li> <p> <b>Consideration 2</b> - If both of the
9636 * <code>x-amz-copy-source-if-none-match</code> and
9637 * <code>x-amz-copy-source-if-modified-since</code> headers are present in the
9638 * request as follows:</p> <p> <code>x-amz-copy-source-if-none-match</code>
9639 * condition evaluates to <code>false</code>, and;</p> <p>
9640 * <code>x-amz-copy-source-if-modified-since</code> condition evaluates to
9641 * <code>true</code>;</p> <p>Amazon S3 returns <code>412 Precondition Failed</code>
9642 * response code. </p> </li> </ul> <p> <b>Versioning</b> </p> <p>If your bucket has
9643 * versioning enabled, you could have multiple versions of the same object. By
9644 * default, <code>x-amz-copy-source</code> identifies the current version of the
9645 * object to copy. If the current version is a delete marker and you don't specify
9646 * a versionId in the <code>x-amz-copy-source</code>, Amazon S3 returns a 404
9647 * error, because the object does not exist. If you specify versionId in the
9648 * <code>x-amz-copy-source</code> and the versionId is a delete marker, Amazon S3
9649 * returns an HTTP 400 error, because you are not allowed to specify a delete
9650 * marker as a version for the <code>x-amz-copy-source</code>. </p> <p>You can
9651 * optionally specify a specific version of the source object to copy by adding the
9652 * <code>versionId</code> subresource as shown in the following example:</p> <p>
9653 * <code>x-amz-copy-source: /bucket/object?versionId=version id</code> </p> <p
9654 * class="title"> <b>Special Errors</b> </p> <ul> <li> <p class="title"> <b/> </p>
9655 * <ul> <li> <p> <i>Code: NoSuchUpload</i> </p> </li> <li> <p> <i>Cause: The
9656 * specified multipart upload does not exist. The upload ID might be invalid, or
9657 * the multipart upload might have been aborted or completed.</i> </p> </li> <li>
9658 * <p> <i>HTTP Status Code: 404 Not Found</i> </p> </li> </ul> </li> <li> <p
9659 * class="title"> <b/> </p> <ul> <li> <p> <i>Code: InvalidRequest</i> </p> </li>
9660 * <li> <p> <i>Cause: The specified copy source is not supported as a byte-range
9661 * copy source.</i> </p> </li> <li> <p> <i>HTTP Status Code: 400 Bad Request</i>
9662 * </p> </li> </ul> </li> </ul> <p class="title"> <b>Related Resources</b> </p>
9663 * <ul> <li> <p> <a>CreateMultipartUpload</a> </p> </li> <li> <p> <a>UploadPart</a>
9664 * </p> </li> <li> <p> <a>CompleteMultipartUpload</a> </p> </li> <li> <p>
9665 * <a>AbortMultipartUpload</a> </p> </li> <li> <p> <a>ListParts</a> </p> </li> <li>
9666 * <p> <a>ListMultipartUploads</a> </p> </li> </ul><p><h3>See Also:</h3> <a
9667 * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy">AWS
9668 * API Reference</a></p>
9669 *
9670 * Queues the request into a thread executor and triggers associated callback when operation has finished.
9671 */
9672 virtual void UploadPartCopyAsync(const Model::UploadPartCopyRequest& request, const UploadPartCopyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
9673
9674
9675 Aws::String GeneratePresignedUrl(const Aws::String& bucket, const Aws::String& key, Aws::Http::HttpMethod method, long long expirationInSeconds = MAX_EXPIRATION_SECONDS);
9676
9677 Aws::String GeneratePresignedUrl(const Aws::String& bucket, const Aws::String& key, Aws::Http::HttpMethod method, const Http::HeaderValueCollection& customizedHeaders, long long expirationInSeconds = MAX_EXPIRATION_SECONDS);
9678
9679 /**
9680 * Server Side Encryption Headers and Algorithm
9681 * Method Algorithm Required Headers
9682 * SSE-S3 AES256 x-amz-server-side-encryption:AES256
9683 * SSE-KMS aws:kms x-amz-server-side--encryption:aws:kms, x-amz-server-side-encryption-aws-kms-key-id:<kmsMasterKeyId>
9684 * SS3-C AES256 x-amz-server-side-encryption-customer-algorithm:AES256, x-amz-server-side-encryption-customer-key:<base64EncodedKey>, x-amz-server-side-encryption-customer-key-MD5:<Base64EncodedMD5ofNonBase64EncodedKey>
9685 */
9686 /**
9687 * Generate presigned URL with Sever Side Encryption(SSE) and with S3 managed keys.
9688 * https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html (algo: AES256)
9689 */
9690 Aws::String GeneratePresignedUrlWithSSES3(const Aws::String& bucket, const Aws::String& key, Aws::Http::HttpMethod method, long long expirationInSeconds = MAX_EXPIRATION_SECONDS);
9691 /**
9692 * Generate presigned URL with Sever Side Encryption(SSE) and with S3 managed keys.
9693 * https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html (algo: AES256)
9694 * Header: "x-amz-server-side-encryption" will be added internally, don't customize it.
9695 */
9696 Aws::String GeneratePresignedUrlWithSSES3(const Aws::String& bucket, const Aws::String& key, Aws::Http::HttpMethod method, Http::HeaderValueCollection customizedHeaders, long long expirationInSeconds = MAX_EXPIRATION_SECONDS);
9697
9698 /**
9699 * Generate presigned URL with Server Side Encryption(SSE) and with KMS master key id.
9700 * if kmsMasterKeyId is empty, we will end up use the default one generated by KMS for you. You can find it via AWS IAM console, it's the one aliased as "aws/s3".
9701 * https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html (algo: aws:kms)
9702 */
9703 Aws::String GeneratePresignedUrlWithSSEKMS(const Aws::String& bucket, const Aws::String& key, Aws::Http::HttpMethod method, const Aws::String& kmsMasterKeyId = "", long long expirationInSeconds = MAX_EXPIRATION_SECONDS);
9704 /**
9705 * Generate presigned URL with Server Side Encryption(SSE) and with KMS master key id.
9706 * if kmsMasterKeyId is empty, we will end up use the default one generated by KMS for you. You can find it via AWS IAM console, it's the one aliased as "aws/s3".
9707 * https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html (algo: aws:kms)
9708 * Headers: "x-amz-server-side-encryption" and "x-amz-server-side-encryption-aws-kms-key-id" will be added internally, don't customize them.
9709 */
9710 Aws::String GeneratePresignedUrlWithSSEKMS(const Aws::String& bucket, const Aws::String& key, Aws::Http::HttpMethod method, Http::HeaderValueCollection customizedHeaders, const Aws::String& kmsMasterKeyId = "", long long expirationInSeconds = MAX_EXPIRATION_SECONDS);
9711
9712 /**
9713 * Generate presigned URL with Sever Side Encryption(SSE) and with customer supplied Key.
9714 * https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html (algo: AES256)
9715 */
9716 Aws::String GeneratePresignedUrlWithSSEC(const Aws::String& bucket, const Aws::String& key, Aws::Http::HttpMethod method, const Aws::String& base64EncodedAES256Key, long long expirationInSeconds = MAX_EXPIRATION_SECONDS);
9717 /**
9718 * Generate presigned URL with Sever Side Encryption(SSE) and with customer supplied Key.
9719 * https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html (algo: AES256)
9720 * Headers: "x-amz-server-side-encryption-customer-algorithm","x-amz-server-side-encryption-customer-key" and "x-amz-server-side-encryption-customer-key-MD5" will be added internally, don't customize them.
9721 */
9722 Aws::String GeneratePresignedUrlWithSSEC(const Aws::String& bucket, const Aws::String& key, Aws::Http::HttpMethod method, Http::HeaderValueCollection customizedHeaders, const Aws::String& base64EncodedAES256Key, long long expirationInSeconds = MAX_EXPIRATION_SECONDS);
9723
9724
9725 virtual bool MultipartUploadSupported() const;
9726
9727 void OverrideEndpoint(const Aws::String& endpoint);
9728 private:
9729 void init(const Client::ClientConfiguration& clientConfiguration);
9730 void LoadS3SpecificConfig(const Aws::String& profile);
9731 ComputeEndpointOutcome ComputeEndpointString(const Aws::String& bucket) const;
9732 ComputeEndpointOutcome ComputeEndpointString() const;
9733
9734 void AbortMultipartUploadAsyncHelper(const Model::AbortMultipartUploadRequest& request, const AbortMultipartUploadResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9735 void CompleteMultipartUploadAsyncHelper(const Model::CompleteMultipartUploadRequest& request, const CompleteMultipartUploadResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9736 void CopyObjectAsyncHelper(const Model::CopyObjectRequest& request, const CopyObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9737 void CreateBucketAsyncHelper(const Model::CreateBucketRequest& request, const CreateBucketResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9738 void CreateMultipartUploadAsyncHelper(const Model::CreateMultipartUploadRequest& request, const CreateMultipartUploadResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9739 void DeleteBucketAsyncHelper(const Model::DeleteBucketRequest& request, const DeleteBucketResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9740 void DeleteBucketAnalyticsConfigurationAsyncHelper(const Model::DeleteBucketAnalyticsConfigurationRequest& request, const DeleteBucketAnalyticsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9741 void DeleteBucketCorsAsyncHelper(const Model::DeleteBucketCorsRequest& request, const DeleteBucketCorsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9742 void DeleteBucketEncryptionAsyncHelper(const Model::DeleteBucketEncryptionRequest& request, const DeleteBucketEncryptionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9743 void DeleteBucketInventoryConfigurationAsyncHelper(const Model::DeleteBucketInventoryConfigurationRequest& request, const DeleteBucketInventoryConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9744 void DeleteBucketLifecycleAsyncHelper(const Model::DeleteBucketLifecycleRequest& request, const DeleteBucketLifecycleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9745 void DeleteBucketMetricsConfigurationAsyncHelper(const Model::DeleteBucketMetricsConfigurationRequest& request, const DeleteBucketMetricsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9746 void DeleteBucketPolicyAsyncHelper(const Model::DeleteBucketPolicyRequest& request, const DeleteBucketPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9747 void DeleteBucketReplicationAsyncHelper(const Model::DeleteBucketReplicationRequest& request, const DeleteBucketReplicationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9748 void DeleteBucketTaggingAsyncHelper(const Model::DeleteBucketTaggingRequest& request, const DeleteBucketTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9749 void DeleteBucketWebsiteAsyncHelper(const Model::DeleteBucketWebsiteRequest& request, const DeleteBucketWebsiteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9750 void DeleteObjectAsyncHelper(const Model::DeleteObjectRequest& request, const DeleteObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9751 void DeleteObjectTaggingAsyncHelper(const Model::DeleteObjectTaggingRequest& request, const DeleteObjectTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9752 void DeleteObjectsAsyncHelper(const Model::DeleteObjectsRequest& request, const DeleteObjectsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9753 void DeletePublicAccessBlockAsyncHelper(const Model::DeletePublicAccessBlockRequest& request, const DeletePublicAccessBlockResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9754 void GetBucketAccelerateConfigurationAsyncHelper(const Model::GetBucketAccelerateConfigurationRequest& request, const GetBucketAccelerateConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9755 void GetBucketAclAsyncHelper(const Model::GetBucketAclRequest& request, const GetBucketAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9756 void GetBucketAnalyticsConfigurationAsyncHelper(const Model::GetBucketAnalyticsConfigurationRequest& request, const GetBucketAnalyticsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9757 void GetBucketCorsAsyncHelper(const Model::GetBucketCorsRequest& request, const GetBucketCorsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9758 void GetBucketEncryptionAsyncHelper(const Model::GetBucketEncryptionRequest& request, const GetBucketEncryptionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9759 void GetBucketInventoryConfigurationAsyncHelper(const Model::GetBucketInventoryConfigurationRequest& request, const GetBucketInventoryConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9760 void GetBucketLifecycleConfigurationAsyncHelper(const Model::GetBucketLifecycleConfigurationRequest& request, const GetBucketLifecycleConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9761 void GetBucketLocationAsyncHelper(const Model::GetBucketLocationRequest& request, const GetBucketLocationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9762 void GetBucketLoggingAsyncHelper(const Model::GetBucketLoggingRequest& request, const GetBucketLoggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9763 void GetBucketMetricsConfigurationAsyncHelper(const Model::GetBucketMetricsConfigurationRequest& request, const GetBucketMetricsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9764 void GetBucketNotificationConfigurationAsyncHelper(const Model::GetBucketNotificationConfigurationRequest& request, const GetBucketNotificationConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9765 void GetBucketPolicyAsyncHelper(const Model::GetBucketPolicyRequest& request, const GetBucketPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9766 void GetBucketPolicyStatusAsyncHelper(const Model::GetBucketPolicyStatusRequest& request, const GetBucketPolicyStatusResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9767 void GetBucketReplicationAsyncHelper(const Model::GetBucketReplicationRequest& request, const GetBucketReplicationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9768 void GetBucketRequestPaymentAsyncHelper(const Model::GetBucketRequestPaymentRequest& request, const GetBucketRequestPaymentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9769 void GetBucketTaggingAsyncHelper(const Model::GetBucketTaggingRequest& request, const GetBucketTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9770 void GetBucketVersioningAsyncHelper(const Model::GetBucketVersioningRequest& request, const GetBucketVersioningResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9771 void GetBucketWebsiteAsyncHelper(const Model::GetBucketWebsiteRequest& request, const GetBucketWebsiteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9772 void GetObjectAsyncHelper(const Model::GetObjectRequest& request, const GetObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9773 void GetObjectAclAsyncHelper(const Model::GetObjectAclRequest& request, const GetObjectAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9774 void GetObjectLegalHoldAsyncHelper(const Model::GetObjectLegalHoldRequest& request, const GetObjectLegalHoldResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9775 void GetObjectLockConfigurationAsyncHelper(const Model::GetObjectLockConfigurationRequest& request, const GetObjectLockConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9776 void GetObjectRetentionAsyncHelper(const Model::GetObjectRetentionRequest& request, const GetObjectRetentionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9777 void GetObjectTaggingAsyncHelper(const Model::GetObjectTaggingRequest& request, const GetObjectTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9778 void GetObjectTorrentAsyncHelper(const Model::GetObjectTorrentRequest& request, const GetObjectTorrentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9779 void GetPublicAccessBlockAsyncHelper(const Model::GetPublicAccessBlockRequest& request, const GetPublicAccessBlockResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9780 void HeadBucketAsyncHelper(const Model::HeadBucketRequest& request, const HeadBucketResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9781 void HeadObjectAsyncHelper(const Model::HeadObjectRequest& request, const HeadObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9782 void ListBucketAnalyticsConfigurationsAsyncHelper(const Model::ListBucketAnalyticsConfigurationsRequest& request, const ListBucketAnalyticsConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9783 void ListBucketInventoryConfigurationsAsyncHelper(const Model::ListBucketInventoryConfigurationsRequest& request, const ListBucketInventoryConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9784 void ListBucketMetricsConfigurationsAsyncHelper(const Model::ListBucketMetricsConfigurationsRequest& request, const ListBucketMetricsConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9785 void ListBucketsAsyncHelper(const ListBucketsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9786 void ListMultipartUploadsAsyncHelper(const Model::ListMultipartUploadsRequest& request, const ListMultipartUploadsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9787 void ListObjectVersionsAsyncHelper(const Model::ListObjectVersionsRequest& request, const ListObjectVersionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9788 void ListObjectsAsyncHelper(const Model::ListObjectsRequest& request, const ListObjectsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9789 void ListObjectsV2AsyncHelper(const Model::ListObjectsV2Request& request, const ListObjectsV2ResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9790 void ListPartsAsyncHelper(const Model::ListPartsRequest& request, const ListPartsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9791 void PutBucketAccelerateConfigurationAsyncHelper(const Model::PutBucketAccelerateConfigurationRequest& request, const PutBucketAccelerateConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9792 void PutBucketAclAsyncHelper(const Model::PutBucketAclRequest& request, const PutBucketAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9793 void PutBucketAnalyticsConfigurationAsyncHelper(const Model::PutBucketAnalyticsConfigurationRequest& request, const PutBucketAnalyticsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9794 void PutBucketCorsAsyncHelper(const Model::PutBucketCorsRequest& request, const PutBucketCorsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9795 void PutBucketEncryptionAsyncHelper(const Model::PutBucketEncryptionRequest& request, const PutBucketEncryptionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9796 void PutBucketInventoryConfigurationAsyncHelper(const Model::PutBucketInventoryConfigurationRequest& request, const PutBucketInventoryConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9797 void PutBucketLifecycleConfigurationAsyncHelper(const Model::PutBucketLifecycleConfigurationRequest& request, const PutBucketLifecycleConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9798 void PutBucketLoggingAsyncHelper(const Model::PutBucketLoggingRequest& request, const PutBucketLoggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9799 void PutBucketMetricsConfigurationAsyncHelper(const Model::PutBucketMetricsConfigurationRequest& request, const PutBucketMetricsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9800 void PutBucketNotificationConfigurationAsyncHelper(const Model::PutBucketNotificationConfigurationRequest& request, const PutBucketNotificationConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9801 void PutBucketPolicyAsyncHelper(const Model::PutBucketPolicyRequest& request, const PutBucketPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9802 void PutBucketReplicationAsyncHelper(const Model::PutBucketReplicationRequest& request, const PutBucketReplicationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9803 void PutBucketRequestPaymentAsyncHelper(const Model::PutBucketRequestPaymentRequest& request, const PutBucketRequestPaymentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9804 void PutBucketTaggingAsyncHelper(const Model::PutBucketTaggingRequest& request, const PutBucketTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9805 void PutBucketVersioningAsyncHelper(const Model::PutBucketVersioningRequest& request, const PutBucketVersioningResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9806 void PutBucketWebsiteAsyncHelper(const Model::PutBucketWebsiteRequest& request, const PutBucketWebsiteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9807 void PutObjectAsyncHelper(const Model::PutObjectRequest& request, const PutObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9808 void PutObjectAclAsyncHelper(const Model::PutObjectAclRequest& request, const PutObjectAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9809 void PutObjectLegalHoldAsyncHelper(const Model::PutObjectLegalHoldRequest& request, const PutObjectLegalHoldResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9810 void PutObjectLockConfigurationAsyncHelper(const Model::PutObjectLockConfigurationRequest& request, const PutObjectLockConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9811 void PutObjectRetentionAsyncHelper(const Model::PutObjectRetentionRequest& request, const PutObjectRetentionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9812 void PutObjectTaggingAsyncHelper(const Model::PutObjectTaggingRequest& request, const PutObjectTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9813 void PutPublicAccessBlockAsyncHelper(const Model::PutPublicAccessBlockRequest& request, const PutPublicAccessBlockResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9814 void RestoreObjectAsyncHelper(const Model::RestoreObjectRequest& request, const RestoreObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9815 void SelectObjectContentAsyncHelper(Model::SelectObjectContentRequest& request, const SelectObjectContentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9816 void UploadPartAsyncHelper(const Model::UploadPartRequest& request, const UploadPartResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9817 void UploadPartCopyAsyncHelper(const Model::UploadPartCopyRequest& request, const UploadPartCopyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
9818
9819 Aws::String m_baseUri;
9820 Aws::String m_scheme;
9821 Aws::String m_configScheme;
9822 Aws::String m_region;
9823 std::shared_ptr<Utils::Threading::Executor> m_executor;
9824 bool m_useVirtualAddressing;
9825 bool m_useDualStack;
9826 bool m_useArnRegion;
9827 bool m_useCustomEndpoint;
9828 Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION m_USEast1RegionalEndpointOption;
9829 };
9830
9831 } // namespace S3
9832} // namespace Aws
9833