CRUD API Express s RDS, ECS a Docker

Verze videa

Preferujete video verzi?

V tomto článku uvidíme, jak můžeme připojit instanci ECS na základě obrázku na ECR k instanci RDS Postgres.

Předpoklady

  • Docker nainstalovaný ve vašem počítači
  • Účet AWS

Definice

  • RDS :Služba relační databáze. Služba AWS pro relační databáze, jako je Postgres. (Více o RDS a Postgres viz můj předchozí článek.)

  • ECR :Registr elastických kontejnerů. Ukládá obrázky Docker přímo na AWS (v podstatě alternativa k Docker Hub).

  • ECS :Elastická přeprava kontejnerů. Nasaďte a spusťte aplikaci na základě bitové kopie uložené v registru (funguje s Docker Hub i ECR).

Naše dnešní kroky

  • Vytvořte instanci RDS Postgres
  • Otestujte instanci
  • Vytvořte úložiště ECR pomocí rozhraní příkazového řádku AWS
  • Klonujte úložiště
  • Vytvořte obrázek Docker
  • Označte obrázek odpovídajícím způsobem podle úložiště ECR
  • Odeslat obrázek do pokladny
  • Vytvořte ECS na základě úložiště ECR a nastavte proměnné env
  • Závěrečný test

Vytvořte instanci RDS Postgres

Přejděte na konzolu AWS a vyhledejte RDS:

Poté klikněte na Vytvořit databázi :

Pojďme vytvořit instanci PostgreSQL. Použijeme verzi 12.5-R1, abychom mohli využít bezplatnou úroveň AWS:

V Nastavení , zadejte hodnoty pro následující:

  • Identifikátor instance DB (název)
  • Hlavní uživatel
  • Hlavní heslo + Potvrzení hesla (zvolte přiměřeně bezpečné heslo)

Pro připojení si musíte být jisti, že instance je přístupná zvenčí. V části Veřejný přístup , vyberte Ano Pokud máte problémy se sítí, zkontrolujte příchozí pravidla vaší skupiny zabezpečení.

Po dokončení klikněte na Vytvořit databázi .

Zde je recenze naší instance RDS Postgres:

Otestujte instanci

Chcete-li otestovat, zda je instance RDS přístupná, můžeme použít psql příkaz. Můžete také testovat pomocí dalších nástrojů podobných příkazům, jako je pgadmin nebo vaší místní aplikaci.

V níže uvedeném příkazu nahraďte RDS_INSTANCE_IP s tím, který získáte ze souhrnu instance RDS:

psql --host RDS_INSTANCE_IP --port 5432 --username postgres

Vytvořte úložiště ECR pomocí rozhraní příkazového řádku

ECR je zkratka pro Elastic Container Registry a je to registr obrázků pro AWS. Přemýšlejte o tom jako o místě pro ukládání a načítání obrázků Docker.

V konzole AWS zadejte ECR na vyhledávací liště a klikněte na Elastic Container Registry :

Rozhraní uživatelského rozhraní vypadá takto:

Je to dobrý způsob, jak zkontrolovat stávající úložiště. K jeho vytvoření však použijeme rozhraní příkazového řádku.

Získejte své přihlašovací údaje pomocí příkazu:

aws sts get-caller-identity

Poté použijte přihlašovací údaje a region, který preferujete. nahraďte regionem podle svého výběru a nahraďte ID účtu AWS (můžete jej získat pomocí příkazů).

aws ecr get-login-password --region <REGION> | docker login --username AWS --password-stdin <AWS_ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com

Zkontrolujeme, zda bylo úložiště vytvořeno kontrolou AWS Console:

Pěkný! Nyní pojďme klonovat a pracovat na úložišti.

Klonujte úložiště

Klonujte úložiště aws-express-template:

git clone https://github.com/tinystacks/aws-docker-templates-express.git

Nyní vložte CD do adresáře na příkazovém řádku:

cd aws-docker-templates-express

a otevřete projekt pomocí svého oblíbeného IDE. Pokud máte Visual Studio Code, můžete zadat:

code .

Zkontrolujte aplikaci a vytvořte obrázek Docker

Pokud chcete projekt testovat lokálně, můžete nainstalovat závislosti (volitelné – vyžaduje lokálně nainstalovaný npm):

