Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Endpoint pro upload fotek na data.cesko.digital #99

Closed
zoul opened this issue Jul 13, 2020 · 7 comments
Closed

Endpoint pro upload fotek na data.cesko.digital #99

zoul opened this issue Jul 13, 2020 · 7 comments
Assignees

Comments

@zoul
Copy link
Member

zoul commented Jul 13, 2020

Fotky pro blog hostujeme na data.cesko.digital, což je S3 kyblíček za CloudFront. Pro upload je potřeba IAM uživatel v AWS, což není úplně praktické. @martinwenisch navrhuje HTTP frontend, představuju si to následovně:

  • Upload bude pomocí HTTP POST na nějaké URL (ještě nevím, kam bysme to nasadili). Něco jako curl -F "[email protected]" https://dev.cesko.digital/api/upload-img.
  • Autorizace by mohla být nějakým tajným tokenem v hlavičkách.
  • Skript by převzal soubor a uložil do S3 pod názvem odvozeným z jeho SHA256 (shasum -a 256 foo.jpeg | cut -c 1-8).
  • V odpovědi by bylo „venkovní“ URL nahraného obrázku.
  • Autentizační údaje pro S3 by byly uložené v repu.
  • Nejlíp v TypeScriptu, nasadit jako serverless funkci ve Vercelu.

CC @HormCodes.

@zoul zoul changed the title Endpoint pro upload na data.cesko.digital Endpoint pro upload fotek na data.cesko.digital Jul 13, 2020
@martinwenisch
Copy link
Contributor

Jak moc neprakticke by bylo synchronizovat to jako slozku v repozitari na S3?

Github action by spoustela nasledujici:

aws s3 sync --acl public-read --delete . s3:/<bucket>/<folder>
aws cloudfront create-invalidation --distribution-id <cloudfront distribution>

@zoul
Copy link
Member Author

zoul commented Jul 13, 2020

Já z principu nerad cpu do repa binárky, ale možná je to příliš hardline přístup? Kdybysme v tomhle případě udělali samostatné repo a vystavili ho přes GitHub Pages, tak je to příjemně low-tech řešení.

@zoul
Copy link
Member Author

zoul commented Jul 13, 2020

Ještě jsme se o tom bavili s Martinem na Slacku, ten mirror repa do AWS by mohl být praktický s ohledem na výpadky GitHubu, kterých je poslední dobou docela dost. Zároveň nahrávání fotek na GitHub zvládne asi kdokoliv, webové rozhraní umí dokonce i drag and drop. Takže tohle je určitě varianta. (Díval jsem se, jestli je něco z toho praktičtější pro Netlify CMS, které bysme výhledově chtěli nasadit, a mám dojem, že je to jedno. Ideální by bylo mít nějaký webový „Dropbox“, kam by uživatel akorát přetáhl soubor a dostal jeho veřejné URL. Měl jsem něco takového rozdělaného v Elmu, ale rezignoval jsem na to.)

@HormCodes
Copy link
Member

Přijde mi nejlepší varianta mít samostatné synchronizační repo. AWS bych se držel také už jen kvůli #31, abychom mohli generovat obrázkové varianty v případě dat pro blog a pro web.

Zkoušel jsem pohledat nějaký "webový open source Dropbox". Něco jsem našel, ale všechny ty nástroje by stály za vlastní research, protože vypadaly až moc robustně.

Synchronizace dat přes GitHub action se mi líbí. Otázkou je, zda výslednou URL bychom zobrazovali jen v té action nebo zavedli nový URL systém.

@HormCodes
Copy link
Member

HormCodes commented Jul 23, 2020

Issue si vezmu na starost. Připravím mirror repo assets a součástí bude i Terraform konfigurace pro přípravu infrastruktury. Uvítám pak případné review.

@HormCodes HormCodes self-assigned this Jul 23, 2020
@HormCodes
Copy link
Member

Repozitář zde, pull request s první verzí synchronizace zde.

@HormCodes
Copy link
Member

Issue prozatím uzavírám na základě dokončení první verze. Uvidíme jaký bude feedback a případně provedeme další iterace.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants