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ázePG_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ázvempostgres
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?