npm i

Chcete-li stavět projekty:

npm run build
npm run start

Než vytvoříme image, podívejme se na soubor v konfigurační složce s názvem postgres.ts .

Zde můžete definovat některé proměnné prostředí pro přístup k vaší databázi:

  • PG_HOST :Adresa databáze. Adresu instance RDS zde použijeme později.
  • PG_PORT :Port databáze. Výchozí hodnota pro Postgres je 5432.
  • PG_USER :Výchozí uživatel databáze
  • PG_PASSWORD :Heslo pro uživatele databáze.
  • PG_DATABASE :Databáze, ke které chceme přistupovat. Všimněte si, že databáze s názvem postgres je výchozí pro instanci Postgres

Chcete-li vytvořit obrázek pomocí Dockeru, použijte tento příkaz:

docker build -t crud-express .

Na názvu zde opravdu nezáleží, protože místní obrázek znovu označíme, abychom jej mohli odeslat do úložiště ECR, které brzy vytvoříme.

Označte obrázek do úložiště ECR

Chcete-li označit místní obrázek a odeslat jej do úložiště ECR, musíte zkopírovat identifikátor URI obrázku. Můžete jej například zkopírovat ze seznamu vašich úložišť v konzole Amazon v ECR:


docker tag crud-express <AWS_ECR_REPO_URI>  

Odeslat obrázek do ECR

Stačí použít stejnou značku jako předtím k odeslání obrázku označeného lokálně do vašeho úložiště ECR:

docker push  <AWS_ECR_REPO_URI>  

Poté počkejte několik minut, než se zatlačení dokončí.

Vytvoření a úloha ECS z obrazu úložiště ECR

Nyní přichází ta zajímavá část. Protože máme oba:

  • instance RDS Postgres s veřejným přístupem
  • obrázek v registru ECR

  • můžeme vytvořit instanci ECS na základě obrazu ECR a připojit ji k instanci RDS pomocí URI instance RDS zadáním PG_HOST proměnnou do naší aplikace.

V konzole AWS vyhledejte ECS:

Použijme konzolu ke konfiguraci vlastního kontejneru:

Vyberte název kontejneru podle svého výběru. Použijte ECR URI jako svůj obrázek Docker:

Nastavte port na 80:

Nyní velmi důležitý krok – nastavte proměnnou prostředí následovně:

  • Klíč :PG_HOST
  • Hodnota:Vaše RDS URI, aby se aplikace ECS mohla připojit k instanci RDS

Dále klikněte na Aktualizovat :

Na Definice úkolu , stačí kliknout na Další:

Na stránce Definujte svou službu , také klikněte na Další :

Pro cluster můžete vybrat název clusteru a poté kliknout na Další :

Pak stačí počkat pár minut, než AWS nechá vytvořit vaše zdroje:

Po dokončení klikněte na úkol:

Přejděte dolů a zkopírujte veřejnou IP, abychom ji mohli použít s naším oblíbeným testerem API:

Závěrečný test

K testování naší aplikace použijeme Postman. Nejprve zkontrolujte, zda je aplikace spuštěna. Proveďte požadavek GET na koncovém bodu AWS_APP_IP:80/ping :

Nyní provedeme několik vložení do databáze. Proveďte požadavek PUT s následujícím tělem (název a obsah) na koncovém bodu AWS_APP_IP:80/postgresql-item :

Udělejme další:

Nyní, abyste získali všechny položky, proveďte požadavek GET na koncovém bodu AWS_APP_IP:80/postgresql-item :

Chcete-li získat jednu položku, proveďte stejný požadavek a připojte ID položky na konec adresy URL
(všimněte si, že chyby zde nezpracováváme správně – toto je pro účely ukázky):

Chcete-li aktualizovat existující položku, můžete odeslat požadavek POST na koncový bod AWS_APP_IP:80/posgresql-item/1 , s uvedením id a předáním těla zprávy:

Zkontrolujeme, zda byly hodnoty aktualizovány:

Můžete také odstranit existující položku zadáním požadavku DELETE na koncovém bodu AWS_APP_IP:80/postgresql-item/ID (např. 2):

A tím jsme úspěšně ověřili připojení úlohy ECS k databázi Amazon RDS!

Verze videa

Preferujete video verzi?