[{"data":1,"prerenderedAt":1653},["ShallowReactive",2],{"navigation_docs_hu":3,"-hu-storage-s3":442,"-hu-storage-s3-surround":1648},[4,45,60,81,112,129,146,173,197,213,242,280,357,373,385,404,430],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":44},"Kezdő lépések","i-lucide-rocket","\u002Fhu\u002Fgetting-started","hu\u002F1.getting-started",[10,15,20,24,29,34,39],{"title":11,"path":12,"stem":13,"icon":14},"Bevezetés","\u002Fhu\u002Fgetting-started\u002Fintroduction","hu\u002F1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Laravelből érkezőknek","\u002Fhu\u002Fgetting-started\u002Fcoming-from-laravel","hu\u002F1.getting-started\u002F2.coming-from-laravel","i-lucide-arrow-right-left",{"title":21,"path":22,"stem":23,"icon":19},"Symfonyból érkezőknek","\u002Fhu\u002Fgetting-started\u002Fcoming-from-symfony","hu\u002F1.getting-started\u002F3.coming-from-symfony",{"title":25,"path":26,"stem":27,"icon":28},"Telepítés","\u002Fhu\u002Fgetting-started\u002Finstallation","hu\u002F1.getting-started\u002F4.installation","i-lucide-download",{"title":30,"path":31,"stem":32,"icon":33},"Az első modulod","\u002Fhu\u002Fgetting-started\u002Ffirst-module","hu\u002F1.getting-started\u002F5.first-module","i-lucide-package-plus",{"title":35,"path":36,"stem":37,"icon":38},"Projektstruktúra","\u002Fhu\u002Fgetting-started\u002Fproject-structure","hu\u002F1.getting-started\u002F6.project-structure","i-lucide-folder-tree",{"title":40,"path":41,"stem":42,"icon":43},"A shop mintaalkalmazás","\u002Fhu\u002Fgetting-started\u002Fsample-app","hu\u002F1.getting-started\u002F7.sample-app","i-lucide-shopping-cart",false,{"title":46,"icon":47,"path":48,"stem":49,"children":50,"page":44},"queue","i-lucide-layers","\u002Fhu\u002Fqueue","hu\u002F10.queue",[51,56],{"title":52,"path":53,"stem":54,"icon":55},"Áttekintés","\u002Fhu\u002Fqueue\u002Foverview","hu\u002F10.queue\u002F1.overview","i-lucide-list-ordered",{"title":57,"path":58,"stem":59,"icon":47},"Taskok","\u002Fhu\u002Fqueue\u002Ftasks","hu\u002F10.queue\u002F2.tasks",{"title":61,"icon":62,"path":63,"stem":64,"children":65,"page":44},"events","i-lucide-workflow","\u002Fhu\u002Fevents","hu\u002F11.events",[66,71,76],{"title":67,"path":68,"stem":69,"icon":70},"Események","\u002Fhu\u002Fevents\u002Foverview","hu\u002F11.events\u002F1.overview","i-lucide-radio",{"title":72,"path":73,"stem":74,"icon":75},"Outbox","\u002Fhu\u002Fevents\u002Foutbox","hu\u002F11.events\u002F2.outbox","i-lucide-inbox",{"title":77,"path":78,"stem":79,"icon":80},"Ütemezés","\u002Fhu\u002Fevents\u002Fscheduler","hu\u002F11.events\u002F3.scheduler","i-lucide-calendar-clock",{"title":82,"icon":83,"path":84,"stem":85,"children":86,"page":44},"auth","i-lucide-shield-check","\u002Fhu\u002Fauth","hu\u002F12.auth",[87,92,97,102,107],{"title":88,"path":89,"stem":90,"icon":91},"Autentikáció","\u002Fhu\u002Fauth\u002Foverview","hu\u002F12.auth\u002F1.overview","i-lucide-key-round",{"title":93,"path":94,"stem":95,"icon":96},"RBAC","\u002Fhu\u002Fauth\u002Frbac","hu\u002F12.auth\u002F2.rbac","i-lucide-users",{"title":98,"path":99,"stem":100,"icon":101},"Policy-k","\u002Fhu\u002Fauth\u002Fpolicy","hu\u002F12.auth\u002F3.policy","i-lucide-gavel",{"title":103,"path":104,"stem":105,"icon":106},"Az auth önálló használata","\u002Fhu\u002Fauth\u002Fstandalone","hu\u002F12.auth\u002F4.standalone","i-lucide-plug",{"title":108,"path":109,"stem":110,"icon":111},"Social login goth-tal, önállóan","\u002Fhu\u002Fauth\u002Fsocial-standalone","hu\u002F12.auth\u002F5.social-standalone","i-lucide-log-in",{"title":113,"icon":114,"path":115,"stem":116,"children":117,"page":44},"mail","i-lucide-mail","\u002Fhu\u002Fmail","hu\u002F13.mail",[118,121,125],{"title":52,"path":119,"stem":120,"icon":114},"\u002Fhu\u002Fmail\u002Foverview","hu\u002F13.mail\u002F1.overview",{"title":122,"path":123,"stem":124,"icon":114},"SMTP","\u002Fhu\u002Fmail\u002Fsmtp","hu\u002F13.mail\u002F2.smtp",{"title":126,"path":127,"stem":128,"icon":114},"MJML","\u002Fhu\u002Fmail\u002Fmjml","hu\u002F13.mail\u002F3.mjml",{"title":130,"icon":131,"path":132,"stem":133,"children":134,"page":44},"notify","i-lucide-bell","\u002Fhu\u002Fnotify","hu\u002F14.notify",[135,138,142],{"title":52,"path":136,"stem":137,"icon":131},"\u002Fhu\u002Fnotify\u002Foverview","hu\u002F14.notify\u002F1.overview",{"title":139,"path":140,"stem":141,"icon":131},"Database csatorna","\u002Fhu\u002Fnotify\u002Fdatabase","hu\u002F14.notify\u002F2.database",{"title":143,"path":144,"stem":145,"icon":131},"Broadcast csatorna","\u002Fhu\u002Fnotify\u002Fbroadcast","hu\u002F14.notify\u002F3.broadcast",{"title":147,"icon":148,"path":149,"stem":150,"children":151,"page":44},"storage","i-lucide-hard-drive","\u002Fhu\u002Fstorage","hu\u002F15.storage",[152,155,159,163,168],{"title":52,"path":153,"stem":154,"icon":148},"\u002Fhu\u002Fstorage\u002Foverview","hu\u002F15.storage\u002F1.overview",{"title":156,"path":157,"stem":158},"Disk API","\u002Fhu\u002Fstorage\u002Fdisk-api","hu\u002F15.storage\u002F2.disk-api",{"title":160,"path":161,"stem":162,"icon":148},"Memória és helyi lemez","\u002Fhu\u002Fstorage\u002Flocal","hu\u002F15.storage\u002F3.local",{"title":164,"path":165,"stem":166,"icon":167},"S3","\u002Fhu\u002Fstorage\u002Fs3","hu\u002F15.storage\u002F4.s3","i-lucide-cloud",{"title":169,"path":170,"stem":171,"icon":172},"Tesztelés","\u002Fhu\u002Fstorage\u002Ftesting","hu\u002F15.storage\u002F5.testing","i-lucide-flask-conical",{"title":174,"icon":175,"path":176,"stem":177,"children":178,"page":44},"telemetry","i-lucide-activity","\u002Fhu\u002Ftelemetry","hu\u002F16.telemetry",[179,182,187,192],{"title":52,"path":180,"stem":181,"icon":175},"\u002Fhu\u002Ftelemetry\u002Foverview","hu\u002F16.telemetry\u002F1.overview",{"title":183,"path":184,"stem":185,"icon":186},"Logolás","\u002Fhu\u002Ftelemetry\u002Flogging","hu\u002F16.telemetry\u002F2.logging","i-lucide-scroll-text",{"title":188,"path":189,"stem":190,"icon":191},"OpenTelemetry","\u002Fhu\u002Ftelemetry\u002Fopentelemetry","hu\u002F16.telemetry\u002F3.opentelemetry","i-lucide-radar",{"title":193,"path":194,"stem":195,"icon":196},"Sentry","\u002Fhu\u002Ftelemetry\u002Fsentry","hu\u002F16.telemetry\u002F4.sentry","i-lucide-bug",{"title":198,"icon":199,"path":200,"stem":201,"children":202,"page":44},"Referencia","i-lucide-book-open","\u002Fhu\u002Freference","hu\u002F17.reference",[203,208],{"title":204,"path":205,"stem":206,"icon":207},"Konfiguráció","\u002Fhu\u002Freference\u002Fconfiguration","hu\u002F17.reference\u002F1.configuration","i-lucide-settings",{"title":209,"path":210,"stem":211,"icon":212},"Külső függőségek","\u002Fhu\u002Freference\u002Fdependencies","hu\u002F17.reference\u002F2.dependencies","i-lucide-package",{"title":214,"icon":215,"path":216,"stem":217,"children":218,"page":44},"Koncepciók","i-lucide-lightbulb","\u002Fhu\u002Fconcepts","hu\u002F2.concepts",[219,223,228,232,237],{"title":220,"path":221,"stem":222,"icon":47},"Architektúra","\u002Fhu\u002Fconcepts\u002Farchitecture","hu\u002F2.concepts\u002F1.architecture",{"title":224,"path":225,"stem":226,"icon":227},"Hibamodell","\u002Fhu\u002Fconcepts\u002Ferror-model","hu\u002F2.concepts\u002F2.error-model","i-lucide-shield-alert",{"title":204,"path":229,"stem":230,"icon":231},"\u002Fhu\u002Fconcepts\u002Fconfiguration","hu\u002F2.concepts\u002F3.configuration","i-lucide-settings-2",{"title":233,"path":234,"stem":235,"icon":236},"Codegen pipeline","\u002Fhu\u002Fconcepts\u002Fcodegen-pipeline","hu\u002F2.concepts\u002F4.codegen-pipeline","i-lucide-file-json",{"title":238,"path":239,"stem":240,"icon":241},"Design patternek","\u002Fhu\u002Fconcepts\u002Fdesign-patterns","hu\u002F2.concepts\u002F5.design-patterns","i-lucide-puzzle",{"title":243,"icon":244,"path":245,"stem":246,"children":247,"page":44},"A kit","i-lucide-box","\u002Fhu\u002Fkit","hu\u002F3.kit",[248,252,257,262,267,271,276],{"title":249,"path":250,"stem":251,"icon":244},"A kit áttekintése","\u002Fhu\u002Fkit\u002Foverview","hu\u002F3.kit\u002F1.overview",{"title":253,"path":254,"stem":255,"icon":256},"Alkalmazás-életciklus","\u002Fhu\u002Fkit\u002Fapp","hu\u002F3.kit\u002F2.app","i-lucide-power",{"title":258,"path":259,"stem":260,"icon":261},"Szerver","\u002Fhu\u002Fkit\u002Fserver","hu\u002F3.kit\u002F3.server","i-lucide-server",{"title":263,"path":264,"stem":265,"icon":266},"Worker","\u002Fhu\u002Fkit\u002Fworker","hu\u002F3.kit\u002F4.worker","i-lucide-cog",{"title":268,"path":269,"stem":270,"icon":70},"Realtime","\u002Fhu\u002Fkit\u002Frealtime","hu\u002F3.kit\u002F5.realtime",{"title":272,"path":273,"stem":274,"icon":275},"Migrációk","\u002Fhu\u002Fkit\u002Fmigrations","hu\u002F3.kit\u002F6.migrations","i-lucide-file-stack",{"title":277,"path":278,"stem":279,"icon":111},"Social login","\u002Fhu\u002Fkit\u002Fsocial-login","hu\u002F3.kit\u002F7.social-login",{"title":281,"icon":282,"path":283,"stem":284,"children":285,"page":44},"CLI referencia","i-lucide-terminal","\u002Fhu\u002Fcli","hu\u002F4.cli",[286,289,294,299,304,309,314,319,324,329,334,338,343,348,352],{"title":52,"path":287,"stem":288,"icon":282},"\u002Fhu\u002Fcli\u002Foverview","hu\u002F4.cli\u002F1.overview",{"title":290,"path":291,"stem":292,"icon":293},"add db","\u002Fhu\u002Fcli\u002Fadd-db","hu\u002F4.cli\u002F10.add-db","i-lucide-database-zap",{"title":295,"path":296,"stem":297,"icon":298},"add compose \u002F add docker","\u002Fhu\u002Fcli\u002Fadd-compose","hu\u002F4.cli\u002F11.add-compose","i-lucide-container",{"title":300,"path":301,"stem":302,"icon":303},"add mail","\u002Fhu\u002Fcli\u002Fadd-mail","hu\u002F4.cli\u002F12.add-mail","i-lucide-mail-plus",{"title":305,"path":306,"stem":307,"icon":308},"add notification","\u002Fhu\u002Fcli\u002Fadd-notification","hu\u002F4.cli\u002F13.add-notification","i-lucide-bell-plus",{"title":310,"path":311,"stem":312,"icon":313},"add realtime","\u002Fhu\u002Fcli\u002Fadd-realtime","hu\u002F4.cli\u002F14.add-realtime","i-lucide-radio-tower",{"title":315,"path":316,"stem":317,"icon":318},"add seeder","\u002Fhu\u002Fcli\u002Fadd-seeder","hu\u002F4.cli\u002F15.add-seeder","i-lucide-sprout",{"title":320,"path":321,"stem":322,"icon":323},"new project","\u002Fhu\u002Fcli\u002Fnew-project","hu\u002F4.cli\u002F2.new-project","i-lucide-folder-plus",{"title":325,"path":326,"stem":327,"icon":328},"new module","\u002Fhu\u002Fcli\u002Fnew-module","hu\u002F4.cli\u002F3.new-module","i-lucide-blocks",{"title":330,"path":331,"stem":332,"icon":333},"add surface","\u002Fhu\u002Fcli\u002Fadd-surface","hu\u002F4.cli\u002F4.add-surface","i-lucide-layers-2",{"title":335,"path":336,"stem":337,"icon":244},"add core","\u002Fhu\u002Fcli\u002Fadd-core","hu\u002F4.cli\u002F5.add-core",{"title":339,"path":340,"stem":341,"icon":342},"add handler","\u002Fhu\u002Fcli\u002Fadd-handler","hu\u002F4.cli\u002F6.add-handler","i-lucide-webhook",{"title":344,"path":345,"stem":346,"icon":347},"new migration","\u002Fhu\u002Fcli\u002Fnew-migration","hu\u002F4.cli\u002F7.new-migration","i-lucide-file-plus",{"title":349,"path":350,"stem":351,"icon":266},"worker generátorok","\u002Fhu\u002Fcli\u002Fworker-generators","hu\u002F4.cli\u002F8.worker-generators",{"title":353,"path":354,"stem":355,"icon":356},"upgrade templates","\u002Fhu\u002Fcli\u002Fupgrade-templates","hu\u002F4.cli\u002F9.upgrade-templates","i-lucide-refresh-cw",{"title":358,"icon":227,"path":359,"stem":360,"children":361,"page":44},"errs","\u002Fhu\u002Ferrs","hu\u002F5.errs",[362,365,369],{"title":52,"path":363,"stem":364,"icon":227},"\u002Fhu\u002Ferrs\u002Foverview","hu\u002F5.errs\u002F1.overview",{"title":366,"path":367,"stem":368},"API","\u002Fhu\u002Ferrs\u002Fapi","hu\u002F5.errs\u002F2.api",{"title":370,"path":371,"stem":372,"icon":227},"Integráció","\u002Fhu\u002Ferrs\u002Fintegration","hu\u002F5.errs\u002F3.integration",{"title":374,"icon":231,"path":375,"stem":376,"children":377,"page":44},"envconf","\u002Fhu\u002Fenvconf","hu\u002F6.envconf",[378,381],{"title":52,"path":379,"stem":380,"icon":231},"\u002Fhu\u002Fenvconf\u002Foverview","hu\u002F6.envconf\u002F1.overview",{"title":382,"path":383,"stem":384},"Receptek","\u002Fhu\u002Fenvconf\u002Frecipes","hu\u002F6.envconf\u002F2.recipes",{"title":386,"icon":387,"path":388,"stem":389,"children":390,"page":44},"httperr","i-lucide-globe","\u002Fhu\u002Fhttperr","hu\u002F7.httperr",[391,394,399],{"title":52,"path":392,"stem":393,"icon":387},"\u002Fhu\u002Fhttperr\u002Foverview","hu\u002F7.httperr\u002F1.overview",{"title":395,"path":396,"stem":397,"icon":398},"Hibaválaszok","\u002Fhu\u002Fhttperr\u002Ferror-responses","hu\u002F7.httperr\u002F2.error-responses","i-lucide-octagon-alert",{"title":400,"path":401,"stem":402,"icon":403},"Validáció","\u002Fhu\u002Fhttperr\u002Fvalidation","hu\u002F7.httperr\u002F3.validation","i-lucide-badge-check",{"title":405,"icon":406,"path":407,"stem":408,"children":409,"page":44},"dbx","i-lucide-database","\u002Fhu\u002Fdbx","hu\u002F8.dbx",[410,413,417,421,426],{"title":52,"path":411,"stem":412,"icon":406},"\u002Fhu\u002Fdbx\u002Foverview","hu\u002F8.dbx\u002F1.overview",{"title":414,"path":415,"stem":416,"icon":106},"pgx","\u002Fhu\u002Fdbx\u002Fpg","hu\u002F8.dbx\u002F2.pg",{"title":418,"path":419,"stem":420,"icon":47},"bun","\u002Fhu\u002Fdbx\u002Fbunx","hu\u002F8.dbx\u002F3.bunx",{"title":422,"path":423,"stem":424,"icon":425},"Tranzakciók","\u002Fhu\u002Fdbx\u002Ftransactions","hu\u002F8.dbx\u002F4.transactions","i-lucide-git-merge",{"title":427,"path":428,"stem":429,"icon":318},"Seederek","\u002Fhu\u002Fdbx\u002Fseed","hu\u002F8.dbx\u002F5.seed",{"title":431,"icon":55,"path":432,"stem":433,"children":434,"page":44},"paginate","\u002Fhu\u002Fpaginate","hu\u002F9.paginate",[435,438],{"title":52,"path":436,"stem":437,"icon":55},"\u002Fhu\u002Fpaginate\u002Foverview","hu\u002F9.paginate\u002F1.overview",{"title":439,"path":440,"stem":441,"icon":19},"Cursor-lapozás","\u002Fhu\u002Fpaginate\u002Fcursor","hu\u002F9.paginate\u002F2.cursor",{"id":443,"title":164,"body":444,"description":1641,"extension":1642,"links":1643,"meta":1644,"navigation":1645,"path":165,"seo":1646,"stem":166,"__hash__":1647},"docs_hu\u002Fhu\u002F15.storage\u002F4.s3.md",{"type":445,"value":446,"toc":1633},"minimark",[447,497,501,526,542,545,676,687,736,860,866,870,907,957,967,971,1000,1004,1593,1597,1629],[448,449,450,451,455,456,459,460,467,468,472,473,475,476,479,480,482,483,459,486,489,490,459,493,496],"p",{},"A ",[452,453,454],"code",{},"storage\u002Fdriver\u002Fs3"," a production driver: egy S3-kompatibilis ",[452,457,458],{},"Driver",", ",[461,462,466],"a",{"href":463,"rel":464},"https:\u002F\u002Fgithub.com\u002Fminio\u002Fminio-go",[465],"nofollow","minio-go","-ra építve. Ez egy ",[469,470,471],"strong",{},"külön Go modul",", nem a gyökér ",[452,474,147],{}," modul alcsomagja: saját ",[452,477,478],{},"go.mod","-ja és saját verziója van, mert behúzza a minio-go-t mint valódi függőséget, és ezt a súlyt csak azoknak a projekteknek kell viselniük, amelyek ténylegesen S3-mal beszélnek. A ",[452,481,147],{}," minden más része (",[452,484,485],{},"Disk",[452,487,488],{},"Manager",", a dekorátorok, ",[452,491,492],{},"storage\u002Fmemory",[452,494,495],{},"storage\u002Flocal",") nem is tud erről a modulról.",[498,499,25],"h2",{"id":500},"telepítés",[502,503,508],"pre",{"className":504,"code":505,"language":506,"meta":507,"style":507},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","go get github.com\u002Fgp-system\u002Fstorage\u002Fdriver\u002Fs3@latest\n","sh","",[452,509,510],{"__ignoreMap":507},[511,512,515,519,523],"span",{"class":513,"line":514},"line",1,[511,516,518],{"class":517},"sBMFI","go",[511,520,522],{"class":521},"sfazB"," get",[511,524,525],{"class":521}," github.com\u002Fgp-system\u002Fstorage\u002Fdriver\u002Fs3@latest\n",[448,527,528,529,532,533,535,536,459,538,541],{},"Ez a gyökér ",[452,530,531],{},"github.com\u002Fgp-system\u002Fstorage","-tól függetlenül verziózott: a gyökér modul emelése nem igényli ennek emelését, és fordítva sem. Mindkettő kell a ",[452,534,478],{},"-ba, mivel a driver a gyökér modul típusait importálja (",[452,537,458],{},[452,539,540],{},"FileInfo"," és társaik).",[498,543,204],{"id":544},"konfiguráció",[502,546,549],{"className":547,"code":548,"language":518,"meta":507,"style":507},"language-go shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import \"github.com\u002Fgp-system\u002Fstorage\u002Fdriver\u002Fs3\"\n\ncfg := s3.Config{ \u002F* ... *\u002F }\ndriver, err := s3.New(cfg)\ndisk := storage.NewDisk(driver, storage.WithName(\"s3\"))\n",[452,550,551,567,574,603,634],{"__ignoreMap":507},[511,552,553,557,561,564],{"class":513,"line":514},[511,554,556],{"class":555},"s7zQu","import",[511,558,560],{"class":559},"sMK4o"," \"",[511,562,563],{"class":517},"github.com\u002Fgp-system\u002Fstorage\u002Fdriver\u002Fs3",[511,565,566],{"class":559},"\"\n",[511,568,570],{"class":513,"line":569},2,[511,571,573],{"emptyLinePlaceholder":572},true,"\n",[511,575,577,581,584,587,590,593,596,600],{"class":513,"line":576},3,[511,578,580],{"class":579},"sTEyZ","cfg ",[511,582,583],{"class":559},":=",[511,585,586],{"class":517}," s3",[511,588,589],{"class":559},".",[511,591,592],{"class":517},"Config",[511,594,595],{"class":559},"{",[511,597,599],{"class":598},"sHwdD"," \u002F* ... *\u002F",[511,601,602],{"class":559}," }\n",[511,604,606,609,612,615,617,619,621,625,628,631],{"class":513,"line":605},4,[511,607,608],{"class":579},"driver",[511,610,611],{"class":559},",",[511,613,614],{"class":579}," err ",[511,616,583],{"class":559},[511,618,586],{"class":579},[511,620,589],{"class":559},[511,622,624],{"class":623},"s2Zo4","New",[511,626,627],{"class":559},"(",[511,629,630],{"class":579},"cfg",[511,632,633],{"class":559},")\n",[511,635,637,640,642,645,647,650,652,654,656,658,660,663,665,668,671,673],{"class":513,"line":636},5,[511,638,639],{"class":579},"disk ",[511,641,583],{"class":559},[511,643,644],{"class":579}," storage",[511,646,589],{"class":559},[511,648,649],{"class":623},"NewDisk",[511,651,627],{"class":559},[511,653,608],{"class":579},[511,655,611],{"class":559},[511,657,644],{"class":579},[511,659,589],{"class":559},[511,661,662],{"class":623},"WithName",[511,664,627],{"class":559},[511,666,667],{"class":559},"\"",[511,669,670],{"class":521},"s3",[511,672,667],{"class":559},[511,674,675],{"class":559},"))\n",[448,677,678,679,682,683,686],{},"Az ",[452,680,681],{},"s3.Config","-ot ",[452,684,685],{},"S3_"," prefixszel komponálod a projekt configjába, ugyanúgy, ahogy bármely gpsystem modul configja komponálódik:",[502,688,690],{"className":547,"code":689,"language":518,"meta":507,"style":507},"type Config struct {\n    \u002F\u002F ...\n    Storage s3.Config `envPrefix:\"S3_\"`\n}\n",[452,691,692,706,711,731],{"__ignoreMap":507},[511,693,694,697,700,703],{"class":513,"line":514},[511,695,696],{"class":559},"type",[511,698,699],{"class":517}," Config",[511,701,702],{"class":559}," struct",[511,704,705],{"class":559}," {\n",[511,707,708],{"class":513,"line":569},[511,709,710],{"class":598},"    \u002F\u002F ...\n",[511,712,713,716,718,720,722,725,728],{"class":513,"line":576},[511,714,715],{"class":579},"    Storage ",[511,717,670],{"class":517},[511,719,589],{"class":559},[511,721,592],{"class":517},[511,723,724],{"class":559}," `",[511,726,727],{"class":521},"envPrefix:\"S3_\"",[511,729,730],{"class":559},"`\n",[511,732,733],{"class":513,"line":605},[511,734,735],{"class":559},"}\n",[737,738,739,755],"table",{},[740,741,742],"thead",{},[743,744,745,749,752],"tr",{},[746,747,748],"th",{},"Változó",[746,750,751],{},"Default",[746,753,754],{},"Jelentés",[756,757,758,778,792,805,822,844],"tbody",{},[743,759,760,766,771],{},[761,762,763],"td",{},[452,764,765],{},"S3_ENDPOINT",[761,767,768],{},[469,769,770],{},"kötelező",[761,772,773,774,777],{},"a szolgáltatás címe (",[452,775,776],{},"s3.amazonaws.com",", egy MinIO host, ...)",[743,779,780,785,790],{},[761,781,782],{},[452,783,784],{},"S3_REGION",[761,786,787],{},[452,788,789],{},"us-east-1",[761,791],{},[743,793,794,799,803],{},[761,795,796],{},[452,797,798],{},"S3_BUCKET",[761,800,801],{},[469,802,770],{},[761,804],{},[743,806,807,816,819],{},[761,808,809,812,813],{},[452,810,811],{},"S3_ACCESS_KEY"," \u002F ",[452,814,815],{},"S3_SECRET_KEY",[761,817,818],{},"üres",[761,820,821],{},"hitelesítő adatok az endpointhoz",[743,823,824,829,834],{},[761,825,826],{},[452,827,828],{},"S3_USE_PATH_STYLE",[761,830,831],{},[452,832,833],{},"false",[761,835,836,839,840,843],{},[452,837,838],{},"true"," a legtöbb self-hosted S3-hoz (",[452,841,842],{},"\u002Fbucket\u002Fkey"," címzés a virtual-host-stílus helyett)",[743,845,846,851,853],{},[761,847,848],{},[452,849,850],{},"S3_PUBLIC_BASE_URL",[761,852,818],{},[761,854,855,856,859],{},"a ",[452,857,858],{},"Disk.URL"," alapja (egy CDN, vagy a bucket saját publikus endpointja)",[448,861,862,863,589],{},"A teljes lista a ",[461,864,865],{"href":205},"konfiguráció-referenciában",[498,867,869],{"id":868},"nem-csak-aws","Nem csak AWS",[448,871,872,873,878,879,884,885,887,888,890,891,893,894,898,899,902,903,906],{},"Mivel a driver minio-go-ra épül, nem az AWS SDK-ra, bármilyen az S3 API-t implementáló szolgáltatással beszél, nem csak magával az AWS-szel: az AWS S3, a ",[461,874,877],{"href":875,"rel":876},"https:\u002F\u002Fmin.io",[465],"MinIO",", a ",[461,880,883],{"href":881,"rel":882},"https:\u002F\u002Frustfs.com",[465],"RustFS",", a Cloudflare R2 és a Backblaze B2 mind működik ugyanaz az ",[452,886,681],{}," mögött, jellemzően csak az ",[452,889,765],{}," és az ",[452,892,828],{}," megfelelő beállításával. Egy ",[461,895,896],{"href":321},[452,897,320],{},"-tel generált projekt már eleve futtat egy self-hosted, S3-kompatibilis ",[452,900,901],{},"rustfs"," service-t a dev ",[452,904,905],{},"compose.yml","-jében, így a helyi fejlesztéshez sosem kellenek valódi AWS-hitelesítő adatok.",[502,908,910],{"className":547,"code":909,"language":518,"meta":507,"style":507},"\u002F\u002F a Client egy escape hatch mindenhez, amit a Driver interfész nem tesz elérhetővé\nclient := driver.Client() \u002F\u002F *minio.Client\nbucket := driver.Bucket() \u002F\u002F a konfigurált bucket neve\n",[452,911,912,917,938],{"__ignoreMap":507},[511,913,914],{"class":513,"line":514},[511,915,916],{"class":598},"\u002F\u002F a Client egy escape hatch mindenhez, amit a Driver interfész nem tesz elérhetővé\n",[511,918,919,922,924,927,929,932,935],{"class":513,"line":569},[511,920,921],{"class":579},"client ",[511,923,583],{"class":559},[511,925,926],{"class":579}," driver",[511,928,589],{"class":559},[511,930,931],{"class":623},"Client",[511,933,934],{"class":559},"()",[511,936,937],{"class":598}," \u002F\u002F *minio.Client\n",[511,939,940,943,945,947,949,952,954],{"class":513,"line":576},[511,941,942],{"class":579},"bucket ",[511,944,583],{"class":559},[511,946,926],{"class":579},[511,948,589],{"class":559},[511,950,951],{"class":623},"Bucket",[511,953,934],{"class":559},[511,955,956],{"class":598}," \u002F\u002F a konfigurált bucket neve\n",[448,958,678,959,962,963,966],{},[452,960,961],{},"s3.New"," opciókat is elfogad; a ",[452,964,965],{},"WithTransport(http.RoundTripper)"," lehetővé teszi az alatta lévő HTTP transport cseréjét, hasznos egyedi TLS-konfigurációhoz vagy saját OTel-instrumentált transport injektálásához.",[498,968,970],{"id":969},"presigned-url-ek","Presigned URL-ek",[448,972,450,973,976,977,980,981,984,985,988,989,991,992,995,996,999],{},[452,974,975],{},"TemporaryURL"," és a ",[452,978,979],{},"TemporaryUploadURL"," a minio-go natív presigningjével implementált (",[452,982,983],{},"PresignedGetObject","\u002F",[452,986,987],{},"PresignedPutObject","): a visszaadott URL közvetlenül az S3-kompatibilis endpointra mutat, így a kliens úgy tölt le vagy fel, hogy a kérés egyáltalán nem megy át a service-eden. Ez ugyanaz a ",[452,990,458],{}," szerződés, amit minden más driver implementál, így a ",[452,993,994],{},"disk.TemporaryURL(...)","-t hívó kód nem tudja és nem is érdekli, hogy S3-mal beszél, nem a ",[461,997,998],{"href":161},"helyi driver"," HMAC-aláírt linkjeivel.",[498,1001,1003],{"id":1002},"önálló-példa","Önálló példa",[502,1005,1008],{"className":547,"code":1006,"filename":1007,"language":518,"meta":507,"style":507},"package main\n\nimport (\n    \"context\"\n    \"log\"\n    \"strings\"\n    \"time\"\n\n    \"github.com\u002Fgp-system\u002Fstorage\"\n    \"github.com\u002Fgp-system\u002Fstorage\u002Fdriver\u002Fs3\"\n)\n\nfunc main() {\n    driver, err := s3.New(s3.Config{\n        Endpoint:      \"localhost:9000\",\n        Region:        \"us-east-1\",\n        Bucket:        \"uploads\",\n        AccessKey:     \"minioadmin\",\n        SecretKey:     \"minioadmin\",\n        UsePathStyle:  true,\n        PublicBaseURL: \"http:\u002F\u002Flocalhost:9000\u002Fuploads\",\n    })\n    if err != nil {\n        log.Fatal(err)\n    }\n    disk := storage.NewDisk(driver, storage.WithName(\"s3\"))\n\n    ctx := context.Background()\n    if err := disk.Put(ctx, \"hello.txt\", strings.NewReader(\"hello, s3\"), storage.PutOptions{}); err != nil {\n        log.Fatal(err)\n    }\n\n    signed, err := disk.TemporaryURL(ctx, \"hello.txt\", storage.TemporaryURLOptions{TTL: 15 * time.Minute})\n    if err != nil {\n        log.Fatal(err)\n    }\n    log.Println(\"presigned link:\", signed)\n}\n","main.go",[452,1009,1010,1018,1022,1029,1039,1048,1058,1068,1073,1082,1091,1096,1101,1114,1143,1163,1180,1197,1215,1231,1245,1262,1268,1284,1302,1308,1344,1349,1368,1439,1454,1459,1464,1528,1541,1556,1561,1588],{"__ignoreMap":507},[511,1011,1012,1015],{"class":513,"line":514},[511,1013,1014],{"class":559},"package",[511,1016,1017],{"class":517}," main\n",[511,1019,1020],{"class":513,"line":569},[511,1021,573],{"emptyLinePlaceholder":572},[511,1023,1024,1026],{"class":513,"line":576},[511,1025,556],{"class":555},[511,1027,1028],{"class":559}," (\n",[511,1030,1031,1034,1037],{"class":513,"line":605},[511,1032,1033],{"class":559},"    \"",[511,1035,1036],{"class":517},"context",[511,1038,566],{"class":559},[511,1040,1041,1043,1046],{"class":513,"line":636},[511,1042,1033],{"class":559},[511,1044,1045],{"class":517},"log",[511,1047,566],{"class":559},[511,1049,1051,1053,1056],{"class":513,"line":1050},6,[511,1052,1033],{"class":559},[511,1054,1055],{"class":517},"strings",[511,1057,566],{"class":559},[511,1059,1061,1063,1066],{"class":513,"line":1060},7,[511,1062,1033],{"class":559},[511,1064,1065],{"class":517},"time",[511,1067,566],{"class":559},[511,1069,1071],{"class":513,"line":1070},8,[511,1072,573],{"emptyLinePlaceholder":572},[511,1074,1076,1078,1080],{"class":513,"line":1075},9,[511,1077,1033],{"class":559},[511,1079,531],{"class":517},[511,1081,566],{"class":559},[511,1083,1085,1087,1089],{"class":513,"line":1084},10,[511,1086,1033],{"class":559},[511,1088,563],{"class":517},[511,1090,566],{"class":559},[511,1092,1094],{"class":513,"line":1093},11,[511,1095,633],{"class":559},[511,1097,1099],{"class":513,"line":1098},12,[511,1100,573],{"emptyLinePlaceholder":572},[511,1102,1104,1107,1110,1112],{"class":513,"line":1103},13,[511,1105,1106],{"class":559},"func",[511,1108,1109],{"class":623}," main",[511,1111,934],{"class":559},[511,1113,705],{"class":559},[511,1115,1117,1120,1122,1124,1126,1128,1130,1132,1134,1136,1138,1140],{"class":513,"line":1116},14,[511,1118,1119],{"class":579},"    driver",[511,1121,611],{"class":559},[511,1123,614],{"class":579},[511,1125,583],{"class":559},[511,1127,586],{"class":579},[511,1129,589],{"class":559},[511,1131,624],{"class":623},[511,1133,627],{"class":559},[511,1135,670],{"class":517},[511,1137,589],{"class":559},[511,1139,592],{"class":517},[511,1141,1142],{"class":559},"{\n",[511,1144,1146,1149,1152,1155,1158,1160],{"class":513,"line":1145},15,[511,1147,1148],{"class":579},"        Endpoint",[511,1150,1151],{"class":559},":",[511,1153,1154],{"class":559},"      \"",[511,1156,1157],{"class":521},"localhost:9000",[511,1159,667],{"class":559},[511,1161,1162],{"class":559},",\n",[511,1164,1166,1169,1171,1174,1176,1178],{"class":513,"line":1165},16,[511,1167,1168],{"class":579},"        Region",[511,1170,1151],{"class":559},[511,1172,1173],{"class":559},"        \"",[511,1175,789],{"class":521},[511,1177,667],{"class":559},[511,1179,1162],{"class":559},[511,1181,1183,1186,1188,1190,1193,1195],{"class":513,"line":1182},17,[511,1184,1185],{"class":579},"        Bucket",[511,1187,1151],{"class":559},[511,1189,1173],{"class":559},[511,1191,1192],{"class":521},"uploads",[511,1194,667],{"class":559},[511,1196,1162],{"class":559},[511,1198,1200,1203,1205,1208,1211,1213],{"class":513,"line":1199},18,[511,1201,1202],{"class":579},"        AccessKey",[511,1204,1151],{"class":559},[511,1206,1207],{"class":559},"     \"",[511,1209,1210],{"class":521},"minioadmin",[511,1212,667],{"class":559},[511,1214,1162],{"class":559},[511,1216,1218,1221,1223,1225,1227,1229],{"class":513,"line":1217},19,[511,1219,1220],{"class":579},"        SecretKey",[511,1222,1151],{"class":559},[511,1224,1207],{"class":559},[511,1226,1210],{"class":521},[511,1228,667],{"class":559},[511,1230,1162],{"class":559},[511,1232,1234,1237,1239,1243],{"class":513,"line":1233},20,[511,1235,1236],{"class":579},"        UsePathStyle",[511,1238,1151],{"class":559},[511,1240,1242],{"class":1241},"sfNiH","  true",[511,1244,1162],{"class":559},[511,1246,1248,1251,1253,1255,1258,1260],{"class":513,"line":1247},21,[511,1249,1250],{"class":579},"        PublicBaseURL",[511,1252,1151],{"class":559},[511,1254,560],{"class":559},[511,1256,1257],{"class":521},"http:\u002F\u002Flocalhost:9000\u002Fuploads",[511,1259,667],{"class":559},[511,1261,1162],{"class":559},[511,1263,1265],{"class":513,"line":1264},22,[511,1266,1267],{"class":559},"    })\n",[511,1269,1271,1274,1276,1279,1282],{"class":513,"line":1270},23,[511,1272,1273],{"class":555},"    if",[511,1275,614],{"class":579},[511,1277,1278],{"class":559},"!=",[511,1280,1281],{"class":559}," nil",[511,1283,705],{"class":559},[511,1285,1287,1290,1292,1295,1297,1300],{"class":513,"line":1286},24,[511,1288,1289],{"class":579},"        log",[511,1291,589],{"class":559},[511,1293,1294],{"class":623},"Fatal",[511,1296,627],{"class":559},[511,1298,1299],{"class":579},"err",[511,1301,633],{"class":559},[511,1303,1305],{"class":513,"line":1304},25,[511,1306,1307],{"class":559},"    }\n",[511,1309,1311,1314,1316,1318,1320,1322,1324,1326,1328,1330,1332,1334,1336,1338,1340,1342],{"class":513,"line":1310},26,[511,1312,1313],{"class":579},"    disk ",[511,1315,583],{"class":559},[511,1317,644],{"class":579},[511,1319,589],{"class":559},[511,1321,649],{"class":623},[511,1323,627],{"class":559},[511,1325,608],{"class":579},[511,1327,611],{"class":559},[511,1329,644],{"class":579},[511,1331,589],{"class":559},[511,1333,662],{"class":623},[511,1335,627],{"class":559},[511,1337,667],{"class":559},[511,1339,670],{"class":521},[511,1341,667],{"class":559},[511,1343,675],{"class":559},[511,1345,1347],{"class":513,"line":1346},27,[511,1348,573],{"emptyLinePlaceholder":572},[511,1350,1352,1355,1357,1360,1362,1365],{"class":513,"line":1351},28,[511,1353,1354],{"class":579},"    ctx ",[511,1356,583],{"class":559},[511,1358,1359],{"class":579}," context",[511,1361,589],{"class":559},[511,1363,1364],{"class":623},"Background",[511,1366,1367],{"class":559},"()\n",[511,1369,1371,1373,1375,1377,1380,1382,1385,1387,1390,1392,1394,1397,1399,1401,1404,1406,1409,1411,1413,1416,1418,1421,1423,1425,1428,1431,1433,1435,1437],{"class":513,"line":1370},29,[511,1372,1273],{"class":555},[511,1374,614],{"class":579},[511,1376,583],{"class":559},[511,1378,1379],{"class":579}," disk",[511,1381,589],{"class":559},[511,1383,1384],{"class":623},"Put",[511,1386,627],{"class":559},[511,1388,1389],{"class":579},"ctx",[511,1391,611],{"class":559},[511,1393,560],{"class":559},[511,1395,1396],{"class":521},"hello.txt",[511,1398,667],{"class":559},[511,1400,611],{"class":559},[511,1402,1403],{"class":579}," strings",[511,1405,589],{"class":559},[511,1407,1408],{"class":623},"NewReader",[511,1410,627],{"class":559},[511,1412,667],{"class":559},[511,1414,1415],{"class":521},"hello, s3",[511,1417,667],{"class":559},[511,1419,1420],{"class":559},"),",[511,1422,644],{"class":517},[511,1424,589],{"class":559},[511,1426,1427],{"class":517},"PutOptions",[511,1429,1430],{"class":559},"{});",[511,1432,614],{"class":579},[511,1434,1278],{"class":559},[511,1436,1281],{"class":559},[511,1438,705],{"class":559},[511,1440,1442,1444,1446,1448,1450,1452],{"class":513,"line":1441},30,[511,1443,1289],{"class":579},[511,1445,589],{"class":559},[511,1447,1294],{"class":623},[511,1449,627],{"class":559},[511,1451,1299],{"class":579},[511,1453,633],{"class":559},[511,1455,1457],{"class":513,"line":1456},31,[511,1458,1307],{"class":559},[511,1460,1462],{"class":513,"line":1461},32,[511,1463,573],{"emptyLinePlaceholder":572},[511,1465,1467,1470,1472,1474,1476,1478,1480,1482,1484,1486,1488,1490,1492,1494,1496,1498,1500,1503,1505,1508,1510,1514,1517,1520,1522,1525],{"class":513,"line":1466},33,[511,1468,1469],{"class":579},"    signed",[511,1471,611],{"class":559},[511,1473,614],{"class":579},[511,1475,583],{"class":559},[511,1477,1379],{"class":579},[511,1479,589],{"class":559},[511,1481,975],{"class":623},[511,1483,627],{"class":559},[511,1485,1389],{"class":579},[511,1487,611],{"class":559},[511,1489,560],{"class":559},[511,1491,1396],{"class":521},[511,1493,667],{"class":559},[511,1495,611],{"class":559},[511,1497,644],{"class":517},[511,1499,589],{"class":559},[511,1501,1502],{"class":517},"TemporaryURLOptions",[511,1504,595],{"class":559},[511,1506,1507],{"class":579},"TTL",[511,1509,1151],{"class":559},[511,1511,1513],{"class":1512},"sbssI"," 15",[511,1515,1516],{"class":559}," *",[511,1518,1519],{"class":579}," time",[511,1521,589],{"class":559},[511,1523,1524],{"class":579},"Minute",[511,1526,1527],{"class":559},"})\n",[511,1529,1531,1533,1535,1537,1539],{"class":513,"line":1530},34,[511,1532,1273],{"class":555},[511,1534,614],{"class":579},[511,1536,1278],{"class":559},[511,1538,1281],{"class":559},[511,1540,705],{"class":559},[511,1542,1544,1546,1548,1550,1552,1554],{"class":513,"line":1543},35,[511,1545,1289],{"class":579},[511,1547,589],{"class":559},[511,1549,1294],{"class":623},[511,1551,627],{"class":559},[511,1553,1299],{"class":579},[511,1555,633],{"class":559},[511,1557,1559],{"class":513,"line":1558},36,[511,1560,1307],{"class":559},[511,1562,1564,1567,1569,1572,1574,1576,1579,1581,1583,1586],{"class":513,"line":1563},37,[511,1565,1566],{"class":579},"    log",[511,1568,589],{"class":559},[511,1570,1571],{"class":623},"Println",[511,1573,627],{"class":559},[511,1575,667],{"class":559},[511,1577,1578],{"class":521},"presigned link:",[511,1580,667],{"class":559},[511,1582,611],{"class":559},[511,1584,1585],{"class":579}," signed",[511,1587,633],{"class":559},[511,1589,1591],{"class":513,"line":1590},38,[511,1592,735],{"class":559},[498,1594,1596],{"id":1595},"kapcsolódó-oldalak","Kapcsolódó oldalak",[1598,1599,1600,1606,1614,1619,1624],"ul",{},[1601,1602,1603,1605],"li",{},[461,1604,52],{"href":153},": a Driver\u002FDisk\u002FManager modell, amibe ez a driver illeszkedik.",[1601,1607,1608,1610,1611,1613],{},[461,1609,156],{"href":157},": a metódusok, amiket a ",[452,1612,485],{}," bármilyen driveren, így ezen is elérhetővé tesz.",[1601,1615,1616,1618],{},[461,1617,160],{"href":161},": a driverek teszthez és egy-node-os telepítéshez.",[1601,1620,1621,1623],{},[461,1622,169],{"href":170},": futtasd a konformancia-suite-ot a saját S3-kompatibilis endpointod ellen.",[1601,1625,1626,1628],{},[461,1627,209],{"href":210},": a minio-go verzió, amit ez a driver pinel.",[1630,1631,1632],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":507,"searchDepth":569,"depth":569,"links":1634},[1635,1636,1637,1638,1639,1640],{"id":500,"depth":569,"text":25},{"id":544,"depth":569,"text":204},{"id":868,"depth":569,"text":869},{"id":969,"depth":569,"text":970},{"id":1002,"depth":569,"text":1003},{"id":1595,"depth":569,"text":1596},"Az S3-kompatibilis driver, egy külön verziózott modul, minio-go-ra épülve.","md",null,{},{"icon":167},{"title":164,"description":1641},"5wDLNoD6SZduOHpDpnyyL2-l5Gna51KHDZHJQ7ie5bY",[1649,1651],{"title":160,"path":161,"stem":162,"description":1650,"icon":148,"children":-1},"A két driver, ami a gyökér storage modulban szállít, teszthez és egy-node-os telepítéshez.",{"title":169,"path":170,"stem":171,"description":1652,"icon":172,"children":-1},"A storagetest konformancia-suite, és amit egy saját Drivernek implementálnia kell.",1785445896822]