= Hostowanie aplikacji React z AWS w 30 minut = Ten samouczek jest bardzo obrazowy i skierowany do całkowicie początkujących. Wyjaśnia, w jaki sposób możesz hostować swoją aplikację React na stronie internetowej z kompletnym systemem autoryzacji. Przywołuje moc AWS MobileHub poprzez Mobilehub CLI (Interfejs wiersza poleceń). Samouczek nie wymaga żadnych umiejętności z usługami AWS, a także pokaże, jak skonfigurować aplikację szablonową React. Jeśli masz już aplikację React, **możesz przejść do sekcji 2, w której instalujemy awsmobile-cli i dodajemy go do naszej aplikacji = Zanim zaczniemy, musimy skonfigurować kilka rzeczy na twoim komputerze = **Środowisko Node 8.x zainstalowane na Twoim komputerze** - To jest środowisko wykonawcze dla serwerów aplikacji Javascript. Wynika to z menedżera pakietów węzłów (NPM). - NPM służy do instalowania pakietów węzłów, takich jak React, AWS Amplify, pakiet konektorów AWS-JS i to w zasadzie wszystko. - httpsnodejs.org/en/download/ **Konto bezpłatnego poziomu AWS - Otrzymujesz bezpłatny dostęp do usług AWS w ramach Free Tier. W przypadku tego samouczka powinno to wystarczyć. Pamiętaj jednak, że każda usługa ma limit użytkowania w każdym miesiącu, a to może kosztować prawdziwe pieniądze. - httpsaws.amazon.com/free/ **Zainstaluj AWS CLI (interfejs wiersza poleceń), aby wywoływać usługi AWS bezpośrednio z konsoli** **W tym kursie użyjemy szablonu serwisu Facebook, twórców React **Wybrany przez Ciebie edytor - Sugeruję zacząć od Visual Studio Code, wysoce modyfikowalnego lekkiego edytora, który może obsługiwać większość języków programowania i frameworków. Wskazówka: w procesie instalacji VS Code upewnij się, że zaznaczono pole, które dodaje go do nazw ścieżek środowiska. Daje to dostęp do otwartego kodu VS z terminala, wpisując âÃÂÃÂcode filename.jsâÃÂàlub âÃÂà Âkod .âÃÂàdla całego projektu, w którym uczestniczysz. **Terminal, w którym jesteś Czujesz się komfortowo - Większość programistów powinna mieć zainstalowanego Gita na swoim komputerze. Daje to dostęp do Git Bash, z którego korzysta wielu programistów. Zaczynajmy! **1. Utwórz aplikację React i wejdź do folderu projektu przez terminal** Wejdź do terminala i zlokalizuj folder, w którym przechowujesz aplikacje. Sugeruję folder o nazwie âÃÂÃÂdevâÃÂÃÂ. npx utwórz-reaguj-aplikacja-nazwa-projektu&& cd nazwa-projektu lub npm -g install create-react-app create-react-app nazwa-projektu Tutaj tworzymy aplikację React opartą na szablonie. âÃÂÃÂnpxâÃÂàto narzędzie Node, które używa serwera npm do wywoływania zdalnych pakietów. Drugi fragment kodu instaluje lokalnie aplikację create-react-app *npm -g install create-react-app* **a następnie tworzy aplikację. Sugeruję używanie npx, aby zawsze być na bieżąco z aplikacją create-react-a następnie tworzy aplikację. Sugeruję używanie npx, aby zawsze być na bieżąco z aplikacją create-react-app. **2. Zainstaluj awsmobile CLI na swoim komputerze i uruchom go w projekcie** Od tego momentu powinieneś zwracać uwagę na swoją aplikację React w swoim edytorze kodu. Zostaną dodane foldery, takie jak /awsmobile i niektóre dodatki do pliku package.json. W oknie terminala wpisz npm install -g awsmobile-cli zainstalować globalnie awsmobile-cli. Użyjemy tego po wykonaniu pewnych prac w konsoli AWS Mobile Hub. Upewnij się, że jesteś w swoim projekcie i wpisz awsmobile init Zostaniesz poproszony o zestaw pytań, w których wartości domyślne są dobre, więc naciskaj enter przez każde ustawienie, aż automatycznie otworzy się AWS w domyślnej przeglądarce. Zaloguj się na swoje konto Free Tier, jeśli jeszcze tego nie zrobiłeś. ![ ](httpsmiro.medium.com/max/1360/1*fqDYITZ3T-JAVMf0TwH7-A.png) Zapewnia to awsmobile-cli, że jesteśmy połączeni z właściwym kontem AWS. Wróć do terminala i naciśnij Enter, aby kontynuować. AWS musi skonfigurować użytkownika do kontrolowania aplikacji. Zostanie to zrobione automatycznie przez awsmobile-cli, gdy będziesz nadal naciskać enter. ![ ](httpsmiro.medium.com/max/1122/1*mUD3gl1bsrU03MKg4CZj9Q.png) Po wykonaniu tej czynności zostaniesz przeniesiony do AWS IAM, gdzie po prostu „Dalej” ¢ÃÂàswoją drogę do kompletności! W drugim kroku powinien automatycznie zaznaczyć âÃÂÃÂAdministrator AccessâÃÂÃÂ, który daje Użytkownikowi dostęp do wszystkich potrzebnych nam funkcji AWS. ![ ](httpsmiro.medium.com/max/1400/1*clWJ77BP4-1LcgqmBVnVdQ.png) Po zakończeniu bardzo ważne jest pobranie pliku .csv z tajnymi danymi uwierzytelniającymi, ponieważ będą one wyświetlane tylko raz w AWS. Te klucze będą używane w kolejnych krokach okna terminala. ![ ](httpsmiro.medium.com/max/1400/1*eduJiN7QBTezz8y3vVrjkg.png) ![ ](httpsmiro.medium.com/max/1004/1*-gK1PXA0XNjFmWoOer8xgw.png) Spowoduje to pomyślne utworzenie aplikacji AWS MobileHub i automatyczną instalację aws-amplify& aws-amplify-react do lokalnego projektu React ![ ](httpsmiro.medium.com/max/1224/1*z8xlOVoTSYNKvtOiPsyb1w.png) Po zakończeniu tego procesu (~1 min) możesz pisać konsola awsmobile aby wyświetlić aplikację Mobile Hub w domyślnej przeglądarce. Możesz także wpisać âÃÂÃÂawsmobileâÃÂÃÂ, aby wyświetlić listę różnych działań. Odtąd dodamy Logowanie Cognito za pomocą przeglądarki, ale możesz to zrobić z interfejsu CLI awsmobile. **3. Właściwie dodawanie logowania i hostingu Cognito** W ostatnim kroku dodamy AWS Cognito do naszego projektu za pośrednictwem konsoli AWS MobileHub. Możesz także sprawdzić Hosting, który jest już domyślnie włączony. ![ ](httpsmiro.medium.com/max/1400/1*qs_KoX4Qn4QXJfXqMCZ7tA.png) Aby przetestować Hosting, kliknij funkcję w konsoli, a następnie kliknij podany adres URL. Treść tutaj jest szablonem AWS, ale wkrótce nadpiszesz go aplikacją React. **Aby dodać Logowanie użytkownika Cognito, przewiń w dół, aby znaleźć âÃÂÃÂLogowanie użytkownikaâÃÂài kliknij to. **Umożliwia to korzystanie z pul użytkowników Cognito z systemem uwierzytelniania. Użyj âÃÂÃÂE-mailâÃÂàz adresu e-mail lub numeru telefonu, aby wymusić adres e-mail jako nazwę użytkownika podczas logowania. Lub możesz użyć nazwy użytkownika i włączyć opcję âÃÂÃÂE-mailâÃÂà+ âÃÂÃÂNazwa użytkownikaâà Âàaby umożliwić użytkownikowi wybór. Tak czy inaczej otrzymasz kod potwierdzający e-mailem. Akceptujemy e-maile, ponieważ AWS nie pobiera opłat za wysyłanie kodów potwierdzających rejestrację na e-mail, podczas gdy wysyłanie SMS-ów kosztuje prawdziwe pieniądze. ![ ](httpsmiro.medium.com/max/1322/1*4ozhL2UjGXfwcXk9t-mmg.png) Co skutkuje w: ![ ](httpsmiro.medium.com/max/1304/1*CCPIwYcPoehI2Bzzwj7BKA.png) Jeśli klikniesz Akcja >Edytuj w Cognito, zobaczysz konsolę Cognito do zarządzania użytkownikami i zaawansowanymi funkcjami bezpieczeństwa. Niektóre ustawienia wykonane w tym kroku są nieodwracalne, ale zawsze możesz usunąć swoją pulę użytkowników i utworzyć nową. To kończy konfigurację AWS Cognito wewnątrz MobileHub. Czas dodać kod. Jak dużo? 5 linii! A 3 z nich to tylko import w React. = Dodanie ustawień do projektu React i opublikowanie na Twojej stronie internetowej = W swoim terminalu możesz w dowolnym momencie użyć awsmobile pull lub awsmobile push, aby odpowiednio pobrać zmiany z konsoli AWS MobileHub online do swojej aplikacji lub wypchnąć lokalne zmiany dokonane przez awsmobile CLI w terminalu. W tym przypadku chcemy pobrać wprowadzone przez nas zmiany. Wróć do terminala i wpisz ![ ](httpsmiro.medium.com/max/1394/1*zxtajVqajk5MtgNNHea7bg.png) Po powrocie do VS Code zobaczysz, że Twój projekt został zmodyfikowany. Możesz sprawdzić swoje lokalne konfiguracje w ./awsmobile/backend/mobile-hub-project.yml Ponadto w ./package.json znajdziesz dwie podświetlone biblioteki dodane przez awsmobile init, co zrobiliśmy wcześniej. ![ ](httpsmiro.medium.com/max/928/1*0j1ZYd5Qgx3GIUEQ3QA80A.png) Teraz użyjemy ich do zawinięcia naszej aplikacji w okno logowania Cognito. Otwórz ./src/index.js i zmodyfikuj to: ![ ](httpsmiro.medium.com/max/1244/1*fnbXXDHYud2OC411jcja_w.png) do tego: importuj reakcję z „reaguj”; zaimportuj ReactDOM z „react-dom”; importuj index.css'; importuj aplikację z aplikacji”; importuj registerServiceWorker z registerServiceWorker'; importuj awsMobile z aws-exports'; importuj wzmocnienie z „aws-wzmacniaj”; zaimportuj { withAuthenticator } z „aws-amplify-react”Amplify.configure(awsMobile); const AppWithAuth = withAuthenticator(App)ReactDOM.render(('root registerServiceWorker And you’re done! Try to run your application from your terminal with npm start and see it be loaded into the browser with a sleek GUI created by AWS: ![ ](httpsmiro.medium.com/max/1216/1*9pmJHX6DTtFkhhXMtjEL4w.png) From here you can register, login or reset users, and as an admin you can see the users who are registering. **To add hosting simply go to your terminal and type awsmobile publish If you get this warning, abort the publish, run awsmobile pull and run awsmobile publish again: ![ ](httpsmiro.medium.com/max/1350/1*9vJAXhEKd4FVv121B4i9Uw.png) When this process is done, your hosted website automatically opens in your default browser: ![ ](httpsmiro.medium.com/max/1400/1*TNAioGF6HyaebijhULw.png) **There, you’re done = Pitfalls in the process = If the application says “No user pools”, make sure your MobileHub console has Sign-In activated, and that you’ve called awsmobile pull from your terminal. This updates the aws-exports.js file which is then added to Amplify.configure() in React. Also, remember to import that file! **Further challenges** **Use the ** **aws-amplify authentication documentation ** **to add a signout button to your application Hint: You’ll need to import Auth and call its signOut function. import { Auth } from aws-amplify-react **Add your custom domain name to the hosted website**This is done through CloudFront, which you can access in MobileHub “Hosting and Streaming”. Read the docs provided if you want assitance: == Using Custom URLs for Files by Adding Alternate Domain Names (CNAMEs) - Amazon CloudFront == Describes how to add an alternate domain name, known as a CNAME, to use your own domain name instead of the default… docs.aws.amazon.com **Add Google Login**Delete your Cognito User Pool and add one with Facebook/Google providers. This can be a bit tricky as you need to get e.g. Google Web App Client ID from the google terminal to make this work. **Hope you enjoyed this very detailed introduction to AWS MobileHub. It’s a lot of fun once you get the hang of it, and creating a Serverless backend for your frontend project has never been as easy