În articolul meu anterior, am vorbit despre modul în care AWS Chalice vă ajută să construiți rapid o aplicație fără server bazată pe Python și să o implementați pe AWS în câteva minute.

Deși a fost un prototip rapid și distractiv, este posibil ca Python să nu fie limbajul ales pentru mulți când vine vorba de rularea aplicațiilor de producție pe scară largă.

Multe organizații folosesc Java ca limbaj principal de dezvoltare și mulți dezvoltatori se îndreaptă, de asemenea, către limbaje mai noi, cum ar fi Go.

În acest articol, vă voi prezenta pașii necesari pentru a construi și implementa aceeași aplicație fără server care primește cele mai recente știri de la Știri Google. Dar, de data aceasta, vom folosi AWS Serverless Application Model (SAM) și Java pentru dezvoltarea noastră.

La fel ca Chalice, AWS SAM CLI oferă un set bogat de instrumente care permit dezvoltatorilor să construiască rapid aplicații fără server.

Condiții prealabile

Acest tutorial necesită un cont AWS. Dacă nu aveți deja unul, continuați și creeaza una. Aplicația noastră va folosi doar resursele de nivel gratuit, deci costurile nu ar trebui să fie o problemă.

De asemenea, trebuie să configurați securitatea și să creați utilizatori și roluri pentru accesul dvs.

Cum se configurează acreditările AWS

SAM utilizează interfața AWS Command Line Interface (CLI) din culise pentru a implementa proiectul. Dacă nu ați folosit înainte CLI-ul AWS pentru a lucra cu resursele AWS, îl puteți instala urmând instrucțiunile Aici.

Odată instalat, trebuie configurați CLI-ul dvs. AWS pentru a utiliza acreditările din contul dvs. AWS.

Cum sa creati o aplicatie fara server utilizand AWS SAM

Cum se instalează SAM

Apoi, trebuie să instalați SAM. Vom folosi Java în acest tutorial, dar puteți utiliza orice limbă de rulare acceptată de AWS Lambda.

Verificați instalarea Java

$ java --version

openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.8+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.8+10, mixed mode)

Instalați SAM CLI

În funcție de sistemul de operare, instrucțiunile de instalare pentru SAM CLI vor varia. Acest articol acoperă instrucțiunile pentru instalarea acestuia pe MacOS.

Abordarea recomandată pentru instalarea SAM CLI pe macOS este utilizarea managerului de pachete Homebrew.

Verificați dacă aveți instalat Homebrew, astfel:

$ brew --version

Homebrew/homebrew-core (git revision fe68a; last commit 2020-10-15)
Homebrew/homebrew-cask (git revision 4a2c25; last commit 2020-10-15)

Dacă nu, puteți instala Homebrew folosind următoarea comandă:

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

Apoi, instalați SAM folosind următoarea comandă:

brew tap aws/tap
brew install aws-sam-cli

Verificați instalarea SAM

$ sam --version

SAM CLI, version 1.6.2

Cum să creați un proiect

Apoi, rulați sam-init comanda pentru a crea un nou proiect.

sam init -r java11 -d maven --app-template hello-world -n daily-news-java

În mod implicit, SAM creează un proiect Python. Din moment ce dorim să creăm un proiect Java, va trebui să trecem câțiva parametri suplimentari.

Parametri:

  • -r java11: utilizați runtime-ul Java 11
  • -d maven: utilizați maven ca manager de dependență
  • --app-template hello-world: utilizați șablonul de pornire rapidă HelloWorld
  • -n daily-news-java: numele proiectului nostru

Aceasta va crea un daily-news-java din directorul curent. Puteți vedea că SAM a creat mai multe fișiere în acest folder.

1612043586 819 Cum sa creati o aplicatie fara server utilizand AWS SAM

Să aruncăm o privire la App.java fişier.

sam-init comanda a creat o funcție Lambda simplă care returnează corpul JSON {"message": "hello world"} și adresa IP a aparatului atunci când este apelat. Acum putem schimba acest șablon și adăuga mai multe coduri pentru a citi știri de la Google.

Acum să aruncăm o privire la template.yml fişier.

Acesta conține șablonul CloudFormation care creează resursele noastre Amazon API Gateway și AWS Lambda.

Configurația Lambda specifică faptul că avem un HelloWorldFunction lambda care merge mai departe Java 11 și 512 MB memorie.

Configurarea gateway-ului API definește un singur GET metoda cu un /hello cale pe care o vom folosi pentru a invoca API-ul.

Vom utiliza bibliotecile interne de analiză HTTP și XML ale Java, deci nu este nevoie să adăugăm dependențe la pom.xml fişier.

Rețineți că valoarea implicită pom.xml furnizat ca parte a codului boilerplate vine cu sursa compilatorului setată la 1.8. Va trebui să îl actualizăm la 11 astfel încât să putem folosi noua bibliotecă HTTP care face parte din Java 11.

