AWS Amplify er et klientbibliotek, CLI toolchain og UI-komponentbibliotek som lar utviklere raskt lage og koble til kraftige tjenester i skyen. I dette innlegget ser vi på hvordan du bygger fullt serverløse webapper med React og AWS Amplify med funksjoner som autentisering, et administrert GraphQL datalag, lagring, lambda-funksjoner og web hosting..
Amplify muliggjør funksjoner som Managed GraphQL (AWS AppSync), lagring (Amazon S3), brukerautentisering (Amazon Cognito), serverløse funksjoner (AWS Lambda), hosting (Amazon CloudFront og Amazon S3), analytics (Amazon Pinpoint) og mer.
Målet med biblioteket og CLI er å la utviklere lage fullstabile web- og mobilapplikasjoner uten å måtte bekymre seg om å administrere sin egen back-end-infrastruktur, slik at de kan bevege seg videre opp i stabelen ved hjelp av ferdighetene de allerede kjenner.
I denne serien vil jeg vise deg hvordan du oppretter et nytt AWS Amplify-prosjekt, aktiverer sky-funksjoner ved hjelp av CLI, kobler React-programmet og begynner å samhandle med skygtjenestene. I dette innlegget vil jeg vise deg hvordan du implementerer godkjenning, lagring og hosting. I den neste opplæringen lærer vi hvordan du lager og samhandler med GraphQL og Serverless APIer.
Mens denne opplæringen bruker React, vil Amplify jobbe med et hvilket som helst JavaScript-prosjekt og har ramme-spesifikke komponenter for Angular, Vue, React Native og Ionic. CLI støtter også native iOS og Android.
For å komme i gang må vi først opprette et nytt React-program ved hjelp av CLI for CREATE-REPAY og bytte til den nye katalogen:
npx create-react-app forsterker-web-app cd amplify-web-app
Deretter installerer vi AWS Amplify-klientavhengighetene:
garn legg til aws-amplify aws-amplify-react # eller npm installere aws-amplify aws-amplify-react
Deretter må vi installere AWS Amplify CLI.
npm installer -g @ aws-amplify / cli
Nå som AWS Amplify CLI er installert, må vi konfigurere den for å kunne opprette ressurser i vår AWS-konto. Vi gjør dette ved å kjøre forsterker configure
kommandoen og sette opp en ny AWS-bruker.
forsterker configure
Du kan se en kort video gjennomgang av denne konfigurasjonen på YouTube.
Nå som AWS Amplify CLI er installert og konfigurert, kjør forsterke
kommandoen fra kommandolinjen din for å se tilgjengelige alternativer og sikre at CLI ble installert riktig.
forsterke
For å initialisere et nytt AWS Amplify-prosjekt, kjører vi forsterker init
kommando:
forsterker init
Når du blir bedt om det, velg ønsket tekstredigeringsprogram og hold standardinnstillingene for alle de andre alternativene.
Dette har nå initialisert et nytt AWS Amplify-prosjekt lokalt, og vi vil nå se en forsterke
katalog og .amplifyrc
fil opprettet i rotkatalogen av vårt React-prosjekt. Disse filene inneholder konfigurasjonsinformasjon om vårt Amplify-prosjekt, og vi trenger ikke å røre dem i det hele tatt for nå.
Den første funksjonen vi aktiverer, er brukerautentisering. Vi kan aktivere funksjoner når som helst ved å kjøre forsterker legg til
. Kategorien for godkjenning er auth
, så løp:
forsterker legg til auth
Når du blir spurt Vil du bruke standard autentisering og sikkerhetskonfigurasjon?, velge Ja.
Når dette er opprettet, må vi løpe forsterk press
å opprette den nye tjenesten i vår konto:
forsterk press
Når du blir spurt Er du sikker på at du vil fortsette?, velge Ja.
Når tjenesten er opprettet, kan du når som helst se tjenesten i betjeningspanelet ved å besøke https://console.aws.amazon.com/cognito/users/ og klikk på navnet på tjenesten din.
Vi kan også vise alle aktiverte tjenester når som helst ved å kjøre forsterk status
:
forsterk status
Du vil også legge merke til en ny fil som ble opprettet-AWS-exports.js-i rotmappen til React-appen. Du trenger ikke å redigere denne filen som den håndteres for deg av CLI, men vi vil bruke den i neste trinn for å konfigurere det lokale prosjektet.
Nå som vi har opprettet autentiseringstjenesten, kan vi begynne å bruke den i vår React-app!
Det første vi må gjøre er å konfigurere React-programmet for å vite om vårt Amplify-prosjekt. Slik gjør vi det ved å ringe Amplify.configure
i roten til prosjektet - for oss, vil det være src / index.js.
import Forsterk fra 'aws-amplify' importkonfigurasjon fra './aws-exports' Amplify.configure (config)
Nå er vårt prosjekt klar til å gå, og vi kan implementere godkjenning.
withAuthenticator
Høyere bestillingskomponentVi ser på et par måter å gå om å implementere brukerautentisering, men for å sparke ting, begynner vi å bruke withAuthenticator
høyere rekkefølge komponent fra AWS-forsterke reagerer bibliotek. Denne komponenten stiller ut en hel autentiseringsflyt i bare noen få linjer med kode og er en fin måte å komme seg opp med biblioteket.
I App.js, importere withAuthenticator
HOC øverst på filen:
importer withAuthenticator fra 'aws-amplify-react'
Og, nederst, oppdatere eksport
uttalelse om å pakke inn app
komponent med withAuthenticator
.
eksporter standard medAuthenticator (App)
For å lære mer, les om tilgjengelige Amplify React-komponenter for godkjenning i den offisielle dokumentasjonen.
Nå kan vi kjøre appen og bør se en påloggingsskjerm:
Klikk Opprett konto å registrere deg og logge deg på appen. Når vi er logget inn, blir økten lagret, så vi kan oppdatere siden, og vi vil bli logget på.
Vi kan også gjengi en sign-out-knapp ved å legge et annet argument til HOC:
eksporter standard medAuthenticator (App, includeGreetings: true)
Merk at vi også kan bruke Auth
klasse direkte for å signere brukere ut:
// 1. Import klassen import Auth fra 'aws-amplify' // Signer brukeren ut avventer Auth.signOut ()
Legg merke til at når du ringer Auth.signOut
direkte, må vi likevel gjenopprette komponenten på en måte for å bringe brukeren tilbake til påloggingssiden. Du kan se et eksempel på dette i en problemtråd på prosjektets GitHub repo.
Auth
KlasseVi kan også bruke Auth
klasse for å håndtere brukere manuelt. Auth har over 30 tilgjengelige metoder, inkludert melde deg på
, Logg inn
, confirmSignUp
, confirmSignIn
, Glemt passord
, og resendSignUp
.
La oss se på hvordan du kan implementere brukeropplysning ved hjelp av melde deg på
klassemetode:
// 1. Opprett startstatus for å holde brukerinnganger state = brukernavn: ", passord:", e-post: ", telefonnummer:", authCode: " // 2. onChange handler for endringer i brukerinngang onChange = e => this.setState ([e.target.name]: e.target.value) // 3. Funksjon å ringe Auth.signUp signUp = async () => const brukernavn, passord, email, phone_number = this.state venter Auth.signUp (brukernavn, passord, attributter: phone_number, email) console.log ('vellykket pålogget') // 4. Funksjon å ringe Auth.signUp confirmSignUp = async () => const brukernavn, authCode = this.state venter Auth.confirmSignUp (brukernavn, authCode) console.log ('vellykket bekreftet registrert') // 5. I gjengivelsesmetode lager du inndata med attributter for å oppdatere tilstand // 6. Lag knapper for å ringe signUp og confirmSignUp metoder
Dette er en tegning for hvordan du manuelt kunne registrere en bruker med Auth-klassen.
Manuell implementering tar lengre tid å skrive, men gir deg full kontroll over ikke bare brukergrensesnittet, men også den faktiske funksjonaliteten du vil implementere.
Du kan lære mer om godkjenning med AWS forsterker i prosjektdokumentasjonen.
Amazon S3 er en populær tjeneste for lagring av medier som bilder og videoer, samt for back-end-tjenester som applikasjonshotell, sikkerhetskopiering og programvarelevering.
AWS Amplify CLI gjør det mulig for oss å opprette, konfigurere, oppdatere og slette S3-buckets. I denne delen ser vi på hvordan du lager en S3-bøtte, samt hvordan du laster opp og laster ned bilder og filer til bøtte.
For å aktivere Lagring kan vi kjøre følgende kommando:
forsterker legg til lagring
Deretter blir du bedt om å levere noen konfigurasjonsdetaljer. Velg Innhold (bilder, lyd, video, etc.) service. Deretter leverer du et prosjektspesifikt ressursnavn (brukt internt i prosjektet) og bøtte navn (S3-stedet der dataene dine skal lagres). Til slutt bør tilgang begrenses til Bare bruk brukere, og autentiserte brukere skal gis Les Skriv adgang.
Nå har lagring blitt lagt til i vår konfigurasjon, og vi løper forsterk press
å opprette de nye ressursene i vår konto:
forsterk press
Dette vil skape og konfigurere en Amazon S3-bøtte som vi kan begynne å bruke til lagring av elementer.
Hvis vi ønsket å teste dette ut, kunne vi lagre litt tekst i en fil som dette:
importere Storage fra 'aws-amplify' // lage funksjon for å jobbe med Storage addToStorage = () => Storage.put ('javascript / MyReactComponent.js', 'import React from' reagere 'const App = () = > (Hei Verden
) eksport standard App ') .then (result => console.log (' result: ', result)) .catch (err => console.log (' error: ', err)); // legge til klikkhåndterer
Dette vil opprette en mappe som heter javascript i vår S3-bøtte og lagre en fil som heter MyReactComponent.js der med koden vi angav i det andre argumentet til Storage.put
.
Hvis vi vil lese alt fra denne mappen, kan vi bruke Storage.list
:
readFromStorage = () => Storage.list ('javascript /') .then (data => console.log ('data fra S3:', data)) .catch (err => console.log ('error') )
Hvis vi bare vil lese enkeltfilen, kan vi bruke Storage.get
:
readFromStorage = () => Storage.get ('javascript / MyReactComponent.js') .then (data => console.log ('data fra S3:', data)) .catch (err => console.log feil '))
Hvis vi ønsket å trekke ned alt, kunne vi bruke Storage.list
:
readFromStorage = () => Storage.list (") .then (data => console.log ('data fra S3:', data)) .catch (err => console.log ('error'))
Arbeide med bilder er også enkelt. Her er et eksempel:
klasse S3ImageUpload strekker seg React.Component onChange (e) const file = e.target.files [0]; Storage.put ('example.png', fil, contentType: 'image / png') .then (resultat => console.log (result)) .catch (err => console.log (err)); gjengivelse () retur ( this.onChange (e) />)
I koden ovenfor kobler vi en filopplastingsformularinngang til onChange
hendelse handler. Når brukeren forsyner en fil, Storage.put
kalles for å laste opp filen til S3 med MIME-typen image / png
.
For å distribuere og hoste appen din på AWS, kan vi bruke hosting
kategori.
forsterker legg til hosting
Igjen blir du bedt om å levere noen konfigurasjonsalternativer:
Nå er alt satt opp, og vi kan publisere appen:
forsterk publisere
Hvis du til enhver tid vil slette en tjeneste fra prosjektet og kontoen din, kan du gjøre dette ved å kjøre forsterker fjerne
kommandoen og trykk deretter.
forsterker fjern auth forsterker push
Hvis du er usikker på hvilke tjenester du har aktivert når som helst, kan du kjøre forsterk status
kommando:
forsterk status
forsterk status
vil gi deg listen over ressurser som for øyeblikket er aktivert i appen din.
AWS Amplify gjør det mulig for utviklere å bygge fullstabler, skyaktiverte programmer lettere enn noen gang før, slik at utviklere kan iterere raskt, direkte fra deres front-end-miljø.
Dette er del en av en todelt serie. I den neste opplæringen lærer vi hvordan du lager og samhandler med GraphQL og Serverless APIer. Så hold deg innstilt.