AWS forstærke og vinklet - Hvordan gør man det?
Sådan konfigureres, initialiseres og bruges AWS Amplify, den nye CLI-baserede værktøjskæde og Javascript SDK fra AWS til at styre og bruge AWS Services.
I dette indlæg opretter vi en grundlæggende vinkel applikation og aktiverer den til at autentificere med AWS Cognito ved hjælp af AWS Amplify til at oprette AWS ressourcer og konfigurere den i Amplify frontend SDK.
I øjeblikket fungerer AWS Amplify med følgende kategori af AWS-tjenester:
Bemærk: AWS Amplify er blevet modulariseret, så du kan bare importere det modul, du har brug for (men for vinkel> 6 var der problemer, så jeg var nødt til at bruge pakkerne uden “@” foran det, jeg har beskrevet det senere i dette indlæg)) er navnet på modul og npm-pakker anført langs de forskellige kategorier nedenfor.
- Core - npm-pakke (@ aws-amplify / core): Du har brug for denne kernepakke til at konfigurere Amplify til at bruge en af nedenstående.
- Analytics - npm-pakke (@ aws-amplify / analytics)
- API - npm-pakke (@ aws-amplify / api)
- Autentificering (AWS Cognito) - npm-pakke (@ aws-amplify / authentic): Dette indlæg handler om at bruge dette i din vinklede applikation
- Interaktioner
- PubSub - npm-pakke (@ aws-amplify / pubsub)
- Tryk på meddelelser
- Opbevaring - npm-pakke (@ aws-amplify / storage)
- XR
I dette indlæg vil vi gå igennem processen med at oprette og bruge aws amplify for at aktivere AWS Cognito-baseret godkendelse i en vinkel applikation.
Forudsætning - Opsætning af forstærket konfiguration og start af en ny vinkel applikation:
Nogle foreløbige trin, før du begynder på denne måde:
- Sørg for, at du har en AWS-konto og er fortrolig med det grundlæggende i AWS og Angular og deres økosystemer og terminologier.
- Sørg for, at du har AWS CLI konfigureret på dit system med AWS-profilopsætning for den AWS-konto, som du bruger til denne Sådan gør du.
Installer AWS-amplificere cli og Opret en ny kantet applikation:
- Installer @ aws-amplify / cli
$ npm installere -g @ aws-amplify / cli
2. Kontroller, at AWS amplify cli er installeret
$ forstærke
3. Installer, og sørg for, at du har den nyeste Angular CLI installeret
$ npm installation - gem @ vinkel / cli $ ng version
4. Opret en ny vinkelapplikation (jeg benævner min vinkelprogram “vinkelforstærket” for at følge igennem bare vælge det samme)
$ ng ny kantforstærket
5. Gå til dit nyoprettede kantede applikationsmappe, og installer pakken og kør den for at sikre, at startprogrammet fungerer
$ cd kantforstærket $ npm installation Start af $ npm
6. Installer yderligere npm-pakker til din vinkel / frontend-applikation relateret til AWS Amplify
- aws-amplify - Den nedenstående npm-pakke har brug for den, ellers får du en fejl
- aws-amplify-vinkel - Forstærk vinkelkomponenter
- @ aws-amplify / ui - UI - ikke angivet i Amplify-dokumentationen, og man skal installere det for UI'en for at tilføje AWS-tema css-stil. Bare installation af denne pakke fungerer ikke. Man skal også importere følgende tema og css-fil i vinkelprojektets styles.scss-fil, som er beskrevet senere i dette indlæg.
- @import “[email protected]/ui/src/Theme.css”;
- @import “[email protected]/ui/src/Angular.css”;
$ npm installation - gem aws-amplify $ npm installation - gem aws-amplify-vinkel $ npm installation - gem @ aws-amplify / ui
Initialiser Amplify relaterede konfigurationsfiler / mapper:
I rodkataloget til dette projekt, dvs..e / angulr-amplify, skal du køre følgende kommando
$ forstærke init
og vælg derefter følgende indstillinger, én efter én, når du bliver bedt om det:
Nedenfor vises mit valg.
| => forstærke init Bemærk: Det anbefales at køre denne kommando fra roden til din app-bibliotek ? Vælg din standardeditor: Visual Studio-kode ? Vælg den apptype, du bygger javascript Fortæl os om dit projekt ? Hvilke javascript-rammer bruger du kantet ? Kildevejssti: src ? Distribution Directory Sti: dist ? Build Command: npm build ? Start kommando: start pr Brug af standardudbyder awscloudformation
For mere information om AWS-profiler, se: https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html
? Vil du bruge en AWS-profil? Ja ? Vælg den profil, du vil bruge standard ⠴ Initierer projekt i skyen ...
Dette skal skabe følgende sæt forstærk konfigurationsfil og mapper:
| _Amplify / | _ # aktuelle-sky-backend / | _ amplify-meta.json | _ .config | _ aws-info.json | _ project-config.json | _ backend / | _Amplify-meta.json | _.amplifyrc
Detaljerne om de ovennævnte filer / bibliotek sammen med hvad de bruges til er tilstrækkeligt angivet inden for dette link AWS forstærker Javascript-brug.
For at forstå terminologien skal du have en grundlæggende forståelse af AWS og tilhørende terminologier og servicetilbud.
Den vinklede applikation, vi opretter, bruger bare AWS Auth eller AWS Cognito Service i øjeblikket, så lad os oprette skyformationsstabelskabelonen til AWS Cognito.
$ forstærke tilføj autorisation
Dette skal oprette et bibliotek "autorisation / cognitoxxxxxxxx" inden forstærker / backend-kataloget til dit projektrot. Dette bibliotek skal have et nyligt genereret, cognito cloud-formationsscript og en parameter JSON-fil.
Lad os nu oprette de faktiske AWS-ressourcer ved hjælp af de lokale cloud-formationskripts, der er genereret af amplify cli. Brug følgende kommando til at oprette ressourcerne.
$ forstærke push
| Kategori | Ressource navn | Betjening | Udbyder plugin | | -------- | --------------- | --------- | ----------------- | | Autent | cognitoa67f309a | Opret | awscloudformation | ? Er du sikker på, at du vil fortsætte? (Y / n)
Indtast “Y” ovenfor. Efter et par minutter opretter den AWS-ressource og genererer en konfigurationsfil “aws_exports.js” i mappen
Vi vil bruge denne genererede konfigurationsfil med oplysninger om vores nyligt oprettede AWS-ressourcer til at konfigurere AWS Amplify frontend SDK næste i vores vinkel applikation.
Gå videre til vinkel applikation nu:
Lav nu en kopi af "aws-exports.js" under "src" -mappen oprettet ovenfra.
$ cp src / aws-exports.js src / aws-export.ts
Opret en komponent med navnet "autorisation" ved hjælp af følgende kantede CLI
$ ng g c autorisation Opret src / app / auth / auth.component.scss (0 bytes) Opret src / app / auth / auth.component.html (23 bytes) Opret src / app / auth / auth.component.spec.ts (614 bytes) Opret src / app / auth / auth.component.ts (262 bytes) UPDATE src / app / app.module.ts (467 bytes)
Tilsvarende Opret en "hjemme" og "sikker" komponent
Brug kommandoen nedenfor til oprettelse af "hjemme" -komponent.
$ ng g c hjem Opret src / app / home / home.component.scss (0 bytes) Opret src / app / home / home.component.html (23 bytes) Opret src / app / home / home.component.spec.ts (614 bytes) Opret src / app / home / home.component.ts (262 bytes) UPDATE src / app / app.module.ts (541 bytes)
Brug kommandoen nedenfor til "sikker" komponentoprettelse.
$ ng g c sikker Opret src / app / sikker / sikker.component.scss (0 bytes) Opret src / app / secure / secure.component.html (25 bytes) Opret src / app / sikker / sikker.component.spec.ts (628 bytes) Opret src / app / secure / secure.component.ts (270 bytes) UPDATE src / app / app.module.ts (623 bytes)
På dette tidspunkt har vi oprettet vores AWS Amplify-konfigurationsfiler, vi har en grundlæggende kantet applikationsopsætning med komponenterne: “authent”, “home” og “sikker”
Vores app-URL-opsætning til vores enkle kantede demo-applikation. Intet fan her.
/ - indlæser “hjem” -komponent / side (standard / rodside)
/ autor - indlæser autorisationskomponenten / siden
/ sikker - hvis du er logget ind, indlæser den sikre komponent / side eller omdirigerer til / autorisation og efter en vellykket tilmelding, tag en til denne komponent / side
Kontroller, at vinkelapplikationen fungerer:
Start af $ npm
Konfiguration af vinkel applikation til at bruge AWS Amplify SDK:
Sørg for, at din "aws-exports.ts" -fil er noget lignende nedenfor, baseret på din aws-exports.js-fil:
eksport const awsmobile = { 'aws_project_region': 'us-east-1', 'aws_cognito_identity_pool_id': 'us-east-1: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX', 'aws_cognito_region': 'us-east-1', 'aws_user_pools_id': 'us-east-1_XXXXXXXXX', 'aws_user_pools_web_client_id': 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX' };
Skift main.ts for at tilføje følgende kode for at konfigurere Amplify til din applikation:
import Forstærke fra 'aws-amplify'; import * som awsamplify fra './aws-exports'; Amplify.configure (awsamplify.awsmobile);
Kør nu din ansøgning igen:
Start af $ npm
Du kan få nogle buffere og strømme problemer som nedenfor:
FEJL i node_moduler / aws-sdk / clients / acm.d.ts (133,37): fejl TS2580: Kan ikke finde navnet 'Buffer'. Har du brug for at installere typedefinitioner til node? Prøv "npm i @ types / node". ....
Hvis du får ovenstående fejl, skal du se på følgende link:
Sådan løses ovenstående problem i henhold til ovenstående dokument:
"For at løse disse problemer skal du enten tilføje" typer ": [" node "] til projektets tsconfig.app.json-fil, eller fjerne feltet" typer "helt."
så ændre tsconfig.app.json nedenunder:
{ "extends": "../tsconfig.json", "compilerOptions": { "outDir": "../out-tsc/app", "typer": [] }, "ekskluder": [ "test.ts", "** / *. spec.ts" ] }
til:
{ "extends": "../tsconfig.json", "compilerOptions": { "outDir": "../out-tsc/app", // "typer": ["node"] }, "ekskluder": [ "test.ts", "** / *. spec.ts" ] }
Udfør nu kommandoen nedenfor for at genstarte Angular-applikationen og gå til “http: // localhost: 4200 /”, for at sikre, at din startvinkelprogram fungerer fint.
Start af $ npm
Hvis din applikations hovedside kommer tom, eller hvis du ser følgende fejl, når du højreklikker og kontrollerer konsollen:
Uanmeldt ReferenceError: global er ikke defineret på Object ../ node_modules / buffer / index.js (index.js: 43) hos __webpack_require__ (bootstrap: 78) på Object ../ node_modules / aws-sdk / lib / browserHashUtils.js (browserHashUtils.js: 1) hos __webpack_require__ (bootstrap: 78) på Object ../ node_modules / aws-sdk / lib / browserHmac.js (browserHmac.js: 1) hos __webpack_require__ (bootstrap: 78) på Object ../ node_modules / aws-sdk / lib / browserCryptoLib.js (browserCryptoLib.js: 1) hos __webpack_require__ (bootstrap: 78) på Object ../ node_modules / aws-sdk / lib / browser_loader.js (browser_loader.js: 4) hos __webpack_require__ (bootstrap: 78)
For at løse ovenstående problem skal du tilføje følgende kode til dit indeks.html inden -mærket