Deoarece Java este orientat obiect, să creăm și un NewsItem clasă care conține titlul și data publicării unei știri.

Rețineți că am suprascris fișierul toString metodă. Aceasta creează o reprezentare JSON a obiectului și evită utilizarea oricăror biblioteci JSON.

Apoi, trebuie să adăugați o metodă pentru a prelua fluxul RSS de la Google, analizați-l pentru a extrage titlul știrii și data publicării și creați o listă de știri. Pentru a face acest lucru, adăugați următorul cod la App.java:

Acum să actualizăm handleRequest metoda în App.java pentru a invoca această metodă și a returna lista de știri ca rezultat.

Nu uitați să actualizați și testele unitare. Au fost scrise pentru a testa prezența „hello world” în răspuns și vor începe să eșueze după schimbarea noastră.

Cum să începeți construirea

De la daily-news-java folder, rulați fișierul sam build comanda.

1612043586 427 Cum sa creati o aplicatie fara server utilizand AWS SAM

Aceasta vă compilează codul sursă și creează orice dependențe pe care le aveți în aplicație. Apoi mută toate fișierele în .aws-sam/build folder astfel încât să fie gata să fie ambalate și implementate. De asemenea, actualizează fișierul template.yml depuneți în consecință.

Cum să testați cererea dvs. local

Iată acum partea frumoasă despre SAM. Puteți implementa și testa aplicația dvs. la nivel local! Acest lucru este foarte util în etapa de dezvoltare, atunci când doriți să testați codul fără a fi necesar să-l implementați în AWS.

SAM CLI oferă sam local comanda pentru a rula aplicația dvs. local. Aceasta utilizează intern Docker pentru a simula mediul de execuție al Lambda. Dacă nu aveți instalat Docker, îl puteți obține de la Aici.

Putem testa local aplicația noastră în două moduri:

  • Găzduirea API-ului local
  • Invocând direct funcția Lambda

Să aruncăm o privire la ambele opțiuni.

Gazduire locala

Utilizați următoarea comandă pentru a porni API-ul local:

sam local start-api

Aceasta creează intern un server local și expune un punct final local care reproduce API-ul REST.

1612043586 299 Cum sa creati o aplicatie fara server utilizand AWS SAM

După ce containerul Docker este încărcat, puteți accesa API-ul pe localhost, asa:

curl http://127.0.0.1:3000/hello

Invocare directă

Utilizați următoarea comandă pentru a invoca funcția Lambda:

sam local invoke "HelloWorldFunction" -e events/event.json
1612043586 156 Cum sa creati o aplicatie fara server utilizand AWS SAM

Aceasta invocă direct funcția Lambda (la fel cum am numi main metoda) și trece event.json fișier ca sarcină utilă.

Cum să implementați proiectul

Să implementăm aplicația. De la daily-news-java folder, rulați fișierul sam deploy --guided comanda. Urmați instrucțiunile și furnizați intrările necesare (sau pur și simplu apăsați Enter pentru a accepta valorile implicite).

1612043586 853 Cum sa creati o aplicatie fara server utilizand AWS SAM

Aceasta implementează aplicația noastră pe AWS utilizând Amazon API Gateway și AWS Lambda. Este nevoie de artefactele de implementare pe care le-am construit cu sam build comandă, împachetează și le încarcă într-un bucket Amazon S3 creat de AWS SAM CLI și implementează aplicația utilizând AWS CloudFormation.

1612043586 284 Cum sa creati o aplicatie fara server utilizand AWS SAM
1612043586 795 Cum sa creati o aplicatie fara server utilizand AWS SAM
API de știri zilnice în API Gateway
1612043587 606 Cum sa creati o aplicatie fara server utilizand AWS SAM
Funcția Lambda de știri zilnice

Acum putem încerca să accesăm API folosind adresa URL a punctului final furnizat mai sus.

1612043587 92 Cum sa creati o aplicatie fara server utilizand AWS SAM

Cum se curăță resursele

Putem folosi aws cloudformation delete-stack comanda pentru a șterge stiva AWS CloudFormation împreună cu toate resursele pe care le-a creat atunci când am rulat sam deploy comanda.

1612043587 605 Cum sa creati o aplicatie fara server utilizand AWS SAM

Concluzie

Felicitări! Tocmai ați implementat o aplicație fără server pe AWS utilizând AWS SAM. A implicat ceva mai multă muncă decât înainte, dar nici nu a fost prea greu.

Acum puteți merge mai departe și puteți face orice modificări la App.java fișier și reluare sam deploy pentru a redistribui modificările.

Puteți găsi codul sursă complet pentru acest tutorial Aici.

Mulțumesc că ai stat cu mine până acum. Sper că ți-a plăcut articolul. Vă puteți conecta cu mine pe LinkedIn unde discut regulat despre tehnologie și viață. De asemenea, aruncați o privire la unele dintre celelalte articole despre Mediu.

Lectura placuta ?