S3Client.h 393 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495
  1. /**
  2. * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
  3. * SPDX-License-Identifier: Apache-2.0.
  4. */
  5. #pragma once
  6. #include <aws/s3/S3_EXPORTS.h>
  7. #include <aws/core/client/ClientConfiguration.h>
  8. #include <aws/core/client/AWSClient.h>
  9. #include <aws/core/client/AWSClientAsyncCRTP.h>
  10. #include <aws/core/auth/AWSAuthSigner.h>
  11. #include <aws/core/utils/xml/XmlSerializer.h>
  12. #include <aws/core/utils/DNS.h>
  13. #include <aws/s3/S3ServiceClientModel.h>
  14. // TODO: temporary fix for naming conflicts on Windows.
  15. #ifdef _WIN32
  16. #ifdef GetObject
  17. #undef GetObject
  18. #endif
  19. #endif
  20. namespace Aws
  21. {
  22. namespace S3
  23. {
  24. namespace SSEHeaders
  25. {
  26. static const char SERVER_SIDE_ENCRYPTION[] = "x-amz-server-side-encryption";
  27. static const char SERVER_SIDE_ENCRYPTION_AWS_KMS_KEY_ID[] = "x-amz-server-side-encryption-aws-kms-key-id";
  28. static const char SERVER_SIDE_ENCRYPTION_CUSTOMER_ALGORITHM[] = "x-amz-server-side-encryption-customer-algorithm";
  29. static const char SERVER_SIDE_ENCRYPTION_CUSTOMER_KEY[] = "x-amz-server-side-encryption-customer-key";
  30. static const char SERVER_SIDE_ENCRYPTION_CUSTOMER_KEY_MD5[] = "x-amz-server-side-encryption-customer-key-MD5";
  31. } // SS3Headers
  32. //max expiration for presigned urls in s3 is 7 days.
  33. static const unsigned MAX_EXPIRATION_SECONDS = 7 * 24 * 60 * 60;
  34. /**
  35. * <p/>
  36. */
  37. class AWS_S3_API S3Client : public Aws::Client::AWSXMLClient, public Aws::Client::ClientWithAsyncTemplateMethods<S3Client>
  38. {
  39. public:
  40. typedef Aws::Client::AWSXMLClient BASECLASS;
  41. static const char* SERVICE_NAME;
  42. static const char* ALLOCATION_TAG;
  43. /**
  44. * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
  45. * is not specified, it will be initialized to default values.
  46. */
  47. S3Client(const Aws::S3::S3ClientConfiguration& clientConfiguration = Aws::S3::S3ClientConfiguration(),
  48. std::shared_ptr<S3EndpointProviderBase> endpointProvider = Aws::MakeShared<S3EndpointProvider>(ALLOCATION_TAG));
  49. /**
  50. * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
  51. * is not specified, it will be initialized to default values.
  52. */
  53. S3Client(const Aws::Auth::AWSCredentials& credentials,
  54. std::shared_ptr<S3EndpointProviderBase> endpointProvider = Aws::MakeShared<S3EndpointProvider>(ALLOCATION_TAG),
  55. const Aws::S3::S3ClientConfiguration& clientConfiguration = Aws::S3::S3ClientConfiguration());
  56. /**
  57. * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
  58. * the default http client factory will be used
  59. */
  60. S3Client(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider>& credentialsProvider,
  61. std::shared_ptr<S3EndpointProviderBase> endpointProvider = Aws::MakeShared<S3EndpointProvider>(ALLOCATION_TAG),
  62. const Aws::S3::S3ClientConfiguration& clientConfiguration = Aws::S3::S3ClientConfiguration());
  63. /* Legacy constructors due deprecation */
  64. /**
  65. * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
  66. * is not specified, it will be initialized to default values.
  67. */
  68. S3Client(const Aws::Client::ClientConfiguration& clientConfiguration,
  69. Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy signPayloads,
  70. bool useVirtualAddressing,
  71. Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION USEast1RegionalEndPointOption = Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION::NOT_SET);
  72. /**
  73. * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
  74. * is not specified, it will be initialized to default values.
  75. */
  76. S3Client(const Aws::Auth::AWSCredentials& credentials,
  77. const Aws::Client::ClientConfiguration& clientConfiguration,
  78. Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy signPayloads,
  79. bool useVirtualAddressing,
  80. Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION USEast1RegionalEndPointOption = Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION::NOT_SET);
  81. /**
  82. * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
  83. * the default http client factory will be used
  84. */
  85. S3Client(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider>& credentialsProvider,
  86. const Aws::Client::ClientConfiguration& clientConfiguration,
  87. Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy signPayloads,
  88. bool useVirtualAddressing,
  89. Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION USEast1RegionalEndPointOption = Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION::NOT_SET);
  90. /* End of legacy constructors due deprecation */
  91. virtual ~S3Client();
  92. /**
  93. * <p>This action aborts a multipart upload. After a multipart upload is aborted,
  94. * no additional parts can be uploaded using that upload ID. The storage consumed
  95. * by any previously uploaded parts will be freed. However, if any part uploads are
  96. * currently in progress, those part uploads might or might not succeed. As a
  97. * result, it might be necessary to abort a given multipart upload multiple times
  98. * in order to completely free all storage consumed by all parts. </p> <p>To verify
  99. * that all parts have been removed, so you don't get charged for the part storage,
  100. * you should call the <a
  101. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html">ListParts</a>
  102. * action and ensure that the parts list is empty.</p> <p>For information about
  103. * permissions required to use the multipart upload, see <a
  104. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
  105. * Upload and Permissions</a>.</p> <p>The following operations are related to
  106. * <code>AbortMultipartUpload</code>:</p> <ul> <li> <p> <a
  107. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html">CreateMultipartUpload</a>
  108. * </p> </li> <li> <p> <a
  109. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html">UploadPart</a>
  110. * </p> </li> <li> <p> <a
  111. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html">CompleteMultipartUpload</a>
  112. * </p> </li> <li> <p> <a
  113. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html">ListParts</a>
  114. * </p> </li> <li> <p> <a
  115. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html">ListMultipartUploads</a>
  116. * </p> </li> </ul><p><h3>See Also:</h3> <a
  117. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AbortMultipartUpload">AWS
  118. * API Reference</a></p>
  119. */
  120. virtual Model::AbortMultipartUploadOutcome AbortMultipartUpload(const Model::AbortMultipartUploadRequest& request) const;
  121. /**
  122. * A Callable wrapper for AbortMultipartUpload that returns a future to the operation so that it can be executed in parallel to other requests.
  123. */
  124. template<typename AbortMultipartUploadRequestT = Model::AbortMultipartUploadRequest>
  125. Model::AbortMultipartUploadOutcomeCallable AbortMultipartUploadCallable(const AbortMultipartUploadRequestT& request) const
  126. {
  127. return SubmitCallable(&S3Client::AbortMultipartUpload, request);
  128. }
  129. /**
  130. * An Async wrapper for AbortMultipartUpload that queues the request into a thread executor and triggers associated callback when operation has finished.
  131. */
  132. template<typename AbortMultipartUploadRequestT = Model::AbortMultipartUploadRequest>
  133. void AbortMultipartUploadAsync(const AbortMultipartUploadRequestT& request, const AbortMultipartUploadResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  134. {
  135. return SubmitAsync(&S3Client::AbortMultipartUpload, request, handler, context);
  136. }
  137. /**
  138. * <p>Completes a multipart upload by assembling previously uploaded parts.</p>
  139. * <p>You first initiate the multipart upload and then upload all parts using the
  140. * <a
  141. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html">UploadPart</a>
  142. * operation. After successfully uploading all relevant parts of an upload, you
  143. * call this action to complete the upload. Upon receiving this request, Amazon S3
  144. * concatenates all the parts in ascending order by part number to create a new
  145. * object. In the Complete Multipart Upload request, you must provide the parts
  146. * list. You must ensure that the parts list is complete. This action concatenates
  147. * the parts that you provide in the list. For each part in the list, you must
  148. * provide the part number and the <code>ETag</code> value, returned after that
  149. * part was uploaded.</p> <p>Processing of a Complete Multipart Upload request
  150. * could take several minutes to complete. After Amazon S3 begins processing the
  151. * request, it sends an HTTP response header that specifies a 200 OK response.
  152. * While processing is in progress, Amazon S3 periodically sends white space
  153. * characters to keep the connection from timing out. Because a request could fail
  154. * after the initial 200 OK response has been sent, it is important that you check
  155. * the response body to determine whether the request succeeded.</p> <p>Note that
  156. * if <code>CompleteMultipartUpload</code> fails, applications should be prepared
  157. * to retry the failed requests. For more information, see <a
  158. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ErrorBestPractices.html">Amazon
  159. * S3 Error Best Practices</a>.</p> <p>You cannot use
  160. * <code>Content-Type: application/x-www-form-urlencoded</code> with Complete
  161. * Multipart Upload requests. Also, if you do not provide a
  162. * <code>Content-Type</code> header, <code>CompleteMultipartUpload</code> returns a
  163. * 200 OK response.</p> <p>For more information about multipart
  164. * uploads, see <a
  165. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html">Uploading
  166. * Objects Using Multipart Upload</a>.</p> <p>For information about permissions
  167. * required to use the multipart upload API, see <a
  168. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
  169. * Upload and Permissions</a>.</p> <p> <code>CompleteMultipartUpload</code> has the
  170. * following special errors:</p> <ul> <li> <p>Error code:
  171. * <code>EntityTooSmall</code> </p> <ul> <li> <p>Description: Your proposed upload
  172. * is smaller than the minimum allowed object size. Each part must be at least 5 MB
  173. * in size, except the last part.</p> </li> <li> <p>400 Bad Request</p> </li> </ul>
  174. * </li> <li> <p>Error code: <code>InvalidPart</code> </p> <ul> <li>
  175. * <p>Description: One or more of the specified parts could not be found. The part
  176. * might not have been uploaded, or the specified entity tag might not have matched
  177. * the part's entity tag.</p> </li> <li> <p>400 Bad Request</p> </li> </ul> </li>
  178. * <li> <p>Error code: <code>InvalidPartOrder</code> </p> <ul> <li> <p>Description:
  179. * The list of parts was not in ascending order. The parts list must be specified
  180. * in order by part number.</p> </li> <li> <p>400 Bad Request</p> </li> </ul> </li>
  181. * <li> <p>Error code: <code>NoSuchUpload</code> </p> <ul> <li> <p>Description: The
  182. * specified multipart upload does not exist. The upload ID might be invalid, or
  183. * the multipart upload might have been aborted or completed.</p> </li> <li> <p>404
  184. * Not Found</p> </li> </ul> </li> </ul> <p>The following operations are related to
  185. * <code>CompleteMultipartUpload</code>:</p> <ul> <li> <p> <a
  186. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html">CreateMultipartUpload</a>
  187. * </p> </li> <li> <p> <a
  188. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html">UploadPart</a>
  189. * </p> </li> <li> <p> <a
  190. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html">AbortMultipartUpload</a>
  191. * </p> </li> <li> <p> <a
  192. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html">ListParts</a>
  193. * </p> </li> <li> <p> <a
  194. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html">ListMultipartUploads</a>
  195. * </p> </li> </ul><p><h3>See Also:</h3> <a
  196. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CompleteMultipartUpload">AWS
  197. * API Reference</a></p>
  198. */
  199. virtual Model::CompleteMultipartUploadOutcome CompleteMultipartUpload(const Model::CompleteMultipartUploadRequest& request) const;
  200. /**
  201. * A Callable wrapper for CompleteMultipartUpload that returns a future to the operation so that it can be executed in parallel to other requests.
  202. */
  203. template<typename CompleteMultipartUploadRequestT = Model::CompleteMultipartUploadRequest>
  204. Model::CompleteMultipartUploadOutcomeCallable CompleteMultipartUploadCallable(const CompleteMultipartUploadRequestT& request) const
  205. {
  206. return SubmitCallable(&S3Client::CompleteMultipartUpload, request);
  207. }
  208. /**
  209. * An Async wrapper for CompleteMultipartUpload that queues the request into a thread executor and triggers associated callback when operation has finished.
  210. */
  211. template<typename CompleteMultipartUploadRequestT = Model::CompleteMultipartUploadRequest>
  212. void CompleteMultipartUploadAsync(const CompleteMultipartUploadRequestT& request, const CompleteMultipartUploadResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  213. {
  214. return SubmitAsync(&S3Client::CompleteMultipartUpload, request, handler, context);
  215. }
  216. /**
  217. * <p>Creates a copy of an object that is already stored in Amazon S3.</p>
  218. * <p>You can store individual objects of up to 5 TB in Amazon S3. You create a
  219. * copy of your object up to 5 GB in size in a single atomic action using this API.
  220. * However, to copy an object greater than 5 GB, you must use the multipart upload
  221. * Upload Part - Copy (UploadPartCopy) API. For more information, see <a
  222. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjctsUsingRESTMPUapi.html">Copy
  223. * Object Using the REST Multipart Upload API</a>.</p> <p>All copy requests
  224. * must be authenticated. Additionally, you must have <i>read</i> access to the
  225. * source object and <i>write</i> access to the destination bucket. For more
  226. * information, see <a
  227. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
  228. * Authentication</a>. Both the Region that you want to copy the object from and
  229. * the Region that you want to copy the object to must be enabled for your
  230. * account.</p> <p>A copy request might return an error when Amazon S3 receives the
  231. * copy request or while Amazon S3 is copying the files. If the error occurs before
  232. * the copy action starts, you receive a standard Amazon S3 error. If the error
  233. * occurs during the copy operation, the error response is embedded in the
  234. * <code>200 OK</code> response. This means that a <code>200 OK</code> response can
  235. * contain either a success or an error. Design your application to parse the
  236. * contents of the response and handle it appropriately.</p> <p>If the copy is
  237. * successful, you receive a response with information about the copied object.</p>
  238. * <p>If the request is an HTTP 1.1 request, the response is chunk encoded.
  239. * If it were not, it would not contain the content-length, and you would need to
  240. * read the entire body.</p> <p>The copy request charge is based on the
  241. * storage class and Region that you specify for the destination object. For
  242. * pricing information, see <a href="http://aws.amazon.com/s3/pricing/">Amazon S3
  243. * pricing</a>.</p> <p>Amazon S3 transfer acceleration does not support
  244. * cross-Region copies. If you request a cross-Region copy using a transfer
  245. * acceleration endpoint, you get a 400 <code>Bad Request</code> error. For more
  246. * information, see <a
  247. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html">Transfer
  248. * Acceleration</a>.</p> <p> <b>Metadata</b> </p> <p>When copying an
  249. * object, you can preserve all metadata (default) or specify new metadata.
  250. * However, the ACL is not preserved and is set to private for the user making the
  251. * request. To override the default ACL setting, specify a new ACL when generating
  252. * a copy request. For more information, see <a
  253. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using
  254. * ACLs</a>. </p> <p>To specify whether you want the object metadata copied from
  255. * the source object or replaced with metadata provided in the request, you can
  256. * optionally add the <code>x-amz-metadata-directive</code> header. When you grant
  257. * permissions, you can use the <code>s3:x-amz-metadata-directive</code> condition
  258. * key to enforce certain metadata behavior when objects are uploaded. For more
  259. * information, see <a
  260. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/amazon-s3-policy-keys.html">Specifying
  261. * Conditions in a Policy</a> in the <i>Amazon S3 User Guide</i>. For a complete
  262. * list of Amazon S3-specific condition keys, see <a
  263. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/list_amazons3.html">Actions,
  264. * Resources, and Condition Keys for Amazon S3</a>.</p> <p> <b>x-amz-copy-source-if
  265. * Headers</b> </p> <p>To only copy an object under certain conditions, such as
  266. * whether the <code>Etag</code> matches or whether the object was modified before
  267. * or after a specified date, use the following request parameters:</p> <ul> <li>
  268. * <p> <code>x-amz-copy-source-if-match</code> </p> </li> <li> <p>
  269. * <code>x-amz-copy-source-if-none-match</code> </p> </li> <li> <p>
  270. * <code>x-amz-copy-source-if-unmodified-since</code> </p> </li> <li> <p>
  271. * <code>x-amz-copy-source-if-modified-since</code> </p> </li> </ul> <p> If both
  272. * the <code>x-amz-copy-source-if-match</code> and
  273. * <code>x-amz-copy-source-if-unmodified-since</code> headers are present in the
  274. * request and evaluate as follows, Amazon S3 returns <code>200 OK</code> and
  275. * copies the data:</p> <ul> <li> <p> <code>x-amz-copy-source-if-match</code>
  276. * condition evaluates to true</p> </li> <li> <p>
  277. * <code>x-amz-copy-source-if-unmodified-since</code> condition evaluates to
  278. * false</p> </li> </ul> <p>If both the
  279. * <code>x-amz-copy-source-if-none-match</code> and
  280. * <code>x-amz-copy-source-if-modified-since</code> headers are present in the
  281. * request and evaluate as follows, Amazon S3 returns the <code>412 Precondition
  282. * Failed</code> response code:</p> <ul> <li> <p>
  283. * <code>x-amz-copy-source-if-none-match</code> condition evaluates to false</p>
  284. * </li> <li> <p> <code>x-amz-copy-source-if-modified-since</code> condition
  285. * evaluates to true</p> </li> </ul> <p>All headers with the
  286. * <code>x-amz-</code> prefix, including <code>x-amz-copy-source</code>, must be
  287. * signed.</p> <p> <b>Server-side encryption</b> </p> <p>When you perform a
  288. * CopyObject operation, you can optionally use the appropriate encryption-related
  289. * headers to encrypt the object using server-side encryption with Amazon Web
  290. * Services managed encryption keys (SSE-S3 or SSE-KMS) or a customer-provided
  291. * encryption key. With server-side encryption, Amazon S3 encrypts your data as it
  292. * writes it to disks in its data centers and decrypts the data when you access it.
  293. * For more information about server-side encryption, see <a
  294. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html">Using
  295. * Server-Side Encryption</a>.</p> <p>If a target object uses SSE-KMS, you can
  296. * enable an S3 Bucket Key for the object. For more information, see <a
  297. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html">Amazon S3
  298. * Bucket Keys</a> in the <i>Amazon S3 User Guide</i>.</p> <p> <b>Access Control
  299. * List (ACL)-Specific Request Headers</b> </p> <p>When copying an object, you can
  300. * optionally use headers to grant ACL-based permissions. By default, all objects
  301. * are private. Only the owner has full access control. When adding a new object,
  302. * you can grant permissions to individual Amazon Web Services accounts or to
  303. * predefined groups defined by Amazon S3. These permissions are then added to the
  304. * ACL on the object. For more information, see <a
  305. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
  306. * Control List (ACL) Overview</a> and <a
  307. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html">Managing
  308. * ACLs Using the REST API</a>. </p> <p>If the bucket that you're copying objects
  309. * to uses the bucket owner enforced setting for S3 Object Ownership, ACLs are
  310. * disabled and no longer affect permissions. Buckets that use this setting only
  311. * accept PUT requests that don't specify an ACL or PUT requests that specify
  312. * bucket owner full control ACLs, such as the
  313. * <code>bucket-owner-full-control</code> canned ACL or an equivalent form of this
  314. * ACL expressed in the XML format.</p> <p>For more information, see <a
  315. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html">
  316. * Controlling ownership of objects and disabling ACLs</a> in the <i>Amazon S3 User
  317. * Guide</i>.</p> <p>If your bucket uses the bucket owner enforced setting
  318. * for Object Ownership, all objects written to the bucket by any account will be
  319. * owned by the bucket owner.</p> <p> <b>Checksums</b> </p> <p>When copying
  320. * an object, if it has a checksum, that checksum will be copied to the new object
  321. * by default. When you copy the object over, you may optionally specify a
  322. * different checksum algorithm to use with the
  323. * <code>x-amz-checksum-algorithm</code> header.</p> <p> <b>Storage Class
  324. * Options</b> </p> <p>You can use the <code>CopyObject</code> action to change the
  325. * storage class of an object that is already stored in Amazon S3 using the
  326. * <code>StorageClass</code> parameter. For more information, see <a
  327. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
  328. * Classes</a> in the <i>Amazon S3 User Guide</i>.</p> <p> <b>Versioning</b> </p>
  329. * <p>By default, <code>x-amz-copy-source</code> identifies the current version of
  330. * an object to copy. If the current version is a delete marker, Amazon S3 behaves
  331. * as if the object was deleted. To copy a different version, use the
  332. * <code>versionId</code> subresource.</p> <p>If you enable versioning on the
  333. * target bucket, Amazon S3 generates a unique version ID for the object being
  334. * copied. This version ID is different from the version ID of the source object.
  335. * Amazon S3 returns the version ID of the copied object in the
  336. * <code>x-amz-version-id</code> response header in the response.</p> <p>If you do
  337. * not enable versioning or suspend it on the target bucket, the version ID that
  338. * Amazon S3 generates is always null.</p> <p>If the source object's storage class
  339. * is GLACIER, you must restore a copy of this object before you can use it as a
  340. * source object for the copy operation. For more information, see <a
  341. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html">RestoreObject</a>.</p>
  342. * <p>The following operations are related to <code>CopyObject</code>:</p> <ul>
  343. * <li> <p> <a
  344. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html">PutObject</a>
  345. * </p> </li> <li> <p> <a
  346. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>
  347. * </p> </li> </ul> <p>For more information, see <a
  348. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectsExamples.html">Copying
  349. * Objects</a>.</p><p><h3>See Also:</h3> <a
  350. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyObject">AWS API
  351. * Reference</a></p>
  352. */
  353. virtual Model::CopyObjectOutcome CopyObject(const Model::CopyObjectRequest& request) const;
  354. /**
  355. * A Callable wrapper for CopyObject that returns a future to the operation so that it can be executed in parallel to other requests.
  356. */
  357. template<typename CopyObjectRequestT = Model::CopyObjectRequest>
  358. Model::CopyObjectOutcomeCallable CopyObjectCallable(const CopyObjectRequestT& request) const
  359. {
  360. return SubmitCallable(&S3Client::CopyObject, request);
  361. }
  362. /**
  363. * An Async wrapper for CopyObject that queues the request into a thread executor and triggers associated callback when operation has finished.
  364. */
  365. template<typename CopyObjectRequestT = Model::CopyObjectRequest>
  366. void CopyObjectAsync(const CopyObjectRequestT& request, const CopyObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  367. {
  368. return SubmitAsync(&S3Client::CopyObject, request, handler, context);
  369. }
  370. /**
  371. * <p>Creates a new S3 bucket. To create a bucket, you must register with Amazon S3
  372. * and have a valid Amazon Web Services Access Key ID to authenticate requests.
  373. * Anonymous requests are never allowed to create buckets. By creating the bucket,
  374. * you become the bucket owner.</p> <p>Not every string is an acceptable bucket
  375. * name. For information about bucket naming restrictions, see <a
  376. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html">Bucket
  377. * naming rules</a>.</p> <p>If you want to create an Amazon S3 on Outposts bucket,
  378. * see <a
  379. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateBucket.html">Create
  380. * Bucket</a>. </p> <p>By default, the bucket is created in the US East (N.
  381. * Virginia) Region. You can optionally specify a Region in the request body. You
  382. * might choose a Region to optimize latency, minimize costs, or address regulatory
  383. * requirements. For example, if you reside in Europe, you will probably find it
  384. * advantageous to create buckets in the Europe (Ireland) Region. For more
  385. * information, see <a
  386. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro">Accessing
  387. * a bucket</a>.</p> <p>If you send your create bucket request to the
  388. * <code>s3.amazonaws.com</code> endpoint, the request goes to the us-east-1
  389. * Region. Accordingly, the signature calculations in Signature Version 4 must use
  390. * us-east-1 as the Region, even if the location constraint in the request
  391. * specifies another Region where the bucket is to be created. If you create a
  392. * bucket in a Region other than US East (N. Virginia), your application must be
  393. * able to handle 307 redirect. For more information, see <a
  394. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html">Virtual
  395. * hosting of buckets</a>.</p> <p> <b>Access control lists (ACLs)</b> </p>
  396. * <p>When creating a bucket using this operation, you can optionally configure the
  397. * bucket ACL to specify the accounts or groups that should be granted specific
  398. * permissions on the bucket.</p> <p>If your CreateBucket request sets
  399. * bucket owner enforced for S3 Object Ownership and specifies a bucket ACL that
  400. * provides access to an external Amazon Web Services account, your request fails
  401. * with a <code>400</code> error and returns the
  402. * <code>InvalidBucketAclWithObjectOwnership</code> error code. For more
  403. * information, see <a
  404. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html">Controlling
  405. * object ownership</a> in the <i>Amazon S3 User Guide</i>.</p>
  406. * <p>There are two ways to grant the appropriate permissions using the request
  407. * headers.</p> <ul> <li> <p>Specify a canned ACL using the <code>x-amz-acl</code>
  408. * request header. Amazon S3 supports a set of predefined ACLs, known as <i>canned
  409. * ACLs</i>. Each canned ACL has a predefined set of grantees and permissions. For
  410. * more information, see <a
  411. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
  412. * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly using the
  413. * <code>x-amz-grant-read</code>, <code>x-amz-grant-write</code>,
  414. * <code>x-amz-grant-read-acp</code>, <code>x-amz-grant-write-acp</code>, and
  415. * <code>x-amz-grant-full-control</code> headers. These headers map to the set of
  416. * permissions Amazon S3 supports in an ACL. For more information, see <a
  417. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html">Access
  418. * control list (ACL) overview</a>.</p> <p>You specify each grantee as a type=value
  419. * pair, where the type is one of the following:</p> <ul> <li> <p> <code>id</code>
  420. * – if the value specified is the canonical user ID of an Amazon Web Services
  421. * account</p> </li> <li> <p> <code>uri</code> – if you are granting permissions to
  422. * a predefined group</p> </li> <li> <p> <code>emailAddress</code> – if the value
  423. * specified is the email address of an Amazon Web Services account</p>
  424. * <p>Using email addresses to specify a grantee is only supported in the following
  425. * Amazon Web Services Regions: </p> <ul> <li> <p>US East (N. Virginia)</p> </li>
  426. * <li> <p>US West (N. California)</p> </li> <li> <p> US West (Oregon)</p> </li>
  427. * <li> <p> Asia Pacific (Singapore)</p> </li> <li> <p>Asia Pacific (Sydney)</p>
  428. * </li> <li> <p>Asia Pacific (Tokyo)</p> </li> <li> <p>Europe (Ireland)</p> </li>
  429. * <li> <p>South America (São Paulo)</p> </li> </ul> <p>For a list of all the
  430. * Amazon S3 supported Regions and endpoints, see <a
  431. * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
  432. * and Endpoints</a> in the Amazon Web Services General Reference.</p>
  433. * </li> </ul> <p>For example, the following <code>x-amz-grant-read</code> header
  434. * grants the Amazon Web Services accounts identified by account IDs permissions to
  435. * read object data and its metadata:</p> <p> <code>x-amz-grant-read:
  436. * id="11112222333", id="444455556666" </code> </p> </li> </ul> <p>You can
  437. * use either a canned ACL or specify access permissions explicitly. You cannot do
  438. * both.</p> <p> <b>Permissions</b> </p> <p>In addition to
  439. * <code>s3:CreateBucket</code>, the following permissions are required when your
  440. * CreateBucket includes specific headers:</p> <ul> <li> <p> <b>ACLs</b> - If your
  441. * <code>CreateBucket</code> request specifies ACL permissions and the ACL is
  442. * public-read, public-read-write, authenticated-read, or if you specify access
  443. * permissions explicitly through any other ACL, both <code>s3:CreateBucket</code>
  444. * and <code>s3:PutBucketAcl</code> permissions are needed. If the ACL the
  445. * <code>CreateBucket</code> request is private or doesn't specify any ACLs, only
  446. * <code>s3:CreateBucket</code> permission is needed. </p> </li> <li> <p> <b>Object
  447. * Lock</b> - If <code>ObjectLockEnabledForBucket</code> is set to true in your
  448. * <code>CreateBucket</code> request,
  449. * <code>s3:PutBucketObjectLockConfiguration</code> and
  450. * <code>s3:PutBucketVersioning</code> permissions are required.</p> </li> <li> <p>
  451. * <b>S3 Object Ownership</b> - If your CreateBucket request includes the the
  452. * <code>x-amz-object-ownership</code> header,
  453. * <code>s3:PutBucketOwnershipControls</code> permission is required.</p> </li>
  454. * </ul> <p>The following operations are related to <code>CreateBucket</code>:</p>
  455. * <ul> <li> <p> <a
  456. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html">PutObject</a>
  457. * </p> </li> <li> <p> <a
  458. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html">DeleteBucket</a>
  459. * </p> </li> </ul><p><h3>See Also:</h3> <a
  460. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateBucket">AWS API
  461. * Reference</a></p>
  462. */
  463. virtual Model::CreateBucketOutcome CreateBucket(const Model::CreateBucketRequest& request) const;
  464. /**
  465. * A Callable wrapper for CreateBucket that returns a future to the operation so that it can be executed in parallel to other requests.
  466. */
  467. template<typename CreateBucketRequestT = Model::CreateBucketRequest>
  468. Model::CreateBucketOutcomeCallable CreateBucketCallable(const CreateBucketRequestT& request) const
  469. {
  470. return SubmitCallable(&S3Client::CreateBucket, request);
  471. }
  472. /**
  473. * An Async wrapper for CreateBucket that queues the request into a thread executor and triggers associated callback when operation has finished.
  474. */
  475. template<typename CreateBucketRequestT = Model::CreateBucketRequest>
  476. void CreateBucketAsync(const CreateBucketRequestT& request, const CreateBucketResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  477. {
  478. return SubmitAsync(&S3Client::CreateBucket, request, handler, context);
  479. }
  480. /**
  481. * <p>This action initiates a multipart upload and returns an upload ID. This
  482. * upload ID is used to associate all of the parts in the specific multipart
  483. * upload. You specify this upload ID in each of your subsequent upload part
  484. * requests (see <a
  485. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html">UploadPart</a>).
  486. * You also include this upload ID in the final request to either complete or abort
  487. * the multipart upload request.</p> <p>For more information about multipart
  488. * uploads, see <a
  489. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html">Multipart
  490. * Upload Overview</a>.</p> <p>If you have configured a lifecycle rule to abort
  491. * incomplete multipart uploads, the upload must complete within the number of days
  492. * specified in the bucket lifecycle configuration. Otherwise, the incomplete
  493. * multipart upload becomes eligible for an abort action and Amazon S3 aborts the
  494. * multipart upload. For more information, see <a
  495. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config">Aborting
  496. * Incomplete Multipart Uploads Using a Bucket Lifecycle Policy</a>.</p> <p>For
  497. * information about the permissions required to use the multipart upload API, see
  498. * <a
  499. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
  500. * Upload and Permissions</a>.</p> <p>For request signing, multipart upload is just
  501. * a series of regular requests. You initiate a multipart upload, send one or more
  502. * requests to upload parts, and then complete the multipart upload process. You
  503. * sign each request individually. There is nothing special about signing multipart
  504. * upload requests. For more information about signing, see <a
  505. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html">Authenticating
  506. * Requests (Amazon Web Services Signature Version 4)</a>.</p> <p> After you
  507. * initiate a multipart upload and upload one or more parts, to stop being charged
  508. * for storing the uploaded parts, you must either complete or abort the multipart
  509. * upload. Amazon S3 frees up the space used to store the parts and stop charging
  510. * you for storing them only after you either complete or abort a multipart upload.
  511. * </p> <p>You can optionally request server-side encryption. For
  512. * server-side encryption, Amazon S3 encrypts your data as it writes it to disks in
  513. * its data centers and decrypts it when you access it. You can provide your own
  514. * encryption key, or use Amazon Web Services KMS keys or Amazon S3-managed
  515. * encryption keys. If you choose to provide your own encryption key, the request
  516. * headers you provide in <a
  517. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html">UploadPart</a>
  518. * and <a
  519. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html">UploadPartCopy</a>
  520. * requests must match the headers you used in the request to initiate the upload
  521. * by using <code>CreateMultipartUpload</code>. </p> <p>To perform a multipart
  522. * upload with encryption using an Amazon Web Services KMS key, the requester must
  523. * have permission to the <code>kms:Decrypt</code> and
  524. * <code>kms:GenerateDataKey*</code> actions on the key. These permissions are
  525. * required because Amazon S3 must decrypt and read data from the encrypted file
  526. * parts before it completes the multipart upload. For more information, see <a
  527. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions">Multipart
  528. * upload API and permissions</a> in the <i>Amazon S3 User Guide</i>.</p> <p>If
  529. * your Identity and Access Management (IAM) user or role is in the same Amazon Web
  530. * Services account as the KMS key, then you must have these permissions on the key
  531. * policy. If your IAM user or role belongs to a different account than the key,
  532. * then you must have the permissions on both the key policy and your IAM user or
  533. * role.</p> <p> For more information, see <a
  534. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html">Protecting
  535. * Data Using Server-Side Encryption</a>.</p> <dl> <dt>Access Permissions</dt> <dd>
  536. * <p>When copying an object, you can optionally specify the accounts or groups
  537. * that should be granted specific permissions on the new object. There are two
  538. * ways to grant the permissions using the request headers:</p> <ul> <li>
  539. * <p>Specify a canned ACL with the <code>x-amz-acl</code> request header. For more
  540. * information, see <a
  541. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
  542. * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly with the
  543. * <code>x-amz-grant-read</code>, <code>x-amz-grant-read-acp</code>,
  544. * <code>x-amz-grant-write-acp</code>, and <code>x-amz-grant-full-control</code>
  545. * headers. These parameters map to the set of permissions that Amazon S3 supports
  546. * in an ACL. For more information, see <a
  547. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
  548. * Control List (ACL) Overview</a>.</p> </li> </ul> <p>You can use either a canned
  549. * ACL or specify access permissions explicitly. You cannot do both.</p> </dd>
  550. * <dt>Server-Side- Encryption-Specific Request Headers</dt> <dd> <p>You can
  551. * optionally tell Amazon S3 to encrypt data at rest using server-side encryption.
  552. * Server-side encryption is for data encryption at rest. Amazon S3 encrypts your
  553. * data as it writes it to disks in its data centers and decrypts it when you
  554. * access it. The option you use depends on whether you want to use Amazon Web
  555. * Services managed encryption keys or provide your own encryption key. </p> <ul>
  556. * <li> <p>Use encryption keys managed by Amazon S3 or customer managed key stored
  557. * in Amazon Web Services Key Management Service (Amazon Web Services KMS) – If you
  558. * want Amazon Web Services to manage the keys used to encrypt data, specify the
  559. * following headers in the request.</p> <ul> <li> <p>
  560. * <code>x-amz-server-side-encryption</code> </p> </li> <li> <p>
  561. * <code>x-amz-server-side-encryption-aws-kms-key-id</code> </p> </li> <li> <p>
  562. * <code>x-amz-server-side-encryption-context</code> </p> </li> </ul> <p>If
  563. * you specify <code>x-amz-server-side-encryption:aws:kms</code>, but don't provide
  564. * <code>x-amz-server-side-encryption-aws-kms-key-id</code>, Amazon S3 uses the
  565. * Amazon Web Services managed key in Amazon Web Services KMS to protect the
  566. * data.</p> <p>All GET and PUT requests for an object
  567. * protected by Amazon Web Services KMS fail if you don't make them with SSL or by
  568. * using SigV4.</p> <p>For more information about server-side
  569. * encryption with KMS key (SSE-KMS), see <a
  570. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
  571. * Data Using Server-Side Encryption with KMS keys</a>.</p> </li> <li> <p>Use
  572. * customer-provided encryption keys – If you want to manage your own encryption
  573. * keys, provide all the following headers in the request.</p> <ul> <li> <p>
  574. * <code>x-amz-server-side-encryption-customer-algorithm</code> </p> </li> <li> <p>
  575. * <code>x-amz-server-side-encryption-customer-key</code> </p> </li> <li> <p>
  576. * <code>x-amz-server-side-encryption-customer-key-MD5</code> </p> </li> </ul>
  577. * <p>For more information about server-side encryption with KMS keys (SSE-KMS),
  578. * see <a
  579. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">Protecting
  580. * Data Using Server-Side Encryption with KMS keys</a>.</p> </li> </ul> </dd>
  581. * <dt>Access-Control-List (ACL)-Specific Request Headers</dt> <dd> <p>You also can
  582. * use the following access control–related headers with this operation. By
  583. * default, all objects are private. Only the owner has full access control. When
  584. * adding a new object, you can grant permissions to individual Amazon Web Services
  585. * accounts or to predefined groups defined by Amazon S3. These permissions are
  586. * then added to the access control list (ACL) on the object. For more information,
  587. * see <a
  588. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using
  589. * ACLs</a>. With this operation, you can grant access permissions using one of the
  590. * following two methods:</p> <ul> <li> <p>Specify a canned ACL
  591. * (<code>x-amz-acl</code>) — Amazon S3 supports a set of predefined ACLs, known as
  592. * <i>canned ACLs</i>. Each canned ACL has a predefined set of grantees and
  593. * permissions. For more information, see <a
  594. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
  595. * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly — To explicitly
  596. * grant access permissions to specific Amazon Web Services accounts or groups, use
  597. * the following headers. Each header maps to specific permissions that Amazon S3
  598. * supports in an ACL. For more information, see <a
  599. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
  600. * Control List (ACL) Overview</a>. In the header, you specify a list of grantees
  601. * who get the specific permission. To grant permissions explicitly, use:</p> <ul>
  602. * <li> <p> <code>x-amz-grant-read</code> </p> </li> <li> <p>
  603. * <code>x-amz-grant-write</code> </p> </li> <li> <p>
  604. * <code>x-amz-grant-read-acp</code> </p> </li> <li> <p>
  605. * <code>x-amz-grant-write-acp</code> </p> </li> <li> <p>
  606. * <code>x-amz-grant-full-control</code> </p> </li> </ul> <p>You specify each
  607. * grantee as a type=value pair, where the type is one of the following:</p> <ul>
  608. * <li> <p> <code>id</code> – if the value specified is the canonical user ID of an
  609. * Amazon Web Services account</p> </li> <li> <p> <code>uri</code> – if you are
  610. * granting permissions to a predefined group</p> </li> <li> <p>
  611. * <code>emailAddress</code> – if the value specified is the email address of an
  612. * Amazon Web Services account</p> <p>Using email addresses to specify a
  613. * grantee is only supported in the following Amazon Web Services Regions: </p>
  614. * <ul> <li> <p>US East (N. Virginia)</p> </li> <li> <p>US West (N. California)</p>
  615. * </li> <li> <p> US West (Oregon)</p> </li> <li> <p> Asia Pacific (Singapore)</p>
  616. * </li> <li> <p>Asia Pacific (Sydney)</p> </li> <li> <p>Asia Pacific (Tokyo)</p>
  617. * </li> <li> <p>Europe (Ireland)</p> </li> <li> <p>South America (São Paulo)</p>
  618. * </li> </ul> <p>For a list of all the Amazon S3 supported Regions and endpoints,
  619. * see <a
  620. * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
  621. * and Endpoints</a> in the Amazon Web Services General Reference.</p>
  622. * </li> </ul> <p>For example, the following <code>x-amz-grant-read</code> header
  623. * grants the Amazon Web Services accounts identified by account IDs permissions to
  624. * read object data and its metadata:</p> <p> <code>x-amz-grant-read:
  625. * id="11112222333", id="444455556666" </code> </p> </li> </ul> </dd> </dl> <p>The
  626. * following operations are related to <code>CreateMultipartUpload</code>:</p> <ul>
  627. * <li> <p> <a
  628. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html">UploadPart</a>
  629. * </p> </li> <li> <p> <a
  630. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html">CompleteMultipartUpload</a>
  631. * </p> </li> <li> <p> <a
  632. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html">AbortMultipartUpload</a>
  633. * </p> </li> <li> <p> <a
  634. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html">ListParts</a>
  635. * </p> </li> <li> <p> <a
  636. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html">ListMultipartUploads</a>
  637. * </p> </li> </ul><p><h3>See Also:</h3> <a
  638. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateMultipartUpload">AWS
  639. * API Reference</a></p>
  640. */
  641. virtual Model::CreateMultipartUploadOutcome CreateMultipartUpload(const Model::CreateMultipartUploadRequest& request) const;
  642. /**
  643. * A Callable wrapper for CreateMultipartUpload that returns a future to the operation so that it can be executed in parallel to other requests.
  644. */
  645. template<typename CreateMultipartUploadRequestT = Model::CreateMultipartUploadRequest>
  646. Model::CreateMultipartUploadOutcomeCallable CreateMultipartUploadCallable(const CreateMultipartUploadRequestT& request) const
  647. {
  648. return SubmitCallable(&S3Client::CreateMultipartUpload, request);
  649. }
  650. /**
  651. * An Async wrapper for CreateMultipartUpload that queues the request into a thread executor and triggers associated callback when operation has finished.
  652. */
  653. template<typename CreateMultipartUploadRequestT = Model::CreateMultipartUploadRequest>
  654. void CreateMultipartUploadAsync(const CreateMultipartUploadRequestT& request, const CreateMultipartUploadResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  655. {
  656. return SubmitAsync(&S3Client::CreateMultipartUpload, request, handler, context);
  657. }
  658. /**
  659. * <p>Deletes the S3 bucket. All objects (including all object versions and delete
  660. * markers) in the bucket must be deleted before the bucket itself can be
  661. * deleted.</p> <p class="title"> <b>Related Resources</b> </p> <ul> <li> <p> <a
  662. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html">CreateBucket</a>
  663. * </p> </li> <li> <p> <a
  664. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html">DeleteObject</a>
  665. * </p> </li> </ul><p><h3>See Also:</h3> <a
  666. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket">AWS API
  667. * Reference</a></p>
  668. */
  669. virtual Model::DeleteBucketOutcome DeleteBucket(const Model::DeleteBucketRequest& request) const;
  670. /**
  671. * A Callable wrapper for DeleteBucket that returns a future to the operation so that it can be executed in parallel to other requests.
  672. */
  673. template<typename DeleteBucketRequestT = Model::DeleteBucketRequest>
  674. Model::DeleteBucketOutcomeCallable DeleteBucketCallable(const DeleteBucketRequestT& request) const
  675. {
  676. return SubmitCallable(&S3Client::DeleteBucket, request);
  677. }
  678. /**
  679. * An Async wrapper for DeleteBucket that queues the request into a thread executor and triggers associated callback when operation has finished.
  680. */
  681. template<typename DeleteBucketRequestT = Model::DeleteBucketRequest>
  682. void DeleteBucketAsync(const DeleteBucketRequestT& request, const DeleteBucketResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  683. {
  684. return SubmitAsync(&S3Client::DeleteBucket, request, handler, context);
  685. }
  686. /**
  687. * <p>Deletes an analytics configuration for the bucket (specified by the analytics
  688. * configuration ID).</p> <p>To use this operation, you must have permissions to
  689. * perform the <code>s3:PutAnalyticsConfiguration</code> action. The bucket owner
  690. * has this permission by default. The bucket owner can grant this permission to
  691. * others. For more information about permissions, see <a
  692. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  693. * Related to Bucket Subresource Operations</a> and <a
  694. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  695. * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
  696. * the Amazon S3 analytics feature, see <a
  697. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html">Amazon
  698. * S3 Analytics – Storage Class Analysis</a>. </p> <p>The following operations are
  699. * related to <code>DeleteBucketAnalyticsConfiguration</code>:</p> <ul> <li> <p> <a
  700. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html">GetBucketAnalyticsConfiguration</a>
  701. * </p> </li> <li> <p> <a
  702. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketAnalyticsConfigurations.html">ListBucketAnalyticsConfigurations</a>
  703. * </p> </li> <li> <p> <a
  704. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html">PutBucketAnalyticsConfiguration</a>
  705. * </p> </li> </ul><p><h3>See Also:</h3> <a
  706. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration">AWS
  707. * API Reference</a></p>
  708. */
  709. virtual Model::DeleteBucketAnalyticsConfigurationOutcome DeleteBucketAnalyticsConfiguration(const Model::DeleteBucketAnalyticsConfigurationRequest& request) const;
  710. /**
  711. * A Callable wrapper for DeleteBucketAnalyticsConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  712. */
  713. template<typename DeleteBucketAnalyticsConfigurationRequestT = Model::DeleteBucketAnalyticsConfigurationRequest>
  714. Model::DeleteBucketAnalyticsConfigurationOutcomeCallable DeleteBucketAnalyticsConfigurationCallable(const DeleteBucketAnalyticsConfigurationRequestT& request) const
  715. {
  716. return SubmitCallable(&S3Client::DeleteBucketAnalyticsConfiguration, request);
  717. }
  718. /**
  719. * An Async wrapper for DeleteBucketAnalyticsConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  720. */
  721. template<typename DeleteBucketAnalyticsConfigurationRequestT = Model::DeleteBucketAnalyticsConfigurationRequest>
  722. void DeleteBucketAnalyticsConfigurationAsync(const DeleteBucketAnalyticsConfigurationRequestT& request, const DeleteBucketAnalyticsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  723. {
  724. return SubmitAsync(&S3Client::DeleteBucketAnalyticsConfiguration, request, handler, context);
  725. }
  726. /**
  727. * <p>Deletes the <code>cors</code> configuration information set for the
  728. * bucket.</p> <p>To use this operation, you must have permission to perform the
  729. * <code>s3:PutBucketCORS</code> action. The bucket owner has this permission by
  730. * default and can grant this permission to others. </p> <p>For information about
  731. * <code>cors</code>, see <a
  732. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html">Enabling
  733. * Cross-Origin Resource Sharing</a> in the <i>Amazon S3 User Guide</i>.</p> <p
  734. * class="title"> <b>Related Resources:</b> </p> <ul> <li> <p> <a
  735. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketCors.html">PutBucketCors</a>
  736. * </p> </li> <li> <p> <a
  737. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTOPTIONSobject.html">RESTOPTIONSobject</a>
  738. * </p> </li> </ul><p><h3>See Also:</h3> <a
  739. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors">AWS
  740. * API Reference</a></p>
  741. */
  742. virtual Model::DeleteBucketCorsOutcome DeleteBucketCors(const Model::DeleteBucketCorsRequest& request) const;
  743. /**
  744. * A Callable wrapper for DeleteBucketCors that returns a future to the operation so that it can be executed in parallel to other requests.
  745. */
  746. template<typename DeleteBucketCorsRequestT = Model::DeleteBucketCorsRequest>
  747. Model::DeleteBucketCorsOutcomeCallable DeleteBucketCorsCallable(const DeleteBucketCorsRequestT& request) const
  748. {
  749. return SubmitCallable(&S3Client::DeleteBucketCors, request);
  750. }
  751. /**
  752. * An Async wrapper for DeleteBucketCors that queues the request into a thread executor and triggers associated callback when operation has finished.
  753. */
  754. template<typename DeleteBucketCorsRequestT = Model::DeleteBucketCorsRequest>
  755. void DeleteBucketCorsAsync(const DeleteBucketCorsRequestT& request, const DeleteBucketCorsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  756. {
  757. return SubmitAsync(&S3Client::DeleteBucketCors, request, handler, context);
  758. }
  759. /**
  760. * <p>This implementation of the DELETE action removes default encryption from the
  761. * bucket. For information about the Amazon S3 default encryption feature, see <a
  762. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html">Amazon
  763. * S3 Default Bucket Encryption</a> in the <i>Amazon S3 User Guide</i>.</p> <p>To
  764. * use this operation, you must have permissions to perform the
  765. * <code>s3:PutEncryptionConfiguration</code> action. The bucket owner has this
  766. * permission by default. The bucket owner can grant this permission to others. For
  767. * more information about permissions, see <a
  768. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  769. * Related to Bucket Subresource Operations</a> and <a
  770. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  771. * Access Permissions to your Amazon S3 Resources</a> in the <i>Amazon S3 User
  772. * Guide</i>.</p> <p class="title"> <b>Related Resources</b> </p> <ul> <li> <p> <a
  773. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html">PutBucketEncryption</a>
  774. * </p> </li> <li> <p> <a
  775. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html">GetBucketEncryption</a>
  776. * </p> </li> </ul><p><h3>See Also:</h3> <a
  777. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption">AWS
  778. * API Reference</a></p>
  779. */
  780. virtual Model::DeleteBucketEncryptionOutcome DeleteBucketEncryption(const Model::DeleteBucketEncryptionRequest& request) const;
  781. /**
  782. * A Callable wrapper for DeleteBucketEncryption that returns a future to the operation so that it can be executed in parallel to other requests.
  783. */
  784. template<typename DeleteBucketEncryptionRequestT = Model::DeleteBucketEncryptionRequest>
  785. Model::DeleteBucketEncryptionOutcomeCallable DeleteBucketEncryptionCallable(const DeleteBucketEncryptionRequestT& request) const
  786. {
  787. return SubmitCallable(&S3Client::DeleteBucketEncryption, request);
  788. }
  789. /**
  790. * An Async wrapper for DeleteBucketEncryption that queues the request into a thread executor and triggers associated callback when operation has finished.
  791. */
  792. template<typename DeleteBucketEncryptionRequestT = Model::DeleteBucketEncryptionRequest>
  793. void DeleteBucketEncryptionAsync(const DeleteBucketEncryptionRequestT& request, const DeleteBucketEncryptionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  794. {
  795. return SubmitAsync(&S3Client::DeleteBucketEncryption, request, handler, context);
  796. }
  797. /**
  798. * <p>Deletes the S3 Intelligent-Tiering configuration from the specified
  799. * bucket.</p> <p>The S3 Intelligent-Tiering storage class is designed to optimize
  800. * storage costs by automatically moving data to the most cost-effective storage
  801. * access tier, without performance impact or operational overhead. S3
  802. * Intelligent-Tiering delivers automatic cost savings in three low latency and
  803. * high throughput access tiers. To get the lowest storage cost on data that can be
  804. * accessed in minutes to hours, you can choose to activate additional archiving
  805. * capabilities.</p> <p>The S3 Intelligent-Tiering storage class is the ideal
  806. * storage class for data with unknown, changing, or unpredictable access patterns,
  807. * independent of object size or retention period. If the size of an object is less
  808. * than 128 KB, it is not monitored and not eligible for auto-tiering. Smaller
  809. * objects can be stored, but they are always charged at the Frequent Access tier
  810. * rates in the S3 Intelligent-Tiering storage class.</p> <p>For more information,
  811. * see <a
  812. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access">Storage
  813. * class for automatically optimizing frequently and infrequently accessed
  814. * objects</a>.</p> <p>Operations related to
  815. * <code>DeleteBucketIntelligentTieringConfiguration</code> include: </p> <ul> <li>
  816. * <p> <a
  817. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html">GetBucketIntelligentTieringConfiguration</a>
  818. * </p> </li> <li> <p> <a
  819. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html">PutBucketIntelligentTieringConfiguration</a>
  820. * </p> </li> <li> <p> <a
  821. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html">ListBucketIntelligentTieringConfigurations</a>
  822. * </p> </li> </ul><p><h3>See Also:</h3> <a
  823. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketIntelligentTieringConfiguration">AWS
  824. * API Reference</a></p>
  825. */
  826. virtual Model::DeleteBucketIntelligentTieringConfigurationOutcome DeleteBucketIntelligentTieringConfiguration(const Model::DeleteBucketIntelligentTieringConfigurationRequest& request) const;
  827. /**
  828. * A Callable wrapper for DeleteBucketIntelligentTieringConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  829. */
  830. template<typename DeleteBucketIntelligentTieringConfigurationRequestT = Model::DeleteBucketIntelligentTieringConfigurationRequest>
  831. Model::DeleteBucketIntelligentTieringConfigurationOutcomeCallable DeleteBucketIntelligentTieringConfigurationCallable(const DeleteBucketIntelligentTieringConfigurationRequestT& request) const
  832. {
  833. return SubmitCallable(&S3Client::DeleteBucketIntelligentTieringConfiguration, request);
  834. }
  835. /**
  836. * An Async wrapper for DeleteBucketIntelligentTieringConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  837. */
  838. template<typename DeleteBucketIntelligentTieringConfigurationRequestT = Model::DeleteBucketIntelligentTieringConfigurationRequest>
  839. void DeleteBucketIntelligentTieringConfigurationAsync(const DeleteBucketIntelligentTieringConfigurationRequestT& request, const DeleteBucketIntelligentTieringConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  840. {
  841. return SubmitAsync(&S3Client::DeleteBucketIntelligentTieringConfiguration, request, handler, context);
  842. }
  843. /**
  844. * <p>Deletes an inventory configuration (identified by the inventory ID) from the
  845. * bucket.</p> <p>To use this operation, you must have permissions to perform the
  846. * <code>s3:PutInventoryConfiguration</code> action. The bucket owner has this
  847. * permission by default. The bucket owner can grant this permission to others. For
  848. * more information about permissions, see <a
  849. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  850. * Related to Bucket Subresource Operations</a> and <a
  851. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  852. * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
  853. * the Amazon S3 inventory feature, see <a
  854. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html">Amazon
  855. * S3 Inventory</a>.</p> <p>Operations related to
  856. * <code>DeleteBucketInventoryConfiguration</code> include: </p> <ul> <li> <p> <a
  857. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html">GetBucketInventoryConfiguration</a>
  858. * </p> </li> <li> <p> <a
  859. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html">PutBucketInventoryConfiguration</a>
  860. * </p> </li> <li> <p> <a
  861. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketInventoryConfigurations.html">ListBucketInventoryConfigurations</a>
  862. * </p> </li> </ul><p><h3>See Also:</h3> <a
  863. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration">AWS
  864. * API Reference</a></p>
  865. */
  866. virtual Model::DeleteBucketInventoryConfigurationOutcome DeleteBucketInventoryConfiguration(const Model::DeleteBucketInventoryConfigurationRequest& request) const;
  867. /**
  868. * A Callable wrapper for DeleteBucketInventoryConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  869. */
  870. template<typename DeleteBucketInventoryConfigurationRequestT = Model::DeleteBucketInventoryConfigurationRequest>
  871. Model::DeleteBucketInventoryConfigurationOutcomeCallable DeleteBucketInventoryConfigurationCallable(const DeleteBucketInventoryConfigurationRequestT& request) const
  872. {
  873. return SubmitCallable(&S3Client::DeleteBucketInventoryConfiguration, request);
  874. }
  875. /**
  876. * An Async wrapper for DeleteBucketInventoryConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  877. */
  878. template<typename DeleteBucketInventoryConfigurationRequestT = Model::DeleteBucketInventoryConfigurationRequest>
  879. void DeleteBucketInventoryConfigurationAsync(const DeleteBucketInventoryConfigurationRequestT& request, const DeleteBucketInventoryConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  880. {
  881. return SubmitAsync(&S3Client::DeleteBucketInventoryConfiguration, request, handler, context);
  882. }
  883. /**
  884. * <p>Deletes the lifecycle configuration from the specified bucket. Amazon S3
  885. * removes all the lifecycle configuration rules in the lifecycle subresource
  886. * associated with the bucket. Your objects never expire, and Amazon S3 no longer
  887. * automatically deletes any objects on the basis of rules contained in the deleted
  888. * lifecycle configuration.</p> <p>To use this operation, you must have permission
  889. * to perform the <code>s3:PutLifecycleConfiguration</code> action. By default, the
  890. * bucket owner has this permission and the bucket owner can grant this permission
  891. * to others.</p> <p>There is usually some time lag before lifecycle configuration
  892. * deletion is fully propagated to all the Amazon S3 systems.</p> <p>For more
  893. * information about the object expiration, see <a
  894. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#intro-lifecycle-rules-actions">Elements
  895. * to Describe Lifecycle Actions</a>.</p> <p>Related actions include:</p> <ul> <li>
  896. * <p> <a
  897. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html">PutBucketLifecycleConfiguration</a>
  898. * </p> </li> <li> <p> <a
  899. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html">GetBucketLifecycleConfiguration</a>
  900. * </p> </li> </ul><p><h3>See Also:</h3> <a
  901. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle">AWS
  902. * API Reference</a></p>
  903. */
  904. virtual Model::DeleteBucketLifecycleOutcome DeleteBucketLifecycle(const Model::DeleteBucketLifecycleRequest& request) const;
  905. /**
  906. * A Callable wrapper for DeleteBucketLifecycle that returns a future to the operation so that it can be executed in parallel to other requests.
  907. */
  908. template<typename DeleteBucketLifecycleRequestT = Model::DeleteBucketLifecycleRequest>
  909. Model::DeleteBucketLifecycleOutcomeCallable DeleteBucketLifecycleCallable(const DeleteBucketLifecycleRequestT& request) const
  910. {
  911. return SubmitCallable(&S3Client::DeleteBucketLifecycle, request);
  912. }
  913. /**
  914. * An Async wrapper for DeleteBucketLifecycle that queues the request into a thread executor and triggers associated callback when operation has finished.
  915. */
  916. template<typename DeleteBucketLifecycleRequestT = Model::DeleteBucketLifecycleRequest>
  917. void DeleteBucketLifecycleAsync(const DeleteBucketLifecycleRequestT& request, const DeleteBucketLifecycleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  918. {
  919. return SubmitAsync(&S3Client::DeleteBucketLifecycle, request, handler, context);
  920. }
  921. /**
  922. * <p>Deletes a metrics configuration for the Amazon CloudWatch request metrics
  923. * (specified by the metrics configuration ID) from the bucket. Note that this
  924. * doesn't include the daily storage metrics.</p> <p> To use this operation, you
  925. * must have permissions to perform the <code>s3:PutMetricsConfiguration</code>
  926. * action. The bucket owner has this permission by default. The bucket owner can
  927. * grant this permission to others. For more information about permissions, see <a
  928. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  929. * Related to Bucket Subresource Operations</a> and <a
  930. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  931. * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
  932. * CloudWatch request metrics for Amazon S3, see <a
  933. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
  934. * Metrics with Amazon CloudWatch</a>. </p> <p>The following operations are related
  935. * to <code>DeleteBucketMetricsConfiguration</code>:</p> <ul> <li> <p> <a
  936. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html">GetBucketMetricsConfiguration</a>
  937. * </p> </li> <li> <p> <a
  938. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html">PutBucketMetricsConfiguration</a>
  939. * </p> </li> <li> <p> <a
  940. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketMetricsConfigurations.html">ListBucketMetricsConfigurations</a>
  941. * </p> </li> <li> <p> <a
  942. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
  943. * Metrics with Amazon CloudWatch</a> </p> </li> </ul><p><h3>See Also:</h3> <a
  944. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration">AWS
  945. * API Reference</a></p>
  946. */
  947. virtual Model::DeleteBucketMetricsConfigurationOutcome DeleteBucketMetricsConfiguration(const Model::DeleteBucketMetricsConfigurationRequest& request) const;
  948. /**
  949. * A Callable wrapper for DeleteBucketMetricsConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  950. */
  951. template<typename DeleteBucketMetricsConfigurationRequestT = Model::DeleteBucketMetricsConfigurationRequest>
  952. Model::DeleteBucketMetricsConfigurationOutcomeCallable DeleteBucketMetricsConfigurationCallable(const DeleteBucketMetricsConfigurationRequestT& request) const
  953. {
  954. return SubmitCallable(&S3Client::DeleteBucketMetricsConfiguration, request);
  955. }
  956. /**
  957. * An Async wrapper for DeleteBucketMetricsConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  958. */
  959. template<typename DeleteBucketMetricsConfigurationRequestT = Model::DeleteBucketMetricsConfigurationRequest>
  960. void DeleteBucketMetricsConfigurationAsync(const DeleteBucketMetricsConfigurationRequestT& request, const DeleteBucketMetricsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  961. {
  962. return SubmitAsync(&S3Client::DeleteBucketMetricsConfiguration, request, handler, context);
  963. }
  964. /**
  965. * <p>Removes <code>OwnershipControls</code> for an Amazon S3 bucket. To use this
  966. * operation, you must have the <code>s3:PutBucketOwnershipControls</code>
  967. * permission. For more information about Amazon S3 permissions, see <a
  968. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
  969. * Permissions in a Policy</a>.</p> <p>For information about Amazon S3 Object
  970. * Ownership, see <a
  971. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/about-object-ownership.html">Using
  972. * Object Ownership</a>. </p> <p>The following operations are related to
  973. * <code>DeleteBucketOwnershipControls</code>:</p> <ul> <li> <p>
  974. * <a>GetBucketOwnershipControls</a> </p> </li> <li> <p>
  975. * <a>PutBucketOwnershipControls</a> </p> </li> </ul><p><h3>See Also:</h3> <a
  976. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketOwnershipControls">AWS
  977. * API Reference</a></p>
  978. */
  979. virtual Model::DeleteBucketOwnershipControlsOutcome DeleteBucketOwnershipControls(const Model::DeleteBucketOwnershipControlsRequest& request) const;
  980. /**
  981. * A Callable wrapper for DeleteBucketOwnershipControls that returns a future to the operation so that it can be executed in parallel to other requests.
  982. */
  983. template<typename DeleteBucketOwnershipControlsRequestT = Model::DeleteBucketOwnershipControlsRequest>
  984. Model::DeleteBucketOwnershipControlsOutcomeCallable DeleteBucketOwnershipControlsCallable(const DeleteBucketOwnershipControlsRequestT& request) const
  985. {
  986. return SubmitCallable(&S3Client::DeleteBucketOwnershipControls, request);
  987. }
  988. /**
  989. * An Async wrapper for DeleteBucketOwnershipControls that queues the request into a thread executor and triggers associated callback when operation has finished.
  990. */
  991. template<typename DeleteBucketOwnershipControlsRequestT = Model::DeleteBucketOwnershipControlsRequest>
  992. void DeleteBucketOwnershipControlsAsync(const DeleteBucketOwnershipControlsRequestT& request, const DeleteBucketOwnershipControlsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  993. {
  994. return SubmitAsync(&S3Client::DeleteBucketOwnershipControls, request, handler, context);
  995. }
  996. /**
  997. * <p>This implementation of the DELETE action uses the policy subresource to
  998. * delete the policy of a specified bucket. If you are using an identity other than
  999. * the root user of the Amazon Web Services account that owns the bucket, the
  1000. * calling identity must have the <code>DeleteBucketPolicy</code> permissions on
  1001. * the specified bucket and belong to the bucket owner's account to use this
  1002. * operation. </p> <p>If you don't have <code>DeleteBucketPolicy</code>
  1003. * permissions, Amazon S3 returns a <code>403 Access Denied</code> error. If you
  1004. * have the correct permissions, but you're not using an identity that belongs to
  1005. * the bucket owner's account, Amazon S3 returns a <code>405 Method Not
  1006. * Allowed</code> error. </p> <p>As a security precaution, the root
  1007. * user of the Amazon Web Services account that owns a bucket can always use this
  1008. * operation, even if the policy explicitly denies the root user the ability to
  1009. * perform this action.</p> <p>For more information about bucket
  1010. * policies, see <a
  1011. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html">Using
  1012. * Bucket Policies and UserPolicies</a>. </p> <p>The following operations are
  1013. * related to <code>DeleteBucketPolicy</code> </p> <ul> <li> <p> <a
  1014. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html">CreateBucket</a>
  1015. * </p> </li> <li> <p> <a
  1016. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html">DeleteObject</a>
  1017. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1018. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy">AWS
  1019. * API Reference</a></p>
  1020. */
  1021. virtual Model::DeleteBucketPolicyOutcome DeleteBucketPolicy(const Model::DeleteBucketPolicyRequest& request) const;
  1022. /**
  1023. * A Callable wrapper for DeleteBucketPolicy that returns a future to the operation so that it can be executed in parallel to other requests.
  1024. */
  1025. template<typename DeleteBucketPolicyRequestT = Model::DeleteBucketPolicyRequest>
  1026. Model::DeleteBucketPolicyOutcomeCallable DeleteBucketPolicyCallable(const DeleteBucketPolicyRequestT& request) const
  1027. {
  1028. return SubmitCallable(&S3Client::DeleteBucketPolicy, request);
  1029. }
  1030. /**
  1031. * An Async wrapper for DeleteBucketPolicy that queues the request into a thread executor and triggers associated callback when operation has finished.
  1032. */
  1033. template<typename DeleteBucketPolicyRequestT = Model::DeleteBucketPolicyRequest>
  1034. void DeleteBucketPolicyAsync(const DeleteBucketPolicyRequestT& request, const DeleteBucketPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1035. {
  1036. return SubmitAsync(&S3Client::DeleteBucketPolicy, request, handler, context);
  1037. }
  1038. /**
  1039. * <p> Deletes the replication configuration from the bucket.</p> <p>To use this
  1040. * operation, you must have permissions to perform the
  1041. * <code>s3:PutReplicationConfiguration</code> action. The bucket owner has these
  1042. * permissions by default and can grant it to others. For more information about
  1043. * permissions, see <a
  1044. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  1045. * Related to Bucket Subresource Operations</a> and <a
  1046. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  1047. * Access Permissions to Your Amazon S3 Resources</a>. </p> <p>It can take a
  1048. * while for the deletion of a replication configuration to fully propagate.</p>
  1049. * <p> For information about replication configuration, see <a
  1050. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html">Replication</a>
  1051. * in the <i>Amazon S3 User Guide</i>.</p> <p>The following operations are related
  1052. * to <code>DeleteBucketReplication</code>:</p> <ul> <li> <p> <a
  1053. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html">PutBucketReplication</a>
  1054. * </p> </li> <li> <p> <a
  1055. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html">GetBucketReplication</a>
  1056. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1057. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication">AWS
  1058. * API Reference</a></p>
  1059. */
  1060. virtual Model::DeleteBucketReplicationOutcome DeleteBucketReplication(const Model::DeleteBucketReplicationRequest& request) const;
  1061. /**
  1062. * A Callable wrapper for DeleteBucketReplication that returns a future to the operation so that it can be executed in parallel to other requests.
  1063. */
  1064. template<typename DeleteBucketReplicationRequestT = Model::DeleteBucketReplicationRequest>
  1065. Model::DeleteBucketReplicationOutcomeCallable DeleteBucketReplicationCallable(const DeleteBucketReplicationRequestT& request) const
  1066. {
  1067. return SubmitCallable(&S3Client::DeleteBucketReplication, request);
  1068. }
  1069. /**
  1070. * An Async wrapper for DeleteBucketReplication that queues the request into a thread executor and triggers associated callback when operation has finished.
  1071. */
  1072. template<typename DeleteBucketReplicationRequestT = Model::DeleteBucketReplicationRequest>
  1073. void DeleteBucketReplicationAsync(const DeleteBucketReplicationRequestT& request, const DeleteBucketReplicationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1074. {
  1075. return SubmitAsync(&S3Client::DeleteBucketReplication, request, handler, context);
  1076. }
  1077. /**
  1078. * <p>Deletes the tags from the bucket.</p> <p>To use this operation, you must have
  1079. * permission to perform the <code>s3:PutBucketTagging</code> action. By default,
  1080. * the bucket owner has this permission and can grant this permission to others.
  1081. * </p> <p>The following operations are related to
  1082. * <code>DeleteBucketTagging</code>:</p> <ul> <li> <p> <a
  1083. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html">GetBucketTagging</a>
  1084. * </p> </li> <li> <p> <a
  1085. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html">PutBucketTagging</a>
  1086. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1087. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging">AWS
  1088. * API Reference</a></p>
  1089. */
  1090. virtual Model::DeleteBucketTaggingOutcome DeleteBucketTagging(const Model::DeleteBucketTaggingRequest& request) const;
  1091. /**
  1092. * A Callable wrapper for DeleteBucketTagging that returns a future to the operation so that it can be executed in parallel to other requests.
  1093. */
  1094. template<typename DeleteBucketTaggingRequestT = Model::DeleteBucketTaggingRequest>
  1095. Model::DeleteBucketTaggingOutcomeCallable DeleteBucketTaggingCallable(const DeleteBucketTaggingRequestT& request) const
  1096. {
  1097. return SubmitCallable(&S3Client::DeleteBucketTagging, request);
  1098. }
  1099. /**
  1100. * An Async wrapper for DeleteBucketTagging that queues the request into a thread executor and triggers associated callback when operation has finished.
  1101. */
  1102. template<typename DeleteBucketTaggingRequestT = Model::DeleteBucketTaggingRequest>
  1103. void DeleteBucketTaggingAsync(const DeleteBucketTaggingRequestT& request, const DeleteBucketTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1104. {
  1105. return SubmitAsync(&S3Client::DeleteBucketTagging, request, handler, context);
  1106. }
  1107. /**
  1108. * <p>This action removes the website configuration for a bucket. Amazon S3 returns
  1109. * a <code>200 OK</code> response upon successfully deleting a website
  1110. * configuration on the specified bucket. You will get a <code>200 OK</code>
  1111. * response if the website configuration you are trying to delete does not exist on
  1112. * the bucket. Amazon S3 returns a <code>404</code> response if the bucket
  1113. * specified in the request does not exist.</p> <p>This DELETE action requires the
  1114. * <code>S3:DeleteBucketWebsite</code> permission. By default, only the bucket
  1115. * owner can delete the website configuration attached to a bucket. However, bucket
  1116. * owners can grant other users permission to delete the website configuration by
  1117. * writing a bucket policy granting them the <code>S3:DeleteBucketWebsite</code>
  1118. * permission. </p> <p>For more information about hosting websites, see <a
  1119. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
  1120. * Websites on Amazon S3</a>. </p> <p>The following operations are related to
  1121. * <code>DeleteBucketWebsite</code>:</p> <ul> <li> <p> <a
  1122. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketWebsite.html">GetBucketWebsite</a>
  1123. * </p> </li> <li> <p> <a
  1124. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketWebsite.html">PutBucketWebsite</a>
  1125. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1126. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite">AWS
  1127. * API Reference</a></p>
  1128. */
  1129. virtual Model::DeleteBucketWebsiteOutcome DeleteBucketWebsite(const Model::DeleteBucketWebsiteRequest& request) const;
  1130. /**
  1131. * A Callable wrapper for DeleteBucketWebsite that returns a future to the operation so that it can be executed in parallel to other requests.
  1132. */
  1133. template<typename DeleteBucketWebsiteRequestT = Model::DeleteBucketWebsiteRequest>
  1134. Model::DeleteBucketWebsiteOutcomeCallable DeleteBucketWebsiteCallable(const DeleteBucketWebsiteRequestT& request) const
  1135. {
  1136. return SubmitCallable(&S3Client::DeleteBucketWebsite, request);
  1137. }
  1138. /**
  1139. * An Async wrapper for DeleteBucketWebsite that queues the request into a thread executor and triggers associated callback when operation has finished.
  1140. */
  1141. template<typename DeleteBucketWebsiteRequestT = Model::DeleteBucketWebsiteRequest>
  1142. void DeleteBucketWebsiteAsync(const DeleteBucketWebsiteRequestT& request, const DeleteBucketWebsiteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1143. {
  1144. return SubmitAsync(&S3Client::DeleteBucketWebsite, request, handler, context);
  1145. }
  1146. /**
  1147. * <p>Removes the null version (if there is one) of an object and inserts a delete
  1148. * marker, which becomes the latest version of the object. If there isn't a null
  1149. * version, Amazon S3 does not remove any objects but will still respond that the
  1150. * command was successful.</p> <p>To remove a specific version, you must be the
  1151. * bucket owner and you must use the version Id subresource. Using this subresource
  1152. * permanently deletes the version. If the object deleted is a delete marker,
  1153. * Amazon S3 sets the response header, <code>x-amz-delete-marker</code>, to true.
  1154. * </p> <p>If the object you want to delete is in a bucket where the bucket
  1155. * versioning configuration is MFA Delete enabled, you must include the
  1156. * <code>x-amz-mfa</code> request header in the DELETE <code>versionId</code>
  1157. * request. Requests that include <code>x-amz-mfa</code> must use HTTPS. </p> <p>
  1158. * For more information about MFA Delete, see <a
  1159. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html">Using
  1160. * MFA Delete</a>. To see sample requests that use versioning, see <a
  1161. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html#ExampleVersionObjectDelete">Sample
  1162. * Request</a>. </p> <p>You can delete objects by explicitly calling DELETE Object
  1163. * or configure its lifecycle (<a
  1164. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html">PutBucketLifecycle</a>)
  1165. * to enable Amazon S3 to remove them for you. If you want to block users or
  1166. * accounts from removing or deleting objects from your bucket, you must deny them
  1167. * the <code>s3:DeleteObject</code>, <code>s3:DeleteObjectVersion</code>, and
  1168. * <code>s3:PutLifeCycleConfiguration</code> actions. </p> <p>The following action
  1169. * is related to <code>DeleteObject</code>:</p> <ul> <li> <p> <a
  1170. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html">PutObject</a>
  1171. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1172. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject">AWS API
  1173. * Reference</a></p>
  1174. */
  1175. virtual Model::DeleteObjectOutcome DeleteObject(const Model::DeleteObjectRequest& request) const;
  1176. /**
  1177. * A Callable wrapper for DeleteObject that returns a future to the operation so that it can be executed in parallel to other requests.
  1178. */
  1179. template<typename DeleteObjectRequestT = Model::DeleteObjectRequest>
  1180. Model::DeleteObjectOutcomeCallable DeleteObjectCallable(const DeleteObjectRequestT& request) const
  1181. {
  1182. return SubmitCallable(&S3Client::DeleteObject, request);
  1183. }
  1184. /**
  1185. * An Async wrapper for DeleteObject that queues the request into a thread executor and triggers associated callback when operation has finished.
  1186. */
  1187. template<typename DeleteObjectRequestT = Model::DeleteObjectRequest>
  1188. void DeleteObjectAsync(const DeleteObjectRequestT& request, const DeleteObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1189. {
  1190. return SubmitAsync(&S3Client::DeleteObject, request, handler, context);
  1191. }
  1192. /**
  1193. * <p>Removes the entire tag set from the specified object. For more information
  1194. * about managing object tags, see <a
  1195. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html">
  1196. * Object Tagging</a>.</p> <p>To use this operation, you must have permission to
  1197. * perform the <code>s3:DeleteObjectTagging</code> action.</p> <p>To delete tags of
  1198. * a specific object version, add the <code>versionId</code> query parameter in the
  1199. * request. You will need permission for the
  1200. * <code>s3:DeleteObjectVersionTagging</code> action.</p> <p>The following
  1201. * operations are related to <code>DeleteBucketMetricsConfiguration</code>:</p>
  1202. * <ul> <li> <p> <a
  1203. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html">PutObjectTagging</a>
  1204. * </p> </li> <li> <p> <a
  1205. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html">GetObjectTagging</a>
  1206. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1207. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging">AWS
  1208. * API Reference</a></p>
  1209. */
  1210. virtual Model::DeleteObjectTaggingOutcome DeleteObjectTagging(const Model::DeleteObjectTaggingRequest& request) const;
  1211. /**
  1212. * A Callable wrapper for DeleteObjectTagging that returns a future to the operation so that it can be executed in parallel to other requests.
  1213. */
  1214. template<typename DeleteObjectTaggingRequestT = Model::DeleteObjectTaggingRequest>
  1215. Model::DeleteObjectTaggingOutcomeCallable DeleteObjectTaggingCallable(const DeleteObjectTaggingRequestT& request) const
  1216. {
  1217. return SubmitCallable(&S3Client::DeleteObjectTagging, request);
  1218. }
  1219. /**
  1220. * An Async wrapper for DeleteObjectTagging that queues the request into a thread executor and triggers associated callback when operation has finished.
  1221. */
  1222. template<typename DeleteObjectTaggingRequestT = Model::DeleteObjectTaggingRequest>
  1223. void DeleteObjectTaggingAsync(const DeleteObjectTaggingRequestT& request, const DeleteObjectTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1224. {
  1225. return SubmitAsync(&S3Client::DeleteObjectTagging, request, handler, context);
  1226. }
  1227. /**
  1228. * <p>This action enables you to delete multiple objects from a bucket using a
  1229. * single HTTP request. If you know the object keys that you want to delete, then
  1230. * this action provides a suitable alternative to sending individual delete
  1231. * requests, reducing per-request overhead.</p> <p>The request contains a list of
  1232. * up to 1000 keys that you want to delete. In the XML, you provide the object key
  1233. * names, and optionally, version IDs if you want to delete a specific version of
  1234. * the object from a versioning-enabled bucket. For each key, Amazon S3 performs a
  1235. * delete action and returns the result of that delete, success, or failure, in the
  1236. * response. Note that if the object specified in the request is not found, Amazon
  1237. * S3 returns the result as deleted.</p> <p> The action supports two modes for the
  1238. * response: verbose and quiet. By default, the action uses verbose mode in which
  1239. * the response includes the result of deletion of each key in your request. In
  1240. * quiet mode the response includes only keys where the delete action encountered
  1241. * an error. For a successful deletion, the action does not return any information
  1242. * about the delete in the response body.</p> <p>When performing this action on an
  1243. * MFA Delete enabled bucket, that attempts to delete any versioned objects, you
  1244. * must include an MFA token. If you do not provide one, the entire request will
  1245. * fail, even if there are non-versioned objects you are trying to delete. If you
  1246. * provide an invalid token, whether there are versioned keys in the request or
  1247. * not, the entire Multi-Object Delete request will fail. For information about MFA
  1248. * Delete, see <a
  1249. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete">
  1250. * MFA Delete</a>.</p> <p>Finally, the Content-MD5 header is required for all
  1251. * Multi-Object Delete requests. Amazon S3 uses the header value to ensure that
  1252. * your request body has not been altered in transit.</p> <p>The following
  1253. * operations are related to <code>DeleteObjects</code>:</p> <ul> <li> <p> <a
  1254. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html">CreateMultipartUpload</a>
  1255. * </p> </li> <li> <p> <a
  1256. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html">UploadPart</a>
  1257. * </p> </li> <li> <p> <a
  1258. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html">CompleteMultipartUpload</a>
  1259. * </p> </li> <li> <p> <a
  1260. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html">ListParts</a>
  1261. * </p> </li> <li> <p> <a
  1262. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html">AbortMultipartUpload</a>
  1263. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1264. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects">AWS
  1265. * API Reference</a></p>
  1266. */
  1267. virtual Model::DeleteObjectsOutcome DeleteObjects(const Model::DeleteObjectsRequest& request) const;
  1268. /**
  1269. * A Callable wrapper for DeleteObjects that returns a future to the operation so that it can be executed in parallel to other requests.
  1270. */
  1271. template<typename DeleteObjectsRequestT = Model::DeleteObjectsRequest>
  1272. Model::DeleteObjectsOutcomeCallable DeleteObjectsCallable(const DeleteObjectsRequestT& request) const
  1273. {
  1274. return SubmitCallable(&S3Client::DeleteObjects, request);
  1275. }
  1276. /**
  1277. * An Async wrapper for DeleteObjects that queues the request into a thread executor and triggers associated callback when operation has finished.
  1278. */
  1279. template<typename DeleteObjectsRequestT = Model::DeleteObjectsRequest>
  1280. void DeleteObjectsAsync(const DeleteObjectsRequestT& request, const DeleteObjectsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1281. {
  1282. return SubmitAsync(&S3Client::DeleteObjects, request, handler, context);
  1283. }
  1284. /**
  1285. * <p>Removes the <code>PublicAccessBlock</code> configuration for an Amazon S3
  1286. * bucket. To use this operation, you must have the
  1287. * <code>s3:PutBucketPublicAccessBlock</code> permission. For more information
  1288. * about permissions, see <a
  1289. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  1290. * Related to Bucket Subresource Operations</a> and <a
  1291. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  1292. * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>The following
  1293. * operations are related to <code>DeletePublicAccessBlock</code>:</p> <ul> <li>
  1294. * <p> <a
  1295. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html">Using
  1296. * Amazon S3 Block Public Access</a> </p> </li> <li> <p> <a
  1297. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html">GetPublicAccessBlock</a>
  1298. * </p> </li> <li> <p> <a
  1299. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html">PutPublicAccessBlock</a>
  1300. * </p> </li> <li> <p> <a
  1301. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicyStatus.html">GetBucketPolicyStatus</a>
  1302. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1303. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeletePublicAccessBlock">AWS
  1304. * API Reference</a></p>
  1305. */
  1306. virtual Model::DeletePublicAccessBlockOutcome DeletePublicAccessBlock(const Model::DeletePublicAccessBlockRequest& request) const;
  1307. /**
  1308. * A Callable wrapper for DeletePublicAccessBlock that returns a future to the operation so that it can be executed in parallel to other requests.
  1309. */
  1310. template<typename DeletePublicAccessBlockRequestT = Model::DeletePublicAccessBlockRequest>
  1311. Model::DeletePublicAccessBlockOutcomeCallable DeletePublicAccessBlockCallable(const DeletePublicAccessBlockRequestT& request) const
  1312. {
  1313. return SubmitCallable(&S3Client::DeletePublicAccessBlock, request);
  1314. }
  1315. /**
  1316. * An Async wrapper for DeletePublicAccessBlock that queues the request into a thread executor and triggers associated callback when operation has finished.
  1317. */
  1318. template<typename DeletePublicAccessBlockRequestT = Model::DeletePublicAccessBlockRequest>
  1319. void DeletePublicAccessBlockAsync(const DeletePublicAccessBlockRequestT& request, const DeletePublicAccessBlockResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1320. {
  1321. return SubmitAsync(&S3Client::DeletePublicAccessBlock, request, handler, context);
  1322. }
  1323. /**
  1324. * <p>This implementation of the GET action uses the <code>accelerate</code>
  1325. * subresource to return the Transfer Acceleration state of a bucket, which is
  1326. * either <code>Enabled</code> or <code>Suspended</code>. Amazon S3 Transfer
  1327. * Acceleration is a bucket-level feature that enables you to perform faster data
  1328. * transfers to and from Amazon S3.</p> <p>To use this operation, you must have
  1329. * permission to perform the <code>s3:GetAccelerateConfiguration</code> action. The
  1330. * bucket owner has this permission by default. The bucket owner can grant this
  1331. * permission to others. For more information about permissions, see <a
  1332. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  1333. * Related to Bucket Subresource Operations</a> and <a
  1334. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  1335. * Access Permissions to your Amazon S3 Resources</a> in the <i>Amazon S3 User
  1336. * Guide</i>.</p> <p>You set the Transfer Acceleration state of an existing bucket
  1337. * to <code>Enabled</code> or <code>Suspended</code> by using the <a
  1338. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html">PutBucketAccelerateConfiguration</a>
  1339. * operation. </p> <p>A GET <code>accelerate</code> request does not return a state
  1340. * value for a bucket that has no transfer acceleration state. A bucket has no
  1341. * Transfer Acceleration state if a state has never been set on the bucket. </p>
  1342. * <p>For more information about transfer acceleration, see <a
  1343. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html">Transfer
  1344. * Acceleration</a> in the Amazon S3 User Guide.</p> <p class="title"> <b>Related
  1345. * Resources</b> </p> <ul> <li> <p> <a
  1346. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html">PutBucketAccelerateConfiguration</a>
  1347. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1348. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration">AWS
  1349. * API Reference</a></p>
  1350. */
  1351. virtual Model::GetBucketAccelerateConfigurationOutcome GetBucketAccelerateConfiguration(const Model::GetBucketAccelerateConfigurationRequest& request) const;
  1352. /**
  1353. * A Callable wrapper for GetBucketAccelerateConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  1354. */
  1355. template<typename GetBucketAccelerateConfigurationRequestT = Model::GetBucketAccelerateConfigurationRequest>
  1356. Model::GetBucketAccelerateConfigurationOutcomeCallable GetBucketAccelerateConfigurationCallable(const GetBucketAccelerateConfigurationRequestT& request) const
  1357. {
  1358. return SubmitCallable(&S3Client::GetBucketAccelerateConfiguration, request);
  1359. }
  1360. /**
  1361. * An Async wrapper for GetBucketAccelerateConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  1362. */
  1363. template<typename GetBucketAccelerateConfigurationRequestT = Model::GetBucketAccelerateConfigurationRequest>
  1364. void GetBucketAccelerateConfigurationAsync(const GetBucketAccelerateConfigurationRequestT& request, const GetBucketAccelerateConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1365. {
  1366. return SubmitAsync(&S3Client::GetBucketAccelerateConfiguration, request, handler, context);
  1367. }
  1368. /**
  1369. * <p>This implementation of the <code>GET</code> action uses the <code>acl</code>
  1370. * subresource to return the access control list (ACL) of a bucket. To use
  1371. * <code>GET</code> to return the ACL of the bucket, you must have
  1372. * <code>READ_ACP</code> access to the bucket. If <code>READ_ACP</code> permission
  1373. * is granted to the anonymous user, you can return the ACL of the bucket without
  1374. * using an authorization header.</p> <p>If your bucket uses the bucket
  1375. * owner enforced setting for S3 Object Ownership, requests to read ACLs are still
  1376. * supported and return the <code>bucket-owner-full-control</code> ACL with the
  1377. * owner being the account that created the bucket. For more information, see <a
  1378. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html">
  1379. * Controlling object ownership and disabling ACLs</a> in the <i>Amazon S3 User
  1380. * Guide</i>.</p> <p class="title"> <b>Related Resources</b> </p> <ul> <li>
  1381. * <p> <a
  1382. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html">ListObjects</a>
  1383. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1384. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl">AWS API
  1385. * Reference</a></p>
  1386. */
  1387. virtual Model::GetBucketAclOutcome GetBucketAcl(const Model::GetBucketAclRequest& request) const;
  1388. /**
  1389. * A Callable wrapper for GetBucketAcl that returns a future to the operation so that it can be executed in parallel to other requests.
  1390. */
  1391. template<typename GetBucketAclRequestT = Model::GetBucketAclRequest>
  1392. Model::GetBucketAclOutcomeCallable GetBucketAclCallable(const GetBucketAclRequestT& request) const
  1393. {
  1394. return SubmitCallable(&S3Client::GetBucketAcl, request);
  1395. }
  1396. /**
  1397. * An Async wrapper for GetBucketAcl that queues the request into a thread executor and triggers associated callback when operation has finished.
  1398. */
  1399. template<typename GetBucketAclRequestT = Model::GetBucketAclRequest>
  1400. void GetBucketAclAsync(const GetBucketAclRequestT& request, const GetBucketAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1401. {
  1402. return SubmitAsync(&S3Client::GetBucketAcl, request, handler, context);
  1403. }
  1404. /**
  1405. * <p>This implementation of the GET action returns an analytics configuration
  1406. * (identified by the analytics configuration ID) from the bucket.</p> <p>To use
  1407. * this operation, you must have permissions to perform the
  1408. * <code>s3:GetAnalyticsConfiguration</code> action. The bucket owner has this
  1409. * permission by default. The bucket owner can grant this permission to others. For
  1410. * more information about permissions, see <a
  1411. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">
  1412. * Permissions Related to Bucket Subresource Operations</a> and <a
  1413. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  1414. * Access Permissions to Your Amazon S3 Resources</a> in the <i>Amazon S3 User
  1415. * Guide</i>. </p> <p>For information about Amazon S3 analytics feature, see <a
  1416. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html">Amazon
  1417. * S3 Analytics – Storage Class Analysis</a> in the <i>Amazon S3 User
  1418. * Guide</i>.</p> <p class="title"> <b>Related Resources</b> </p> <ul> <li> <p> <a
  1419. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketAnalyticsConfiguration.html">DeleteBucketAnalyticsConfiguration</a>
  1420. * </p> </li> <li> <p> <a
  1421. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketAnalyticsConfigurations.html">ListBucketAnalyticsConfigurations</a>
  1422. * </p> </li> <li> <p> <a
  1423. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html">PutBucketAnalyticsConfiguration</a>
  1424. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1425. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration">AWS
  1426. * API Reference</a></p>
  1427. */
  1428. virtual Model::GetBucketAnalyticsConfigurationOutcome GetBucketAnalyticsConfiguration(const Model::GetBucketAnalyticsConfigurationRequest& request) const;
  1429. /**
  1430. * A Callable wrapper for GetBucketAnalyticsConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  1431. */
  1432. template<typename GetBucketAnalyticsConfigurationRequestT = Model::GetBucketAnalyticsConfigurationRequest>
  1433. Model::GetBucketAnalyticsConfigurationOutcomeCallable GetBucketAnalyticsConfigurationCallable(const GetBucketAnalyticsConfigurationRequestT& request) const
  1434. {
  1435. return SubmitCallable(&S3Client::GetBucketAnalyticsConfiguration, request);
  1436. }
  1437. /**
  1438. * An Async wrapper for GetBucketAnalyticsConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  1439. */
  1440. template<typename GetBucketAnalyticsConfigurationRequestT = Model::GetBucketAnalyticsConfigurationRequest>
  1441. void GetBucketAnalyticsConfigurationAsync(const GetBucketAnalyticsConfigurationRequestT& request, const GetBucketAnalyticsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1442. {
  1443. return SubmitAsync(&S3Client::GetBucketAnalyticsConfiguration, request, handler, context);
  1444. }
  1445. /**
  1446. * <p>Returns the Cross-Origin Resource Sharing (CORS) configuration information
  1447. * set for the bucket.</p> <p> To use this operation, you must have permission to
  1448. * perform the <code>s3:GetBucketCORS</code> action. By default, the bucket owner
  1449. * has this permission and can grant it to others.</p> <p> For more information
  1450. * about CORS, see <a
  1451. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html"> Enabling
  1452. * Cross-Origin Resource Sharing</a>.</p> <p>The following operations are related
  1453. * to <code>GetBucketCors</code>:</p> <ul> <li> <p> <a
  1454. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketCors.html">PutBucketCors</a>
  1455. * </p> </li> <li> <p> <a
  1456. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketCors.html">DeleteBucketCors</a>
  1457. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1458. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors">AWS
  1459. * API Reference</a></p>
  1460. */
  1461. virtual Model::GetBucketCorsOutcome GetBucketCors(const Model::GetBucketCorsRequest& request) const;
  1462. /**
  1463. * A Callable wrapper for GetBucketCors that returns a future to the operation so that it can be executed in parallel to other requests.
  1464. */
  1465. template<typename GetBucketCorsRequestT = Model::GetBucketCorsRequest>
  1466. Model::GetBucketCorsOutcomeCallable GetBucketCorsCallable(const GetBucketCorsRequestT& request) const
  1467. {
  1468. return SubmitCallable(&S3Client::GetBucketCors, request);
  1469. }
  1470. /**
  1471. * An Async wrapper for GetBucketCors that queues the request into a thread executor and triggers associated callback when operation has finished.
  1472. */
  1473. template<typename GetBucketCorsRequestT = Model::GetBucketCorsRequest>
  1474. void GetBucketCorsAsync(const GetBucketCorsRequestT& request, const GetBucketCorsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1475. {
  1476. return SubmitAsync(&S3Client::GetBucketCors, request, handler, context);
  1477. }
  1478. /**
  1479. * <p>Returns the default encryption configuration for an Amazon S3 bucket. If the
  1480. * bucket does not have a default encryption configuration, GetBucketEncryption
  1481. * returns <code>ServerSideEncryptionConfigurationNotFoundError</code>. </p> <p>For
  1482. * information about the Amazon S3 default encryption feature, see <a
  1483. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html">Amazon
  1484. * S3 Default Bucket Encryption</a>.</p> <p> To use this operation, you must have
  1485. * permission to perform the <code>s3:GetEncryptionConfiguration</code> action. The
  1486. * bucket owner has this permission by default. The bucket owner can grant this
  1487. * permission to others. For more information about permissions, see <a
  1488. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  1489. * Related to Bucket Subresource Operations</a> and <a
  1490. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  1491. * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>The following
  1492. * operations are related to <code>GetBucketEncryption</code>:</p> <ul> <li> <p> <a
  1493. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html">PutBucketEncryption</a>
  1494. * </p> </li> <li> <p> <a
  1495. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html">DeleteBucketEncryption</a>
  1496. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1497. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption">AWS
  1498. * API Reference</a></p>
  1499. */
  1500. virtual Model::GetBucketEncryptionOutcome GetBucketEncryption(const Model::GetBucketEncryptionRequest& request) const;
  1501. /**
  1502. * A Callable wrapper for GetBucketEncryption that returns a future to the operation so that it can be executed in parallel to other requests.
  1503. */
  1504. template<typename GetBucketEncryptionRequestT = Model::GetBucketEncryptionRequest>
  1505. Model::GetBucketEncryptionOutcomeCallable GetBucketEncryptionCallable(const GetBucketEncryptionRequestT& request) const
  1506. {
  1507. return SubmitCallable(&S3Client::GetBucketEncryption, request);
  1508. }
  1509. /**
  1510. * An Async wrapper for GetBucketEncryption that queues the request into a thread executor and triggers associated callback when operation has finished.
  1511. */
  1512. template<typename GetBucketEncryptionRequestT = Model::GetBucketEncryptionRequest>
  1513. void GetBucketEncryptionAsync(const GetBucketEncryptionRequestT& request, const GetBucketEncryptionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1514. {
  1515. return SubmitAsync(&S3Client::GetBucketEncryption, request, handler, context);
  1516. }
  1517. /**
  1518. * <p>Gets the S3 Intelligent-Tiering configuration from the specified bucket.</p>
  1519. * <p>The S3 Intelligent-Tiering storage class is designed to optimize storage
  1520. * costs by automatically moving data to the most cost-effective storage access
  1521. * tier, without performance impact or operational overhead. S3 Intelligent-Tiering
  1522. * delivers automatic cost savings in three low latency and high throughput access
  1523. * tiers. To get the lowest storage cost on data that can be accessed in minutes to
  1524. * hours, you can choose to activate additional archiving capabilities.</p> <p>The
  1525. * S3 Intelligent-Tiering storage class is the ideal storage class for data with
  1526. * unknown, changing, or unpredictable access patterns, independent of object size
  1527. * or retention period. If the size of an object is less than 128 KB, it is not
  1528. * monitored and not eligible for auto-tiering. Smaller objects can be stored, but
  1529. * they are always charged at the Frequent Access tier rates in the S3
  1530. * Intelligent-Tiering storage class.</p> <p>For more information, see <a
  1531. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access">Storage
  1532. * class for automatically optimizing frequently and infrequently accessed
  1533. * objects</a>.</p> <p>Operations related to
  1534. * <code>GetBucketIntelligentTieringConfiguration</code> include: </p> <ul> <li>
  1535. * <p> <a
  1536. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html">DeleteBucketIntelligentTieringConfiguration</a>
  1537. * </p> </li> <li> <p> <a
  1538. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html">PutBucketIntelligentTieringConfiguration</a>
  1539. * </p> </li> <li> <p> <a
  1540. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html">ListBucketIntelligentTieringConfigurations</a>
  1541. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1542. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketIntelligentTieringConfiguration">AWS
  1543. * API Reference</a></p>
  1544. */
  1545. virtual Model::GetBucketIntelligentTieringConfigurationOutcome GetBucketIntelligentTieringConfiguration(const Model::GetBucketIntelligentTieringConfigurationRequest& request) const;
  1546. /**
  1547. * A Callable wrapper for GetBucketIntelligentTieringConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  1548. */
  1549. template<typename GetBucketIntelligentTieringConfigurationRequestT = Model::GetBucketIntelligentTieringConfigurationRequest>
  1550. Model::GetBucketIntelligentTieringConfigurationOutcomeCallable GetBucketIntelligentTieringConfigurationCallable(const GetBucketIntelligentTieringConfigurationRequestT& request) const
  1551. {
  1552. return SubmitCallable(&S3Client::GetBucketIntelligentTieringConfiguration, request);
  1553. }
  1554. /**
  1555. * An Async wrapper for GetBucketIntelligentTieringConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  1556. */
  1557. template<typename GetBucketIntelligentTieringConfigurationRequestT = Model::GetBucketIntelligentTieringConfigurationRequest>
  1558. void GetBucketIntelligentTieringConfigurationAsync(const GetBucketIntelligentTieringConfigurationRequestT& request, const GetBucketIntelligentTieringConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1559. {
  1560. return SubmitAsync(&S3Client::GetBucketIntelligentTieringConfiguration, request, handler, context);
  1561. }
  1562. /**
  1563. * <p>Returns an inventory configuration (identified by the inventory configuration
  1564. * ID) from the bucket.</p> <p>To use this operation, you must have permissions to
  1565. * perform the <code>s3:GetInventoryConfiguration</code> action. The bucket owner
  1566. * has this permission by default and can grant this permission to others. For more
  1567. * information about permissions, see <a
  1568. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  1569. * Related to Bucket Subresource Operations</a> and <a
  1570. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  1571. * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
  1572. * the Amazon S3 inventory feature, see <a
  1573. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html">Amazon
  1574. * S3 Inventory</a>.</p> <p>The following operations are related to
  1575. * <code>GetBucketInventoryConfiguration</code>:</p> <ul> <li> <p> <a
  1576. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html">DeleteBucketInventoryConfiguration</a>
  1577. * </p> </li> <li> <p> <a
  1578. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketInventoryConfigurations.html">ListBucketInventoryConfigurations</a>
  1579. * </p> </li> <li> <p> <a
  1580. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html">PutBucketInventoryConfiguration</a>
  1581. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1582. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration">AWS
  1583. * API Reference</a></p>
  1584. */
  1585. virtual Model::GetBucketInventoryConfigurationOutcome GetBucketInventoryConfiguration(const Model::GetBucketInventoryConfigurationRequest& request) const;
  1586. /**
  1587. * A Callable wrapper for GetBucketInventoryConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  1588. */
  1589. template<typename GetBucketInventoryConfigurationRequestT = Model::GetBucketInventoryConfigurationRequest>
  1590. Model::GetBucketInventoryConfigurationOutcomeCallable GetBucketInventoryConfigurationCallable(const GetBucketInventoryConfigurationRequestT& request) const
  1591. {
  1592. return SubmitCallable(&S3Client::GetBucketInventoryConfiguration, request);
  1593. }
  1594. /**
  1595. * An Async wrapper for GetBucketInventoryConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  1596. */
  1597. template<typename GetBucketInventoryConfigurationRequestT = Model::GetBucketInventoryConfigurationRequest>
  1598. void GetBucketInventoryConfigurationAsync(const GetBucketInventoryConfigurationRequestT& request, const GetBucketInventoryConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1599. {
  1600. return SubmitAsync(&S3Client::GetBucketInventoryConfiguration, request, handler, context);
  1601. }
  1602. /**
  1603. * <p>Bucket lifecycle configuration now supports specifying a lifecycle
  1604. * rule using an object key name prefix, one or more object tags, or a combination
  1605. * of both. Accordingly, this section describes the latest API. The response
  1606. * describes the new filter element that you can use to specify a filter to select
  1607. * a subset of objects to which the rule applies. If you are using a previous
  1608. * version of the lifecycle configuration, it still works. For the earlier action,
  1609. * see <a
  1610. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html">GetBucketLifecycle</a>.</p>
  1611. * <p>Returns the lifecycle configuration information set on the bucket.
  1612. * For information about lifecycle configuration, see <a
  1613. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html">Object
  1614. * Lifecycle Management</a>.</p> <p>To use this operation, you must have permission
  1615. * to perform the <code>s3:GetLifecycleConfiguration</code> action. The bucket
  1616. * owner has this permission, by default. The bucket owner can grant this
  1617. * permission to others. For more information about permissions, see <a
  1618. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  1619. * Related to Bucket Subresource Operations</a> and <a
  1620. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  1621. * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>
  1622. * <code>GetBucketLifecycleConfiguration</code> has the following special
  1623. * error:</p> <ul> <li> <p>Error code: <code>NoSuchLifecycleConfiguration</code>
  1624. * </p> <ul> <li> <p>Description: The lifecycle configuration does not exist.</p>
  1625. * </li> <li> <p>HTTP Status Code: 404 Not Found</p> </li> <li> <p>SOAP Fault Code
  1626. * Prefix: Client</p> </li> </ul> </li> </ul> <p>The following operations are
  1627. * related to <code>GetBucketLifecycleConfiguration</code>:</p> <ul> <li> <p> <a
  1628. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html">GetBucketLifecycle</a>
  1629. * </p> </li> <li> <p> <a
  1630. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html">PutBucketLifecycle</a>
  1631. * </p> </li> <li> <p> <a
  1632. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html">DeleteBucketLifecycle</a>
  1633. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1634. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration">AWS
  1635. * API Reference</a></p>
  1636. */
  1637. virtual Model::GetBucketLifecycleConfigurationOutcome GetBucketLifecycleConfiguration(const Model::GetBucketLifecycleConfigurationRequest& request) const;
  1638. /**
  1639. * A Callable wrapper for GetBucketLifecycleConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  1640. */
  1641. template<typename GetBucketLifecycleConfigurationRequestT = Model::GetBucketLifecycleConfigurationRequest>
  1642. Model::GetBucketLifecycleConfigurationOutcomeCallable GetBucketLifecycleConfigurationCallable(const GetBucketLifecycleConfigurationRequestT& request) const
  1643. {
  1644. return SubmitCallable(&S3Client::GetBucketLifecycleConfiguration, request);
  1645. }
  1646. /**
  1647. * An Async wrapper for GetBucketLifecycleConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  1648. */
  1649. template<typename GetBucketLifecycleConfigurationRequestT = Model::GetBucketLifecycleConfigurationRequest>
  1650. void GetBucketLifecycleConfigurationAsync(const GetBucketLifecycleConfigurationRequestT& request, const GetBucketLifecycleConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1651. {
  1652. return SubmitAsync(&S3Client::GetBucketLifecycleConfiguration, request, handler, context);
  1653. }
  1654. /**
  1655. * <p>Returns the Region the bucket resides in. You set the bucket's Region using
  1656. * the <code>LocationConstraint</code> request parameter in a
  1657. * <code>CreateBucket</code> request. For more information, see <a
  1658. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html">CreateBucket</a>.</p>
  1659. * <p>To use this implementation of the operation, you must be the bucket
  1660. * owner.</p> <p>To use this API against an access point, provide the alias of the
  1661. * access point in place of the bucket name.</p> <p>The following operations are
  1662. * related to <code>GetBucketLocation</code>:</p> <ul> <li> <p> <a
  1663. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>
  1664. * </p> </li> <li> <p> <a
  1665. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html">CreateBucket</a>
  1666. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1667. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation">AWS
  1668. * API Reference</a></p>
  1669. */
  1670. virtual Model::GetBucketLocationOutcome GetBucketLocation(const Model::GetBucketLocationRequest& request) const;
  1671. /**
  1672. * A Callable wrapper for GetBucketLocation that returns a future to the operation so that it can be executed in parallel to other requests.
  1673. */
  1674. template<typename GetBucketLocationRequestT = Model::GetBucketLocationRequest>
  1675. Model::GetBucketLocationOutcomeCallable GetBucketLocationCallable(const GetBucketLocationRequestT& request) const
  1676. {
  1677. return SubmitCallable(&S3Client::GetBucketLocation, request);
  1678. }
  1679. /**
  1680. * An Async wrapper for GetBucketLocation that queues the request into a thread executor and triggers associated callback when operation has finished.
  1681. */
  1682. template<typename GetBucketLocationRequestT = Model::GetBucketLocationRequest>
  1683. void GetBucketLocationAsync(const GetBucketLocationRequestT& request, const GetBucketLocationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1684. {
  1685. return SubmitAsync(&S3Client::GetBucketLocation, request, handler, context);
  1686. }
  1687. /**
  1688. * <p>Returns the logging status of a bucket and the permissions users have to view
  1689. * and modify that status. To use GET, you must be the bucket owner.</p> <p>The
  1690. * following operations are related to <code>GetBucketLogging</code>:</p> <ul> <li>
  1691. * <p> <a
  1692. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html">CreateBucket</a>
  1693. * </p> </li> <li> <p> <a
  1694. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html">PutBucketLogging</a>
  1695. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1696. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging">AWS
  1697. * API Reference</a></p>
  1698. */
  1699. virtual Model::GetBucketLoggingOutcome GetBucketLogging(const Model::GetBucketLoggingRequest& request) const;
  1700. /**
  1701. * A Callable wrapper for GetBucketLogging that returns a future to the operation so that it can be executed in parallel to other requests.
  1702. */
  1703. template<typename GetBucketLoggingRequestT = Model::GetBucketLoggingRequest>
  1704. Model::GetBucketLoggingOutcomeCallable GetBucketLoggingCallable(const GetBucketLoggingRequestT& request) const
  1705. {
  1706. return SubmitCallable(&S3Client::GetBucketLogging, request);
  1707. }
  1708. /**
  1709. * An Async wrapper for GetBucketLogging that queues the request into a thread executor and triggers associated callback when operation has finished.
  1710. */
  1711. template<typename GetBucketLoggingRequestT = Model::GetBucketLoggingRequest>
  1712. void GetBucketLoggingAsync(const GetBucketLoggingRequestT& request, const GetBucketLoggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1713. {
  1714. return SubmitAsync(&S3Client::GetBucketLogging, request, handler, context);
  1715. }
  1716. /**
  1717. * <p>Gets a metrics configuration (specified by the metrics configuration ID) from
  1718. * the bucket. Note that this doesn't include the daily storage metrics.</p> <p> To
  1719. * use this operation, you must have permissions to perform the
  1720. * <code>s3:GetMetricsConfiguration</code> action. The bucket owner has this
  1721. * permission by default. The bucket owner can grant this permission to others. For
  1722. * more information about permissions, see <a
  1723. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  1724. * Related to Bucket Subresource Operations</a> and <a
  1725. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  1726. * Access Permissions to Your Amazon S3 Resources</a>.</p> <p> For information
  1727. * about CloudWatch request metrics for Amazon S3, see <a
  1728. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
  1729. * Metrics with Amazon CloudWatch</a>.</p> <p>The following operations are related
  1730. * to <code>GetBucketMetricsConfiguration</code>:</p> <ul> <li> <p> <a
  1731. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html">PutBucketMetricsConfiguration</a>
  1732. * </p> </li> <li> <p> <a
  1733. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetricsConfiguration.html">DeleteBucketMetricsConfiguration</a>
  1734. * </p> </li> <li> <p> <a
  1735. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketMetricsConfigurations.html">ListBucketMetricsConfigurations</a>
  1736. * </p> </li> <li> <p> <a
  1737. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
  1738. * Metrics with Amazon CloudWatch</a> </p> </li> </ul><p><h3>See Also:</h3> <a
  1739. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration">AWS
  1740. * API Reference</a></p>
  1741. */
  1742. virtual Model::GetBucketMetricsConfigurationOutcome GetBucketMetricsConfiguration(const Model::GetBucketMetricsConfigurationRequest& request) const;
  1743. /**
  1744. * A Callable wrapper for GetBucketMetricsConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  1745. */
  1746. template<typename GetBucketMetricsConfigurationRequestT = Model::GetBucketMetricsConfigurationRequest>
  1747. Model::GetBucketMetricsConfigurationOutcomeCallable GetBucketMetricsConfigurationCallable(const GetBucketMetricsConfigurationRequestT& request) const
  1748. {
  1749. return SubmitCallable(&S3Client::GetBucketMetricsConfiguration, request);
  1750. }
  1751. /**
  1752. * An Async wrapper for GetBucketMetricsConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  1753. */
  1754. template<typename GetBucketMetricsConfigurationRequestT = Model::GetBucketMetricsConfigurationRequest>
  1755. void GetBucketMetricsConfigurationAsync(const GetBucketMetricsConfigurationRequestT& request, const GetBucketMetricsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1756. {
  1757. return SubmitAsync(&S3Client::GetBucketMetricsConfiguration, request, handler, context);
  1758. }
  1759. /**
  1760. * <p>Returns the notification configuration of a bucket.</p> <p>If notifications
  1761. * are not enabled on the bucket, the action returns an empty
  1762. * <code>NotificationConfiguration</code> element.</p> <p>By default, you must be
  1763. * the bucket owner to read the notification configuration of a bucket. However,
  1764. * the bucket owner can use a bucket policy to grant permission to other users to
  1765. * read this configuration with the <code>s3:GetBucketNotification</code>
  1766. * permission.</p> <p>For more information about setting and reading the
  1767. * notification configuration on a bucket, see <a
  1768. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Setting
  1769. * Up Notification of Bucket Events</a>. For more information about bucket
  1770. * policies, see <a
  1771. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html">Using
  1772. * Bucket Policies</a>.</p> <p>The following action is related to
  1773. * <code>GetBucketNotification</code>:</p> <ul> <li> <p> <a
  1774. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotification.html">PutBucketNotification</a>
  1775. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1776. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration">AWS
  1777. * API Reference</a></p>
  1778. */
  1779. virtual Model::GetBucketNotificationConfigurationOutcome GetBucketNotificationConfiguration(const Model::GetBucketNotificationConfigurationRequest& request) const;
  1780. /**
  1781. * A Callable wrapper for GetBucketNotificationConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  1782. */
  1783. template<typename GetBucketNotificationConfigurationRequestT = Model::GetBucketNotificationConfigurationRequest>
  1784. Model::GetBucketNotificationConfigurationOutcomeCallable GetBucketNotificationConfigurationCallable(const GetBucketNotificationConfigurationRequestT& request) const
  1785. {
  1786. return SubmitCallable(&S3Client::GetBucketNotificationConfiguration, request);
  1787. }
  1788. /**
  1789. * An Async wrapper for GetBucketNotificationConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  1790. */
  1791. template<typename GetBucketNotificationConfigurationRequestT = Model::GetBucketNotificationConfigurationRequest>
  1792. void GetBucketNotificationConfigurationAsync(const GetBucketNotificationConfigurationRequestT& request, const GetBucketNotificationConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1793. {
  1794. return SubmitAsync(&S3Client::GetBucketNotificationConfiguration, request, handler, context);
  1795. }
  1796. /**
  1797. * <p>Retrieves <code>OwnershipControls</code> for an Amazon S3 bucket. To use this
  1798. * operation, you must have the <code>s3:GetBucketOwnershipControls</code>
  1799. * permission. For more information about Amazon S3 permissions, see <a
  1800. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html">Specifying
  1801. * permissions in a policy</a>. </p> <p>For information about Amazon S3 Object
  1802. * Ownership, see <a
  1803. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html">Using
  1804. * Object Ownership</a>. </p> <p>The following operations are related to
  1805. * <code>GetBucketOwnershipControls</code>:</p> <ul> <li> <p>
  1806. * <a>PutBucketOwnershipControls</a> </p> </li> <li> <p>
  1807. * <a>DeleteBucketOwnershipControls</a> </p> </li> </ul><p><h3>See Also:</h3> <a
  1808. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketOwnershipControls">AWS
  1809. * API Reference</a></p>
  1810. */
  1811. virtual Model::GetBucketOwnershipControlsOutcome GetBucketOwnershipControls(const Model::GetBucketOwnershipControlsRequest& request) const;
  1812. /**
  1813. * A Callable wrapper for GetBucketOwnershipControls that returns a future to the operation so that it can be executed in parallel to other requests.
  1814. */
  1815. template<typename GetBucketOwnershipControlsRequestT = Model::GetBucketOwnershipControlsRequest>
  1816. Model::GetBucketOwnershipControlsOutcomeCallable GetBucketOwnershipControlsCallable(const GetBucketOwnershipControlsRequestT& request) const
  1817. {
  1818. return SubmitCallable(&S3Client::GetBucketOwnershipControls, request);
  1819. }
  1820. /**
  1821. * An Async wrapper for GetBucketOwnershipControls that queues the request into a thread executor and triggers associated callback when operation has finished.
  1822. */
  1823. template<typename GetBucketOwnershipControlsRequestT = Model::GetBucketOwnershipControlsRequest>
  1824. void GetBucketOwnershipControlsAsync(const GetBucketOwnershipControlsRequestT& request, const GetBucketOwnershipControlsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1825. {
  1826. return SubmitAsync(&S3Client::GetBucketOwnershipControls, request, handler, context);
  1827. }
  1828. /**
  1829. * <p>Returns the policy of a specified bucket. If you are using an identity other
  1830. * than the root user of the Amazon Web Services account that owns the bucket, the
  1831. * calling identity must have the <code>GetBucketPolicy</code> permissions on the
  1832. * specified bucket and belong to the bucket owner's account in order to use this
  1833. * operation.</p> <p>If you don't have <code>GetBucketPolicy</code> permissions,
  1834. * Amazon S3 returns a <code>403 Access Denied</code> error. If you have the
  1835. * correct permissions, but you're not using an identity that belongs to the bucket
  1836. * owner's account, Amazon S3 returns a <code>405 Method Not Allowed</code>
  1837. * error.</p> <p>As a security precaution, the root user of the Amazon
  1838. * Web Services account that owns a bucket can always use this operation, even if
  1839. * the policy explicitly denies the root user the ability to perform this
  1840. * action.</p> <p>For more information about bucket policies, see <a
  1841. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html">Using
  1842. * Bucket Policies and User Policies</a>.</p> <p>The following action is related to
  1843. * <code>GetBucketPolicy</code>:</p> <ul> <li> <p> <a
  1844. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>
  1845. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1846. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicy">AWS
  1847. * API Reference</a></p>
  1848. */
  1849. virtual Model::GetBucketPolicyOutcome GetBucketPolicy(const Model::GetBucketPolicyRequest& request) const;
  1850. /**
  1851. * A Callable wrapper for GetBucketPolicy that returns a future to the operation so that it can be executed in parallel to other requests.
  1852. */
  1853. template<typename GetBucketPolicyRequestT = Model::GetBucketPolicyRequest>
  1854. Model::GetBucketPolicyOutcomeCallable GetBucketPolicyCallable(const GetBucketPolicyRequestT& request) const
  1855. {
  1856. return SubmitCallable(&S3Client::GetBucketPolicy, request);
  1857. }
  1858. /**
  1859. * An Async wrapper for GetBucketPolicy that queues the request into a thread executor and triggers associated callback when operation has finished.
  1860. */
  1861. template<typename GetBucketPolicyRequestT = Model::GetBucketPolicyRequest>
  1862. void GetBucketPolicyAsync(const GetBucketPolicyRequestT& request, const GetBucketPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1863. {
  1864. return SubmitAsync(&S3Client::GetBucketPolicy, request, handler, context);
  1865. }
  1866. /**
  1867. * <p>Retrieves the policy status for an Amazon S3 bucket, indicating whether the
  1868. * bucket is public. In order to use this operation, you must have the
  1869. * <code>s3:GetBucketPolicyStatus</code> permission. For more information about
  1870. * Amazon S3 permissions, see <a
  1871. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
  1872. * Permissions in a Policy</a>.</p> <p> For more information about when Amazon S3
  1873. * considers a bucket public, see <a
  1874. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status">The
  1875. * Meaning of "Public"</a>. </p> <p>The following operations are related to
  1876. * <code>GetBucketPolicyStatus</code>:</p> <ul> <li> <p> <a
  1877. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html">Using
  1878. * Amazon S3 Block Public Access</a> </p> </li> <li> <p> <a
  1879. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html">GetPublicAccessBlock</a>
  1880. * </p> </li> <li> <p> <a
  1881. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html">PutPublicAccessBlock</a>
  1882. * </p> </li> <li> <p> <a
  1883. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html">DeletePublicAccessBlock</a>
  1884. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1885. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicyStatus">AWS
  1886. * API Reference</a></p>
  1887. */
  1888. virtual Model::GetBucketPolicyStatusOutcome GetBucketPolicyStatus(const Model::GetBucketPolicyStatusRequest& request) const;
  1889. /**
  1890. * A Callable wrapper for GetBucketPolicyStatus that returns a future to the operation so that it can be executed in parallel to other requests.
  1891. */
  1892. template<typename GetBucketPolicyStatusRequestT = Model::GetBucketPolicyStatusRequest>
  1893. Model::GetBucketPolicyStatusOutcomeCallable GetBucketPolicyStatusCallable(const GetBucketPolicyStatusRequestT& request) const
  1894. {
  1895. return SubmitCallable(&S3Client::GetBucketPolicyStatus, request);
  1896. }
  1897. /**
  1898. * An Async wrapper for GetBucketPolicyStatus that queues the request into a thread executor and triggers associated callback when operation has finished.
  1899. */
  1900. template<typename GetBucketPolicyStatusRequestT = Model::GetBucketPolicyStatusRequest>
  1901. void GetBucketPolicyStatusAsync(const GetBucketPolicyStatusRequestT& request, const GetBucketPolicyStatusResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1902. {
  1903. return SubmitAsync(&S3Client::GetBucketPolicyStatus, request, handler, context);
  1904. }
  1905. /**
  1906. * <p>Returns the replication configuration of a bucket.</p> <p> It can take
  1907. * a while to propagate the put or delete a replication configuration to all Amazon
  1908. * S3 systems. Therefore, a get request soon after put or delete can return a wrong
  1909. * result. </p> <p> For information about replication configuration, see <a
  1910. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html">Replication</a>
  1911. * in the <i>Amazon S3 User Guide</i>.</p> <p>This action requires permissions for
  1912. * the <code>s3:GetReplicationConfiguration</code> action. For more information
  1913. * about permissions, see <a
  1914. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html">Using
  1915. * Bucket Policies and User Policies</a>.</p> <p>If you include the
  1916. * <code>Filter</code> element in a replication configuration, you must also
  1917. * include the <code>DeleteMarkerReplication</code> and <code>Priority</code>
  1918. * elements. The response also returns those elements.</p> <p>For information about
  1919. * <code>GetBucketReplication</code> errors, see <a
  1920. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ReplicationErrorCodeList">List
  1921. * of replication-related error codes</a> </p> <p>The following operations are
  1922. * related to <code>GetBucketReplication</code>:</p> <ul> <li> <p> <a
  1923. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html">PutBucketReplication</a>
  1924. * </p> </li> <li> <p> <a
  1925. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketReplication.html">DeleteBucketReplication</a>
  1926. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1927. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication">AWS
  1928. * API Reference</a></p>
  1929. */
  1930. virtual Model::GetBucketReplicationOutcome GetBucketReplication(const Model::GetBucketReplicationRequest& request) const;
  1931. /**
  1932. * A Callable wrapper for GetBucketReplication that returns a future to the operation so that it can be executed in parallel to other requests.
  1933. */
  1934. template<typename GetBucketReplicationRequestT = Model::GetBucketReplicationRequest>
  1935. Model::GetBucketReplicationOutcomeCallable GetBucketReplicationCallable(const GetBucketReplicationRequestT& request) const
  1936. {
  1937. return SubmitCallable(&S3Client::GetBucketReplication, request);
  1938. }
  1939. /**
  1940. * An Async wrapper for GetBucketReplication that queues the request into a thread executor and triggers associated callback when operation has finished.
  1941. */
  1942. template<typename GetBucketReplicationRequestT = Model::GetBucketReplicationRequest>
  1943. void GetBucketReplicationAsync(const GetBucketReplicationRequestT& request, const GetBucketReplicationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1944. {
  1945. return SubmitAsync(&S3Client::GetBucketReplication, request, handler, context);
  1946. }
  1947. /**
  1948. * <p>Returns the request payment configuration of a bucket. To use this version of
  1949. * the operation, you must be the bucket owner. For more information, see <a
  1950. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html">Requester
  1951. * Pays Buckets</a>.</p> <p>The following operations are related to
  1952. * <code>GetBucketRequestPayment</code>:</p> <ul> <li> <p> <a
  1953. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html">ListObjects</a>
  1954. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1955. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment">AWS
  1956. * API Reference</a></p>
  1957. */
  1958. virtual Model::GetBucketRequestPaymentOutcome GetBucketRequestPayment(const Model::GetBucketRequestPaymentRequest& request) const;
  1959. /**
  1960. * A Callable wrapper for GetBucketRequestPayment that returns a future to the operation so that it can be executed in parallel to other requests.
  1961. */
  1962. template<typename GetBucketRequestPaymentRequestT = Model::GetBucketRequestPaymentRequest>
  1963. Model::GetBucketRequestPaymentOutcomeCallable GetBucketRequestPaymentCallable(const GetBucketRequestPaymentRequestT& request) const
  1964. {
  1965. return SubmitCallable(&S3Client::GetBucketRequestPayment, request);
  1966. }
  1967. /**
  1968. * An Async wrapper for GetBucketRequestPayment that queues the request into a thread executor and triggers associated callback when operation has finished.
  1969. */
  1970. template<typename GetBucketRequestPaymentRequestT = Model::GetBucketRequestPaymentRequest>
  1971. void GetBucketRequestPaymentAsync(const GetBucketRequestPaymentRequestT& request, const GetBucketRequestPaymentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  1972. {
  1973. return SubmitAsync(&S3Client::GetBucketRequestPayment, request, handler, context);
  1974. }
  1975. /**
  1976. * <p>Returns the tag set associated with the bucket.</p> <p>To use this operation,
  1977. * you must have permission to perform the <code>s3:GetBucketTagging</code> action.
  1978. * By default, the bucket owner has this permission and can grant this permission
  1979. * to others.</p> <p> <code>GetBucketTagging</code> has the following special
  1980. * error:</p> <ul> <li> <p>Error code: <code>NoSuchTagSet</code> </p> <ul> <li>
  1981. * <p>Description: There is no tag set associated with the bucket.</p> </li> </ul>
  1982. * </li> </ul> <p>The following operations are related to
  1983. * <code>GetBucketTagging</code>:</p> <ul> <li> <p> <a
  1984. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html">PutBucketTagging</a>
  1985. * </p> </li> <li> <p> <a
  1986. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html">DeleteBucketTagging</a>
  1987. * </p> </li> </ul><p><h3>See Also:</h3> <a
  1988. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging">AWS
  1989. * API Reference</a></p>
  1990. */
  1991. virtual Model::GetBucketTaggingOutcome GetBucketTagging(const Model::GetBucketTaggingRequest& request) const;
  1992. /**
  1993. * A Callable wrapper for GetBucketTagging that returns a future to the operation so that it can be executed in parallel to other requests.
  1994. */
  1995. template<typename GetBucketTaggingRequestT = Model::GetBucketTaggingRequest>
  1996. Model::GetBucketTaggingOutcomeCallable GetBucketTaggingCallable(const GetBucketTaggingRequestT& request) const
  1997. {
  1998. return SubmitCallable(&S3Client::GetBucketTagging, request);
  1999. }
  2000. /**
  2001. * An Async wrapper for GetBucketTagging that queues the request into a thread executor and triggers associated callback when operation has finished.
  2002. */
  2003. template<typename GetBucketTaggingRequestT = Model::GetBucketTaggingRequest>
  2004. void GetBucketTaggingAsync(const GetBucketTaggingRequestT& request, const GetBucketTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2005. {
  2006. return SubmitAsync(&S3Client::GetBucketTagging, request, handler, context);
  2007. }
  2008. /**
  2009. * <p>Returns the versioning state of a bucket.</p> <p>To retrieve the versioning
  2010. * state of a bucket, you must be the bucket owner.</p> <p>This implementation also
  2011. * returns the MFA Delete status of the versioning state. If the MFA Delete status
  2012. * is <code>enabled</code>, the bucket owner must use an authentication device to
  2013. * change the versioning state of the bucket.</p> <p>The following operations are
  2014. * related to <code>GetBucketVersioning</code>:</p> <ul> <li> <p> <a
  2015. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>
  2016. * </p> </li> <li> <p> <a
  2017. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html">PutObject</a>
  2018. * </p> </li> <li> <p> <a
  2019. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html">DeleteObject</a>
  2020. * </p> </li> </ul><p><h3>See Also:</h3> <a
  2021. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning">AWS
  2022. * API Reference</a></p>
  2023. */
  2024. virtual Model::GetBucketVersioningOutcome GetBucketVersioning(const Model::GetBucketVersioningRequest& request) const;
  2025. /**
  2026. * A Callable wrapper for GetBucketVersioning that returns a future to the operation so that it can be executed in parallel to other requests.
  2027. */
  2028. template<typename GetBucketVersioningRequestT = Model::GetBucketVersioningRequest>
  2029. Model::GetBucketVersioningOutcomeCallable GetBucketVersioningCallable(const GetBucketVersioningRequestT& request) const
  2030. {
  2031. return SubmitCallable(&S3Client::GetBucketVersioning, request);
  2032. }
  2033. /**
  2034. * An Async wrapper for GetBucketVersioning that queues the request into a thread executor and triggers associated callback when operation has finished.
  2035. */
  2036. template<typename GetBucketVersioningRequestT = Model::GetBucketVersioningRequest>
  2037. void GetBucketVersioningAsync(const GetBucketVersioningRequestT& request, const GetBucketVersioningResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2038. {
  2039. return SubmitAsync(&S3Client::GetBucketVersioning, request, handler, context);
  2040. }
  2041. /**
  2042. * <p>Returns the website configuration for a bucket. To host website on Amazon S3,
  2043. * you can configure a bucket as website by adding a website configuration. For
  2044. * more information about hosting websites, see <a
  2045. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
  2046. * Websites on Amazon S3</a>. </p> <p>This GET action requires the
  2047. * <code>S3:GetBucketWebsite</code> permission. By default, only the bucket owner
  2048. * can read the bucket website configuration. However, bucket owners can allow
  2049. * other users to read the website configuration by writing a bucket policy
  2050. * granting them the <code>S3:GetBucketWebsite</code> permission.</p> <p>The
  2051. * following operations are related to <code>DeleteBucketWebsite</code>:</p> <ul>
  2052. * <li> <p> <a
  2053. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketWebsite.html">DeleteBucketWebsite</a>
  2054. * </p> </li> <li> <p> <a
  2055. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketWebsite.html">PutBucketWebsite</a>
  2056. * </p> </li> </ul><p><h3>See Also:</h3> <a
  2057. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite">AWS
  2058. * API Reference</a></p>
  2059. */
  2060. virtual Model::GetBucketWebsiteOutcome GetBucketWebsite(const Model::GetBucketWebsiteRequest& request) const;
  2061. /**
  2062. * A Callable wrapper for GetBucketWebsite that returns a future to the operation so that it can be executed in parallel to other requests.
  2063. */
  2064. template<typename GetBucketWebsiteRequestT = Model::GetBucketWebsiteRequest>
  2065. Model::GetBucketWebsiteOutcomeCallable GetBucketWebsiteCallable(const GetBucketWebsiteRequestT& request) const
  2066. {
  2067. return SubmitCallable(&S3Client::GetBucketWebsite, request);
  2068. }
  2069. /**
  2070. * An Async wrapper for GetBucketWebsite that queues the request into a thread executor and triggers associated callback when operation has finished.
  2071. */
  2072. template<typename GetBucketWebsiteRequestT = Model::GetBucketWebsiteRequest>
  2073. void GetBucketWebsiteAsync(const GetBucketWebsiteRequestT& request, const GetBucketWebsiteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2074. {
  2075. return SubmitAsync(&S3Client::GetBucketWebsite, request, handler, context);
  2076. }
  2077. /**
  2078. * <p>Retrieves objects from Amazon S3. To use <code>GET</code>, you must have
  2079. * <code>READ</code> access to the object. If you grant <code>READ</code> access to
  2080. * the anonymous user, you can return the object without using an authorization
  2081. * header.</p> <p>An Amazon S3 bucket has no directory hierarchy such as you would
  2082. * find in a typical computer file system. You can, however, create a logical
  2083. * hierarchy by using object key names that imply a folder structure. For example,
  2084. * instead of naming an object <code>sample.jpg</code>, you can name it
  2085. * <code>photos/2006/February/sample.jpg</code>.</p> <p>To get an object from such
  2086. * a logical hierarchy, specify the full key name for the object in the
  2087. * <code>GET</code> operation. For a virtual hosted-style request example, if you
  2088. * have the object <code>photos/2006/February/sample.jpg</code>, specify the
  2089. * resource as <code>/photos/2006/February/sample.jpg</code>. For a path-style
  2090. * request example, if you have the object
  2091. * <code>photos/2006/February/sample.jpg</code> in the bucket named
  2092. * <code>examplebucket</code>, specify the resource as
  2093. * <code>/examplebucket/photos/2006/February/sample.jpg</code>. For more
  2094. * information about request types, see <a
  2095. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html#VirtualHostingSpecifyBucket">HTTP
  2096. * Host Header Bucket Specification</a>.</p> <p>For more information about
  2097. * returning the ACL of an object, see <a
  2098. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html">GetObjectAcl</a>.</p>
  2099. * <p>If the object you are retrieving is stored in the S3 Glacier or S3 Glacier
  2100. * Deep Archive storage class, or S3 Intelligent-Tiering Archive or S3
  2101. * Intelligent-Tiering Deep Archive tiers, before you can retrieve the object you
  2102. * must first restore a copy using <a
  2103. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html">RestoreObject</a>.
  2104. * Otherwise, this action returns an <code>InvalidObjectStateError</code> error.
  2105. * For information about restoring archived objects, see <a
  2106. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html">Restoring
  2107. * Archived Objects</a>.</p> <p>Encryption request headers, like
  2108. * <code>x-amz-server-side-encryption</code>, should not be sent for GET requests
  2109. * if your object uses server-side encryption with KMS keys (SSE-KMS) or
  2110. * server-side encryption with Amazon S3–managed encryption keys (SSE-S3). If your
  2111. * object does use these types of keys, you’ll get an HTTP 400 BadRequest
  2112. * error.</p> <p>If you encrypt an object by using server-side encryption with
  2113. * customer-provided encryption keys (SSE-C) when you store the object in Amazon
  2114. * S3, then when you GET the object, you must use the following headers:</p> <ul>
  2115. * <li> <p>x-amz-server-side-encryption-customer-algorithm</p> </li> <li>
  2116. * <p>x-amz-server-side-encryption-customer-key</p> </li> <li>
  2117. * <p>x-amz-server-side-encryption-customer-key-MD5</p> </li> </ul> <p>For more
  2118. * information about SSE-C, see <a
  2119. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
  2120. * Encryption (Using Customer-Provided Encryption Keys)</a>.</p> <p>Assuming you
  2121. * have the relevant permission to read object tags, the response also returns the
  2122. * <code>x-amz-tagging-count</code> header that provides the count of number of
  2123. * tags associated with the object. You can use <a
  2124. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html">GetObjectTagging</a>
  2125. * to retrieve the tag set associated with an object.</p> <p> <b>Permissions</b>
  2126. * </p> <p>You need the relevant read object (or version) permission for this
  2127. * operation. For more information, see <a
  2128. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
  2129. * Permissions in a Policy</a>. If the object you request does not exist, the error
  2130. * Amazon S3 returns depends on whether you also have the
  2131. * <code>s3:ListBucket</code> permission.</p> <ul> <li> <p>If you have the
  2132. * <code>s3:ListBucket</code> permission on the bucket, Amazon S3 will return an
  2133. * HTTP status code 404 ("no such key") error.</p> </li> <li> <p>If you don’t have
  2134. * the <code>s3:ListBucket</code> permission, Amazon S3 will return an HTTP status
  2135. * code 403 ("access denied") error.</p> </li> </ul> <p> <b>Versioning</b> </p>
  2136. * <p>By default, the GET action returns the current version of an object. To
  2137. * return a different version, use the <code>versionId</code> subresource.</p>
  2138. * <ul> <li> <p> If you supply a <code>versionId</code>, you need the
  2139. * <code>s3:GetObjectVersion</code> permission to access a specific version of an
  2140. * object. If you request a specific version, you do not need to have the
  2141. * <code>s3:GetObject</code> permission. </p> </li> <li> <p>If the current version
  2142. * of the object is a delete marker, Amazon S3 behaves as if the object was deleted
  2143. * and includes <code>x-amz-delete-marker: true</code> in the response.</p> </li>
  2144. * </ul> <p>For more information about versioning, see <a
  2145. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html">PutBucketVersioning</a>.
  2146. * </p> <p> <b>Overriding Response Header Values</b> </p> <p>There are times when
  2147. * you want to override certain response header values in a GET response. For
  2148. * example, you might override the <code>Content-Disposition</code> response header
  2149. * value in your GET request.</p> <p>You can override values for a set of response
  2150. * headers using the following query parameters. These response header values are
  2151. * sent only on a successful request, that is, when status code 200 OK is returned.
  2152. * The set of headers you can override using these parameters is a subset of the
  2153. * headers that Amazon S3 accepts when you create an object. The response headers
  2154. * that you can override for the GET response are <code>Content-Type</code>,
  2155. * <code>Content-Language</code>, <code>Expires</code>, <code>Cache-Control</code>,
  2156. * <code>Content-Disposition</code>, and <code>Content-Encoding</code>. To override
  2157. * these header values in the GET response, you use the following request
  2158. * parameters.</p> <p>You must sign the request, either using an
  2159. * Authorization header or a presigned URL, when using these parameters. They
  2160. * cannot be used with an unsigned (anonymous) request.</p> <ul> <li> <p>
  2161. * <code>response-content-type</code> </p> </li> <li> <p>
  2162. * <code>response-content-language</code> </p> </li> <li> <p>
  2163. * <code>response-expires</code> </p> </li> <li> <p>
  2164. * <code>response-cache-control</code> </p> </li> <li> <p>
  2165. * <code>response-content-disposition</code> </p> </li> <li> <p>
  2166. * <code>response-content-encoding</code> </p> </li> </ul> <p> <b>Additional
  2167. * Considerations about Request Headers</b> </p> <p>If both of the
  2168. * <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present
  2169. * in the request as follows: <code>If-Match</code> condition evaluates to
  2170. * <code>true</code>, and; <code>If-Unmodified-Since</code> condition evaluates to
  2171. * <code>false</code>; then, S3 returns 200 OK and the data requested. </p> <p>If
  2172. * both of the <code>If-None-Match</code> and <code>If-Modified-Since</code>
  2173. * headers are present in the request as follows:<code> If-None-Match</code>
  2174. * condition evaluates to <code>false</code>, and; <code>If-Modified-Since</code>
  2175. * condition evaluates to <code>true</code>; then, S3 returns 304 Not Modified
  2176. * response code.</p> <p>For more information about conditional requests, see <a
  2177. * href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p> <p>The following
  2178. * operations are related to <code>GetObject</code>:</p> <ul> <li> <p> <a
  2179. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html">ListBuckets</a>
  2180. * </p> </li> <li> <p> <a
  2181. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html">GetObjectAcl</a>
  2182. * </p> </li> </ul><p><h3>See Also:</h3> <a
  2183. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject">AWS API
  2184. * Reference</a></p>
  2185. */
  2186. virtual Model::GetObjectOutcome GetObject(const Model::GetObjectRequest& request) const;
  2187. /**
  2188. * A Callable wrapper for GetObject that returns a future to the operation so that it can be executed in parallel to other requests.
  2189. */
  2190. virtual Model::GetObjectOutcomeCallable GetObjectCallable(const Model::GetObjectRequest& request) const;
  2191. /**
  2192. * An Async wrapper for GetObject that queues the request into a thread executor and triggers associated callback when operation has finished.
  2193. */
  2194. virtual void GetObjectAsync(const Model::GetObjectRequest& request, const GetObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
  2195. /**
  2196. * <p>Returns the access control list (ACL) of an object. To use this operation,
  2197. * you must have <code>s3:GetObjectAcl</code> permissions or <code>READ_ACP</code>
  2198. * access to the object. For more information, see <a
  2199. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#acl-access-policy-permission-mapping">Mapping
  2200. * of ACL permissions and access policy permissions</a> in the <i>Amazon S3 User
  2201. * Guide</i> </p> <p>This action is not supported by Amazon S3 on Outposts.</p> <p>
  2202. * <b>Versioning</b> </p> <p>By default, GET returns ACL information about the
  2203. * current version of an object. To return ACL information about a different
  2204. * version, use the versionId subresource.</p> <p>If your bucket uses the
  2205. * bucket owner enforced setting for S3 Object Ownership, requests to read ACLs are
  2206. * still supported and return the <code>bucket-owner-full-control</code> ACL with
  2207. * the owner being the account that created the bucket. For more information, see
  2208. * <a
  2209. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html">
  2210. * Controlling object ownership and disabling ACLs</a> in the <i>Amazon S3 User
  2211. * Guide</i>.</p> <p>The following operations are related to
  2212. * <code>GetObjectAcl</code>:</p> <ul> <li> <p> <a
  2213. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>
  2214. * </p> </li> <li> <p> <a
  2215. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html">GetObjectAttributes</a>
  2216. * </p> </li> <li> <p> <a
  2217. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html">DeleteObject</a>
  2218. * </p> </li> <li> <p> <a
  2219. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html">PutObject</a>
  2220. * </p> </li> </ul><p><h3>See Also:</h3> <a
  2221. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl">AWS API
  2222. * Reference</a></p>
  2223. */
  2224. virtual Model::GetObjectAclOutcome GetObjectAcl(const Model::GetObjectAclRequest& request) const;
  2225. /**
  2226. * A Callable wrapper for GetObjectAcl that returns a future to the operation so that it can be executed in parallel to other requests.
  2227. */
  2228. template<typename GetObjectAclRequestT = Model::GetObjectAclRequest>
  2229. Model::GetObjectAclOutcomeCallable GetObjectAclCallable(const GetObjectAclRequestT& request) const
  2230. {
  2231. return SubmitCallable(&S3Client::GetObjectAcl, request);
  2232. }
  2233. /**
  2234. * An Async wrapper for GetObjectAcl that queues the request into a thread executor and triggers associated callback when operation has finished.
  2235. */
  2236. template<typename GetObjectAclRequestT = Model::GetObjectAclRequest>
  2237. void GetObjectAclAsync(const GetObjectAclRequestT& request, const GetObjectAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2238. {
  2239. return SubmitAsync(&S3Client::GetObjectAcl, request, handler, context);
  2240. }
  2241. /**
  2242. * <p>Retrieves all the metadata from an object without returning the object
  2243. * itself. This action is useful if you're interested only in an object's metadata.
  2244. * To use <code>GetObjectAttributes</code>, you must have READ access to the
  2245. * object.</p> <p> <code>GetObjectAttributes</code> combines the functionality of
  2246. * <code>GetObjectAcl</code>, <code>GetObjectLegalHold</code>,
  2247. * <code>GetObjectLockConfiguration</code>, <code>GetObjectRetention</code>,
  2248. * <code>GetObjectTagging</code>, <code>HeadObject</code>, and
  2249. * <code>ListParts</code>. All of the data returned with each of those individual
  2250. * calls can be returned with a single call to
  2251. * <code>GetObjectAttributes</code>.</p> <p>If you encrypt an object by using
  2252. * server-side encryption with customer-provided encryption keys (SSE-C) when you
  2253. * store the object in Amazon S3, then when you retrieve the metadata from the
  2254. * object, you must use the following headers:</p> <ul> <li> <p>
  2255. * <code>x-amz-server-side-encryption-customer-algorithm</code> </p> </li> <li> <p>
  2256. * <code>x-amz-server-side-encryption-customer-key</code> </p> </li> <li> <p>
  2257. * <code>x-amz-server-side-encryption-customer-key-MD5</code> </p> </li> </ul>
  2258. * <p>For more information about SSE-C, see <a
  2259. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
  2260. * Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3
  2261. * User Guide</i>.</p> <ul> <li> <p>Encryption request headers, such as
  2262. * <code>x-amz-server-side-encryption</code>, should not be sent for GET requests
  2263. * if your object uses server-side encryption with Amazon Web Services KMS keys
  2264. * stored in Amazon Web Services Key Management Service (SSE-KMS) or server-side
  2265. * encryption with Amazon S3 managed encryption keys (SSE-S3). If your object does
  2266. * use these types of keys, you'll get an HTTP <code>400 Bad Request</code>
  2267. * error.</p> </li> <li> <p> The last modified property in this case is the
  2268. * creation date of the object.</p> </li> </ul> <p>Consider the following
  2269. * when using request headers:</p> <ul> <li> <p> If both of the
  2270. * <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present
  2271. * in the request as follows, then Amazon S3 returns the HTTP status code <code>200
  2272. * OK</code> and the data requested:</p> <ul> <li> <p> <code>If-Match</code>
  2273. * condition evaluates to <code>true</code>.</p> </li> <li> <p>
  2274. * <code>If-Unmodified-Since</code> condition evaluates to <code>false</code>.</p>
  2275. * </li> </ul> </li> <li> <p>If both of the <code>If-None-Match</code> and
  2276. * <code>If-Modified-Since</code> headers are present in the request as follows,
  2277. * then Amazon S3 returns the HTTP status code <code>304 Not Modified</code>:</p>
  2278. * <ul> <li> <p> <code>If-None-Match</code> condition evaluates to
  2279. * <code>false</code>.</p> </li> <li> <p> <code>If-Modified-Since</code> condition
  2280. * evaluates to <code>true</code>.</p> </li> </ul> </li> </ul> <p>For more
  2281. * information about conditional requests, see <a
  2282. * href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p> <p>
  2283. * <b>Permissions</b> </p> <p>The permissions that you need to use this operation
  2284. * depend on whether the bucket is versioned. If the bucket is versioned, you need
  2285. * both the <code>s3:GetObjectVersion</code> and
  2286. * <code>s3:GetObjectVersionAttributes</code> permissions for this operation. If
  2287. * the bucket is not versioned, you need the <code>s3:GetObject</code> and
  2288. * <code>s3:GetObjectAttributes</code> permissions. For more information, see <a
  2289. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
  2290. * Permissions in a Policy</a> in the <i>Amazon S3 User Guide</i>. If the object
  2291. * that you request does not exist, the error Amazon S3 returns depends on whether
  2292. * you also have the <code>s3:ListBucket</code> permission.</p> <ul> <li> <p>If you
  2293. * have the <code>s3:ListBucket</code> permission on the bucket, Amazon S3 returns
  2294. * an HTTP status code <code>404 Not Found</code> ("no such key") error.</p> </li>
  2295. * <li> <p>If you don't have the <code>s3:ListBucket</code> permission, Amazon S3
  2296. * returns an HTTP status code <code>403 Forbidden</code> ("access denied")
  2297. * error.</p> </li> </ul> <p>The following actions are related to
  2298. * <code>GetObjectAttributes</code>:</p> <ul> <li> <p> <a
  2299. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>
  2300. * </p> </li> <li> <p> <a
  2301. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html">GetObjectAcl</a>
  2302. * </p> </li> <li> <p> <a
  2303. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLegalHold.html">GetObjectLegalHold</a>
  2304. * </p> </li> <li> <p> <a
  2305. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLockConfiguration.html">GetObjectLockConfiguration</a>
  2306. * </p> </li> <li> <p> <a
  2307. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectRetention.html">GetObjectRetention</a>
  2308. * </p> </li> <li> <p> <a
  2309. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html">GetObjectTagging</a>
  2310. * </p> </li> <li> <p> <a
  2311. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html">HeadObject</a>
  2312. * </p> </li> <li> <p> <a
  2313. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html">ListParts</a>
  2314. * </p> </li> </ul><p><h3>See Also:</h3> <a
  2315. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAttributes">AWS
  2316. * API Reference</a></p>
  2317. */
  2318. virtual Model::GetObjectAttributesOutcome GetObjectAttributes(const Model::GetObjectAttributesRequest& request) const;
  2319. /**
  2320. * A Callable wrapper for GetObjectAttributes that returns a future to the operation so that it can be executed in parallel to other requests.
  2321. */
  2322. template<typename GetObjectAttributesRequestT = Model::GetObjectAttributesRequest>
  2323. Model::GetObjectAttributesOutcomeCallable GetObjectAttributesCallable(const GetObjectAttributesRequestT& request) const
  2324. {
  2325. return SubmitCallable(&S3Client::GetObjectAttributes, request);
  2326. }
  2327. /**
  2328. * An Async wrapper for GetObjectAttributes that queues the request into a thread executor and triggers associated callback when operation has finished.
  2329. */
  2330. template<typename GetObjectAttributesRequestT = Model::GetObjectAttributesRequest>
  2331. void GetObjectAttributesAsync(const GetObjectAttributesRequestT& request, const GetObjectAttributesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2332. {
  2333. return SubmitAsync(&S3Client::GetObjectAttributes, request, handler, context);
  2334. }
  2335. /**
  2336. * <p>Gets an object's current legal hold status. For more information, see <a
  2337. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
  2338. * Objects</a>.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
  2339. * <p>The following action is related to <code>GetObjectLegalHold</code>:</p> <ul>
  2340. * <li> <p> <a
  2341. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html">GetObjectAttributes</a>
  2342. * </p> </li> </ul><p><h3>See Also:</h3> <a
  2343. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLegalHold">AWS
  2344. * API Reference</a></p>
  2345. */
  2346. virtual Model::GetObjectLegalHoldOutcome GetObjectLegalHold(const Model::GetObjectLegalHoldRequest& request) const;
  2347. /**
  2348. * A Callable wrapper for GetObjectLegalHold that returns a future to the operation so that it can be executed in parallel to other requests.
  2349. */
  2350. template<typename GetObjectLegalHoldRequestT = Model::GetObjectLegalHoldRequest>
  2351. Model::GetObjectLegalHoldOutcomeCallable GetObjectLegalHoldCallable(const GetObjectLegalHoldRequestT& request) const
  2352. {
  2353. return SubmitCallable(&S3Client::GetObjectLegalHold, request);
  2354. }
  2355. /**
  2356. * An Async wrapper for GetObjectLegalHold that queues the request into a thread executor and triggers associated callback when operation has finished.
  2357. */
  2358. template<typename GetObjectLegalHoldRequestT = Model::GetObjectLegalHoldRequest>
  2359. void GetObjectLegalHoldAsync(const GetObjectLegalHoldRequestT& request, const GetObjectLegalHoldResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2360. {
  2361. return SubmitAsync(&S3Client::GetObjectLegalHold, request, handler, context);
  2362. }
  2363. /**
  2364. * <p>Gets the Object Lock configuration for a bucket. The rule specified in the
  2365. * Object Lock configuration will be applied by default to every new object placed
  2366. * in the specified bucket. For more information, see <a
  2367. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
  2368. * Objects</a>.</p> <p>The following action is related to
  2369. * <code>GetObjectLockConfiguration</code>:</p> <ul> <li> <p> <a
  2370. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html">GetObjectAttributes</a>
  2371. * </p> </li> </ul><p><h3>See Also:</h3> <a
  2372. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLockConfiguration">AWS
  2373. * API Reference</a></p>
  2374. */
  2375. virtual Model::GetObjectLockConfigurationOutcome GetObjectLockConfiguration(const Model::GetObjectLockConfigurationRequest& request) const;
  2376. /**
  2377. * A Callable wrapper for GetObjectLockConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  2378. */
  2379. template<typename GetObjectLockConfigurationRequestT = Model::GetObjectLockConfigurationRequest>
  2380. Model::GetObjectLockConfigurationOutcomeCallable GetObjectLockConfigurationCallable(const GetObjectLockConfigurationRequestT& request) const
  2381. {
  2382. return SubmitCallable(&S3Client::GetObjectLockConfiguration, request);
  2383. }
  2384. /**
  2385. * An Async wrapper for GetObjectLockConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  2386. */
  2387. template<typename GetObjectLockConfigurationRequestT = Model::GetObjectLockConfigurationRequest>
  2388. void GetObjectLockConfigurationAsync(const GetObjectLockConfigurationRequestT& request, const GetObjectLockConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2389. {
  2390. return SubmitAsync(&S3Client::GetObjectLockConfiguration, request, handler, context);
  2391. }
  2392. /**
  2393. * <p>Retrieves an object's retention settings. For more information, see <a
  2394. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
  2395. * Objects</a>.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
  2396. * <p>The following action is related to <code>GetObjectRetention</code>:</p> <ul>
  2397. * <li> <p> <a
  2398. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html">GetObjectAttributes</a>
  2399. * </p> </li> </ul><p><h3>See Also:</h3> <a
  2400. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectRetention">AWS
  2401. * API Reference</a></p>
  2402. */
  2403. virtual Model::GetObjectRetentionOutcome GetObjectRetention(const Model::GetObjectRetentionRequest& request) const;
  2404. /**
  2405. * A Callable wrapper for GetObjectRetention that returns a future to the operation so that it can be executed in parallel to other requests.
  2406. */
  2407. template<typename GetObjectRetentionRequestT = Model::GetObjectRetentionRequest>
  2408. Model::GetObjectRetentionOutcomeCallable GetObjectRetentionCallable(const GetObjectRetentionRequestT& request) const
  2409. {
  2410. return SubmitCallable(&S3Client::GetObjectRetention, request);
  2411. }
  2412. /**
  2413. * An Async wrapper for GetObjectRetention that queues the request into a thread executor and triggers associated callback when operation has finished.
  2414. */
  2415. template<typename GetObjectRetentionRequestT = Model::GetObjectRetentionRequest>
  2416. void GetObjectRetentionAsync(const GetObjectRetentionRequestT& request, const GetObjectRetentionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2417. {
  2418. return SubmitAsync(&S3Client::GetObjectRetention, request, handler, context);
  2419. }
  2420. /**
  2421. * <p>Returns the tag-set of an object. You send the GET request against the
  2422. * tagging subresource associated with the object.</p> <p>To use this operation,
  2423. * you must have permission to perform the <code>s3:GetObjectTagging</code> action.
  2424. * By default, the GET action returns information about current version of an
  2425. * object. For a versioned bucket, you can have multiple versions of an object in
  2426. * your bucket. To retrieve tags of any other version, use the versionId query
  2427. * parameter. You also need permission for the
  2428. * <code>s3:GetObjectVersionTagging</code> action.</p> <p> By default, the bucket
  2429. * owner has this permission and can grant this permission to others.</p> <p> For
  2430. * information about the Amazon S3 object tagging feature, see <a
  2431. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html">Object
  2432. * Tagging</a>.</p> <p>The following actions are related to
  2433. * <code>GetObjectTagging</code>:</p> <ul> <li> <p> <a
  2434. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html">DeleteObjectTagging</a>
  2435. * </p> </li> <li> <p> <a
  2436. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html">GetObjectAttributes</a>
  2437. * </p> </li> <li> <p> <a
  2438. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html">PutObjectTagging</a>
  2439. * </p> </li> </ul><p><h3>See Also:</h3> <a
  2440. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging">AWS
  2441. * API Reference</a></p>
  2442. */
  2443. virtual Model::GetObjectTaggingOutcome GetObjectTagging(const Model::GetObjectTaggingRequest& request) const;
  2444. /**
  2445. * A Callable wrapper for GetObjectTagging that returns a future to the operation so that it can be executed in parallel to other requests.
  2446. */
  2447. template<typename GetObjectTaggingRequestT = Model::GetObjectTaggingRequest>
  2448. Model::GetObjectTaggingOutcomeCallable GetObjectTaggingCallable(const GetObjectTaggingRequestT& request) const
  2449. {
  2450. return SubmitCallable(&S3Client::GetObjectTagging, request);
  2451. }
  2452. /**
  2453. * An Async wrapper for GetObjectTagging that queues the request into a thread executor and triggers associated callback when operation has finished.
  2454. */
  2455. template<typename GetObjectTaggingRequestT = Model::GetObjectTaggingRequest>
  2456. void GetObjectTaggingAsync(const GetObjectTaggingRequestT& request, const GetObjectTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2457. {
  2458. return SubmitAsync(&S3Client::GetObjectTagging, request, handler, context);
  2459. }
  2460. /**
  2461. * <p>Returns torrent files from a bucket. BitTorrent can save you bandwidth when
  2462. * you're distributing large files. For more information about BitTorrent, see <a
  2463. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html">Using
  2464. * BitTorrent with Amazon S3</a>.</p> <p>You can get torrent only for
  2465. * objects that are less than 5 GB in size, and that are not encrypted using
  2466. * server-side encryption with a customer-provided encryption key.</p>
  2467. * <p>To use GET, you must have READ access to the object.</p> <p>This action is
  2468. * not supported by Amazon S3 on Outposts.</p> <p>The following action is related
  2469. * to <code>GetObjectTorrent</code>:</p> <ul> <li> <p> <a
  2470. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>
  2471. * </p> </li> </ul><p><h3>See Also:</h3> <a
  2472. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent">AWS
  2473. * API Reference</a></p>
  2474. */
  2475. virtual Model::GetObjectTorrentOutcome GetObjectTorrent(const Model::GetObjectTorrentRequest& request) const;
  2476. /**
  2477. * A Callable wrapper for GetObjectTorrent that returns a future to the operation so that it can be executed in parallel to other requests.
  2478. */
  2479. template<typename GetObjectTorrentRequestT = Model::GetObjectTorrentRequest>
  2480. Model::GetObjectTorrentOutcomeCallable GetObjectTorrentCallable(const GetObjectTorrentRequestT& request) const
  2481. {
  2482. return SubmitCallable(&S3Client::GetObjectTorrent, request);
  2483. }
  2484. /**
  2485. * An Async wrapper for GetObjectTorrent that queues the request into a thread executor and triggers associated callback when operation has finished.
  2486. */
  2487. template<typename GetObjectTorrentRequestT = Model::GetObjectTorrentRequest>
  2488. void GetObjectTorrentAsync(const GetObjectTorrentRequestT& request, const GetObjectTorrentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2489. {
  2490. return SubmitAsync(&S3Client::GetObjectTorrent, request, handler, context);
  2491. }
  2492. /**
  2493. * <p>Retrieves the <code>PublicAccessBlock</code> configuration for an Amazon S3
  2494. * bucket. To use this operation, you must have the
  2495. * <code>s3:GetBucketPublicAccessBlock</code> permission. For more information
  2496. * about Amazon S3 permissions, see <a
  2497. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
  2498. * Permissions in a Policy</a>.</p> <p>When Amazon S3 evaluates the
  2499. * <code>PublicAccessBlock</code> configuration for a bucket or an object, it
  2500. * checks the <code>PublicAccessBlock</code> configuration for both the bucket (or
  2501. * the bucket that contains the object) and the bucket owner's account. If the
  2502. * <code>PublicAccessBlock</code> settings are different between the bucket and the
  2503. * account, Amazon S3 uses the most restrictive combination of the bucket-level and
  2504. * account-level settings.</p> <p>For more information about when
  2505. * Amazon S3 considers a bucket or an object public, see <a
  2506. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status">The
  2507. * Meaning of "Public"</a>.</p> <p>The following operations are related to
  2508. * <code>GetPublicAccessBlock</code>:</p> <ul> <li> <p> <a
  2509. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html">Using
  2510. * Amazon S3 Block Public Access</a> </p> </li> <li> <p> <a
  2511. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html">PutPublicAccessBlock</a>
  2512. * </p> </li> <li> <p> <a
  2513. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html">GetPublicAccessBlock</a>
  2514. * </p> </li> <li> <p> <a
  2515. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html">DeletePublicAccessBlock</a>
  2516. * </p> </li> </ul><p><h3>See Also:</h3> <a
  2517. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetPublicAccessBlock">AWS
  2518. * API Reference</a></p>
  2519. */
  2520. virtual Model::GetPublicAccessBlockOutcome GetPublicAccessBlock(const Model::GetPublicAccessBlockRequest& request) const;
  2521. /**
  2522. * A Callable wrapper for GetPublicAccessBlock that returns a future to the operation so that it can be executed in parallel to other requests.
  2523. */
  2524. template<typename GetPublicAccessBlockRequestT = Model::GetPublicAccessBlockRequest>
  2525. Model::GetPublicAccessBlockOutcomeCallable GetPublicAccessBlockCallable(const GetPublicAccessBlockRequestT& request) const
  2526. {
  2527. return SubmitCallable(&S3Client::GetPublicAccessBlock, request);
  2528. }
  2529. /**
  2530. * An Async wrapper for GetPublicAccessBlock that queues the request into a thread executor and triggers associated callback when operation has finished.
  2531. */
  2532. template<typename GetPublicAccessBlockRequestT = Model::GetPublicAccessBlockRequest>
  2533. void GetPublicAccessBlockAsync(const GetPublicAccessBlockRequestT& request, const GetPublicAccessBlockResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2534. {
  2535. return SubmitAsync(&S3Client::GetPublicAccessBlock, request, handler, context);
  2536. }
  2537. /**
  2538. * <p>This action is useful to determine if a bucket exists and you have permission
  2539. * to access it. The action returns a <code>200 OK</code> if the bucket exists and
  2540. * you have permission to access it.</p> <p>If the bucket does not exist or you do
  2541. * not have permission to access it, the <code>HEAD</code> request returns a
  2542. * generic <code>404 Not Found</code> or <code>403 Forbidden</code> code. A message
  2543. * body is not included, so you cannot determine the exception beyond these error
  2544. * codes.</p> <p>To use this operation, you must have permissions to perform the
  2545. * <code>s3:ListBucket</code> action. The bucket owner has this permission by
  2546. * default and can grant this permission to others. For more information about
  2547. * permissions, see <a
  2548. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  2549. * Related to Bucket Subresource Operations</a> and <a
  2550. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  2551. * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>To use this API
  2552. * against an access point, you must provide the alias of the access point in place
  2553. * of the bucket name or specify the access point ARN. When using the access point
  2554. * ARN, you must direct requests to the access point hostname. The access point
  2555. * hostname takes the form
  2556. * AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using the
  2557. * Amazon Web Services SDKs, you provide the ARN in place of the bucket name. For
  2558. * more information see, <a
  2559. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html">Using
  2560. * access points</a>.</p><p><h3>See Also:</h3> <a
  2561. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket">AWS API
  2562. * Reference</a></p>
  2563. */
  2564. virtual Model::HeadBucketOutcome HeadBucket(const Model::HeadBucketRequest& request) const;
  2565. /**
  2566. * A Callable wrapper for HeadBucket that returns a future to the operation so that it can be executed in parallel to other requests.
  2567. */
  2568. template<typename HeadBucketRequestT = Model::HeadBucketRequest>
  2569. Model::HeadBucketOutcomeCallable HeadBucketCallable(const HeadBucketRequestT& request) const
  2570. {
  2571. return SubmitCallable(&S3Client::HeadBucket, request);
  2572. }
  2573. /**
  2574. * An Async wrapper for HeadBucket that queues the request into a thread executor and triggers associated callback when operation has finished.
  2575. */
  2576. template<typename HeadBucketRequestT = Model::HeadBucketRequest>
  2577. void HeadBucketAsync(const HeadBucketRequestT& request, const HeadBucketResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2578. {
  2579. return SubmitAsync(&S3Client::HeadBucket, request, handler, context);
  2580. }
  2581. /**
  2582. * <p>The HEAD action retrieves metadata from an object without returning the
  2583. * object itself. This action is useful if you're only interested in an object's
  2584. * metadata. To use HEAD, you must have READ access to the object.</p> <p>A
  2585. * <code>HEAD</code> request has the same options as a <code>GET</code> action on
  2586. * an object. The response is identical to the <code>GET</code> response except
  2587. * that there is no response body. Because of this, if the <code>HEAD</code>
  2588. * request generates an error, it returns a generic <code>404 Not Found</code> or
  2589. * <code>403 Forbidden</code> code. It is not possible to retrieve the exact
  2590. * exception beyond these error codes.</p> <p>If you encrypt an object by using
  2591. * server-side encryption with customer-provided encryption keys (SSE-C) when you
  2592. * store the object in Amazon S3, then when you retrieve the metadata from the
  2593. * object, you must use the following headers:</p> <ul> <li>
  2594. * <p>x-amz-server-side-encryption-customer-algorithm</p> </li> <li>
  2595. * <p>x-amz-server-side-encryption-customer-key</p> </li> <li>
  2596. * <p>x-amz-server-side-encryption-customer-key-MD5</p> </li> </ul> <p>For more
  2597. * information about SSE-C, see <a
  2598. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
  2599. * Encryption (Using Customer-Provided Encryption Keys)</a>.</p> <ul> <li>
  2600. * <p>Encryption request headers, like <code>x-amz-server-side-encryption</code>,
  2601. * should not be sent for GET requests if your object uses server-side encryption
  2602. * with KMS keys (SSE-KMS) or server-side encryption with Amazon S3–managed
  2603. * encryption keys (SSE-S3). If your object does use these types of keys, you’ll
  2604. * get an HTTP 400 BadRequest error.</p> </li> <li> <p> The last modified property
  2605. * in this case is the creation date of the object.</p> </li> </ul>
  2606. * <p>Request headers are limited to 8 KB in size. For more information, see <a
  2607. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html">Common
  2608. * Request Headers</a>.</p> <p>Consider the following when using request
  2609. * headers:</p> <ul> <li> <p> Consideration 1 – If both of the
  2610. * <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present
  2611. * in the request as follows:</p> <ul> <li> <p> <code>If-Match</code> condition
  2612. * evaluates to <code>true</code>, and;</p> </li> <li> <p>
  2613. * <code>If-Unmodified-Since</code> condition evaluates to <code>false</code>;</p>
  2614. * </li> </ul> <p>Then Amazon S3 returns <code>200 OK</code> and the data
  2615. * requested.</p> </li> <li> <p> Consideration 2 – If both of the
  2616. * <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are
  2617. * present in the request as follows:</p> <ul> <li> <p> <code>If-None-Match</code>
  2618. * condition evaluates to <code>false</code>, and;</p> </li> <li> <p>
  2619. * <code>If-Modified-Since</code> condition evaluates to <code>true</code>;</p>
  2620. * </li> </ul> <p>Then Amazon S3 returns the <code>304 Not Modified</code> response
  2621. * code.</p> </li> </ul> <p>For more information about conditional requests, see <a
  2622. * href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p> <p>
  2623. * <b>Permissions</b> </p> <p>You need the relevant read object (or version)
  2624. * permission for this operation. For more information, see <a
  2625. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
  2626. * Permissions in a Policy</a>. If the object you request does not exist, the error
  2627. * Amazon S3 returns depends on whether you also have the s3:ListBucket
  2628. * permission.</p> <ul> <li> <p>If you have the <code>s3:ListBucket</code>
  2629. * permission on the bucket, Amazon S3 returns an HTTP status code 404 ("no such
  2630. * key") error.</p> </li> <li> <p>If you don’t have the <code>s3:ListBucket</code>
  2631. * permission, Amazon S3 returns an HTTP status code 403 ("access denied")
  2632. * error.</p> </li> </ul> <p>The following actions are related to
  2633. * <code>HeadObject</code>:</p> <ul> <li> <p> <a
  2634. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>
  2635. * </p> </li> <li> <p> <a
  2636. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html">GetObjectAttributes</a>
  2637. * </p> </li> </ul><p><h3>See Also:</h3> <a
  2638. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject">AWS API
  2639. * Reference</a></p>
  2640. */
  2641. virtual Model::HeadObjectOutcome HeadObject(const Model::HeadObjectRequest& request) const;
  2642. /**
  2643. * A Callable wrapper for HeadObject that returns a future to the operation so that it can be executed in parallel to other requests.
  2644. */
  2645. template<typename HeadObjectRequestT = Model::HeadObjectRequest>
  2646. Model::HeadObjectOutcomeCallable HeadObjectCallable(const HeadObjectRequestT& request) const
  2647. {
  2648. return SubmitCallable(&S3Client::HeadObject, request);
  2649. }
  2650. /**
  2651. * An Async wrapper for HeadObject that queues the request into a thread executor and triggers associated callback when operation has finished.
  2652. */
  2653. template<typename HeadObjectRequestT = Model::HeadObjectRequest>
  2654. void HeadObjectAsync(const HeadObjectRequestT& request, const HeadObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2655. {
  2656. return SubmitAsync(&S3Client::HeadObject, request, handler, context);
  2657. }
  2658. /**
  2659. * <p>Lists the analytics configurations for the bucket. You can have up to 1,000
  2660. * analytics configurations per bucket.</p> <p>This action supports list pagination
  2661. * and does not return more than 100 configurations at a time. You should always
  2662. * check the <code>IsTruncated</code> element in the response. If there are no more
  2663. * configurations to list, <code>IsTruncated</code> is set to false. If there are
  2664. * more configurations to list, <code>IsTruncated</code> is set to true, and there
  2665. * will be a value in <code>NextContinuationToken</code>. You use the
  2666. * <code>NextContinuationToken</code> value to continue the pagination of the list
  2667. * by passing the value in continuation-token in the request to <code>GET</code>
  2668. * the next page.</p> <p>To use this operation, you must have permissions to
  2669. * perform the <code>s3:GetAnalyticsConfiguration</code> action. The bucket owner
  2670. * has this permission by default. The bucket owner can grant this permission to
  2671. * others. For more information about permissions, see <a
  2672. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  2673. * Related to Bucket Subresource Operations</a> and <a
  2674. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  2675. * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
  2676. * Amazon S3 analytics feature, see <a
  2677. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html">Amazon
  2678. * S3 Analytics – Storage Class Analysis</a>. </p> <p>The following operations are
  2679. * related to <code>ListBucketAnalyticsConfigurations</code>:</p> <ul> <li> <p> <a
  2680. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html">GetBucketAnalyticsConfiguration</a>
  2681. * </p> </li> <li> <p> <a
  2682. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketAnalyticsConfiguration.html">DeleteBucketAnalyticsConfiguration</a>
  2683. * </p> </li> <li> <p> <a
  2684. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html">PutBucketAnalyticsConfiguration</a>
  2685. * </p> </li> </ul><p><h3>See Also:</h3> <a
  2686. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations">AWS
  2687. * API Reference</a></p>
  2688. */
  2689. virtual Model::ListBucketAnalyticsConfigurationsOutcome ListBucketAnalyticsConfigurations(const Model::ListBucketAnalyticsConfigurationsRequest& request) const;
  2690. /**
  2691. * A Callable wrapper for ListBucketAnalyticsConfigurations that returns a future to the operation so that it can be executed in parallel to other requests.
  2692. */
  2693. template<typename ListBucketAnalyticsConfigurationsRequestT = Model::ListBucketAnalyticsConfigurationsRequest>
  2694. Model::ListBucketAnalyticsConfigurationsOutcomeCallable ListBucketAnalyticsConfigurationsCallable(const ListBucketAnalyticsConfigurationsRequestT& request) const
  2695. {
  2696. return SubmitCallable(&S3Client::ListBucketAnalyticsConfigurations, request);
  2697. }
  2698. /**
  2699. * An Async wrapper for ListBucketAnalyticsConfigurations that queues the request into a thread executor and triggers associated callback when operation has finished.
  2700. */
  2701. template<typename ListBucketAnalyticsConfigurationsRequestT = Model::ListBucketAnalyticsConfigurationsRequest>
  2702. void ListBucketAnalyticsConfigurationsAsync(const ListBucketAnalyticsConfigurationsRequestT& request, const ListBucketAnalyticsConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2703. {
  2704. return SubmitAsync(&S3Client::ListBucketAnalyticsConfigurations, request, handler, context);
  2705. }
  2706. /**
  2707. * <p>Lists the S3 Intelligent-Tiering configuration from the specified bucket.</p>
  2708. * <p>The S3 Intelligent-Tiering storage class is designed to optimize storage
  2709. * costs by automatically moving data to the most cost-effective storage access
  2710. * tier, without performance impact or operational overhead. S3 Intelligent-Tiering
  2711. * delivers automatic cost savings in three low latency and high throughput access
  2712. * tiers. To get the lowest storage cost on data that can be accessed in minutes to
  2713. * hours, you can choose to activate additional archiving capabilities.</p> <p>The
  2714. * S3 Intelligent-Tiering storage class is the ideal storage class for data with
  2715. * unknown, changing, or unpredictable access patterns, independent of object size
  2716. * or retention period. If the size of an object is less than 128 KB, it is not
  2717. * monitored and not eligible for auto-tiering. Smaller objects can be stored, but
  2718. * they are always charged at the Frequent Access tier rates in the S3
  2719. * Intelligent-Tiering storage class.</p> <p>For more information, see <a
  2720. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access">Storage
  2721. * class for automatically optimizing frequently and infrequently accessed
  2722. * objects</a>.</p> <p>Operations related to
  2723. * <code>ListBucketIntelligentTieringConfigurations</code> include: </p> <ul> <li>
  2724. * <p> <a
  2725. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html">DeleteBucketIntelligentTieringConfiguration</a>
  2726. * </p> </li> <li> <p> <a
  2727. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html">PutBucketIntelligentTieringConfiguration</a>
  2728. * </p> </li> <li> <p> <a
  2729. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html">GetBucketIntelligentTieringConfiguration</a>
  2730. * </p> </li> </ul><p><h3>See Also:</h3> <a
  2731. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketIntelligentTieringConfigurations">AWS
  2732. * API Reference</a></p>
  2733. */
  2734. virtual Model::ListBucketIntelligentTieringConfigurationsOutcome ListBucketIntelligentTieringConfigurations(const Model::ListBucketIntelligentTieringConfigurationsRequest& request) const;
  2735. /**
  2736. * A Callable wrapper for ListBucketIntelligentTieringConfigurations that returns a future to the operation so that it can be executed in parallel to other requests.
  2737. */
  2738. template<typename ListBucketIntelligentTieringConfigurationsRequestT = Model::ListBucketIntelligentTieringConfigurationsRequest>
  2739. Model::ListBucketIntelligentTieringConfigurationsOutcomeCallable ListBucketIntelligentTieringConfigurationsCallable(const ListBucketIntelligentTieringConfigurationsRequestT& request) const
  2740. {
  2741. return SubmitCallable(&S3Client::ListBucketIntelligentTieringConfigurations, request);
  2742. }
  2743. /**
  2744. * An Async wrapper for ListBucketIntelligentTieringConfigurations that queues the request into a thread executor and triggers associated callback when operation has finished.
  2745. */
  2746. template<typename ListBucketIntelligentTieringConfigurationsRequestT = Model::ListBucketIntelligentTieringConfigurationsRequest>
  2747. void ListBucketIntelligentTieringConfigurationsAsync(const ListBucketIntelligentTieringConfigurationsRequestT& request, const ListBucketIntelligentTieringConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2748. {
  2749. return SubmitAsync(&S3Client::ListBucketIntelligentTieringConfigurations, request, handler, context);
  2750. }
  2751. /**
  2752. * <p>Returns a list of inventory configurations for the bucket. You can have up to
  2753. * 1,000 analytics configurations per bucket.</p> <p>This action supports list
  2754. * pagination and does not return more than 100 configurations at a time. Always
  2755. * check the <code>IsTruncated</code> element in the response. If there are no more
  2756. * configurations to list, <code>IsTruncated</code> is set to false. If there are
  2757. * more configurations to list, <code>IsTruncated</code> is set to true, and there
  2758. * is a value in <code>NextContinuationToken</code>. You use the
  2759. * <code>NextContinuationToken</code> value to continue the pagination of the list
  2760. * by passing the value in continuation-token in the request to <code>GET</code>
  2761. * the next page.</p> <p> To use this operation, you must have permissions to
  2762. * perform the <code>s3:GetInventoryConfiguration</code> action. The bucket owner
  2763. * has this permission by default. The bucket owner can grant this permission to
  2764. * others. For more information about permissions, see <a
  2765. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  2766. * Related to Bucket Subresource Operations</a> and <a
  2767. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  2768. * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
  2769. * the Amazon S3 inventory feature, see <a
  2770. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html">Amazon
  2771. * S3 Inventory</a> </p> <p>The following operations are related to
  2772. * <code>ListBucketInventoryConfigurations</code>:</p> <ul> <li> <p> <a
  2773. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html">GetBucketInventoryConfiguration</a>
  2774. * </p> </li> <li> <p> <a
  2775. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html">DeleteBucketInventoryConfiguration</a>
  2776. * </p> </li> <li> <p> <a
  2777. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html">PutBucketInventoryConfiguration</a>
  2778. * </p> </li> </ul><p><h3>See Also:</h3> <a
  2779. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations">AWS
  2780. * API Reference</a></p>
  2781. */
  2782. virtual Model::ListBucketInventoryConfigurationsOutcome ListBucketInventoryConfigurations(const Model::ListBucketInventoryConfigurationsRequest& request) const;
  2783. /**
  2784. * A Callable wrapper for ListBucketInventoryConfigurations that returns a future to the operation so that it can be executed in parallel to other requests.
  2785. */
  2786. template<typename ListBucketInventoryConfigurationsRequestT = Model::ListBucketInventoryConfigurationsRequest>
  2787. Model::ListBucketInventoryConfigurationsOutcomeCallable ListBucketInventoryConfigurationsCallable(const ListBucketInventoryConfigurationsRequestT& request) const
  2788. {
  2789. return SubmitCallable(&S3Client::ListBucketInventoryConfigurations, request);
  2790. }
  2791. /**
  2792. * An Async wrapper for ListBucketInventoryConfigurations that queues the request into a thread executor and triggers associated callback when operation has finished.
  2793. */
  2794. template<typename ListBucketInventoryConfigurationsRequestT = Model::ListBucketInventoryConfigurationsRequest>
  2795. void ListBucketInventoryConfigurationsAsync(const ListBucketInventoryConfigurationsRequestT& request, const ListBucketInventoryConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2796. {
  2797. return SubmitAsync(&S3Client::ListBucketInventoryConfigurations, request, handler, context);
  2798. }
  2799. /**
  2800. * <p>Lists the metrics configurations for the bucket. The metrics configurations
  2801. * are only for the request metrics of the bucket and do not provide information on
  2802. * daily storage metrics. You can have up to 1,000 configurations per bucket.</p>
  2803. * <p>This action supports list pagination and does not return more than 100
  2804. * configurations at a time. Always check the <code>IsTruncated</code> element in
  2805. * the response. If there are no more configurations to list,
  2806. * <code>IsTruncated</code> is set to false. If there are more configurations to
  2807. * list, <code>IsTruncated</code> is set to true, and there is a value in
  2808. * <code>NextContinuationToken</code>. You use the
  2809. * <code>NextContinuationToken</code> value to continue the pagination of the list
  2810. * by passing the value in <code>continuation-token</code> in the request to
  2811. * <code>GET</code> the next page.</p> <p>To use this operation, you must have
  2812. * permissions to perform the <code>s3:GetMetricsConfiguration</code> action. The
  2813. * bucket owner has this permission by default. The bucket owner can grant this
  2814. * permission to others. For more information about permissions, see <a
  2815. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  2816. * Related to Bucket Subresource Operations</a> and <a
  2817. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  2818. * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For more information
  2819. * about metrics configurations and CloudWatch request metrics, see <a
  2820. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
  2821. * Metrics with Amazon CloudWatch</a>.</p> <p>The following operations are related
  2822. * to <code>ListBucketMetricsConfigurations</code>:</p> <ul> <li> <p> <a
  2823. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html">PutBucketMetricsConfiguration</a>
  2824. * </p> </li> <li> <p> <a
  2825. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html">GetBucketMetricsConfiguration</a>
  2826. * </p> </li> <li> <p> <a
  2827. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetricsConfiguration.html">DeleteBucketMetricsConfiguration</a>
  2828. * </p> </li> </ul><p><h3>See Also:</h3> <a
  2829. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations">AWS
  2830. * API Reference</a></p>
  2831. */
  2832. virtual Model::ListBucketMetricsConfigurationsOutcome ListBucketMetricsConfigurations(const Model::ListBucketMetricsConfigurationsRequest& request) const;
  2833. /**
  2834. * A Callable wrapper for ListBucketMetricsConfigurations that returns a future to the operation so that it can be executed in parallel to other requests.
  2835. */
  2836. template<typename ListBucketMetricsConfigurationsRequestT = Model::ListBucketMetricsConfigurationsRequest>
  2837. Model::ListBucketMetricsConfigurationsOutcomeCallable ListBucketMetricsConfigurationsCallable(const ListBucketMetricsConfigurationsRequestT& request) const
  2838. {
  2839. return SubmitCallable(&S3Client::ListBucketMetricsConfigurations, request);
  2840. }
  2841. /**
  2842. * An Async wrapper for ListBucketMetricsConfigurations that queues the request into a thread executor and triggers associated callback when operation has finished.
  2843. */
  2844. template<typename ListBucketMetricsConfigurationsRequestT = Model::ListBucketMetricsConfigurationsRequest>
  2845. void ListBucketMetricsConfigurationsAsync(const ListBucketMetricsConfigurationsRequestT& request, const ListBucketMetricsConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2846. {
  2847. return SubmitAsync(&S3Client::ListBucketMetricsConfigurations, request, handler, context);
  2848. }
  2849. /**
  2850. * <p>Returns a list of all buckets owned by the authenticated sender of the
  2851. * request. To use this operation, you must have the
  2852. * <code>s3:ListAllMyBuckets</code> permission.</p><p><h3>See Also:</h3> <a
  2853. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets">AWS API
  2854. * Reference</a></p>
  2855. */
  2856. virtual Model::ListBucketsOutcome ListBuckets() const;
  2857. /**
  2858. * A Callable wrapper for ListBuckets that returns a future to the operation so that it can be executed in parallel to other requests.
  2859. */
  2860. template<typename = void>
  2861. Model::ListBucketsOutcomeCallable ListBucketsCallable() const
  2862. {
  2863. return SubmitCallable(&S3Client::ListBuckets);
  2864. }
  2865. /**
  2866. * An Async wrapper for ListBuckets that queues the request into a thread executor and triggers associated callback when operation has finished.
  2867. */
  2868. template<typename = void>
  2869. void ListBucketsAsync(const ListBucketsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2870. {
  2871. return SubmitAsync(&S3Client::ListBuckets, handler, context);
  2872. }
  2873. /**
  2874. * <p>This action lists in-progress multipart uploads. An in-progress multipart
  2875. * upload is a multipart upload that has been initiated using the Initiate
  2876. * Multipart Upload request, but has not yet been completed or aborted.</p> <p>This
  2877. * action returns at most 1,000 multipart uploads in the response. 1,000 multipart
  2878. * uploads is the maximum number of uploads a response can include, which is also
  2879. * the default value. You can further limit the number of uploads in a response by
  2880. * specifying the <code>max-uploads</code> parameter in the response. If additional
  2881. * multipart uploads satisfy the list criteria, the response will contain an
  2882. * <code>IsTruncated</code> element with the value true. To list the additional
  2883. * multipart uploads, use the <code>key-marker</code> and
  2884. * <code>upload-id-marker</code> request parameters.</p> <p>In the response, the
  2885. * uploads are sorted by key. If your application has initiated more than one
  2886. * multipart upload using the same object key, then uploads in the response are
  2887. * first sorted by key. Additionally, uploads are sorted in ascending order within
  2888. * each key by the upload initiation time.</p> <p>For more information on multipart
  2889. * uploads, see <a
  2890. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html">Uploading
  2891. * Objects Using Multipart Upload</a>.</p> <p>For information on permissions
  2892. * required to use the multipart upload API, see <a
  2893. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
  2894. * Upload and Permissions</a>.</p> <p>The following operations are related to
  2895. * <code>ListMultipartUploads</code>:</p> <ul> <li> <p> <a
  2896. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html">CreateMultipartUpload</a>
  2897. * </p> </li> <li> <p> <a
  2898. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html">UploadPart</a>
  2899. * </p> </li> <li> <p> <a
  2900. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html">CompleteMultipartUpload</a>
  2901. * </p> </li> <li> <p> <a
  2902. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html">ListParts</a>
  2903. * </p> </li> <li> <p> <a
  2904. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html">AbortMultipartUpload</a>
  2905. * </p> </li> </ul><p><h3>See Also:</h3> <a
  2906. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads">AWS
  2907. * API Reference</a></p>
  2908. */
  2909. virtual Model::ListMultipartUploadsOutcome ListMultipartUploads(const Model::ListMultipartUploadsRequest& request) const;
  2910. /**
  2911. * A Callable wrapper for ListMultipartUploads that returns a future to the operation so that it can be executed in parallel to other requests.
  2912. */
  2913. template<typename ListMultipartUploadsRequestT = Model::ListMultipartUploadsRequest>
  2914. Model::ListMultipartUploadsOutcomeCallable ListMultipartUploadsCallable(const ListMultipartUploadsRequestT& request) const
  2915. {
  2916. return SubmitCallable(&S3Client::ListMultipartUploads, request);
  2917. }
  2918. /**
  2919. * An Async wrapper for ListMultipartUploads that queues the request into a thread executor and triggers associated callback when operation has finished.
  2920. */
  2921. template<typename ListMultipartUploadsRequestT = Model::ListMultipartUploadsRequest>
  2922. void ListMultipartUploadsAsync(const ListMultipartUploadsRequestT& request, const ListMultipartUploadsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2923. {
  2924. return SubmitAsync(&S3Client::ListMultipartUploads, request, handler, context);
  2925. }
  2926. /**
  2927. * <p>Returns metadata about all versions of the objects in a bucket. You can also
  2928. * use request parameters as selection criteria to return metadata about a subset
  2929. * of all the object versions.</p> <p> To use this operation, you must
  2930. * have permissions to perform the <code>s3:ListBucketVersions</code> action. Be
  2931. * aware of the name difference. </p> <p> A 200 OK response can
  2932. * contain valid or invalid XML. Make sure to design your application to parse the
  2933. * contents of the response and handle it appropriately.</p> <p>To use this
  2934. * operation, you must have READ access to the bucket.</p> <p>This action is not
  2935. * supported by Amazon S3 on Outposts.</p> <p>The following operations are related
  2936. * to <code>ListObjectVersions</code>:</p> <ul> <li> <p> <a
  2937. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html">ListObjectsV2</a>
  2938. * </p> </li> <li> <p> <a
  2939. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>
  2940. * </p> </li> <li> <p> <a
  2941. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html">PutObject</a>
  2942. * </p> </li> <li> <p> <a
  2943. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html">DeleteObject</a>
  2944. * </p> </li> </ul><p><h3>See Also:</h3> <a
  2945. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions">AWS
  2946. * API Reference</a></p>
  2947. */
  2948. virtual Model::ListObjectVersionsOutcome ListObjectVersions(const Model::ListObjectVersionsRequest& request) const;
  2949. /**
  2950. * A Callable wrapper for ListObjectVersions that returns a future to the operation so that it can be executed in parallel to other requests.
  2951. */
  2952. template<typename ListObjectVersionsRequestT = Model::ListObjectVersionsRequest>
  2953. Model::ListObjectVersionsOutcomeCallable ListObjectVersionsCallable(const ListObjectVersionsRequestT& request) const
  2954. {
  2955. return SubmitCallable(&S3Client::ListObjectVersions, request);
  2956. }
  2957. /**
  2958. * An Async wrapper for ListObjectVersions that queues the request into a thread executor and triggers associated callback when operation has finished.
  2959. */
  2960. template<typename ListObjectVersionsRequestT = Model::ListObjectVersionsRequest>
  2961. void ListObjectVersionsAsync(const ListObjectVersionsRequestT& request, const ListObjectVersionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  2962. {
  2963. return SubmitAsync(&S3Client::ListObjectVersions, request, handler, context);
  2964. }
  2965. /**
  2966. * <p>Returns some or all (up to 1,000) of the objects in a bucket. You can use the
  2967. * request parameters as selection criteria to return a subset of the objects in a
  2968. * bucket. A 200 OK response can contain valid or invalid XML. Be sure to design
  2969. * your application to parse the contents of the response and handle it
  2970. * appropriately.</p> <p>This action has been revised. We recommend
  2971. * that you use the newer version, <a
  2972. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html">ListObjectsV2</a>,
  2973. * when developing applications. For backward compatibility, Amazon S3 continues to
  2974. * support <code>ListObjects</code>.</p> <p>The following operations
  2975. * are related to <code>ListObjects</code>:</p> <ul> <li> <p> <a
  2976. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html">ListObjectsV2</a>
  2977. * </p> </li> <li> <p> <a
  2978. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>
  2979. * </p> </li> <li> <p> <a
  2980. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html">PutObject</a>
  2981. * </p> </li> <li> <p> <a
  2982. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html">CreateBucket</a>
  2983. * </p> </li> <li> <p> <a
  2984. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html">ListBuckets</a>
  2985. * </p> </li> </ul><p><h3>See Also:</h3> <a
  2986. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects">AWS API
  2987. * Reference</a></p>
  2988. */
  2989. virtual Model::ListObjectsOutcome ListObjects(const Model::ListObjectsRequest& request) const;
  2990. /**
  2991. * A Callable wrapper for ListObjects that returns a future to the operation so that it can be executed in parallel to other requests.
  2992. */
  2993. template<typename ListObjectsRequestT = Model::ListObjectsRequest>
  2994. Model::ListObjectsOutcomeCallable ListObjectsCallable(const ListObjectsRequestT& request) const
  2995. {
  2996. return SubmitCallable(&S3Client::ListObjects, request);
  2997. }
  2998. /**
  2999. * An Async wrapper for ListObjects that queues the request into a thread executor and triggers associated callback when operation has finished.
  3000. */
  3001. template<typename ListObjectsRequestT = Model::ListObjectsRequest>
  3002. void ListObjectsAsync(const ListObjectsRequestT& request, const ListObjectsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  3003. {
  3004. return SubmitAsync(&S3Client::ListObjects, request, handler, context);
  3005. }
  3006. /**
  3007. * <p>Returns some or all (up to 1,000) of the objects in a bucket with each
  3008. * request. You can use the request parameters as selection criteria to return a
  3009. * subset of the objects in a bucket. A <code>200 OK</code> response can contain
  3010. * valid or invalid XML. Make sure to design your application to parse the contents
  3011. * of the response and handle it appropriately. Objects are returned sorted in an
  3012. * ascending order of the respective key names in the list. For more information
  3013. * about listing objects, see <a
  3014. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/ListingKeysUsingAPIs.html">Listing
  3015. * object keys programmatically</a> </p> <p>To use this operation, you must have
  3016. * READ access to the bucket.</p> <p>To use this action in an Identity and Access
  3017. * Management (IAM) policy, you must have permissions to perform the
  3018. * <code>s3:ListBucket</code> action. The bucket owner has this permission by
  3019. * default and can grant this permission to others. For more information about
  3020. * permissions, see <a
  3021. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  3022. * Related to Bucket Subresource Operations</a> and <a
  3023. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  3024. * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>This
  3025. * section describes the latest revision of this action. We recommend that you use
  3026. * this revised API for application development. For backward compatibility, Amazon
  3027. * S3 continues to support the prior version of this API, <a
  3028. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html">ListObjects</a>.</p>
  3029. * <p>To get a list of your buckets, see <a
  3030. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html">ListBuckets</a>.</p>
  3031. * <p>The following operations are related to <code>ListObjectsV2</code>:</p> <ul>
  3032. * <li> <p> <a
  3033. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>
  3034. * </p> </li> <li> <p> <a
  3035. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html">PutObject</a>
  3036. * </p> </li> <li> <p> <a
  3037. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html">CreateBucket</a>
  3038. * </p> </li> </ul><p><h3>See Also:</h3> <a
  3039. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2">AWS
  3040. * API Reference</a></p>
  3041. */
  3042. virtual Model::ListObjectsV2Outcome ListObjectsV2(const Model::ListObjectsV2Request& request) const;
  3043. /**
  3044. * A Callable wrapper for ListObjectsV2 that returns a future to the operation so that it can be executed in parallel to other requests.
  3045. */
  3046. template<typename ListObjectsV2RequestT = Model::ListObjectsV2Request>
  3047. Model::ListObjectsV2OutcomeCallable ListObjectsV2Callable(const ListObjectsV2RequestT& request) const
  3048. {
  3049. return SubmitCallable(&S3Client::ListObjectsV2, request);
  3050. }
  3051. /**
  3052. * An Async wrapper for ListObjectsV2 that queues the request into a thread executor and triggers associated callback when operation has finished.
  3053. */
  3054. template<typename ListObjectsV2RequestT = Model::ListObjectsV2Request>
  3055. void ListObjectsV2Async(const ListObjectsV2RequestT& request, const ListObjectsV2ResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  3056. {
  3057. return SubmitAsync(&S3Client::ListObjectsV2, request, handler, context);
  3058. }
  3059. /**
  3060. * <p>Lists the parts that have been uploaded for a specific multipart upload. This
  3061. * operation must include the upload ID, which you obtain by sending the initiate
  3062. * multipart upload request (see <a
  3063. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html">CreateMultipartUpload</a>).
  3064. * This request returns a maximum of 1,000 uploaded parts. The default number of
  3065. * parts returned is 1,000 parts. You can restrict the number of parts returned by
  3066. * specifying the <code>max-parts</code> request parameter. If your multipart
  3067. * upload consists of more than 1,000 parts, the response returns an
  3068. * <code>IsTruncated</code> field with the value of true, and a
  3069. * <code>NextPartNumberMarker</code> element. In subsequent <code>ListParts</code>
  3070. * requests you can include the part-number-marker query string parameter and set
  3071. * its value to the <code>NextPartNumberMarker</code> field value from the previous
  3072. * response.</p> <p>If the upload was created using a checksum algorithm, you will
  3073. * need to have permission to the <code>kms:Decrypt</code> action for the request
  3074. * to succeed. </p> <p>For more information on multipart uploads, see <a
  3075. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html">Uploading
  3076. * Objects Using Multipart Upload</a>.</p> <p>For information on permissions
  3077. * required to use the multipart upload API, see <a
  3078. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
  3079. * Upload and Permissions</a>.</p> <p>The following operations are related to
  3080. * <code>ListParts</code>:</p> <ul> <li> <p> <a
  3081. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html">CreateMultipartUpload</a>
  3082. * </p> </li> <li> <p> <a
  3083. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html">UploadPart</a>
  3084. * </p> </li> <li> <p> <a
  3085. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html">CompleteMultipartUpload</a>
  3086. * </p> </li> <li> <p> <a
  3087. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html">AbortMultipartUpload</a>
  3088. * </p> </li> <li> <p> <a
  3089. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html">GetObjectAttributes</a>
  3090. * </p> </li> <li> <p> <a
  3091. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html">ListMultipartUploads</a>
  3092. * </p> </li> </ul><p><h3>See Also:</h3> <a
  3093. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts">AWS API
  3094. * Reference</a></p>
  3095. */
  3096. virtual Model::ListPartsOutcome ListParts(const Model::ListPartsRequest& request) const;
  3097. /**
  3098. * A Callable wrapper for ListParts that returns a future to the operation so that it can be executed in parallel to other requests.
  3099. */
  3100. template<typename ListPartsRequestT = Model::ListPartsRequest>
  3101. Model::ListPartsOutcomeCallable ListPartsCallable(const ListPartsRequestT& request) const
  3102. {
  3103. return SubmitCallable(&S3Client::ListParts, request);
  3104. }
  3105. /**
  3106. * An Async wrapper for ListParts that queues the request into a thread executor and triggers associated callback when operation has finished.
  3107. */
  3108. template<typename ListPartsRequestT = Model::ListPartsRequest>
  3109. void ListPartsAsync(const ListPartsRequestT& request, const ListPartsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  3110. {
  3111. return SubmitAsync(&S3Client::ListParts, request, handler, context);
  3112. }
  3113. /**
  3114. * <p>Sets the accelerate configuration of an existing bucket. Amazon S3 Transfer
  3115. * Acceleration is a bucket-level feature that enables you to perform faster data
  3116. * transfers to Amazon S3.</p> <p> To use this operation, you must have permission
  3117. * to perform the <code>s3:PutAccelerateConfiguration</code> action. The bucket
  3118. * owner has this permission by default. The bucket owner can grant this permission
  3119. * to others. For more information about permissions, see <a
  3120. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  3121. * Related to Bucket Subresource Operations</a> and <a
  3122. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  3123. * Access Permissions to Your Amazon S3 Resources</a>.</p> <p> The Transfer
  3124. * Acceleration state of a bucket can be set to one of the following two
  3125. * values:</p> <ul> <li> <p> Enabled – Enables accelerated data transfers to the
  3126. * bucket.</p> </li> <li> <p> Suspended – Disables accelerated data transfers to
  3127. * the bucket.</p> </li> </ul> <p>The <a
  3128. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAccelerateConfiguration.html">GetBucketAccelerateConfiguration</a>
  3129. * action returns the transfer acceleration state of a bucket.</p> <p>After setting
  3130. * the Transfer Acceleration state of a bucket to Enabled, it might take up to
  3131. * thirty minutes before the data transfer rates to the bucket increase.</p> <p>
  3132. * The name of the bucket used for Transfer Acceleration must be DNS-compliant and
  3133. * must not contain periods (".").</p> <p> For more information about transfer
  3134. * acceleration, see <a
  3135. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html">Transfer
  3136. * Acceleration</a>.</p> <p>The following operations are related to
  3137. * <code>PutBucketAccelerateConfiguration</code>:</p> <ul> <li> <p> <a
  3138. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAccelerateConfiguration.html">GetBucketAccelerateConfiguration</a>
  3139. * </p> </li> <li> <p> <a
  3140. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html">CreateBucket</a>
  3141. * </p> </li> </ul><p><h3>See Also:</h3> <a
  3142. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration">AWS
  3143. * API Reference</a></p>
  3144. */
  3145. virtual Model::PutBucketAccelerateConfigurationOutcome PutBucketAccelerateConfiguration(const Model::PutBucketAccelerateConfigurationRequest& request) const;
  3146. /**
  3147. * A Callable wrapper for PutBucketAccelerateConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  3148. */
  3149. template<typename PutBucketAccelerateConfigurationRequestT = Model::PutBucketAccelerateConfigurationRequest>
  3150. Model::PutBucketAccelerateConfigurationOutcomeCallable PutBucketAccelerateConfigurationCallable(const PutBucketAccelerateConfigurationRequestT& request) const
  3151. {
  3152. return SubmitCallable(&S3Client::PutBucketAccelerateConfiguration, request);
  3153. }
  3154. /**
  3155. * An Async wrapper for PutBucketAccelerateConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  3156. */
  3157. template<typename PutBucketAccelerateConfigurationRequestT = Model::PutBucketAccelerateConfigurationRequest>
  3158. void PutBucketAccelerateConfigurationAsync(const PutBucketAccelerateConfigurationRequestT& request, const PutBucketAccelerateConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  3159. {
  3160. return SubmitAsync(&S3Client::PutBucketAccelerateConfiguration, request, handler, context);
  3161. }
  3162. /**
  3163. * <p>Sets the permissions on an existing bucket using access control lists (ACL).
  3164. * For more information, see <a
  3165. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using
  3166. * ACLs</a>. To set the ACL of a bucket, you must have <code>WRITE_ACP</code>
  3167. * permission.</p> <p>You can use one of the following two ways to set a bucket's
  3168. * permissions:</p> <ul> <li> <p>Specify the ACL in the request body</p> </li> <li>
  3169. * <p>Specify permissions using request headers</p> </li> </ul> <p>You
  3170. * cannot specify access permission using both the body and the request
  3171. * headers.</p> <p>Depending on your application needs, you may choose to
  3172. * set the ACL on a bucket using either the request body or the headers. For
  3173. * example, if you have an existing application that updates a bucket ACL using the
  3174. * request body, then you can continue to use that approach.</p> <p>If
  3175. * your bucket uses the bucket owner enforced setting for S3 Object Ownership, ACLs
  3176. * are disabled and no longer affect permissions. You must use policies to grant
  3177. * access to your bucket and the objects in it. Requests to set ACLs or update ACLs
  3178. * fail and return the <code>AccessControlListNotSupported</code> error code.
  3179. * Requests to read ACLs are still supported. For more information, see <a
  3180. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html">Controlling
  3181. * object ownership</a> in the <i>Amazon S3 User Guide</i>.</p> <p>
  3182. * <b>Access Permissions</b> </p> <p>You can set access permissions using one of
  3183. * the following methods:</p> <ul> <li> <p>Specify a canned ACL with the
  3184. * <code>x-amz-acl</code> request header. Amazon S3 supports a set of predefined
  3185. * ACLs, known as <i>canned ACLs</i>. Each canned ACL has a predefined set of
  3186. * grantees and permissions. Specify the canned ACL name as the value of
  3187. * <code>x-amz-acl</code>. If you use this header, you cannot use other access
  3188. * control-specific headers in your request. For more information, see <a
  3189. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
  3190. * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly with the
  3191. * <code>x-amz-grant-read</code>, <code>x-amz-grant-read-acp</code>,
  3192. * <code>x-amz-grant-write-acp</code>, and <code>x-amz-grant-full-control</code>
  3193. * headers. When using these headers, you specify explicit access permissions and
  3194. * grantees (Amazon Web Services accounts or Amazon S3 groups) who will receive the
  3195. * permission. If you use these ACL-specific headers, you cannot use the
  3196. * <code>x-amz-acl</code> header to set a canned ACL. These parameters map to the
  3197. * set of permissions that Amazon S3 supports in an ACL. For more information, see
  3198. * <a
  3199. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
  3200. * Control List (ACL) Overview</a>.</p> <p>You specify each grantee as a type=value
  3201. * pair, where the type is one of the following:</p> <ul> <li> <p> <code>id</code>
  3202. * – if the value specified is the canonical user ID of an Amazon Web Services
  3203. * account</p> </li> <li> <p> <code>uri</code> – if you are granting permissions to
  3204. * a predefined group</p> </li> <li> <p> <code>emailAddress</code> – if the value
  3205. * specified is the email address of an Amazon Web Services account</p>
  3206. * <p>Using email addresses to specify a grantee is only supported in the following
  3207. * Amazon Web Services Regions: </p> <ul> <li> <p>US East (N. Virginia)</p> </li>
  3208. * <li> <p>US West (N. California)</p> </li> <li> <p> US West (Oregon)</p> </li>
  3209. * <li> <p> Asia Pacific (Singapore)</p> </li> <li> <p>Asia Pacific (Sydney)</p>
  3210. * </li> <li> <p>Asia Pacific (Tokyo)</p> </li> <li> <p>Europe (Ireland)</p> </li>
  3211. * <li> <p>South America (São Paulo)</p> </li> </ul> <p>For a list of all the
  3212. * Amazon S3 supported Regions and endpoints, see <a
  3213. * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
  3214. * and Endpoints</a> in the Amazon Web Services General Reference.</p>
  3215. * </li> </ul> <p>For example, the following <code>x-amz-grant-write</code> header
  3216. * grants create, overwrite, and delete objects permission to LogDelivery group
  3217. * predefined by Amazon S3 and two Amazon Web Services accounts identified by their
  3218. * email addresses.</p> <p> <code>x-amz-grant-write:
  3219. * uri="http://acs.amazonaws.com/groups/s3/LogDelivery", id="111122223333",
  3220. * id="555566667777" </code> </p> </li> </ul> <p>You can use either a canned ACL or
  3221. * specify access permissions explicitly. You cannot do both.</p> <p> <b>Grantee
  3222. * Values</b> </p> <p>You can specify the person (grantee) to whom you're assigning
  3223. * access rights (using request elements) in the following ways:</p> <ul> <li>
  3224. * <p>By the person's ID:</p> <p> <code>&lt;Grantee
  3225. * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3226. * 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;
  3227. * &lt;/Grantee&gt;</code> </p> <p>DisplayName is optional and ignored in the
  3228. * request</p> </li> <li> <p>By URI:</p> <p> <code>&lt;Grantee
  3229. * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3230. * 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>
  3231. * </p> </li> <li> <p>By Email address:</p> <p> <code>&lt;Grantee
  3232. * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3233. * xsi:type="AmazonCustomerByEmail"&gt;&lt;EmailAddress&gt;&lt;&gt;Grantees@email.com&lt;&gt;&lt;/EmailAddress&gt;lt;/Grantee&gt;</code>
  3234. * </p> <p>The grantee is resolved to the CanonicalUser and, in a response to a GET
  3235. * Object acl request, appears as the CanonicalUser. </p> <p>Using email
  3236. * addresses to specify a grantee is only supported in the following Amazon Web
  3237. * Services Regions: </p> <ul> <li> <p>US East (N. Virginia)</p> </li> <li> <p>US
  3238. * West (N. California)</p> </li> <li> <p> US West (Oregon)</p> </li> <li> <p> Asia
  3239. * Pacific (Singapore)</p> </li> <li> <p>Asia Pacific (Sydney)</p> </li> <li>
  3240. * <p>Asia Pacific (Tokyo)</p> </li> <li> <p>Europe (Ireland)</p> </li> <li>
  3241. * <p>South America (São Paulo)</p> </li> </ul> <p>For a list of all the Amazon S3
  3242. * supported Regions and endpoints, see <a
  3243. * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
  3244. * and Endpoints</a> in the Amazon Web Services General Reference.</p>
  3245. * </li> </ul> <p class="title"> <b>Related Resources</b> </p> <ul> <li> <p> <a
  3246. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html">CreateBucket</a>
  3247. * </p> </li> <li> <p> <a
  3248. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html">DeleteBucket</a>
  3249. * </p> </li> <li> <p> <a
  3250. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html">GetObjectAcl</a>
  3251. * </p> </li> </ul><p><h3>See Also:</h3> <a
  3252. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl">AWS API
  3253. * Reference</a></p>
  3254. */
  3255. virtual Model::PutBucketAclOutcome PutBucketAcl(const Model::PutBucketAclRequest& request) const;
  3256. /**
  3257. * A Callable wrapper for PutBucketAcl that returns a future to the operation so that it can be executed in parallel to other requests.
  3258. */
  3259. template<typename PutBucketAclRequestT = Model::PutBucketAclRequest>
  3260. Model::PutBucketAclOutcomeCallable PutBucketAclCallable(const PutBucketAclRequestT& request) const
  3261. {
  3262. return SubmitCallable(&S3Client::PutBucketAcl, request);
  3263. }
  3264. /**
  3265. * An Async wrapper for PutBucketAcl that queues the request into a thread executor and triggers associated callback when operation has finished.
  3266. */
  3267. template<typename PutBucketAclRequestT = Model::PutBucketAclRequest>
  3268. void PutBucketAclAsync(const PutBucketAclRequestT& request, const PutBucketAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  3269. {
  3270. return SubmitAsync(&S3Client::PutBucketAcl, request, handler, context);
  3271. }
  3272. /**
  3273. * <p>Sets an analytics configuration for the bucket (specified by the analytics
  3274. * configuration ID). You can have up to 1,000 analytics configurations per
  3275. * bucket.</p> <p>You can choose to have storage class analysis export analysis
  3276. * reports sent to a comma-separated values (CSV) flat file. See the
  3277. * <code>DataExport</code> request element. Reports are updated daily and are based
  3278. * on the object filters that you configure. When selecting data export, you
  3279. * specify a destination bucket and an optional destination prefix where the file
  3280. * is written. You can export the data to a destination bucket in a different
  3281. * account. However, the destination bucket must be in the same Region as the
  3282. * bucket that you are making the PUT analytics configuration to. For more
  3283. * information, see <a
  3284. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html">Amazon
  3285. * S3 Analytics – Storage Class Analysis</a>. </p> <p>You must create a
  3286. * bucket policy on the destination bucket where the exported file is written to
  3287. * grant permissions to Amazon S3 to write objects to the bucket. For an example
  3288. * policy, see <a
  3289. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9">Granting
  3290. * Permissions for Amazon S3 Inventory and Storage Class Analysis</a>.</p>
  3291. * <p>To use this operation, you must have permissions to perform the
  3292. * <code>s3:PutAnalyticsConfiguration</code> action. The bucket owner has this
  3293. * permission by default. The bucket owner can grant this permission to others. For
  3294. * more information about permissions, see <a
  3295. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  3296. * Related to Bucket Subresource Operations</a> and <a
  3297. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  3298. * Access Permissions to Your Amazon S3 Resources</a>.</p> <p class="title">
  3299. * <b>Special Errors</b> </p> <ul> <li> <ul> <li> <p> <i>HTTP Error: HTTP 400 Bad
  3300. * Request</i> </p> </li> <li> <p> <i>Code: InvalidArgument</i> </p> </li> <li> <p>
  3301. * <i>Cause: Invalid argument.</i> </p> </li> </ul> </li> <li> <ul> <li> <p>
  3302. * <i>HTTP Error: HTTP 400 Bad Request</i> </p> </li> <li> <p> <i>Code:
  3303. * TooManyConfigurations</i> </p> </li> <li> <p> <i>Cause: You are attempting to
  3304. * create a new configuration but have already reached the 1,000-configuration
  3305. * limit.</i> </p> </li> </ul> </li> <li> <ul> <li> <p> <i>HTTP Error: HTTP 403
  3306. * Forbidden</i> </p> </li> <li> <p> <i>Code: AccessDenied</i> </p> </li> <li> <p>
  3307. * <i>Cause: You are not the owner of the specified bucket, or you do not have the
  3308. * s3:PutAnalyticsConfiguration bucket permission to set the configuration on the
  3309. * bucket.</i> </p> </li> </ul> </li> </ul> <p class="title"> <b>Related
  3310. * Resources</b> </p> <ul> <li> <p> <a
  3311. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html">GetBucketAnalyticsConfiguration</a>
  3312. * </p> </li> <li> <p> <a
  3313. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketAnalyticsConfiguration.html">DeleteBucketAnalyticsConfiguration</a>
  3314. * </p> </li> <li> <p> <a
  3315. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketAnalyticsConfigurations.html">ListBucketAnalyticsConfigurations</a>
  3316. * </p> </li> </ul><p><h3>See Also:</h3> <a
  3317. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration">AWS
  3318. * API Reference</a></p>
  3319. */
  3320. virtual Model::PutBucketAnalyticsConfigurationOutcome PutBucketAnalyticsConfiguration(const Model::PutBucketAnalyticsConfigurationRequest& request) const;
  3321. /**
  3322. * A Callable wrapper for PutBucketAnalyticsConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  3323. */
  3324. template<typename PutBucketAnalyticsConfigurationRequestT = Model::PutBucketAnalyticsConfigurationRequest>
  3325. Model::PutBucketAnalyticsConfigurationOutcomeCallable PutBucketAnalyticsConfigurationCallable(const PutBucketAnalyticsConfigurationRequestT& request) const
  3326. {
  3327. return SubmitCallable(&S3Client::PutBucketAnalyticsConfiguration, request);
  3328. }
  3329. /**
  3330. * An Async wrapper for PutBucketAnalyticsConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  3331. */
  3332. template<typename PutBucketAnalyticsConfigurationRequestT = Model::PutBucketAnalyticsConfigurationRequest>
  3333. void PutBucketAnalyticsConfigurationAsync(const PutBucketAnalyticsConfigurationRequestT& request, const PutBucketAnalyticsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  3334. {
  3335. return SubmitAsync(&S3Client::PutBucketAnalyticsConfiguration, request, handler, context);
  3336. }
  3337. /**
  3338. * <p>Sets the <code>cors</code> configuration for your bucket. If the
  3339. * configuration exists, Amazon S3 replaces it.</p> <p>To use this operation, you
  3340. * must be allowed to perform the <code>s3:PutBucketCORS</code> action. By default,
  3341. * the bucket owner has this permission and can grant it to others.</p> <p>You set
  3342. * this configuration on a bucket so that the bucket can service cross-origin
  3343. * requests. For example, you might want to enable a request whose origin is
  3344. * <code>http://www.example.com</code> to access your Amazon S3 bucket at
  3345. * <code>my.example.bucket.com</code> by using the browser's
  3346. * <code>XMLHttpRequest</code> capability.</p> <p>To enable cross-origin resource
  3347. * sharing (CORS) on a bucket, you add the <code>cors</code> subresource to the
  3348. * bucket. The <code>cors</code> subresource is an XML document in which you
  3349. * configure rules that identify origins and the HTTP methods that can be executed
  3350. * on your bucket. The document is limited to 64 KB in size. </p> <p>When Amazon S3
  3351. * receives a cross-origin request (or a pre-flight OPTIONS request) against a
  3352. * bucket, it evaluates the <code>cors</code> configuration on the bucket and uses
  3353. * the first <code>CORSRule</code> rule that matches the incoming browser request
  3354. * to enable a cross-origin request. For a rule to match, the following conditions
  3355. * must be met:</p> <ul> <li> <p>The request's <code>Origin</code> header must
  3356. * match <code>AllowedOrigin</code> elements.</p> </li> <li> <p>The request method
  3357. * (for example, GET, PUT, HEAD, and so on) or the
  3358. * <code>Access-Control-Request-Method</code> header in case of a pre-flight
  3359. * <code>OPTIONS</code> request must be one of the <code>AllowedMethod</code>
  3360. * elements. </p> </li> <li> <p>Every header specified in the
  3361. * <code>Access-Control-Request-Headers</code> request header of a pre-flight
  3362. * request must match an <code>AllowedHeader</code> element. </p> </li> </ul> <p>
  3363. * For more information about CORS, go to <a
  3364. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html">Enabling
  3365. * Cross-Origin Resource Sharing</a> in the <i>Amazon S3 User Guide</i>.</p> <p
  3366. * class="title"> <b>Related Resources</b> </p> <ul> <li> <p> <a
  3367. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketCors.html">GetBucketCors</a>
  3368. * </p> </li> <li> <p> <a
  3369. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketCors.html">DeleteBucketCors</a>
  3370. * </p> </li> <li> <p> <a
  3371. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTOPTIONSobject.html">RESTOPTIONSobject</a>
  3372. * </p> </li> </ul><p><h3>See Also:</h3> <a
  3373. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors">AWS
  3374. * API Reference</a></p>
  3375. */
  3376. virtual Model::PutBucketCorsOutcome PutBucketCors(const Model::PutBucketCorsRequest& request) const;
  3377. /**
  3378. * A Callable wrapper for PutBucketCors that returns a future to the operation so that it can be executed in parallel to other requests.
  3379. */
  3380. template<typename PutBucketCorsRequestT = Model::PutBucketCorsRequest>
  3381. Model::PutBucketCorsOutcomeCallable PutBucketCorsCallable(const PutBucketCorsRequestT& request) const
  3382. {
  3383. return SubmitCallable(&S3Client::PutBucketCors, request);
  3384. }
  3385. /**
  3386. * An Async wrapper for PutBucketCors that queues the request into a thread executor and triggers associated callback when operation has finished.
  3387. */
  3388. template<typename PutBucketCorsRequestT = Model::PutBucketCorsRequest>
  3389. void PutBucketCorsAsync(const PutBucketCorsRequestT& request, const PutBucketCorsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  3390. {
  3391. return SubmitAsync(&S3Client::PutBucketCors, request, handler, context);
  3392. }
  3393. /**
  3394. * <p>This action uses the <code>encryption</code> subresource to configure default
  3395. * encryption and Amazon S3 Bucket Key for an existing bucket.</p> <p>Default
  3396. * encryption for a bucket can use server-side encryption with Amazon S3-managed
  3397. * keys (SSE-S3) or customer managed keys (SSE-KMS). If you specify default
  3398. * encryption using SSE-KMS, you can also configure Amazon S3 Bucket Key. When the
  3399. * default encryption is SSE-KMS, if you upload an object to the bucket and do not
  3400. * specify the KMS key to use for encryption, Amazon S3 uses the default Amazon Web
  3401. * Services managed KMS key for your account. For information about default
  3402. * encryption, see <a
  3403. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html">Amazon
  3404. * S3 default bucket encryption</a> in the <i>Amazon S3 User Guide</i>. For more
  3405. * information about S3 Bucket Keys, see <a
  3406. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html">Amazon S3
  3407. * Bucket Keys</a> in the <i>Amazon S3 User Guide</i>.</p> <p>This
  3408. * action requires Amazon Web Services Signature Version 4. For more information,
  3409. * see <a
  3410. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html">
  3411. * Authenticating Requests (Amazon Web Services Signature Version 4)</a>. </p>
  3412. * <p>To use this operation, you must have permissions to perform the
  3413. * <code>s3:PutEncryptionConfiguration</code> action. The bucket owner has this
  3414. * permission by default. The bucket owner can grant this permission to others. For
  3415. * more information about permissions, see <a
  3416. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  3417. * Related to Bucket Subresource Operations</a> and <a
  3418. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  3419. * Access Permissions to Your Amazon S3 Resources</a> in the Amazon S3 User Guide.
  3420. * </p> <p class="title"> <b>Related Resources</b> </p> <ul> <li> <p> <a
  3421. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html">GetBucketEncryption</a>
  3422. * </p> </li> <li> <p> <a
  3423. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html">DeleteBucketEncryption</a>
  3424. * </p> </li> </ul><p><h3>See Also:</h3> <a
  3425. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption">AWS
  3426. * API Reference</a></p>
  3427. */
  3428. virtual Model::PutBucketEncryptionOutcome PutBucketEncryption(const Model::PutBucketEncryptionRequest& request) const;
  3429. /**
  3430. * A Callable wrapper for PutBucketEncryption that returns a future to the operation so that it can be executed in parallel to other requests.
  3431. */
  3432. template<typename PutBucketEncryptionRequestT = Model::PutBucketEncryptionRequest>
  3433. Model::PutBucketEncryptionOutcomeCallable PutBucketEncryptionCallable(const PutBucketEncryptionRequestT& request) const
  3434. {
  3435. return SubmitCallable(&S3Client::PutBucketEncryption, request);
  3436. }
  3437. /**
  3438. * An Async wrapper for PutBucketEncryption that queues the request into a thread executor and triggers associated callback when operation has finished.
  3439. */
  3440. template<typename PutBucketEncryptionRequestT = Model::PutBucketEncryptionRequest>
  3441. void PutBucketEncryptionAsync(const PutBucketEncryptionRequestT& request, const PutBucketEncryptionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  3442. {
  3443. return SubmitAsync(&S3Client::PutBucketEncryption, request, handler, context);
  3444. }
  3445. /**
  3446. * <p>Puts a S3 Intelligent-Tiering configuration to the specified bucket. You can
  3447. * have up to 1,000 S3 Intelligent-Tiering configurations per bucket.</p> <p>The S3
  3448. * Intelligent-Tiering storage class is designed to optimize storage costs by
  3449. * automatically moving data to the most cost-effective storage access tier,
  3450. * without performance impact or operational overhead. S3 Intelligent-Tiering
  3451. * delivers automatic cost savings in three low latency and high throughput access
  3452. * tiers. To get the lowest storage cost on data that can be accessed in minutes to
  3453. * hours, you can choose to activate additional archiving capabilities.</p> <p>The
  3454. * S3 Intelligent-Tiering storage class is the ideal storage class for data with
  3455. * unknown, changing, or unpredictable access patterns, independent of object size
  3456. * or retention period. If the size of an object is less than 128 KB, it is not
  3457. * monitored and not eligible for auto-tiering. Smaller objects can be stored, but
  3458. * they are always charged at the Frequent Access tier rates in the S3
  3459. * Intelligent-Tiering storage class.</p> <p>For more information, see <a
  3460. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access">Storage
  3461. * class for automatically optimizing frequently and infrequently accessed
  3462. * objects</a>.</p> <p>Operations related to
  3463. * <code>PutBucketIntelligentTieringConfiguration</code> include: </p> <ul> <li>
  3464. * <p> <a
  3465. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html">DeleteBucketIntelligentTieringConfiguration</a>
  3466. * </p> </li> <li> <p> <a
  3467. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html">GetBucketIntelligentTieringConfiguration</a>
  3468. * </p> </li> <li> <p> <a
  3469. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html">ListBucketIntelligentTieringConfigurations</a>
  3470. * </p> </li> </ul> <p>You only need S3 Intelligent-Tiering enabled on a
  3471. * bucket if you want to automatically move objects stored in the S3
  3472. * Intelligent-Tiering storage class to the Archive Access or Deep Archive Access
  3473. * tier.</p> <p class="title"> <b>Special Errors</b> </p> <ul> <li> <p
  3474. * class="title"> <b>HTTP 400 Bad Request Error</b> </p> <ul> <li> <p> <i>Code:</i>
  3475. * InvalidArgument</p> </li> <li> <p> <i>Cause:</i> Invalid Argument</p> </li>
  3476. * </ul> </li> <li> <p class="title"> <b>HTTP 400 Bad Request Error</b> </p> <ul>
  3477. * <li> <p> <i>Code:</i> TooManyConfigurations</p> </li> <li> <p> <i>Cause:</i> You
  3478. * are attempting to create a new configuration but have already reached the
  3479. * 1,000-configuration limit. </p> </li> </ul> </li> <li> <p class="title"> <b>HTTP
  3480. * 403 Forbidden Error</b> </p> <ul> <li> <p> <i>Code:</i> AccessDenied</p> </li>
  3481. * <li> <p> <i>Cause:</i> You are not the owner of the specified bucket, or you do
  3482. * not have the <code>s3:PutIntelligentTieringConfiguration</code> bucket
  3483. * permission to set the configuration on the bucket. </p> </li> </ul> </li>
  3484. * </ul><p><h3>See Also:</h3> <a
  3485. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketIntelligentTieringConfiguration">AWS
  3486. * API Reference</a></p>
  3487. */
  3488. virtual Model::PutBucketIntelligentTieringConfigurationOutcome PutBucketIntelligentTieringConfiguration(const Model::PutBucketIntelligentTieringConfigurationRequest& request) const;
  3489. /**
  3490. * A Callable wrapper for PutBucketIntelligentTieringConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  3491. */
  3492. template<typename PutBucketIntelligentTieringConfigurationRequestT = Model::PutBucketIntelligentTieringConfigurationRequest>
  3493. Model::PutBucketIntelligentTieringConfigurationOutcomeCallable PutBucketIntelligentTieringConfigurationCallable(const PutBucketIntelligentTieringConfigurationRequestT& request) const
  3494. {
  3495. return SubmitCallable(&S3Client::PutBucketIntelligentTieringConfiguration, request);
  3496. }
  3497. /**
  3498. * An Async wrapper for PutBucketIntelligentTieringConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  3499. */
  3500. template<typename PutBucketIntelligentTieringConfigurationRequestT = Model::PutBucketIntelligentTieringConfigurationRequest>
  3501. void PutBucketIntelligentTieringConfigurationAsync(const PutBucketIntelligentTieringConfigurationRequestT& request, const PutBucketIntelligentTieringConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  3502. {
  3503. return SubmitAsync(&S3Client::PutBucketIntelligentTieringConfiguration, request, handler, context);
  3504. }
  3505. /**
  3506. * <p>This implementation of the <code>PUT</code> action adds an inventory
  3507. * configuration (identified by the inventory ID) to the bucket. You can have up to
  3508. * 1,000 inventory configurations per bucket. </p> <p>Amazon S3 inventory generates
  3509. * inventories of the objects in the bucket on a daily or weekly basis, and the
  3510. * results are published to a flat file. The bucket that is inventoried is called
  3511. * the <i>source</i> bucket, and the bucket where the inventory flat file is stored
  3512. * is called the <i>destination</i> bucket. The <i>destination</i> bucket must be
  3513. * in the same Amazon Web Services Region as the <i>source</i> bucket. </p> <p>When
  3514. * you configure an inventory for a <i>source</i> bucket, you specify the
  3515. * <i>destination</i> bucket where you want the inventory to be stored, and whether
  3516. * to generate the inventory daily or weekly. You can also configure what object
  3517. * metadata to include and whether to inventory all object versions or only current
  3518. * versions. For more information, see <a
  3519. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html">Amazon
  3520. * S3 Inventory</a> in the Amazon S3 User Guide.</p> <p>You must create
  3521. * a bucket policy on the <i>destination</i> bucket to grant permissions to Amazon
  3522. * S3 to write objects to the bucket in the defined location. For an example
  3523. * policy, see <a
  3524. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9">
  3525. * Granting Permissions for Amazon S3 Inventory and Storage Class Analysis</a>.</p>
  3526. * <p>To use this operation, you must have permissions to perform the
  3527. * <code>s3:PutInventoryConfiguration</code> action. The bucket owner has this
  3528. * permission by default and can grant this permission to others. For more
  3529. * information about permissions, see <a
  3530. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  3531. * Related to Bucket Subresource Operations</a> and <a
  3532. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  3533. * Access Permissions to Your Amazon S3 Resources</a> in the Amazon S3 User
  3534. * Guide.</p> <p class="title"> <b>Special Errors</b> </p> <ul> <li> <p
  3535. * class="title"> <b>HTTP 400 Bad Request Error</b> </p> <ul> <li> <p> <i>Code:</i>
  3536. * InvalidArgument</p> </li> <li> <p> <i>Cause:</i> Invalid Argument</p> </li>
  3537. * </ul> </li> <li> <p class="title"> <b>HTTP 400 Bad Request Error</b> </p> <ul>
  3538. * <li> <p> <i>Code:</i> TooManyConfigurations</p> </li> <li> <p> <i>Cause:</i> You
  3539. * are attempting to create a new configuration but have already reached the
  3540. * 1,000-configuration limit. </p> </li> </ul> </li> <li> <p class="title"> <b>HTTP
  3541. * 403 Forbidden Error</b> </p> <ul> <li> <p> <i>Code:</i> AccessDenied</p> </li>
  3542. * <li> <p> <i>Cause:</i> You are not the owner of the specified bucket, or you do
  3543. * not have the <code>s3:PutInventoryConfiguration</code> bucket permission to set
  3544. * the configuration on the bucket. </p> </li> </ul> </li> </ul> <p class="title">
  3545. * <b>Related Resources</b> </p> <ul> <li> <p> <a
  3546. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html">GetBucketInventoryConfiguration</a>
  3547. * </p> </li> <li> <p> <a
  3548. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html">DeleteBucketInventoryConfiguration</a>
  3549. * </p> </li> <li> <p> <a
  3550. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketInventoryConfigurations.html">ListBucketInventoryConfigurations</a>
  3551. * </p> </li> </ul><p><h3>See Also:</h3> <a
  3552. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration">AWS
  3553. * API Reference</a></p>
  3554. */
  3555. virtual Model::PutBucketInventoryConfigurationOutcome PutBucketInventoryConfiguration(const Model::PutBucketInventoryConfigurationRequest& request) const;
  3556. /**
  3557. * A Callable wrapper for PutBucketInventoryConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  3558. */
  3559. template<typename PutBucketInventoryConfigurationRequestT = Model::PutBucketInventoryConfigurationRequest>
  3560. Model::PutBucketInventoryConfigurationOutcomeCallable PutBucketInventoryConfigurationCallable(const PutBucketInventoryConfigurationRequestT& request) const
  3561. {
  3562. return SubmitCallable(&S3Client::PutBucketInventoryConfiguration, request);
  3563. }
  3564. /**
  3565. * An Async wrapper for PutBucketInventoryConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  3566. */
  3567. template<typename PutBucketInventoryConfigurationRequestT = Model::PutBucketInventoryConfigurationRequest>
  3568. void PutBucketInventoryConfigurationAsync(const PutBucketInventoryConfigurationRequestT& request, const PutBucketInventoryConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  3569. {
  3570. return SubmitAsync(&S3Client::PutBucketInventoryConfiguration, request, handler, context);
  3571. }
  3572. /**
  3573. * <p>Creates a new lifecycle configuration for the bucket or replaces an existing
  3574. * lifecycle configuration. Keep in mind that this will overwrite an existing
  3575. * lifecycle configuration, so if you want to retain any configuration details,
  3576. * they must be included in the new lifecycle configuration. For information about
  3577. * lifecycle configuration, see <a
  3578. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html">Managing
  3579. * your storage lifecycle</a>.</p> <p>Bucket lifecycle configuration now
  3580. * supports specifying a lifecycle rule using an object key name prefix, one or
  3581. * more object tags, or a combination of both. Accordingly, this section describes
  3582. * the latest API. The previous version of the API supported filtering based only
  3583. * on an object key name prefix, which is supported for backward compatibility. For
  3584. * the related API description, see <a
  3585. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html">PutBucketLifecycle</a>.</p>
  3586. * <p> <b>Rules</b> </p> <p>You specify the lifecycle configuration in your
  3587. * request body. The lifecycle configuration is specified as XML consisting of one
  3588. * or more rules. An Amazon S3 Lifecycle configuration can have up to 1,000 rules.
  3589. * This limit is not adjustable. Each rule consists of the following:</p> <ul> <li>
  3590. * <p>Filter identifying a subset of objects to which the rule applies. The filter
  3591. * can be based on a key name prefix, object tags, or a combination of both.</p>
  3592. * </li> <li> <p>Status whether the rule is in effect.</p> </li> <li> <p>One or
  3593. * more lifecycle transition and expiration actions that you want Amazon S3 to
  3594. * perform on the objects identified by the filter. If the state of your bucket is
  3595. * versioning-enabled or versioning-suspended, you can have many versions of the
  3596. * same object (one current version and zero or more noncurrent versions). Amazon
  3597. * S3 provides predefined actions that you can specify for current and noncurrent
  3598. * object versions.</p> </li> </ul> <p>For more information, see <a
  3599. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html">Object
  3600. * Lifecycle Management</a> and <a
  3601. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html">Lifecycle
  3602. * Configuration Elements</a>.</p> <p> <b>Permissions</b> </p> <p>By default, all
  3603. * Amazon S3 resources are private, including buckets, objects, and related
  3604. * subresources (for example, lifecycle configuration and website configuration).
  3605. * Only the resource owner (that is, the Amazon Web Services account that created
  3606. * it) can access the resource. The resource owner can optionally grant access
  3607. * permissions to others by writing an access policy. For this operation, a user
  3608. * must get the <code>s3:PutLifecycleConfiguration</code> permission.</p> <p>You
  3609. * can also explicitly deny permissions. Explicit deny also supersedes any other
  3610. * permissions. If you want to block users or accounts from removing or deleting
  3611. * objects from your bucket, you must deny them permissions for the following
  3612. * actions:</p> <ul> <li> <p> <code>s3:DeleteObject</code> </p> </li> <li> <p>
  3613. * <code>s3:DeleteObjectVersion</code> </p> </li> <li> <p>
  3614. * <code>s3:PutLifecycleConfiguration</code> </p> </li> </ul> <p>For more
  3615. * information about permissions, see <a
  3616. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  3617. * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>The following are
  3618. * related to <code>PutBucketLifecycleConfiguration</code>:</p> <ul> <li> <p> <a
  3619. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-configuration-examples.html">Examples
  3620. * of Lifecycle Configuration</a> </p> </li> <li> <p> <a
  3621. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html">GetBucketLifecycleConfiguration</a>
  3622. * </p> </li> <li> <p> <a
  3623. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html">DeleteBucketLifecycle</a>
  3624. * </p> </li> </ul><p><h3>See Also:</h3> <a
  3625. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration">AWS
  3626. * API Reference</a></p>
  3627. */
  3628. virtual Model::PutBucketLifecycleConfigurationOutcome PutBucketLifecycleConfiguration(const Model::PutBucketLifecycleConfigurationRequest& request) const;
  3629. /**
  3630. * A Callable wrapper for PutBucketLifecycleConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  3631. */
  3632. template<typename PutBucketLifecycleConfigurationRequestT = Model::PutBucketLifecycleConfigurationRequest>
  3633. Model::PutBucketLifecycleConfigurationOutcomeCallable PutBucketLifecycleConfigurationCallable(const PutBucketLifecycleConfigurationRequestT& request) const
  3634. {
  3635. return SubmitCallable(&S3Client::PutBucketLifecycleConfiguration, request);
  3636. }
  3637. /**
  3638. * An Async wrapper for PutBucketLifecycleConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  3639. */
  3640. template<typename PutBucketLifecycleConfigurationRequestT = Model::PutBucketLifecycleConfigurationRequest>
  3641. void PutBucketLifecycleConfigurationAsync(const PutBucketLifecycleConfigurationRequestT& request, const PutBucketLifecycleConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  3642. {
  3643. return SubmitAsync(&S3Client::PutBucketLifecycleConfiguration, request, handler, context);
  3644. }
  3645. /**
  3646. * <p>Set the logging parameters for a bucket and to specify permissions for who
  3647. * can view and modify the logging parameters. All logs are saved to buckets in the
  3648. * same Amazon Web Services Region as the source bucket. To set the logging status
  3649. * of a bucket, you must be the bucket owner.</p> <p>The bucket owner is
  3650. * automatically granted FULL_CONTROL to all logs. You use the <code>Grantee</code>
  3651. * request element to grant access to other people. The <code>Permissions</code>
  3652. * request element specifies the kind of access the grantee has to the logs.</p>
  3653. * <p>If the target bucket for log delivery uses the bucket owner
  3654. * enforced setting for S3 Object Ownership, you can't use the <code>Grantee</code>
  3655. * request element to grant access to others. Permissions can only be granted using
  3656. * policies. For more information, see <a
  3657. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html#grant-log-delivery-permissions-general">Permissions
  3658. * for server access log delivery</a> in the <i>Amazon S3 User Guide</i>.</p>
  3659. * <p> <b>Grantee Values</b> </p> <p>You can specify the person
  3660. * (grantee) to whom you're assigning access rights (using request elements) in the
  3661. * following ways:</p> <ul> <li> <p>By the person's ID:</p> <p> <code>&lt;Grantee
  3662. * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3663. * 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;
  3664. * &lt;/Grantee&gt;</code> </p> <p>DisplayName is optional and ignored in the
  3665. * request.</p> </li> <li> <p>By Email address:</p> <p> <code> &lt;Grantee
  3666. * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3667. * xsi:type="AmazonCustomerByEmail"&gt;&lt;EmailAddress&gt;&lt;&gt;Grantees@email.com&lt;&gt;&lt;/EmailAddress&gt;&lt;/Grantee&gt;</code>
  3668. * </p> <p>The grantee is resolved to the CanonicalUser and, in a response to a GET
  3669. * Object acl request, appears as the CanonicalUser.</p> </li> <li> <p>By URI:</p>
  3670. * <p> <code>&lt;Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3671. * 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>
  3672. * </p> </li> </ul> <p>To enable logging, you use LoggingEnabled and its children
  3673. * request elements. To disable logging, you use an empty BucketLoggingStatus
  3674. * request element:</p> <p> <code>&lt;BucketLoggingStatus
  3675. * xmlns="http://doc.s3.amazonaws.com/2006-03-01" /&gt;</code> </p> <p>For more
  3676. * information about server access logging, see <a
  3677. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html">Server
  3678. * Access Logging</a> in the <i>Amazon S3 User Guide</i>. </p> <p>For more
  3679. * information about creating a bucket, see <a
  3680. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html">CreateBucket</a>.
  3681. * For more information about returning the logging status of a bucket, see <a
  3682. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLogging.html">GetBucketLogging</a>.</p>
  3683. * <p>The following operations are related to <code>PutBucketLogging</code>:</p>
  3684. * <ul> <li> <p> <a
  3685. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html">PutObject</a>
  3686. * </p> </li> <li> <p> <a
  3687. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html">DeleteBucket</a>
  3688. * </p> </li> <li> <p> <a
  3689. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html">CreateBucket</a>
  3690. * </p> </li> <li> <p> <a
  3691. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLogging.html">GetBucketLogging</a>
  3692. * </p> </li> </ul><p><h3>See Also:</h3> <a
  3693. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging">AWS
  3694. * API Reference</a></p>
  3695. */
  3696. virtual Model::PutBucketLoggingOutcome PutBucketLogging(const Model::PutBucketLoggingRequest& request) const;
  3697. /**
  3698. * A Callable wrapper for PutBucketLogging that returns a future to the operation so that it can be executed in parallel to other requests.
  3699. */
  3700. template<typename PutBucketLoggingRequestT = Model::PutBucketLoggingRequest>
  3701. Model::PutBucketLoggingOutcomeCallable PutBucketLoggingCallable(const PutBucketLoggingRequestT& request) const
  3702. {
  3703. return SubmitCallable(&S3Client::PutBucketLogging, request);
  3704. }
  3705. /**
  3706. * An Async wrapper for PutBucketLogging that queues the request into a thread executor and triggers associated callback when operation has finished.
  3707. */
  3708. template<typename PutBucketLoggingRequestT = Model::PutBucketLoggingRequest>
  3709. void PutBucketLoggingAsync(const PutBucketLoggingRequestT& request, const PutBucketLoggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  3710. {
  3711. return SubmitAsync(&S3Client::PutBucketLogging, request, handler, context);
  3712. }
  3713. /**
  3714. * <p>Sets a metrics configuration (specified by the metrics configuration ID) for
  3715. * the bucket. You can have up to 1,000 metrics configurations per bucket. If
  3716. * you're updating an existing metrics configuration, note that this is a full
  3717. * replacement of the existing metrics configuration. If you don't include the
  3718. * elements you want to keep, they are erased.</p> <p>To use this operation, you
  3719. * must have permissions to perform the <code>s3:PutMetricsConfiguration</code>
  3720. * action. The bucket owner has this permission by default. The bucket owner can
  3721. * grant this permission to others. For more information about permissions, see <a
  3722. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  3723. * Related to Bucket Subresource Operations</a> and <a
  3724. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  3725. * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>For information about
  3726. * CloudWatch request metrics for Amazon S3, see <a
  3727. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html">Monitoring
  3728. * Metrics with Amazon CloudWatch</a>.</p> <p>The following operations are related
  3729. * to <code>PutBucketMetricsConfiguration</code>:</p> <ul> <li> <p> <a
  3730. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetricsConfiguration.html">DeleteBucketMetricsConfiguration</a>
  3731. * </p> </li> <li> <p> <a
  3732. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html">GetBucketMetricsConfiguration</a>
  3733. * </p> </li> <li> <p> <a
  3734. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketMetricsConfigurations.html">ListBucketMetricsConfigurations</a>
  3735. * </p> </li> </ul> <p> <code>GetBucketLifecycle</code> has the following special
  3736. * error:</p> <ul> <li> <p>Error code: <code>TooManyConfigurations</code> </p> <ul>
  3737. * <li> <p>Description: You are attempting to create a new configuration but have
  3738. * already reached the 1,000-configuration limit.</p> </li> <li> <p>HTTP Status
  3739. * Code: HTTP 400 Bad Request</p> </li> </ul> </li> </ul><p><h3>See Also:</h3> <a
  3740. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration">AWS
  3741. * API Reference</a></p>
  3742. */
  3743. virtual Model::PutBucketMetricsConfigurationOutcome PutBucketMetricsConfiguration(const Model::PutBucketMetricsConfigurationRequest& request) const;
  3744. /**
  3745. * A Callable wrapper for PutBucketMetricsConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  3746. */
  3747. template<typename PutBucketMetricsConfigurationRequestT = Model::PutBucketMetricsConfigurationRequest>
  3748. Model::PutBucketMetricsConfigurationOutcomeCallable PutBucketMetricsConfigurationCallable(const PutBucketMetricsConfigurationRequestT& request) const
  3749. {
  3750. return SubmitCallable(&S3Client::PutBucketMetricsConfiguration, request);
  3751. }
  3752. /**
  3753. * An Async wrapper for PutBucketMetricsConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  3754. */
  3755. template<typename PutBucketMetricsConfigurationRequestT = Model::PutBucketMetricsConfigurationRequest>
  3756. void PutBucketMetricsConfigurationAsync(const PutBucketMetricsConfigurationRequestT& request, const PutBucketMetricsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  3757. {
  3758. return SubmitAsync(&S3Client::PutBucketMetricsConfiguration, request, handler, context);
  3759. }
  3760. /**
  3761. * <p>Enables notifications of specified events for a bucket. For more information
  3762. * about event notifications, see <a
  3763. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Configuring
  3764. * Event Notifications</a>.</p> <p>Using this API, you can replace an existing
  3765. * notification configuration. The configuration is an XML file that defines the
  3766. * event types that you want Amazon S3 to publish and the destination where you
  3767. * want Amazon S3 to publish an event notification when it detects an event of the
  3768. * specified type.</p> <p>By default, your bucket has no event notifications
  3769. * configured. That is, the notification configuration will be an empty
  3770. * <code>NotificationConfiguration</code>.</p> <p>
  3771. * <code>&lt;NotificationConfiguration&gt;</code> </p> <p>
  3772. * <code>&lt;/NotificationConfiguration&gt;</code> </p> <p>This action replaces the
  3773. * existing notification configuration with the configuration you include in the
  3774. * request body.</p> <p>After Amazon S3 receives this request, it first verifies
  3775. * that any Amazon Simple Notification Service (Amazon SNS) or Amazon Simple Queue
  3776. * Service (Amazon SQS) destination exists, and that the bucket owner has
  3777. * permission to publish to it by sending a test notification. In the case of
  3778. * Lambda destinations, Amazon S3 verifies that the Lambda function permissions
  3779. * grant Amazon S3 permission to invoke the function from the Amazon S3 bucket. For
  3780. * more information, see <a
  3781. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Configuring
  3782. * Notifications for Amazon S3 Events</a>.</p> <p>You can disable notifications by
  3783. * adding the empty NotificationConfiguration element.</p> <p>For more information
  3784. * about the number of event notification configurations that you can create per
  3785. * bucket, see <a
  3786. * href="https://docs.aws.amazon.com/general/latest/gr/s3.html#limits_s3">Amazon S3
  3787. * service quotas</a> in <i>Amazon Web Services General Reference</i>.</p> <p>By
  3788. * default, only the bucket owner can configure notifications on a bucket. However,
  3789. * bucket owners can use a bucket policy to grant permission to other users to set
  3790. * this configuration with <code>s3:PutBucketNotification</code> permission.</p>
  3791. * <p>The PUT notification is an atomic operation. For example, suppose your
  3792. * notification configuration includes SNS topic, SQS queue, and Lambda function
  3793. * configurations. When you send a PUT request with this configuration, Amazon S3
  3794. * sends test messages to your SNS topic. If the message fails, the entire PUT
  3795. * action will fail, and Amazon S3 will not add the configuration to your
  3796. * bucket.</p> <p> <b>Responses</b> </p> <p>If the configuration in the
  3797. * request body includes only one <code>TopicConfiguration</code> specifying only
  3798. * the <code>s3:ReducedRedundancyLostObject</code> event type, the response will
  3799. * also include the <code>x-amz-sns-test-message-id</code> header containing the
  3800. * message ID of the test notification sent to the topic.</p> <p>The following
  3801. * action is related to <code>PutBucketNotificationConfiguration</code>:</p> <ul>
  3802. * <li> <p> <a
  3803. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html">GetBucketNotificationConfiguration</a>
  3804. * </p> </li> </ul><p><h3>See Also:</h3> <a
  3805. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration">AWS
  3806. * API Reference</a></p>
  3807. */
  3808. virtual Model::PutBucketNotificationConfigurationOutcome PutBucketNotificationConfiguration(const Model::PutBucketNotificationConfigurationRequest& request) const;
  3809. /**
  3810. * A Callable wrapper for PutBucketNotificationConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  3811. */
  3812. template<typename PutBucketNotificationConfigurationRequestT = Model::PutBucketNotificationConfigurationRequest>
  3813. Model::PutBucketNotificationConfigurationOutcomeCallable PutBucketNotificationConfigurationCallable(const PutBucketNotificationConfigurationRequestT& request) const
  3814. {
  3815. return SubmitCallable(&S3Client::PutBucketNotificationConfiguration, request);
  3816. }
  3817. /**
  3818. * An Async wrapper for PutBucketNotificationConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  3819. */
  3820. template<typename PutBucketNotificationConfigurationRequestT = Model::PutBucketNotificationConfigurationRequest>
  3821. void PutBucketNotificationConfigurationAsync(const PutBucketNotificationConfigurationRequestT& request, const PutBucketNotificationConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  3822. {
  3823. return SubmitAsync(&S3Client::PutBucketNotificationConfiguration, request, handler, context);
  3824. }
  3825. /**
  3826. * <p>Creates or modifies <code>OwnershipControls</code> for an Amazon S3 bucket.
  3827. * To use this operation, you must have the
  3828. * <code>s3:PutBucketOwnershipControls</code> permission. For more information
  3829. * about Amazon S3 permissions, see <a
  3830. * href="https://docs.aws.amazon.com/AmazonS3/latest/user-guide/using-with-s3-actions.html">Specifying
  3831. * permissions in a policy</a>. </p> <p>For information about Amazon S3 Object
  3832. * Ownership, see <a
  3833. * href="https://docs.aws.amazon.com/AmazonS3/latest/user-guide/about-object-ownership.html">Using
  3834. * object ownership</a>. </p> <p>The following operations are related to
  3835. * <code>PutBucketOwnershipControls</code>:</p> <ul> <li> <p>
  3836. * <a>GetBucketOwnershipControls</a> </p> </li> <li> <p>
  3837. * <a>DeleteBucketOwnershipControls</a> </p> </li> </ul><p><h3>See Also:</h3> <a
  3838. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketOwnershipControls">AWS
  3839. * API Reference</a></p>
  3840. */
  3841. virtual Model::PutBucketOwnershipControlsOutcome PutBucketOwnershipControls(const Model::PutBucketOwnershipControlsRequest& request) const;
  3842. /**
  3843. * A Callable wrapper for PutBucketOwnershipControls that returns a future to the operation so that it can be executed in parallel to other requests.
  3844. */
  3845. template<typename PutBucketOwnershipControlsRequestT = Model::PutBucketOwnershipControlsRequest>
  3846. Model::PutBucketOwnershipControlsOutcomeCallable PutBucketOwnershipControlsCallable(const PutBucketOwnershipControlsRequestT& request) const
  3847. {
  3848. return SubmitCallable(&S3Client::PutBucketOwnershipControls, request);
  3849. }
  3850. /**
  3851. * An Async wrapper for PutBucketOwnershipControls that queues the request into a thread executor and triggers associated callback when operation has finished.
  3852. */
  3853. template<typename PutBucketOwnershipControlsRequestT = Model::PutBucketOwnershipControlsRequest>
  3854. void PutBucketOwnershipControlsAsync(const PutBucketOwnershipControlsRequestT& request, const PutBucketOwnershipControlsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  3855. {
  3856. return SubmitAsync(&S3Client::PutBucketOwnershipControls, request, handler, context);
  3857. }
  3858. /**
  3859. * <p>Applies an Amazon S3 bucket policy to an Amazon S3 bucket. If you are using
  3860. * an identity other than the root user of the Amazon Web Services account that
  3861. * owns the bucket, the calling identity must have the <code>PutBucketPolicy</code>
  3862. * permissions on the specified bucket and belong to the bucket owner's account in
  3863. * order to use this operation.</p> <p>If you don't have
  3864. * <code>PutBucketPolicy</code> permissions, Amazon S3 returns a <code>403 Access
  3865. * Denied</code> error. If you have the correct permissions, but you're not using
  3866. * an identity that belongs to the bucket owner's account, Amazon S3 returns a
  3867. * <code>405 Method Not Allowed</code> error.</p> <p> As a security
  3868. * precaution, the root user of the Amazon Web Services account that owns a bucket
  3869. * can always use this operation, even if the policy explicitly denies the root
  3870. * user the ability to perform this action. </p> <p>For more
  3871. * information, see <a
  3872. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html">Bucket
  3873. * policy examples</a>.</p> <p>The following operations are related to
  3874. * <code>PutBucketPolicy</code>:</p> <ul> <li> <p> <a
  3875. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html">CreateBucket</a>
  3876. * </p> </li> <li> <p> <a
  3877. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html">DeleteBucket</a>
  3878. * </p> </li> </ul><p><h3>See Also:</h3> <a
  3879. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy">AWS
  3880. * API Reference</a></p>
  3881. */
  3882. virtual Model::PutBucketPolicyOutcome PutBucketPolicy(const Model::PutBucketPolicyRequest& request) const;
  3883. /**
  3884. * A Callable wrapper for PutBucketPolicy that returns a future to the operation so that it can be executed in parallel to other requests.
  3885. */
  3886. template<typename PutBucketPolicyRequestT = Model::PutBucketPolicyRequest>
  3887. Model::PutBucketPolicyOutcomeCallable PutBucketPolicyCallable(const PutBucketPolicyRequestT& request) const
  3888. {
  3889. return SubmitCallable(&S3Client::PutBucketPolicy, request);
  3890. }
  3891. /**
  3892. * An Async wrapper for PutBucketPolicy that queues the request into a thread executor and triggers associated callback when operation has finished.
  3893. */
  3894. template<typename PutBucketPolicyRequestT = Model::PutBucketPolicyRequest>
  3895. void PutBucketPolicyAsync(const PutBucketPolicyRequestT& request, const PutBucketPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  3896. {
  3897. return SubmitAsync(&S3Client::PutBucketPolicy, request, handler, context);
  3898. }
  3899. /**
  3900. * <p> Creates a replication configuration or replaces an existing one. For more
  3901. * information, see <a
  3902. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html">Replication</a>
  3903. * in the <i>Amazon S3 User Guide</i>. </p> <p>Specify the replication
  3904. * configuration in the request body. In the replication configuration, you provide
  3905. * the name of the destination bucket or buckets where you want Amazon S3 to
  3906. * replicate objects, the IAM role that Amazon S3 can assume to replicate objects
  3907. * on your behalf, and other relevant information.</p> <p>A replication
  3908. * configuration must include at least one rule, and can contain a maximum of
  3909. * 1,000. Each rule identifies a subset of objects to replicate by filtering the
  3910. * objects in the source bucket. To choose additional subsets of objects to
  3911. * replicate, add a rule for each subset.</p> <p>To specify a subset of the objects
  3912. * in the source bucket to apply a replication rule to, add the Filter element as a
  3913. * child of the Rule element. You can filter objects based on an object key prefix,
  3914. * one or more object tags, or both. When you add the Filter element in the
  3915. * configuration, you must also add the following elements:
  3916. * <code>DeleteMarkerReplication</code>, <code>Status</code>, and
  3917. * <code>Priority</code>.</p> <p>If you are using an earlier version of the
  3918. * replication configuration, Amazon S3 handles replication of delete markers
  3919. * differently. For more information, see <a
  3920. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations">Backward
  3921. * Compatibility</a>.</p> <p>For information about enabling versioning on a
  3922. * bucket, see <a
  3923. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html">Using
  3924. * Versioning</a>.</p> <p> <b>Handling Replication of Encrypted Objects</b> </p>
  3925. * <p>By default, Amazon S3 doesn't replicate objects that are stored at rest using
  3926. * server-side encryption with KMS keys. To replicate Amazon Web Services
  3927. * KMS-encrypted objects, add the following: <code>SourceSelectionCriteria</code>,
  3928. * <code>SseKmsEncryptedObjects</code>, <code>Status</code>,
  3929. * <code>EncryptionConfiguration</code>, and <code>ReplicaKmsKeyID</code>. For
  3930. * information about replication configuration, see <a
  3931. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-config-for-kms-objects.html">Replicating
  3932. * Objects Created with SSE Using KMS keys</a>.</p> <p>For information on
  3933. * <code>PutBucketReplication</code> errors, see <a
  3934. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ReplicationErrorCodeList">List
  3935. * of replication-related error codes</a> </p> <p> <b>Permissions</b> </p> <p>To
  3936. * create a <code>PutBucketReplication</code> request, you must have
  3937. * <code>s3:PutReplicationConfiguration</code> permissions for the bucket. </p>
  3938. * <p>By default, a resource owner, in this case the Amazon Web Services account
  3939. * that created the bucket, can perform this operation. The resource owner can also
  3940. * grant others permissions to perform the operation. For more information about
  3941. * permissions, see <a
  3942. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
  3943. * Permissions in a Policy</a> and <a
  3944. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  3945. * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>To perform
  3946. * this operation, the user or role performing the action must have the <a
  3947. * href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html">iam:PassRole</a>
  3948. * permission.</p> <p>The following operations are related to
  3949. * <code>PutBucketReplication</code>:</p> <ul> <li> <p> <a
  3950. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html">GetBucketReplication</a>
  3951. * </p> </li> <li> <p> <a
  3952. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketReplication.html">DeleteBucketReplication</a>
  3953. * </p> </li> </ul><p><h3>See Also:</h3> <a
  3954. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication">AWS
  3955. * API Reference</a></p>
  3956. */
  3957. virtual Model::PutBucketReplicationOutcome PutBucketReplication(const Model::PutBucketReplicationRequest& request) const;
  3958. /**
  3959. * A Callable wrapper for PutBucketReplication that returns a future to the operation so that it can be executed in parallel to other requests.
  3960. */
  3961. template<typename PutBucketReplicationRequestT = Model::PutBucketReplicationRequest>
  3962. Model::PutBucketReplicationOutcomeCallable PutBucketReplicationCallable(const PutBucketReplicationRequestT& request) const
  3963. {
  3964. return SubmitCallable(&S3Client::PutBucketReplication, request);
  3965. }
  3966. /**
  3967. * An Async wrapper for PutBucketReplication that queues the request into a thread executor and triggers associated callback when operation has finished.
  3968. */
  3969. template<typename PutBucketReplicationRequestT = Model::PutBucketReplicationRequest>
  3970. void PutBucketReplicationAsync(const PutBucketReplicationRequestT& request, const PutBucketReplicationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  3971. {
  3972. return SubmitAsync(&S3Client::PutBucketReplication, request, handler, context);
  3973. }
  3974. /**
  3975. * <p>Sets the request payment configuration for a bucket. By default, the bucket
  3976. * owner pays for downloads from the bucket. This configuration parameter enables
  3977. * the bucket owner (only) to specify that the person requesting the download will
  3978. * be charged for the download. For more information, see <a
  3979. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html">Requester
  3980. * Pays Buckets</a>.</p> <p>The following operations are related to
  3981. * <code>PutBucketRequestPayment</code>:</p> <ul> <li> <p> <a
  3982. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html">CreateBucket</a>
  3983. * </p> </li> <li> <p> <a
  3984. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketRequestPayment.html">GetBucketRequestPayment</a>
  3985. * </p> </li> </ul><p><h3>See Also:</h3> <a
  3986. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment">AWS
  3987. * API Reference</a></p>
  3988. */
  3989. virtual Model::PutBucketRequestPaymentOutcome PutBucketRequestPayment(const Model::PutBucketRequestPaymentRequest& request) const;
  3990. /**
  3991. * A Callable wrapper for PutBucketRequestPayment that returns a future to the operation so that it can be executed in parallel to other requests.
  3992. */
  3993. template<typename PutBucketRequestPaymentRequestT = Model::PutBucketRequestPaymentRequest>
  3994. Model::PutBucketRequestPaymentOutcomeCallable PutBucketRequestPaymentCallable(const PutBucketRequestPaymentRequestT& request) const
  3995. {
  3996. return SubmitCallable(&S3Client::PutBucketRequestPayment, request);
  3997. }
  3998. /**
  3999. * An Async wrapper for PutBucketRequestPayment that queues the request into a thread executor and triggers associated callback when operation has finished.
  4000. */
  4001. template<typename PutBucketRequestPaymentRequestT = Model::PutBucketRequestPaymentRequest>
  4002. void PutBucketRequestPaymentAsync(const PutBucketRequestPaymentRequestT& request, const PutBucketRequestPaymentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  4003. {
  4004. return SubmitAsync(&S3Client::PutBucketRequestPayment, request, handler, context);
  4005. }
  4006. /**
  4007. * <p>Sets the tags for a bucket.</p> <p>Use tags to organize your Amazon Web
  4008. * Services bill to reflect your own cost structure. To do this, sign up to get
  4009. * your Amazon Web Services account bill with tag key values included. Then, to see
  4010. * the cost of combined resources, organize your billing information according to
  4011. * resources with the same tag key values. For example, you can tag several
  4012. * resources with a specific application name, and then organize your billing
  4013. * information to see the total cost of that application across several services.
  4014. * For more information, see <a
  4015. * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html">Cost
  4016. * Allocation and Tagging</a> and <a
  4017. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/CostAllocTagging.html">Using
  4018. * Cost Allocation in Amazon S3 Bucket Tags</a>.</p> <p> When this operation
  4019. * sets the tags for a bucket, it will overwrite any current tags the bucket
  4020. * already has. You cannot use this operation to add tags to an existing list of
  4021. * tags.</p> <p>To use this operation, you must have permissions to perform
  4022. * the <code>s3:PutBucketTagging</code> action. The bucket owner has this
  4023. * permission by default and can grant this permission to others. For more
  4024. * information about permissions, see <a
  4025. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  4026. * Related to Bucket Subresource Operations</a> and <a
  4027. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  4028. * Access Permissions to Your Amazon S3 Resources</a>.</p> <p>
  4029. * <code>PutBucketTagging</code> has the following special errors:</p> <ul> <li>
  4030. * <p>Error code: <code>InvalidTagError</code> </p> <ul> <li> <p>Description: The
  4031. * tag provided was not a valid tag. This error can occur if the tag did not pass
  4032. * input validation. For information about tag restrictions, see <a
  4033. * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html">User-Defined
  4034. * Tag Restrictions</a> and <a
  4035. * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/aws-tag-restrictions.html">Amazon
  4036. * Web Services-Generated Cost Allocation Tag Restrictions</a>.</p> </li> </ul>
  4037. * </li> <li> <p>Error code: <code>MalformedXMLError</code> </p> <ul> <li>
  4038. * <p>Description: The XML provided does not match the schema.</p> </li> </ul>
  4039. * </li> <li> <p>Error code: <code>OperationAbortedError </code> </p> <ul> <li>
  4040. * <p>Description: A conflicting conditional action is currently in progress
  4041. * against this resource. Please try again.</p> </li> </ul> </li> <li> <p>Error
  4042. * code: <code>InternalError</code> </p> <ul> <li> <p>Description: The service was
  4043. * unable to apply the provided tag to the bucket.</p> </li> </ul> </li> </ul>
  4044. * <p>The following operations are related to <code>PutBucketTagging</code>:</p>
  4045. * <ul> <li> <p> <a
  4046. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html">GetBucketTagging</a>
  4047. * </p> </li> <li> <p> <a
  4048. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html">DeleteBucketTagging</a>
  4049. * </p> </li> </ul><p><h3>See Also:</h3> <a
  4050. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging">AWS
  4051. * API Reference</a></p>
  4052. */
  4053. virtual Model::PutBucketTaggingOutcome PutBucketTagging(const Model::PutBucketTaggingRequest& request) const;
  4054. /**
  4055. * A Callable wrapper for PutBucketTagging that returns a future to the operation so that it can be executed in parallel to other requests.
  4056. */
  4057. template<typename PutBucketTaggingRequestT = Model::PutBucketTaggingRequest>
  4058. Model::PutBucketTaggingOutcomeCallable PutBucketTaggingCallable(const PutBucketTaggingRequestT& request) const
  4059. {
  4060. return SubmitCallable(&S3Client::PutBucketTagging, request);
  4061. }
  4062. /**
  4063. * An Async wrapper for PutBucketTagging that queues the request into a thread executor and triggers associated callback when operation has finished.
  4064. */
  4065. template<typename PutBucketTaggingRequestT = Model::PutBucketTaggingRequest>
  4066. void PutBucketTaggingAsync(const PutBucketTaggingRequestT& request, const PutBucketTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  4067. {
  4068. return SubmitAsync(&S3Client::PutBucketTagging, request, handler, context);
  4069. }
  4070. /**
  4071. * <p>Sets the versioning state of an existing bucket.</p> <p>You can set the
  4072. * versioning state with one of the following values:</p> <p>
  4073. * <b>Enabled</b>—Enables versioning for the objects in the bucket. All objects
  4074. * added to the bucket receive a unique version ID.</p> <p>
  4075. * <b>Suspended</b>—Disables versioning for the objects in the bucket. All objects
  4076. * added to the bucket receive the version ID null.</p> <p>If the versioning state
  4077. * has never been set on a bucket, it has no versioning state; a <a
  4078. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html">GetBucketVersioning</a>
  4079. * request does not return a versioning state value.</p> <p>In order to enable MFA
  4080. * Delete, you must be the bucket owner. If you are the bucket owner and want to
  4081. * enable MFA Delete in the bucket versioning configuration, you must include the
  4082. * <code>x-amz-mfa request</code> header and the <code>Status</code> and the
  4083. * <code>MfaDelete</code> request elements in a request to set the versioning state
  4084. * of the bucket.</p> <p>If you have an object expiration lifecycle
  4085. * policy in your non-versioned bucket and you want to maintain the same permanent
  4086. * delete behavior when you enable versioning, you must add a noncurrent expiration
  4087. * policy. The noncurrent expiration lifecycle policy will manage the deletes of
  4088. * the noncurrent object versions in the version-enabled bucket. (A version-enabled
  4089. * bucket maintains one current and zero or more noncurrent object versions.) For
  4090. * more information, see <a
  4091. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-and-other-bucket-config">Lifecycle
  4092. * and Versioning</a>.</p> <p class="title"> <b>Related Resources</b>
  4093. * </p> <ul> <li> <p> <a
  4094. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html">CreateBucket</a>
  4095. * </p> </li> <li> <p> <a
  4096. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html">DeleteBucket</a>
  4097. * </p> </li> <li> <p> <a
  4098. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html">GetBucketVersioning</a>
  4099. * </p> </li> </ul><p><h3>See Also:</h3> <a
  4100. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning">AWS
  4101. * API Reference</a></p>
  4102. */
  4103. virtual Model::PutBucketVersioningOutcome PutBucketVersioning(const Model::PutBucketVersioningRequest& request) const;
  4104. /**
  4105. * A Callable wrapper for PutBucketVersioning that returns a future to the operation so that it can be executed in parallel to other requests.
  4106. */
  4107. template<typename PutBucketVersioningRequestT = Model::PutBucketVersioningRequest>
  4108. Model::PutBucketVersioningOutcomeCallable PutBucketVersioningCallable(const PutBucketVersioningRequestT& request) const
  4109. {
  4110. return SubmitCallable(&S3Client::PutBucketVersioning, request);
  4111. }
  4112. /**
  4113. * An Async wrapper for PutBucketVersioning that queues the request into a thread executor and triggers associated callback when operation has finished.
  4114. */
  4115. template<typename PutBucketVersioningRequestT = Model::PutBucketVersioningRequest>
  4116. void PutBucketVersioningAsync(const PutBucketVersioningRequestT& request, const PutBucketVersioningResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  4117. {
  4118. return SubmitAsync(&S3Client::PutBucketVersioning, request, handler, context);
  4119. }
  4120. /**
  4121. * <p>Sets the configuration of the website that is specified in the
  4122. * <code>website</code> subresource. To configure a bucket as a website, you can
  4123. * add this subresource on the bucket with website configuration information such
  4124. * as the file name of the index document and any redirect rules. For more
  4125. * information, see <a
  4126. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
  4127. * Websites on Amazon S3</a>.</p> <p>This PUT action requires the
  4128. * <code>S3:PutBucketWebsite</code> permission. By default, only the bucket owner
  4129. * can configure the website attached to a bucket; however, bucket owners can allow
  4130. * other users to set the website configuration by writing a bucket policy that
  4131. * grants them the <code>S3:PutBucketWebsite</code> permission.</p> <p>To redirect
  4132. * all website requests sent to the bucket's website endpoint, you add a website
  4133. * configuration with the following elements. Because all requests are sent to
  4134. * another website, you don't need to provide index document name for the
  4135. * bucket.</p> <ul> <li> <p> <code>WebsiteConfiguration</code> </p> </li> <li> <p>
  4136. * <code>RedirectAllRequestsTo</code> </p> </li> <li> <p> <code>HostName</code>
  4137. * </p> </li> <li> <p> <code>Protocol</code> </p> </li> </ul> <p>If you want
  4138. * granular control over redirects, you can use the following elements to add
  4139. * routing rules that describe conditions for redirecting requests and information
  4140. * about the redirect destination. In this case, the website configuration must
  4141. * provide an index document for the bucket, because some requests might not be
  4142. * redirected. </p> <ul> <li> <p> <code>WebsiteConfiguration</code> </p> </li> <li>
  4143. * <p> <code>IndexDocument</code> </p> </li> <li> <p> <code>Suffix</code> </p>
  4144. * </li> <li> <p> <code>ErrorDocument</code> </p> </li> <li> <p> <code>Key</code>
  4145. * </p> </li> <li> <p> <code>RoutingRules</code> </p> </li> <li> <p>
  4146. * <code>RoutingRule</code> </p> </li> <li> <p> <code>Condition</code> </p> </li>
  4147. * <li> <p> <code>HttpErrorCodeReturnedEquals</code> </p> </li> <li> <p>
  4148. * <code>KeyPrefixEquals</code> </p> </li> <li> <p> <code>Redirect</code> </p>
  4149. * </li> <li> <p> <code>Protocol</code> </p> </li> <li> <p> <code>HostName</code>
  4150. * </p> </li> <li> <p> <code>ReplaceKeyPrefixWith</code> </p> </li> <li> <p>
  4151. * <code>ReplaceKeyWith</code> </p> </li> <li> <p> <code>HttpRedirectCode</code>
  4152. * </p> </li> </ul> <p>Amazon S3 has a limitation of 50 routing rules per website
  4153. * configuration. If you require more than 50 routing rules, you can use object
  4154. * redirect. For more information, see <a
  4155. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html">Configuring
  4156. * an Object Redirect</a> in the <i>Amazon S3 User Guide</i>.</p><p><h3>See
  4157. * Also:</h3> <a
  4158. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite">AWS
  4159. * API Reference</a></p>
  4160. */
  4161. virtual Model::PutBucketWebsiteOutcome PutBucketWebsite(const Model::PutBucketWebsiteRequest& request) const;
  4162. /**
  4163. * A Callable wrapper for PutBucketWebsite that returns a future to the operation so that it can be executed in parallel to other requests.
  4164. */
  4165. template<typename PutBucketWebsiteRequestT = Model::PutBucketWebsiteRequest>
  4166. Model::PutBucketWebsiteOutcomeCallable PutBucketWebsiteCallable(const PutBucketWebsiteRequestT& request) const
  4167. {
  4168. return SubmitCallable(&S3Client::PutBucketWebsite, request);
  4169. }
  4170. /**
  4171. * An Async wrapper for PutBucketWebsite that queues the request into a thread executor and triggers associated callback when operation has finished.
  4172. */
  4173. template<typename PutBucketWebsiteRequestT = Model::PutBucketWebsiteRequest>
  4174. void PutBucketWebsiteAsync(const PutBucketWebsiteRequestT& request, const PutBucketWebsiteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  4175. {
  4176. return SubmitAsync(&S3Client::PutBucketWebsite, request, handler, context);
  4177. }
  4178. /**
  4179. * <p>Adds an object to a bucket. You must have WRITE permissions on a bucket to
  4180. * add an object to it.</p> <p>Amazon S3 never adds partial objects; if you receive
  4181. * a success response, Amazon S3 added the entire object to the bucket.</p>
  4182. * <p>Amazon S3 is a distributed system. If it receives multiple write requests for
  4183. * the same object simultaneously, it overwrites all but the last object written.
  4184. * Amazon S3 does not provide object locking; if you need this, make sure to build
  4185. * it into your application layer or use versioning instead.</p> <p>To ensure that
  4186. * data is not corrupted traversing the network, use the <code>Content-MD5</code>
  4187. * header. When you use this header, Amazon S3 checks the object against the
  4188. * provided MD5 value and, if they do not match, returns an error. Additionally,
  4189. * you can calculate the MD5 while putting an object to Amazon S3 and compare the
  4190. * returned ETag to the calculated MD5 value.</p> <ul> <li> <p>To
  4191. * successfully complete the <code>PutObject</code> request, you must have the
  4192. * <code>s3:PutObject</code> in your IAM permissions.</p> </li> <li> <p>To
  4193. * successfully change the objects acl of your <code>PutObject</code> request, you
  4194. * must have the <code>s3:PutObjectAcl</code> in your IAM permissions.</p> </li>
  4195. * <li> <p> The <code>Content-MD5</code> header is required for any request to
  4196. * upload an object with a retention period configured using Amazon S3 Object Lock.
  4197. * For more information about Amazon S3 Object Lock, see <a
  4198. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html">Amazon
  4199. * S3 Object Lock Overview</a> in the <i>Amazon S3 User Guide</i>. </p> </li> </ul>
  4200. * <p> <b>Server-side Encryption</b> </p> <p>You can optionally request
  4201. * server-side encryption. With server-side encryption, Amazon S3 encrypts your
  4202. * data as it writes it to disks in its data centers and decrypts the data when you
  4203. * access it. You have the option to provide your own encryption key or use Amazon
  4204. * Web Services managed encryption keys (SSE-S3 or SSE-KMS). For more information,
  4205. * see <a
  4206. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">Using
  4207. * Server-Side Encryption</a>.</p> <p>If you request server-side encryption using
  4208. * Amazon Web Services Key Management Service (SSE-KMS), you can enable an S3
  4209. * Bucket Key at the object-level. For more information, see <a
  4210. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html">Amazon S3
  4211. * Bucket Keys</a> in the <i>Amazon S3 User Guide</i>.</p> <p> <b>Access Control
  4212. * List (ACL)-Specific Request Headers</b> </p> <p>You can use headers to grant
  4213. * ACL- based permissions. By default, all objects are private. Only the owner has
  4214. * full access control. When adding a new object, you can grant permissions to
  4215. * individual Amazon Web Services accounts or to predefined groups defined by
  4216. * Amazon S3. These permissions are then added to the ACL on the object. For more
  4217. * information, see <a
  4218. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
  4219. * Control List (ACL) Overview</a> and <a
  4220. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html">Managing
  4221. * ACLs Using the REST API</a>. </p> <p>If the bucket that you're uploading objects
  4222. * to uses the bucket owner enforced setting for S3 Object Ownership, ACLs are
  4223. * disabled and no longer affect permissions. Buckets that use this setting only
  4224. * accept PUT requests that don't specify an ACL or PUT requests that specify
  4225. * bucket owner full control ACLs, such as the
  4226. * <code>bucket-owner-full-control</code> canned ACL or an equivalent form of this
  4227. * ACL expressed in the XML format. PUT requests that contain other ACLs (for
  4228. * example, custom grants to certain Amazon Web Services accounts) fail and return
  4229. * a <code>400</code> error with the error code
  4230. * <code>AccessControlListNotSupported</code>.</p> <p>For more information, see <a
  4231. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html">
  4232. * Controlling ownership of objects and disabling ACLs</a> in the <i>Amazon S3 User
  4233. * Guide</i>.</p> <p>If your bucket uses the bucket owner enforced setting
  4234. * for Object Ownership, all objects written to the bucket by any account will be
  4235. * owned by the bucket owner.</p> <p> <b>Storage Class Options</b> </p>
  4236. * <p>By default, Amazon S3 uses the STANDARD Storage Class to store newly created
  4237. * objects. The STANDARD storage class provides high durability and high
  4238. * availability. Depending on performance needs, you can specify a different
  4239. * Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
  4240. * more information, see <a
  4241. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
  4242. * Classes</a> in the <i>Amazon S3 User Guide</i>.</p> <p> <b>Versioning</b> </p>
  4243. * <p>If you enable versioning for a bucket, Amazon S3 automatically generates a
  4244. * unique version ID for the object being stored. Amazon S3 returns this ID in the
  4245. * response. When you enable versioning for a bucket, if Amazon S3 receives
  4246. * multiple write requests for the same object simultaneously, it stores all of the
  4247. * objects.</p> <p>For more information about versioning, see <a
  4248. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/AddingObjectstoVersioningEnabledBuckets.html">Adding
  4249. * Objects to Versioning Enabled Buckets</a>. For information about returning the
  4250. * versioning state of a bucket, see <a
  4251. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html">GetBucketVersioning</a>.
  4252. * </p> <p class="title"> <b>Related Resources</b> </p> <ul> <li> <p> <a
  4253. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject</a>
  4254. * </p> </li> <li> <p> <a
  4255. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html">DeleteObject</a>
  4256. * </p> </li> </ul><p><h3>See Also:</h3> <a
  4257. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject">AWS API
  4258. * Reference</a></p>
  4259. */
  4260. virtual Model::PutObjectOutcome PutObject(const Model::PutObjectRequest& request) const;
  4261. /**
  4262. * A Callable wrapper for PutObject that returns a future to the operation so that it can be executed in parallel to other requests.
  4263. */
  4264. virtual Model::PutObjectOutcomeCallable PutObjectCallable(const Model::PutObjectRequest& request) const;
  4265. /**
  4266. * An Async wrapper for PutObject that queues the request into a thread executor and triggers associated callback when operation has finished.
  4267. */
  4268. virtual void PutObjectAsync(const Model::PutObjectRequest& request, const PutObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
  4269. /**
  4270. * <p>Uses the <code>acl</code> subresource to set the access control list (ACL)
  4271. * permissions for a new or existing object in an S3 bucket. You must have
  4272. * <code>WRITE_ACP</code> permission to set the ACL of an object. For more
  4273. * information, see <a
  4274. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#permissions">What
  4275. * permissions can I grant?</a> in the <i>Amazon S3 User Guide</i>.</p> <p>This
  4276. * action is not supported by Amazon S3 on Outposts.</p> <p>Depending on your
  4277. * application needs, you can choose to set the ACL on an object using either the
  4278. * request body or the headers. For example, if you have an existing application
  4279. * that updates a bucket ACL using the request body, you can continue to use that
  4280. * approach. For more information, see <a
  4281. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
  4282. * Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
  4283. * <p>If your bucket uses the bucket owner enforced setting for S3
  4284. * Object Ownership, ACLs are disabled and no longer affect permissions. You must
  4285. * use policies to grant access to your bucket and the objects in it. Requests to
  4286. * set ACLs or update ACLs fail and return the
  4287. * <code>AccessControlListNotSupported</code> error code. Requests to read ACLs are
  4288. * still supported. For more information, see <a
  4289. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html">Controlling
  4290. * object ownership</a> in the <i>Amazon S3 User Guide</i>.</p> <p>
  4291. * <b>Access Permissions</b> </p> <p>You can set access permissions using one of
  4292. * the following methods:</p> <ul> <li> <p>Specify a canned ACL with the
  4293. * <code>x-amz-acl</code> request header. Amazon S3 supports a set of predefined
  4294. * ACLs, known as canned ACLs. Each canned ACL has a predefined set of grantees and
  4295. * permissions. Specify the canned ACL name as the value of <code>x-amz-ac</code>l.
  4296. * If you use this header, you cannot use other access control-specific headers in
  4297. * your request. For more information, see <a
  4298. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
  4299. * ACL</a>.</p> </li> <li> <p>Specify access permissions explicitly with the
  4300. * <code>x-amz-grant-read</code>, <code>x-amz-grant-read-acp</code>,
  4301. * <code>x-amz-grant-write-acp</code>, and <code>x-amz-grant-full-control</code>
  4302. * headers. When using these headers, you specify explicit access permissions and
  4303. * grantees (Amazon Web Services accounts or Amazon S3 groups) who will receive the
  4304. * permission. If you use these ACL-specific headers, you cannot use
  4305. * <code>x-amz-acl</code> header to set a canned ACL. These parameters map to the
  4306. * set of permissions that Amazon S3 supports in an ACL. For more information, see
  4307. * <a
  4308. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access
  4309. * Control List (ACL) Overview</a>.</p> <p>You specify each grantee as a type=value
  4310. * pair, where the type is one of the following:</p> <ul> <li> <p> <code>id</code>
  4311. * – if the value specified is the canonical user ID of an Amazon Web Services
  4312. * account</p> </li> <li> <p> <code>uri</code> – if you are granting permissions to
  4313. * a predefined group</p> </li> <li> <p> <code>emailAddress</code> – if the value
  4314. * specified is the email address of an Amazon Web Services account</p>
  4315. * <p>Using email addresses to specify a grantee is only supported in the following
  4316. * Amazon Web Services Regions: </p> <ul> <li> <p>US East (N. Virginia)</p> </li>
  4317. * <li> <p>US West (N. California)</p> </li> <li> <p> US West (Oregon)</p> </li>
  4318. * <li> <p> Asia Pacific (Singapore)</p> </li> <li> <p>Asia Pacific (Sydney)</p>
  4319. * </li> <li> <p>Asia Pacific (Tokyo)</p> </li> <li> <p>Europe (Ireland)</p> </li>
  4320. * <li> <p>South America (São Paulo)</p> </li> </ul> <p>For a list of all the
  4321. * Amazon S3 supported Regions and endpoints, see <a
  4322. * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
  4323. * and Endpoints</a> in the Amazon Web Services General Reference.</p>
  4324. * </li> </ul> <p>For example, the following <code>x-amz-grant-read</code> header
  4325. * grants list objects permission to the two Amazon Web Services accounts
  4326. * identified by their email addresses.</p> <p> <code>x-amz-grant-read:
  4327. * emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com" </code> </p> </li>
  4328. * </ul> <p>You can use either a canned ACL or specify access permissions
  4329. * explicitly. You cannot do both.</p> <p> <b>Grantee Values</b> </p> <p>You can
  4330. * specify the person (grantee) to whom you're assigning access rights (using
  4331. * request elements) in the following ways:</p> <ul> <li> <p>By the person's
  4332. * ID:</p> <p> <code>&lt;Grantee
  4333. * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4334. * 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;
  4335. * &lt;/Grantee&gt;</code> </p> <p>DisplayName is optional and ignored in the
  4336. * request.</p> </li> <li> <p>By URI:</p> <p> <code>&lt;Grantee
  4337. * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4338. * 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>
  4339. * </p> </li> <li> <p>By Email address:</p> <p> <code>&lt;Grantee
  4340. * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4341. * xsi:type="AmazonCustomerByEmail"&gt;&lt;EmailAddress&gt;&lt;&gt;Grantees@email.com&lt;&gt;&lt;/EmailAddress&gt;lt;/Grantee&gt;</code>
  4342. * </p> <p>The grantee is resolved to the CanonicalUser and, in a response to a GET
  4343. * Object acl request, appears as the CanonicalUser.</p> <p>Using email
  4344. * addresses to specify a grantee is only supported in the following Amazon Web
  4345. * Services Regions: </p> <ul> <li> <p>US East (N. Virginia)</p> </li> <li> <p>US
  4346. * West (N. California)</p> </li> <li> <p> US West (Oregon)</p> </li> <li> <p> Asia
  4347. * Pacific (Singapore)</p> </li> <li> <p>Asia Pacific (Sydney)</p> </li> <li>
  4348. * <p>Asia Pacific (Tokyo)</p> </li> <li> <p>Europe (Ireland)</p> </li> <li>
  4349. * <p>South America (São Paulo)</p> </li> </ul> <p>For a list of all the Amazon S3
  4350. * supported Regions and endpoints, see <a
  4351. * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
  4352. * and Endpoints</a> in the Amazon Web Services General Reference.</p>
  4353. * </li> </ul> <p> <b>Versioning</b> </p> <p>The ACL of an object is set at the
  4354. * object version level. By default, PUT sets the ACL of the current version of an
  4355. * object. To set the ACL of a different version, use the <code>versionId</code>
  4356. * subresource.</p> <p class="title"> <b>Related Resources</b> </p> <ul> <li> <p>
  4357. * <a
  4358. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject</a>
  4359. * </p> </li> <li> <p> <a
  4360. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>
  4361. * </p> </li> </ul><p><h3>See Also:</h3> <a
  4362. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl">AWS API
  4363. * Reference</a></p>
  4364. */
  4365. virtual Model::PutObjectAclOutcome PutObjectAcl(const Model::PutObjectAclRequest& request) const;
  4366. /**
  4367. * A Callable wrapper for PutObjectAcl that returns a future to the operation so that it can be executed in parallel to other requests.
  4368. */
  4369. template<typename PutObjectAclRequestT = Model::PutObjectAclRequest>
  4370. Model::PutObjectAclOutcomeCallable PutObjectAclCallable(const PutObjectAclRequestT& request) const
  4371. {
  4372. return SubmitCallable(&S3Client::PutObjectAcl, request);
  4373. }
  4374. /**
  4375. * An Async wrapper for PutObjectAcl that queues the request into a thread executor and triggers associated callback when operation has finished.
  4376. */
  4377. template<typename PutObjectAclRequestT = Model::PutObjectAclRequest>
  4378. void PutObjectAclAsync(const PutObjectAclRequestT& request, const PutObjectAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  4379. {
  4380. return SubmitAsync(&S3Client::PutObjectAcl, request, handler, context);
  4381. }
  4382. /**
  4383. * <p>Applies a legal hold configuration to the specified object. For more
  4384. * information, see <a
  4385. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
  4386. * Objects</a>.</p> <p>This action is not supported by Amazon S3 on
  4387. * Outposts.</p><p><h3>See Also:</h3> <a
  4388. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLegalHold">AWS
  4389. * API Reference</a></p>
  4390. */
  4391. virtual Model::PutObjectLegalHoldOutcome PutObjectLegalHold(const Model::PutObjectLegalHoldRequest& request) const;
  4392. /**
  4393. * A Callable wrapper for PutObjectLegalHold that returns a future to the operation so that it can be executed in parallel to other requests.
  4394. */
  4395. template<typename PutObjectLegalHoldRequestT = Model::PutObjectLegalHoldRequest>
  4396. Model::PutObjectLegalHoldOutcomeCallable PutObjectLegalHoldCallable(const PutObjectLegalHoldRequestT& request) const
  4397. {
  4398. return SubmitCallable(&S3Client::PutObjectLegalHold, request);
  4399. }
  4400. /**
  4401. * An Async wrapper for PutObjectLegalHold that queues the request into a thread executor and triggers associated callback when operation has finished.
  4402. */
  4403. template<typename PutObjectLegalHoldRequestT = Model::PutObjectLegalHoldRequest>
  4404. void PutObjectLegalHoldAsync(const PutObjectLegalHoldRequestT& request, const PutObjectLegalHoldResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  4405. {
  4406. return SubmitAsync(&S3Client::PutObjectLegalHold, request, handler, context);
  4407. }
  4408. /**
  4409. * <p>Places an Object Lock configuration on the specified bucket. The rule
  4410. * specified in the Object Lock configuration will be applied by default to every
  4411. * new object placed in the specified bucket. For more information, see <a
  4412. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
  4413. * Objects</a>. </p> <ul> <li> <p>The <code>DefaultRetention</code> settings
  4414. * require both a mode and a period.</p> </li> <li> <p>The
  4415. * <code>DefaultRetention</code> period can be either <code>Days</code> or
  4416. * <code>Years</code> but you must select one. You cannot specify <code>Days</code>
  4417. * and <code>Years</code> at the same time.</p> </li> <li> <p>You can only enable
  4418. * Object Lock for new buckets. If you want to turn on Object Lock for an existing
  4419. * bucket, contact Amazon Web Services Support.</p> </li> </ul> <p><h3>See
  4420. * Also:</h3> <a
  4421. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLockConfiguration">AWS
  4422. * API Reference</a></p>
  4423. */
  4424. virtual Model::PutObjectLockConfigurationOutcome PutObjectLockConfiguration(const Model::PutObjectLockConfigurationRequest& request) const;
  4425. /**
  4426. * A Callable wrapper for PutObjectLockConfiguration that returns a future to the operation so that it can be executed in parallel to other requests.
  4427. */
  4428. template<typename PutObjectLockConfigurationRequestT = Model::PutObjectLockConfigurationRequest>
  4429. Model::PutObjectLockConfigurationOutcomeCallable PutObjectLockConfigurationCallable(const PutObjectLockConfigurationRequestT& request) const
  4430. {
  4431. return SubmitCallable(&S3Client::PutObjectLockConfiguration, request);
  4432. }
  4433. /**
  4434. * An Async wrapper for PutObjectLockConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished.
  4435. */
  4436. template<typename PutObjectLockConfigurationRequestT = Model::PutObjectLockConfigurationRequest>
  4437. void PutObjectLockConfigurationAsync(const PutObjectLockConfigurationRequestT& request, const PutObjectLockConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  4438. {
  4439. return SubmitAsync(&S3Client::PutObjectLockConfiguration, request, handler, context);
  4440. }
  4441. /**
  4442. * <p>Places an Object Retention configuration on an object. For more information,
  4443. * see <a
  4444. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Locking
  4445. * Objects</a>. Users or accounts require the <code>s3:PutObjectRetention</code>
  4446. * permission in order to place an Object Retention configuration on objects.
  4447. * Bypassing a Governance Retention configuration requires the
  4448. * <code>s3:BypassGovernanceRetention</code> permission. </p> <p>This action is not
  4449. * supported by Amazon S3 on Outposts.</p><p><h3>See Also:</h3> <a
  4450. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectRetention">AWS
  4451. * API Reference</a></p>
  4452. */
  4453. virtual Model::PutObjectRetentionOutcome PutObjectRetention(const Model::PutObjectRetentionRequest& request) const;
  4454. /**
  4455. * A Callable wrapper for PutObjectRetention that returns a future to the operation so that it can be executed in parallel to other requests.
  4456. */
  4457. template<typename PutObjectRetentionRequestT = Model::PutObjectRetentionRequest>
  4458. Model::PutObjectRetentionOutcomeCallable PutObjectRetentionCallable(const PutObjectRetentionRequestT& request) const
  4459. {
  4460. return SubmitCallable(&S3Client::PutObjectRetention, request);
  4461. }
  4462. /**
  4463. * An Async wrapper for PutObjectRetention that queues the request into a thread executor and triggers associated callback when operation has finished.
  4464. */
  4465. template<typename PutObjectRetentionRequestT = Model::PutObjectRetentionRequest>
  4466. void PutObjectRetentionAsync(const PutObjectRetentionRequestT& request, const PutObjectRetentionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  4467. {
  4468. return SubmitAsync(&S3Client::PutObjectRetention, request, handler, context);
  4469. }
  4470. /**
  4471. * <p>Sets the supplied tag-set to an object that already exists in a bucket.</p>
  4472. * <p>A tag is a key-value pair. You can associate tags with an object by sending a
  4473. * PUT request against the tagging subresource that is associated with the object.
  4474. * You can retrieve tags by sending a GET request. For more information, see <a
  4475. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html">GetObjectTagging</a>.</p>
  4476. * <p>For tagging-related restrictions related to characters and encodings, see <a
  4477. * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html">Tag
  4478. * Restrictions</a>. Note that Amazon S3 limits the maximum number of tags to 10
  4479. * tags per object.</p> <p>To use this operation, you must have permission to
  4480. * perform the <code>s3:PutObjectTagging</code> action. By default, the bucket
  4481. * owner has this permission and can grant this permission to others.</p> <p>To put
  4482. * tags of any other version, use the <code>versionId</code> query parameter. You
  4483. * also need permission for the <code>s3:PutObjectVersionTagging</code> action.</p>
  4484. * <p>For information about the Amazon S3 object tagging feature, see <a
  4485. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html">Object
  4486. * Tagging</a>.</p> <p class="title"> <b>Special Errors</b> </p> <ul> <li> <ul>
  4487. * <li> <p> <i>Code: InvalidTagError </i> </p> </li> <li> <p> <i>Cause: The tag
  4488. * provided was not a valid tag. This error can occur if the tag did not pass input
  4489. * validation. For more information, see <a
  4490. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html">Object
  4491. * Tagging</a>.</i> </p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:
  4492. * MalformedXMLError </i> </p> </li> <li> <p> <i>Cause: The XML provided does not
  4493. * match the schema.</i> </p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:
  4494. * OperationAbortedError </i> </p> </li> <li> <p> <i>Cause: A conflicting
  4495. * conditional action is currently in progress against this resource. Please try
  4496. * again.</i> </p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code: InternalError</i>
  4497. * </p> </li> <li> <p> <i>Cause: The service was unable to apply the provided tag
  4498. * to the object.</i> </p> </li> </ul> </li> </ul> <p class="title"> <b>Related
  4499. * Resources</b> </p> <ul> <li> <p> <a
  4500. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html">GetObjectTagging</a>
  4501. * </p> </li> <li> <p> <a
  4502. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html">DeleteObjectTagging</a>
  4503. * </p> </li> </ul><p><h3>See Also:</h3> <a
  4504. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging">AWS
  4505. * API Reference</a></p>
  4506. */
  4507. virtual Model::PutObjectTaggingOutcome PutObjectTagging(const Model::PutObjectTaggingRequest& request) const;
  4508. /**
  4509. * A Callable wrapper for PutObjectTagging that returns a future to the operation so that it can be executed in parallel to other requests.
  4510. */
  4511. template<typename PutObjectTaggingRequestT = Model::PutObjectTaggingRequest>
  4512. Model::PutObjectTaggingOutcomeCallable PutObjectTaggingCallable(const PutObjectTaggingRequestT& request) const
  4513. {
  4514. return SubmitCallable(&S3Client::PutObjectTagging, request);
  4515. }
  4516. /**
  4517. * An Async wrapper for PutObjectTagging that queues the request into a thread executor and triggers associated callback when operation has finished.
  4518. */
  4519. template<typename PutObjectTaggingRequestT = Model::PutObjectTaggingRequest>
  4520. void PutObjectTaggingAsync(const PutObjectTaggingRequestT& request, const PutObjectTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  4521. {
  4522. return SubmitAsync(&S3Client::PutObjectTagging, request, handler, context);
  4523. }
  4524. /**
  4525. * <p>Creates or modifies the <code>PublicAccessBlock</code> configuration for an
  4526. * Amazon S3 bucket. To use this operation, you must have the
  4527. * <code>s3:PutBucketPublicAccessBlock</code> permission. For more information
  4528. * about Amazon S3 permissions, see <a
  4529. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
  4530. * Permissions in a Policy</a>.</p> <p>When Amazon S3 evaluates the
  4531. * <code>PublicAccessBlock</code> configuration for a bucket or an object, it
  4532. * checks the <code>PublicAccessBlock</code> configuration for both the bucket (or
  4533. * the bucket that contains the object) and the bucket owner's account. If the
  4534. * <code>PublicAccessBlock</code> configurations are different between the bucket
  4535. * and the account, Amazon S3 uses the most restrictive combination of the
  4536. * bucket-level and account-level settings.</p> <p>For more
  4537. * information about when Amazon S3 considers a bucket or an object public, see <a
  4538. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status">The
  4539. * Meaning of "Public"</a>.</p> <p class="title"> <b>Related Resources</b> </p>
  4540. * <ul> <li> <p> <a
  4541. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html">GetPublicAccessBlock</a>
  4542. * </p> </li> <li> <p> <a
  4543. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html">DeletePublicAccessBlock</a>
  4544. * </p> </li> <li> <p> <a
  4545. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicyStatus.html">GetBucketPolicyStatus</a>
  4546. * </p> </li> <li> <p> <a
  4547. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html">Using
  4548. * Amazon S3 Block Public Access</a> </p> </li> </ul><p><h3>See Also:</h3> <a
  4549. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutPublicAccessBlock">AWS
  4550. * API Reference</a></p>
  4551. */
  4552. virtual Model::PutPublicAccessBlockOutcome PutPublicAccessBlock(const Model::PutPublicAccessBlockRequest& request) const;
  4553. /**
  4554. * A Callable wrapper for PutPublicAccessBlock that returns a future to the operation so that it can be executed in parallel to other requests.
  4555. */
  4556. template<typename PutPublicAccessBlockRequestT = Model::PutPublicAccessBlockRequest>
  4557. Model::PutPublicAccessBlockOutcomeCallable PutPublicAccessBlockCallable(const PutPublicAccessBlockRequestT& request) const
  4558. {
  4559. return SubmitCallable(&S3Client::PutPublicAccessBlock, request);
  4560. }
  4561. /**
  4562. * An Async wrapper for PutPublicAccessBlock that queues the request into a thread executor and triggers associated callback when operation has finished.
  4563. */
  4564. template<typename PutPublicAccessBlockRequestT = Model::PutPublicAccessBlockRequest>
  4565. void PutPublicAccessBlockAsync(const PutPublicAccessBlockRequestT& request, const PutPublicAccessBlockResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  4566. {
  4567. return SubmitAsync(&S3Client::PutPublicAccessBlock, request, handler, context);
  4568. }
  4569. /**
  4570. * <p>Restores an archived copy of an object back into Amazon S3</p> <p>This action
  4571. * is not supported by Amazon S3 on Outposts.</p> <p>This action performs the
  4572. * following types of requests: </p> <ul> <li> <p> <code>select</code> - Perform a
  4573. * select query on an archived object</p> </li> <li> <p> <code>restore an
  4574. * archive</code> - Restore an archived object</p> </li> </ul> <p>To use this
  4575. * operation, you must have permissions to perform the
  4576. * <code>s3:RestoreObject</code> action. The bucket owner has this permission by
  4577. * default and can grant this permission to others. For more information about
  4578. * permissions, see <a
  4579. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions
  4580. * Related to Bucket Subresource Operations</a> and <a
  4581. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Managing
  4582. * Access Permissions to Your Amazon S3 Resources</a> in the <i>Amazon S3 User
  4583. * Guide</i>.</p> <p> <b>Querying Archives with Select Requests</b> </p> <p>You use
  4584. * a select type of request to perform SQL queries on archived objects. The
  4585. * archived objects that are being queried by the select request must be formatted
  4586. * as uncompressed comma-separated values (CSV) files. You can run queries and
  4587. * custom analytics on your archived data without having to restore your data to a
  4588. * hotter Amazon S3 tier. For an overview about select requests, see <a
  4589. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html">Querying
  4590. * Archived Objects</a> in the <i>Amazon S3 User Guide</i>.</p> <p>When making a
  4591. * select request, do the following:</p> <ul> <li> <p>Define an output location for
  4592. * the select query's output. This must be an Amazon S3 bucket in the same Amazon
  4593. * Web Services Region as the bucket that contains the archive object that is being
  4594. * queried. The Amazon Web Services account that initiates the job must have
  4595. * permissions to write to the S3 bucket. You can specify the storage class and
  4596. * encryption for the output objects stored in the bucket. For more information
  4597. * about output, see <a
  4598. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html">Querying
  4599. * Archived Objects</a> in the <i>Amazon S3 User Guide</i>.</p> <p>For more
  4600. * information about the <code>S3</code> structure in the request body, see the
  4601. * following:</p> <ul> <li> <p> <a
  4602. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html">PutObject</a>
  4603. * </p> </li> <li> <p> <a
  4604. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Managing
  4605. * Access with ACLs</a> in the <i>Amazon S3 User Guide</i> </p> </li> <li> <p> <a
  4606. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html">Protecting
  4607. * Data Using Server-Side Encryption</a> in the <i>Amazon S3 User Guide</i> </p>
  4608. * </li> </ul> </li> <li> <p>Define the SQL expression for the <code>SELECT</code>
  4609. * type of restoration for your query in the request body's
  4610. * <code>SelectParameters</code> structure. You can use expressions like the
  4611. * following examples.</p> <ul> <li> <p>The following expression returns all
  4612. * records from the specified object.</p> <p> <code>SELECT * FROM Object</code>
  4613. * </p> </li> <li> <p>Assuming that you are not using any headers for data stored
  4614. * in the object, you can specify columns with positional headers.</p> <p>
  4615. * <code>SELECT s._1, s._2 FROM Object s WHERE s._3 &gt; 100</code> </p> </li> <li>
  4616. * <p>If you have headers and you set the <code>fileHeaderInfo</code> in the
  4617. * <code>CSV</code> structure in the request body to <code>USE</code>, you can
  4618. * specify headers in the query. (If you set the <code>fileHeaderInfo</code> field
  4619. * to <code>IGNORE</code>, the first row is skipped for the query.) You cannot mix
  4620. * ordinal positions with header column names. </p> <p> <code>SELECT s.Id,
  4621. * s.FirstName, s.SSN FROM S3Object s</code> </p> </li> </ul> </li> </ul> <p>For
  4622. * more information about using SQL with S3 Glacier Select restore, see <a
  4623. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html">SQL
  4624. * Reference for Amazon S3 Select and S3 Glacier Select</a> in the <i>Amazon S3
  4625. * User Guide</i>. </p> <p>When making a select request, you can also do the
  4626. * following:</p> <ul> <li> <p>To expedite your queries, specify the
  4627. * <code>Expedited</code> tier. For more information about tiers, see "Restoring
  4628. * Archives," later in this topic.</p> </li> <li> <p>Specify details about the data
  4629. * serialization format of both the input object that is being queried and the
  4630. * serialization of the CSV-encoded query results.</p> </li> </ul> <p>The following
  4631. * are additional important facts about the select feature:</p> <ul> <li> <p>The
  4632. * output results are new Amazon S3 objects. Unlike archive retrievals, they are
  4633. * stored until explicitly deleted-manually or through a lifecycle policy.</p>
  4634. * </li> <li> <p>You can issue more than one select request on the same Amazon S3
  4635. * object. Amazon S3 doesn't deduplicate requests, so avoid issuing duplicate
  4636. * requests.</p> </li> <li> <p> Amazon S3 accepts a select request even if the
  4637. * object has already been restored. A select request doesn’t return error response
  4638. * <code>409</code>.</p> </li> </ul> <p> <b>Restoring objects</b> </p> <p>Objects
  4639. * that you archive to the S3 Glacier or S3 Glacier Deep Archive storage class, and
  4640. * S3 Intelligent-Tiering Archive or S3 Intelligent-Tiering Deep Archive tiers are
  4641. * not accessible in real time. For objects in Archive Access or Deep Archive
  4642. * Access tiers you must first initiate a restore request, and then wait until the
  4643. * object is moved into the Frequent Access tier. For objects in S3 Glacier or S3
  4644. * Glacier Deep Archive storage classes you must first initiate a restore request,
  4645. * and then wait until a temporary copy of the object is available. To access an
  4646. * archived object, you must restore the object for the duration (number of days)
  4647. * that you specify.</p> <p>To restore a specific object version, you can provide a
  4648. * version ID. If you don't provide a version ID, Amazon S3 restores the current
  4649. * version.</p> <p>When restoring an archived object (or using a select request),
  4650. * you can specify one of the following data access tier options in the
  4651. * <code>Tier</code> element of the request body: </p> <ul> <li> <p>
  4652. * <code>Expedited</code> - Expedited retrievals allow you to quickly access your
  4653. * data stored in the S3 Glacier storage class or S3 Intelligent-Tiering Archive
  4654. * tier when occasional urgent requests for a subset of archives are required. For
  4655. * all but the largest archived objects (250 MB+), data accessed using Expedited
  4656. * retrievals is typically made available within 1–5 minutes. Provisioned capacity
  4657. * ensures that retrieval capacity for Expedited retrievals is available when you
  4658. * need it. Expedited retrievals and provisioned capacity are not available for
  4659. * objects stored in the S3 Glacier Deep Archive storage class or S3
  4660. * Intelligent-Tiering Deep Archive tier.</p> </li> <li> <p> <code>Standard</code>
  4661. * - Standard retrievals allow you to access any of your archived objects within
  4662. * several hours. This is the default option for retrieval requests that do not
  4663. * specify the retrieval option. Standard retrievals typically finish within 3–5
  4664. * hours for objects stored in the S3 Glacier storage class or S3
  4665. * Intelligent-Tiering Archive tier. They typically finish within 12 hours for
  4666. * objects stored in the S3 Glacier Deep Archive storage class or S3
  4667. * Intelligent-Tiering Deep Archive tier. Standard retrievals are free for objects
  4668. * stored in S3 Intelligent-Tiering.</p> </li> <li> <p> <code>Bulk</code> - Bulk
  4669. * retrievals are the lowest-cost retrieval option in S3 Glacier, enabling you to
  4670. * retrieve large amounts, even petabytes, of data inexpensively. Bulk retrievals
  4671. * typically finish within 5–12 hours for objects stored in the S3 Glacier storage
  4672. * class or S3 Intelligent-Tiering Archive tier. They typically finish within 48
  4673. * hours for objects stored in the S3 Glacier Deep Archive storage class or S3
  4674. * Intelligent-Tiering Deep Archive tier. Bulk retrievals are free for objects
  4675. * stored in S3 Intelligent-Tiering.</p> </li> </ul> <p>For more information about
  4676. * archive retrieval options and provisioned capacity for <code>Expedited</code>
  4677. * data access, see <a
  4678. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html">Restoring
  4679. * Archived Objects</a> in the <i>Amazon S3 User Guide</i>. </p> <p>You can use
  4680. * Amazon S3 restore speed upgrade to change the restore speed to a faster speed
  4681. * while it is in progress. For more information, see <a
  4682. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html#restoring-objects-upgrade-tier.title.html">
  4683. * Upgrading the speed of an in-progress restore</a> in the <i>Amazon S3 User
  4684. * Guide</i>. </p> <p>To get the status of object restoration, you can send a
  4685. * <code>HEAD</code> request. Operations return the <code>x-amz-restore</code>
  4686. * header, which provides information about the restoration status, in the
  4687. * response. You can use Amazon S3 event notifications to notify you when a restore
  4688. * is initiated or completed. For more information, see <a
  4689. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Configuring
  4690. * Amazon S3 Event Notifications</a> in the <i>Amazon S3 User Guide</i>.</p>
  4691. * <p>After restoring an archived object, you can update the restoration period by
  4692. * reissuing the request with a new period. Amazon S3 updates the restoration
  4693. * period relative to the current time and charges only for the request-there are
  4694. * no data transfer charges. You cannot update the restoration period when Amazon
  4695. * S3 is actively processing your current restore request for the object.</p> <p>If
  4696. * your bucket has a lifecycle configuration with a rule that includes an
  4697. * expiration action, the object expiration overrides the life span that you
  4698. * specify in a restore request. For example, if you restore an object copy for 10
  4699. * days, but the object is scheduled to expire in 3 days, Amazon S3 deletes the
  4700. * object in 3 days. For more information about lifecycle configuration, see <a
  4701. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html">PutBucketLifecycleConfiguration</a>
  4702. * and <a
  4703. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html">Object
  4704. * Lifecycle Management</a> in <i>Amazon S3 User Guide</i>.</p> <p>
  4705. * <b>Responses</b> </p> <p>A successful action returns either the <code>200
  4706. * OK</code> or <code>202 Accepted</code> status code. </p> <ul> <li> <p>If the
  4707. * object is not previously restored, then Amazon S3 returns <code>202
  4708. * Accepted</code> in the response. </p> </li> <li> <p>If the object is previously
  4709. * restored, Amazon S3 returns <code>200 OK</code> in the response. </p> </li>
  4710. * </ul> <p class="title"> <b>Special Errors</b> </p> <ul> <li> <ul> <li> <p>
  4711. * <i>Code: RestoreAlreadyInProgress</i> </p> </li> <li> <p> <i>Cause: Object
  4712. * restore is already in progress. (This error does not apply to SELECT type
  4713. * requests.)</i> </p> </li> <li> <p> <i>HTTP Status Code: 409 Conflict</i> </p>
  4714. * </li> <li> <p> <i>SOAP Fault Code Prefix: Client</i> </p> </li> </ul> </li> <li>
  4715. * <ul> <li> <p> <i>Code: GlacierExpeditedRetrievalNotAvailable</i> </p> </li> <li>
  4716. * <p> <i>Cause: expedited retrievals are currently not available. Try again later.
  4717. * (Returned if there is insufficient capacity to process the Expedited request.
  4718. * This error applies only to Expedited retrievals and not to S3 Standard or Bulk
  4719. * retrievals.)</i> </p> </li> <li> <p> <i>HTTP Status Code: 503</i> </p> </li>
  4720. * <li> <p> <i>SOAP Fault Code Prefix: N/A</i> </p> </li> </ul> </li> </ul> <p
  4721. * class="title"> <b>Related Resources</b> </p> <ul> <li> <p> <a
  4722. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html">PutBucketLifecycleConfiguration</a>
  4723. * </p> </li> <li> <p> <a
  4724. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html">GetBucketNotificationConfiguration</a>
  4725. * </p> </li> <li> <p> <a
  4726. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html">SQL
  4727. * Reference for Amazon S3 Select and S3 Glacier Select </a> in the <i>Amazon S3
  4728. * User Guide</i> </p> </li> </ul><p><h3>See Also:</h3> <a
  4729. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject">AWS
  4730. * API Reference</a></p>
  4731. */
  4732. virtual Model::RestoreObjectOutcome RestoreObject(const Model::RestoreObjectRequest& request) const;
  4733. /**
  4734. * A Callable wrapper for RestoreObject that returns a future to the operation so that it can be executed in parallel to other requests.
  4735. */
  4736. template<typename RestoreObjectRequestT = Model::RestoreObjectRequest>
  4737. Model::RestoreObjectOutcomeCallable RestoreObjectCallable(const RestoreObjectRequestT& request) const
  4738. {
  4739. return SubmitCallable(&S3Client::RestoreObject, request);
  4740. }
  4741. /**
  4742. * An Async wrapper for RestoreObject that queues the request into a thread executor and triggers associated callback when operation has finished.
  4743. */
  4744. template<typename RestoreObjectRequestT = Model::RestoreObjectRequest>
  4745. void RestoreObjectAsync(const RestoreObjectRequestT& request, const RestoreObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  4746. {
  4747. return SubmitAsync(&S3Client::RestoreObject, request, handler, context);
  4748. }
  4749. /**
  4750. * <p>This action filters the contents of an Amazon S3 object based on a simple
  4751. * structured query language (SQL) statement. In the request, along with the SQL
  4752. * expression, you must also specify a data serialization format (JSON, CSV, or
  4753. * Apache Parquet) of the object. Amazon S3 uses this format to parse object data
  4754. * into records, and returns only records that match the specified SQL expression.
  4755. * You must also specify the data serialization format for the response.</p>
  4756. * <p>This action is not supported by Amazon S3 on Outposts.</p> <p>For more
  4757. * information about Amazon S3 Select, see <a
  4758. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html">Selecting
  4759. * Content from Objects</a> and <a
  4760. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-glacier-select-sql-reference-select.html">SELECT
  4761. * Command</a> in the <i>Amazon S3 User Guide</i>.</p> <p>For more information
  4762. * about using SQL with Amazon S3 Select, see <a
  4763. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html">
  4764. * SQL Reference for Amazon S3 Select and S3 Glacier Select</a> in the <i>Amazon S3
  4765. * User Guide</i>.</p> <p/> <p> <b>Permissions</b> </p> <p>You must have
  4766. * <code>s3:GetObject</code> permission for this operation. Amazon S3 Select does
  4767. * not support anonymous access. For more information about permissions, see <a
  4768. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
  4769. * Permissions in a Policy</a> in the <i>Amazon S3 User Guide</i>.</p> <p/> <p>
  4770. * <i>Object Data Formats</i> </p> <p>You can use Amazon S3 Select to query objects
  4771. * that have the following format properties:</p> <ul> <li> <p> <i>CSV, JSON, and
  4772. * Parquet</i> - Objects must be in CSV, JSON, or Parquet format.</p> </li> <li>
  4773. * <p> <i>UTF-8</i> - UTF-8 is the only encoding type Amazon S3 Select
  4774. * supports.</p> </li> <li> <p> <i>GZIP or BZIP2</i> - CSV and JSON files can be
  4775. * compressed using GZIP or BZIP2. GZIP and BZIP2 are the only compression formats
  4776. * that Amazon S3 Select supports for CSV and JSON files. Amazon S3 Select supports
  4777. * columnar compression for Parquet using GZIP or Snappy. Amazon S3 Select does not
  4778. * support whole-object compression for Parquet objects.</p> </li> <li> <p>
  4779. * <i>Server-side encryption</i> - Amazon S3 Select supports querying objects that
  4780. * are protected with server-side encryption.</p> <p>For objects that are encrypted
  4781. * with customer-provided encryption keys (SSE-C), you must use HTTPS, and you must
  4782. * use the headers that are documented in the <a
  4783. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>.
  4784. * For more information about SSE-C, see <a
  4785. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
  4786. * Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3
  4787. * User Guide</i>.</p> <p>For objects that are encrypted with Amazon S3 managed
  4788. * encryption keys (SSE-S3) and Amazon Web Services KMS keys (SSE-KMS), server-side
  4789. * encryption is handled transparently, so you don't need to specify anything. For
  4790. * more information about server-side encryption, including SSE-S3 and SSE-KMS, see
  4791. * <a
  4792. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html">Protecting
  4793. * Data Using Server-Side Encryption</a> in the <i>Amazon S3 User Guide</i>.</p>
  4794. * </li> </ul> <p> <b>Working with the Response Body</b> </p> <p>Given the response
  4795. * size is unknown, Amazon S3 Select streams the response as a series of messages
  4796. * and includes a <code>Transfer-Encoding</code> header with <code>chunked</code>
  4797. * as its value in the response. For more information, see <a
  4798. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTSelectObjectAppendix.html">Appendix:
  4799. * SelectObjectContent Response</a>.</p> <p/> <p> <b>GetObject Support</b> </p>
  4800. * <p>The <code>SelectObjectContent</code> action does not support the following
  4801. * <code>GetObject</code> functionality. For more information, see <a
  4802. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>.</p>
  4803. * <ul> <li> <p> <code>Range</code>: Although you can specify a scan range for an
  4804. * Amazon S3 Select request (see <a
  4805. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html#AmazonS3-SelectObjectContent-request-ScanRange">SelectObjectContentRequest
  4806. * - ScanRange</a> in the request parameters), you cannot specify the range of
  4807. * bytes of an object to return. </p> </li> <li> <p>GLACIER, DEEP_ARCHIVE and
  4808. * REDUCED_REDUNDANCY storage classes: You cannot specify the GLACIER,
  4809. * DEEP_ARCHIVE, or <code>REDUCED_REDUNDANCY</code> storage classes. For more
  4810. * information, about storage classes see <a
  4811. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#storage-class-intro">Storage
  4812. * Classes</a> in the <i>Amazon S3 User Guide</i>.</p> </li> </ul> <p/> <p>
  4813. * <b>Special Errors</b> </p> <p>For a list of special errors for this operation,
  4814. * see <a
  4815. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#SelectObjectContentErrorCodeList">List
  4816. * of SELECT Object Content Error Codes</a> </p> <p class="title"> <b>Related
  4817. * Resources</b> </p> <ul> <li> <p> <a
  4818. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>
  4819. * </p> </li> <li> <p> <a
  4820. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html">GetBucketLifecycleConfiguration</a>
  4821. * </p> </li> <li> <p> <a
  4822. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html">PutBucketLifecycleConfiguration</a>
  4823. * </p> </li> </ul><p><h3>See Also:</h3> <a
  4824. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent">AWS
  4825. * API Reference</a></p>
  4826. */
  4827. virtual Model::SelectObjectContentOutcome SelectObjectContent(Model::SelectObjectContentRequest& request) const;
  4828. /**
  4829. * A Callable wrapper for SelectObjectContent that returns a future to the operation so that it can be executed in parallel to other requests.
  4830. */
  4831. template<typename SelectObjectContentRequestT = Model::SelectObjectContentRequest>
  4832. Model::SelectObjectContentOutcomeCallable SelectObjectContentCallable(SelectObjectContentRequestT& request) const
  4833. {
  4834. return SubmitCallable(&S3Client::SelectObjectContent, request);
  4835. }
  4836. /**
  4837. * An Async wrapper for SelectObjectContent that queues the request into a thread executor and triggers associated callback when operation has finished.
  4838. */
  4839. template<typename SelectObjectContentRequestT = Model::SelectObjectContentRequest>
  4840. void SelectObjectContentAsync(SelectObjectContentRequestT& request, const SelectObjectContentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  4841. {
  4842. return SubmitAsync(&S3Client::SelectObjectContent, request, handler, context);
  4843. }
  4844. /**
  4845. * <p>Uploads a part in a multipart upload.</p> <p>In this operation, you
  4846. * provide part data in your request. However, you have an option to specify your
  4847. * existing Amazon S3 object as a data source for the part you are uploading. To
  4848. * upload a part from an existing object, you use the <a
  4849. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html">UploadPartCopy</a>
  4850. * operation. </p> <p>You must initiate a multipart upload (see <a
  4851. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html">CreateMultipartUpload</a>)
  4852. * before you can upload any part. In response to your initiate request, Amazon S3
  4853. * returns an upload ID, a unique identifier, that you must include in your upload
  4854. * part request.</p> <p>Part numbers can be any number from 1 to 10,000, inclusive.
  4855. * A part number uniquely identifies a part and also defines its position within
  4856. * the object being created. If you upload a new part using the same part number
  4857. * that was used with a previous part, the previously uploaded part is
  4858. * overwritten.</p> <p>For information about maximum and minimum part sizes and
  4859. * other multipart upload specifications, see <a
  4860. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html">Multipart
  4861. * upload limits</a> in the <i>Amazon S3 User Guide</i>.</p> <p>To ensure that data
  4862. * is not corrupted when traversing the network, specify the
  4863. * <code>Content-MD5</code> header in the upload part request. Amazon S3 checks the
  4864. * part data against the provided MD5 value. If they do not match, Amazon S3
  4865. * returns an error. </p> <p>If the upload request is signed with Signature Version
  4866. * 4, then Amazon Web Services S3 uses the <code>x-amz-content-sha256</code> header
  4867. * as a checksum instead of <code>Content-MD5</code>. For more information see <a
  4868. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html">Authenticating
  4869. * Requests: Using the Authorization Header (Amazon Web Services Signature Version
  4870. * 4)</a>. </p> <p> <b>Note:</b> After you initiate multipart upload and upload one
  4871. * or more parts, you must either complete or abort multipart upload in order to
  4872. * stop getting charged for storage of the uploaded parts. Only after you either
  4873. * complete or abort multipart upload, Amazon S3 frees up the parts storage and
  4874. * stops charging you for the parts storage.</p> <p>For more information on
  4875. * multipart uploads, go to <a
  4876. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html">Multipart
  4877. * Upload Overview</a> in the <i>Amazon S3 User Guide </i>.</p> <p>For information
  4878. * on the permissions required to use the multipart upload API, go to <a
  4879. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
  4880. * Upload and Permissions</a> in the <i>Amazon S3 User Guide</i>.</p> <p>You can
  4881. * optionally request server-side encryption where Amazon S3 encrypts your data as
  4882. * it writes it to disks in its data centers and decrypts it for you when you
  4883. * access it. You have the option of providing your own encryption key, or you can
  4884. * use the Amazon Web Services managed encryption keys. If you choose to provide
  4885. * your own encryption key, the request headers you provide in the request must
  4886. * match the headers you used in the request to initiate the upload by using <a
  4887. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html">CreateMultipartUpload</a>.
  4888. * For more information, go to <a
  4889. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">Using
  4890. * Server-Side Encryption</a> in the <i>Amazon S3 User Guide</i>.</p>
  4891. * <p>Server-side encryption is supported by the S3 Multipart Upload actions.
  4892. * Unless you are using a customer-provided encryption key, you don't need to
  4893. * specify the encryption parameters in each UploadPart request. Instead, you only
  4894. * need to specify the server-side encryption parameters in the initial Initiate
  4895. * Multipart request. For more information, see <a
  4896. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html">CreateMultipartUpload</a>.</p>
  4897. * <p>If you requested server-side encryption using a customer-provided encryption
  4898. * key in your initiate multipart upload request, you must provide identical
  4899. * encryption information in each part upload using the following headers.</p> <ul>
  4900. * <li> <p>x-amz-server-side-encryption-customer-algorithm</p> </li> <li>
  4901. * <p>x-amz-server-side-encryption-customer-key</p> </li> <li>
  4902. * <p>x-amz-server-side-encryption-customer-key-MD5</p> </li> </ul> <p
  4903. * class="title"> <b>Special Errors</b> </p> <ul> <li> <ul> <li> <p> <i>Code:
  4904. * NoSuchUpload</i> </p> </li> <li> <p> <i>Cause: The specified multipart upload
  4905. * does not exist. The upload ID might be invalid, or the multipart upload might
  4906. * have been aborted or completed.</i> </p> </li> <li> <p> <i> HTTP Status Code:
  4907. * 404 Not Found </i> </p> </li> <li> <p> <i>SOAP Fault Code Prefix: Client</i>
  4908. * </p> </li> </ul> </li> </ul> <p class="title"> <b>Related Resources</b> </p>
  4909. * <ul> <li> <p> <a
  4910. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html">CreateMultipartUpload</a>
  4911. * </p> </li> <li> <p> <a
  4912. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html">CompleteMultipartUpload</a>
  4913. * </p> </li> <li> <p> <a
  4914. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html">AbortMultipartUpload</a>
  4915. * </p> </li> <li> <p> <a
  4916. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html">ListParts</a>
  4917. * </p> </li> <li> <p> <a
  4918. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html">ListMultipartUploads</a>
  4919. * </p> </li> </ul><p><h3>See Also:</h3> <a
  4920. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart">AWS API
  4921. * Reference</a></p>
  4922. */
  4923. virtual Model::UploadPartOutcome UploadPart(const Model::UploadPartRequest& request) const;
  4924. /**
  4925. * A Callable wrapper for UploadPart that returns a future to the operation so that it can be executed in parallel to other requests.
  4926. */
  4927. template<typename UploadPartRequestT = Model::UploadPartRequest>
  4928. Model::UploadPartOutcomeCallable UploadPartCallable(const UploadPartRequestT& request) const
  4929. {
  4930. return SubmitCallable(&S3Client::UploadPart, request);
  4931. }
  4932. /**
  4933. * An Async wrapper for UploadPart that queues the request into a thread executor and triggers associated callback when operation has finished.
  4934. */
  4935. template<typename UploadPartRequestT = Model::UploadPartRequest>
  4936. void UploadPartAsync(const UploadPartRequestT& request, const UploadPartResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  4937. {
  4938. return SubmitAsync(&S3Client::UploadPart, request, handler, context);
  4939. }
  4940. /**
  4941. * <p>Uploads a part by copying data from an existing object as data source. You
  4942. * specify the data source by adding the request header
  4943. * <code>x-amz-copy-source</code> in your request and a byte range by adding the
  4944. * request header <code>x-amz-copy-source-range</code> in your request. </p> <p>For
  4945. * information about maximum and minimum part sizes and other multipart upload
  4946. * specifications, see <a
  4947. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html">Multipart
  4948. * upload limits</a> in the <i>Amazon S3 User Guide</i>. </p> <p>Instead of
  4949. * using an existing object as part data, you might use the <a
  4950. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html">UploadPart</a>
  4951. * action and provide data in your request.</p> <p>You must initiate a
  4952. * multipart upload before you can upload any part. In response to your initiate
  4953. * request. Amazon S3 returns a unique identifier, the upload ID, that you must
  4954. * include in your upload part request.</p> <p>For more information about using the
  4955. * <code>UploadPartCopy</code> operation, see the following:</p> <ul> <li> <p>For
  4956. * conceptual information about multipart uploads, see <a
  4957. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html">Uploading
  4958. * Objects Using Multipart Upload</a> in the <i>Amazon S3 User Guide</i>.</p> </li>
  4959. * <li> <p>For information about permissions required to use the multipart upload
  4960. * API, see <a
  4961. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart
  4962. * Upload and Permissions</a> in the <i>Amazon S3 User Guide</i>.</p> </li> <li>
  4963. * <p>For information about copying objects using a single atomic action vs. a
  4964. * multipart upload, see <a
  4965. * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectOperations.html">Operations
  4966. * on Objects</a> in the <i>Amazon S3 User Guide</i>.</p> </li> <li> <p>For
  4967. * information about using server-side encryption with customer-provided encryption
  4968. * keys with the <code>UploadPartCopy</code> operation, see <a
  4969. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject</a>
  4970. * and <a
  4971. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html">UploadPart</a>.</p>
  4972. * </li> </ul> <p>Note the following additional considerations about the request
  4973. * headers <code>x-amz-copy-source-if-match</code>,
  4974. * <code>x-amz-copy-source-if-none-match</code>,
  4975. * <code>x-amz-copy-source-if-unmodified-since</code>, and
  4976. * <code>x-amz-copy-source-if-modified-since</code>:</p> <p> </p> <ul> <li> <p>
  4977. * <b>Consideration 1</b> - If both of the <code>x-amz-copy-source-if-match</code>
  4978. * and <code>x-amz-copy-source-if-unmodified-since</code> headers are present in
  4979. * the request as follows:</p> <p> <code>x-amz-copy-source-if-match</code>
  4980. * condition evaluates to <code>true</code>, and;</p> <p>
  4981. * <code>x-amz-copy-source-if-unmodified-since</code> condition evaluates to
  4982. * <code>false</code>;</p> <p>Amazon S3 returns <code>200 OK</code> and copies the
  4983. * data. </p> </li> <li> <p> <b>Consideration 2</b> - If both of the
  4984. * <code>x-amz-copy-source-if-none-match</code> and
  4985. * <code>x-amz-copy-source-if-modified-since</code> headers are present in the
  4986. * request as follows:</p> <p> <code>x-amz-copy-source-if-none-match</code>
  4987. * condition evaluates to <code>false</code>, and;</p> <p>
  4988. * <code>x-amz-copy-source-if-modified-since</code> condition evaluates to
  4989. * <code>true</code>;</p> <p>Amazon S3 returns <code>412 Precondition Failed</code>
  4990. * response code. </p> </li> </ul> <p> <b>Versioning</b> </p> <p>If your bucket has
  4991. * versioning enabled, you could have multiple versions of the same object. By
  4992. * default, <code>x-amz-copy-source</code> identifies the current version of the
  4993. * object to copy. If the current version is a delete marker and you don't specify
  4994. * a versionId in the <code>x-amz-copy-source</code>, Amazon S3 returns a 404
  4995. * error, because the object does not exist. If you specify versionId in the
  4996. * <code>x-amz-copy-source</code> and the versionId is a delete marker, Amazon S3
  4997. * returns an HTTP 400 error, because you are not allowed to specify a delete
  4998. * marker as a version for the <code>x-amz-copy-source</code>. </p> <p>You can
  4999. * optionally specify a specific version of the source object to copy by adding the
  5000. * <code>versionId</code> subresource as shown in the following example:</p> <p>
  5001. * <code>x-amz-copy-source: /bucket/object?versionId=version id</code> </p> <p
  5002. * class="title"> <b>Special Errors</b> </p> <ul> <li> <ul> <li> <p> <i>Code:
  5003. * NoSuchUpload</i> </p> </li> <li> <p> <i>Cause: The specified multipart upload
  5004. * does not exist. The upload ID might be invalid, or the multipart upload might
  5005. * have been aborted or completed.</i> </p> </li> <li> <p> <i>HTTP Status Code: 404
  5006. * Not Found</i> </p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:
  5007. * InvalidRequest</i> </p> </li> <li> <p> <i>Cause: The specified copy source is
  5008. * not supported as a byte-range copy source.</i> </p> </li> <li> <p> <i>HTTP
  5009. * Status Code: 400 Bad Request</i> </p> </li> </ul> </li> </ul> <p class="title">
  5010. * <b>Related Resources</b> </p> <ul> <li> <p> <a
  5011. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html">CreateMultipartUpload</a>
  5012. * </p> </li> <li> <p> <a
  5013. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html">UploadPart</a>
  5014. * </p> </li> <li> <p> <a
  5015. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html">CompleteMultipartUpload</a>
  5016. * </p> </li> <li> <p> <a
  5017. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html">AbortMultipartUpload</a>
  5018. * </p> </li> <li> <p> <a
  5019. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html">ListParts</a>
  5020. * </p> </li> <li> <p> <a
  5021. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html">ListMultipartUploads</a>
  5022. * </p> </li> </ul><p><h3>See Also:</h3> <a
  5023. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy">AWS
  5024. * API Reference</a></p>
  5025. */
  5026. virtual Model::UploadPartCopyOutcome UploadPartCopy(const Model::UploadPartCopyRequest& request) const;
  5027. /**
  5028. * A Callable wrapper for UploadPartCopy that returns a future to the operation so that it can be executed in parallel to other requests.
  5029. */
  5030. template<typename UploadPartCopyRequestT = Model::UploadPartCopyRequest>
  5031. Model::UploadPartCopyOutcomeCallable UploadPartCopyCallable(const UploadPartCopyRequestT& request) const
  5032. {
  5033. return SubmitCallable(&S3Client::UploadPartCopy, request);
  5034. }
  5035. /**
  5036. * An Async wrapper for UploadPartCopy that queues the request into a thread executor and triggers associated callback when operation has finished.
  5037. */
  5038. template<typename UploadPartCopyRequestT = Model::UploadPartCopyRequest>
  5039. void UploadPartCopyAsync(const UploadPartCopyRequestT& request, const UploadPartCopyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  5040. {
  5041. return SubmitAsync(&S3Client::UploadPartCopy, request, handler, context);
  5042. }
  5043. /**
  5044. * <p>Passes transformed objects to a <code>GetObject</code> operation when using
  5045. * Object Lambda access points. For information about Object Lambda access points,
  5046. * see <a
  5047. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/transforming-objects.html">Transforming
  5048. * objects with Object Lambda access points</a> in the <i>Amazon S3 User
  5049. * Guide</i>.</p> <p>This operation supports metadata that can be returned by <a
  5050. * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>,
  5051. * in addition to <code>RequestRoute</code>, <code>RequestToken</code>,
  5052. * <code>StatusCode</code>, <code>ErrorCode</code>, and <code>ErrorMessage</code>.
  5053. * The <code>GetObject</code> response metadata is supported so that the
  5054. * <code>WriteGetObjectResponse</code> caller, typically an Lambda function, can
  5055. * provide the same metadata when it internally invokes <code>GetObject</code>.
  5056. * When <code>WriteGetObjectResponse</code> is called by a customer-owned Lambda
  5057. * function, the metadata returned to the end user <code>GetObject</code> call
  5058. * might differ from what Amazon S3 would normally return.</p> <p>You can include
  5059. * any number of metadata headers. When including a metadata header, it should be
  5060. * prefaced with <code>x-amz-meta</code>. For example,
  5061. * <code>x-amz-meta-my-custom-header: MyCustomValue</code>. The primary use case
  5062. * for this is to forward <code>GetObject</code> metadata.</p> <p>Amazon Web
  5063. * Services provides some prebuilt Lambda functions that you can use with S3 Object
  5064. * Lambda to detect and redact personally identifiable information (PII) and
  5065. * decompress S3 objects. These Lambda functions are available in the Amazon Web
  5066. * Services Serverless Application Repository, and can be selected through the
  5067. * Amazon Web Services Management Console when you create your Object Lambda access
  5068. * point.</p> <p>Example 1: PII Access Control - This Lambda function uses Amazon
  5069. * Comprehend, a natural language processing (NLP) service using machine learning
  5070. * to find insights and relationships in text. It automatically detects personally
  5071. * identifiable information (PII) such as names, addresses, dates, credit card
  5072. * numbers, and social security numbers from documents in your Amazon S3 bucket.
  5073. * </p> <p>Example 2: PII Redaction - This Lambda function uses Amazon Comprehend,
  5074. * a natural language processing (NLP) service using machine learning to find
  5075. * insights and relationships in text. It automatically redacts personally
  5076. * identifiable information (PII) such as names, addresses, dates, credit card
  5077. * numbers, and social security numbers from documents in your Amazon S3 bucket.
  5078. * </p> <p>Example 3: Decompression - The Lambda function
  5079. * S3ObjectLambdaDecompression, is equipped to decompress objects stored in S3 in
  5080. * one of six compressed file formats including bzip2, gzip, snappy, zlib,
  5081. * zstandard and ZIP. </p> <p>For information on how to view and use these
  5082. * functions, see <a
  5083. * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/olap-examples.html">Using
  5084. * Amazon Web Services built Lambda functions</a> in the <i>Amazon S3 User
  5085. * Guide</i>.</p><p><h3>See Also:</h3> <a
  5086. * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/WriteGetObjectResponse">AWS
  5087. * API Reference</a></p>
  5088. */
  5089. virtual Model::WriteGetObjectResponseOutcome WriteGetObjectResponse(const Model::WriteGetObjectResponseRequest& request) const;
  5090. /**
  5091. * A Callable wrapper for WriteGetObjectResponse that returns a future to the operation so that it can be executed in parallel to other requests.
  5092. */
  5093. template<typename WriteGetObjectResponseRequestT = Model::WriteGetObjectResponseRequest>
  5094. Model::WriteGetObjectResponseOutcomeCallable WriteGetObjectResponseCallable(const WriteGetObjectResponseRequestT& request) const
  5095. {
  5096. return SubmitCallable(&S3Client::WriteGetObjectResponse, request);
  5097. }
  5098. /**
  5099. * An Async wrapper for WriteGetObjectResponse that queues the request into a thread executor and triggers associated callback when operation has finished.
  5100. */
  5101. template<typename WriteGetObjectResponseRequestT = Model::WriteGetObjectResponseRequest>
  5102. void WriteGetObjectResponseAsync(const WriteGetObjectResponseRequestT& request, const WriteGetObjectResponseResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
  5103. {
  5104. return SubmitAsync(&S3Client::WriteGetObjectResponse, request, handler, context);
  5105. }
  5106. Aws::String GeneratePresignedUrl(const Aws::String& bucket,
  5107. const Aws::String& key,
  5108. Aws::Http::HttpMethod method,
  5109. uint64_t expirationInSeconds = MAX_EXPIRATION_SECONDS);
  5110. Aws::String GeneratePresignedUrl(const Aws::String& bucket,
  5111. const Aws::String& key,
  5112. Aws::Http::HttpMethod method,
  5113. const Http::HeaderValueCollection& customizedHeaders,
  5114. uint64_t expirationInSeconds = MAX_EXPIRATION_SECONDS);
  5115. /**
  5116. * Server Side Encryption Headers and Algorithm
  5117. * Method Algorithm Required Headers
  5118. * SSE-S3 AES256 x-amz-server-side-encryption:AES256
  5119. * SSE-KMS aws:kms x-amz-server-side--encryption:aws:kms, x-amz-server-side-encryption-aws-kms-key-id:<kmsMasterKeyId>
  5120. * 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>
  5121. */
  5122. /**
  5123. * Generate presigned URL with Sever Side Encryption(SSE) and with S3 managed keys.
  5124. * https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html (algo: AES256)
  5125. */
  5126. Aws::String GeneratePresignedUrlWithSSES3(const Aws::String& bucket,
  5127. const Aws::String& key,
  5128. Aws::Http::HttpMethod method,
  5129. uint64_t expirationInSeconds = MAX_EXPIRATION_SECONDS);
  5130. /**
  5131. * Generate presigned URL with Sever Side Encryption(SSE) and with S3 managed keys.
  5132. * https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html (algo: AES256)
  5133. * Header: "x-amz-server-side-encryption" will be added internally, don't customize it.
  5134. */
  5135. Aws::String GeneratePresignedUrlWithSSES3(const Aws::String& bucket,
  5136. const Aws::String& key,
  5137. Aws::Http::HttpMethod method,
  5138. Http::HeaderValueCollection customizedHeaders,
  5139. uint64_t expirationInSeconds = MAX_EXPIRATION_SECONDS);
  5140. /**
  5141. * Generate presigned URL with Server Side Encryption(SSE) and with KMS master key id.
  5142. * 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".
  5143. * https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html (algo: aws:kms)
  5144. */
  5145. Aws::String GeneratePresignedUrlWithSSEKMS(const Aws::String& bucket,
  5146. const Aws::String& key,
  5147. Aws::Http::HttpMethod method,
  5148. const Aws::String& kmsMasterKeyId = "",
  5149. uint64_t expirationInSeconds = MAX_EXPIRATION_SECONDS);
  5150. /**
  5151. * Generate presigned URL with Server Side Encryption(SSE) and with KMS master key id.
  5152. * 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".
  5153. * https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html (algo: aws:kms)
  5154. * Headers: "x-amz-server-side-encryption" and "x-amz-server-side-encryption-aws-kms-key-id" will be added internally, don't customize them.
  5155. */
  5156. Aws::String GeneratePresignedUrlWithSSEKMS(const Aws::String& bucket,
  5157. const Aws::String& key,
  5158. Aws::Http::HttpMethod method,
  5159. Http::HeaderValueCollection customizedHeaders,
  5160. const Aws::String& kmsMasterKeyId = "",
  5161. uint64_t expirationInSeconds = MAX_EXPIRATION_SECONDS);
  5162. /**
  5163. * Generate presigned URL with Sever Side Encryption(SSE) and with customer supplied Key.
  5164. * https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html (algo: AES256)
  5165. */
  5166. Aws::String GeneratePresignedUrlWithSSEC(const Aws::String& bucket,
  5167. const Aws::String& key,
  5168. Aws::Http::HttpMethod method,
  5169. const Aws::String& base64EncodedAES256Key,
  5170. uint64_t expirationInSeconds = MAX_EXPIRATION_SECONDS);
  5171. /**
  5172. * Generate presigned URL with Sever Side Encryption(SSE) and with customer supplied Key.
  5173. * https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html (algo: AES256)
  5174. * 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.
  5175. */
  5176. Aws::String GeneratePresignedUrlWithSSEC(const Aws::String& bucket,
  5177. const Aws::String& key,
  5178. Aws::Http::HttpMethod method,
  5179. Http::HeaderValueCollection customizedHeaders,
  5180. const Aws::String& base64EncodedAES256Key,
  5181. uint64_t expirationInSeconds = MAX_EXPIRATION_SECONDS);
  5182. virtual bool MultipartUploadSupported() const;
  5183. void OverrideEndpoint(const Aws::String& endpoint);
  5184. std::shared_ptr<S3EndpointProviderBase>& accessEndpointProvider();
  5185. private:
  5186. friend class Aws::Client::ClientWithAsyncTemplateMethods<S3Client>;
  5187. void init(const S3ClientConfiguration& clientConfiguration);
  5188. S3ClientConfiguration m_clientConfiguration;
  5189. std::shared_ptr<Utils::Threading::Executor> m_executor;
  5190. std::shared_ptr<S3EndpointProviderBase> m_endpointProvider;
  5191. };
  5192. } // namespace S3
  5193. } // namespace Aws