= Размещение приложения React на AWS за 30 минут = Это руководство содержит очень много изображений и предназначено для начинающих. В нем объясняется, как вы можете разместить свое приложение React на веб-сайте с полной системой авторизации. Он использует возможности AWS MobileHub через CLI Mobilehub (интерфейс командной строки). Учебное пособие не требует навыков работы с сервисами AWS, а также покажет вам, как настроить стандартное приложение React. Если у вас уже есть приложение React, **вы можете перейти к разделу 2, где мы устанавливаем awsmobile-cli и добавляем его в наше приложение = Прежде чем мы начнем, нам нужно настроить пару вещей на вашем компьютере = **На вашем компьютере установлена ​​среда Node 8.x** - Это среда выполнения для серверов приложений Javascript. Далее следует диспетчер пакетов узлов (NPM). - NPM используется для установки пакетов узлов, таких как React, AWS Amplify, пакета коннектора AWS-JS, и это в основном все. - httpsnodejs.org/en/download/ ** Аккаунт уровня бесплатного пользования AWS – Вы получаете бесплатный доступ к сервисам AWS в рамках уровня бесплатного пользования. Для этого урока этого должно быть более чем достаточно. Однако имейте в виду, что каждый сервис имеет ограничение на использование каждый месяц, и это может стоить вам реальных денег. - httpsaws.amazon.com/free/ **Установите AWS CLI (интерфейс командной строки), чтобы вызывать сервисы AWS непосредственно с консоли** **В этом курсе мы будем использовать поддерживаемый шаблон от Facebook, создателей React **Редактор на ваш выбор - Я предлагаю начать с Visual Studio Code, облегченного редактора с широкими возможностями модификации, который может работать с большинством языков программирования и фреймворков. Совет для профессионалов. В процессе установки VS Code обязательно установите флажок, который добавляет его к путям вашей среды. Это дает вам доступ к открытому коду VS из терминала, набрав âÃÂÃÂcode имя_файла.jsâÃÂàили âÃÂà Âкод .âÃÂàдля всего проекта, в котором вы находитесь. **Терминал, в котором вы находитесь. мне комфортно в - Большинство разработчиков должны установить Git на свои компьютеры. Это дает вам доступ к Git Bash, к которому многие разработчики обращаются через терминал. Давай начнем! **1. Создайте приложение React и войдите в папку проекта через терминал** Войдите в терминал и найдите папку, в которой вы храните приложения. Я предлагаю папку с именем âÃÂÃÂdevâÃÂÃÂ. npx имя проекта create-реагировать на приложение&& cd имя-проекта или npm -g install create-реагировать-приложение создать-реагировать-приложение имя-проекта Здесь мы создаем приложение React на основе шаблона. âÃÂÃÂnpxâÃÂà— это инструмент Node, который использует сервер npm для вызова удаленных пакетов. Второй фрагмент кода устанавливает приложение create-react-app локально с помощью *npm -g install create-react-app* **и затем создает приложение. Я предлагаю использовать npx, чтобы всегда быть в курсе событий с помощью create-react-app, а затем создать приложение. Я предлагаю использовать npx, чтобы всегда быть в курсе событий с помощью create-react-app. **2. Установите awsmobile CLI на свой компьютер и запустите его в проекте** С этого момента вы должны обратить внимание на свое приложение React в редакторе кода. Будут добавлены такие папки, как /awsmobile и некоторые дополнения к файлу package.json. В окне терминала введите npm установить -g awsmobile-кли для глобальной установки awsmobile-cli. Мы воспользуемся этим после некоторой работы в консоли AWS Mobile Hub. Убедитесь, что вы находитесь внутри своего проекта и введите awsmobile инициализация Вам предлагается набор вопросов, в которых значения по умолчанию хороши, поэтому нажимайте клавишу ввода для каждого параметра, пока он автоматически не откроет AWS в вашем браузере по умолчанию. Войдите в свою учетную запись уровня бесплатного пользования, если вы еще этого не сделали. ![ ](httpsmiro.medium.com/max/1360/1*fqDYITZ3T-JAVMf0TwH7-A.png) Это гарантирует awsmobile-cli, что мы подключены к правильной учетной записи AWS. Вернитесь к своему терминалу и нажмите Enter, чтобы продолжить. AWS необходимо настроить пользователя для управления приложением. Это будет сделано автоматически awsmobile-cli, когда вы продолжите нажимать ввод. ![ ](httpsmiro.medium.com/max/1122/1*mUD3gl1bsrU03MKg4CZj9Q.png) Выполнив это, вы будете перенаправлены в AWS IAM, где вам останется только «Далее». ¢ÃÂàваш путь к полноте! На втором этапе он должен был автоматически отметить «Доступ администратора», который дает пользователю доступ ко всем необходимым функциям AWS. ![ ](httpsmiro.medium.com/max/1400/1*clWJ77BP4-1LcgqmBVnVdQ.png) Когда это будет сделано, очень важно, чтобы вы загрузили файл .csv со своими секретными учетными данными, поскольку они будут отображаться в AWS только один раз. Эти клавиши будут использоваться на следующих шагах вашего окна терминала. ![ ](httpsmiro.medium.com/max/1400/1*eduJiN7QBTezz8y3vVrjkg.png) ![ ](httpsmiro.medium.com/max/1004/1*-gK1PXA0XNjFmWoOer8xgw.png) Это успешно создает ваше приложение AWS MobileHub и автоматически устанавливает aws-amplify& aws-amplify-react в ваш локальный проект React ![ ](httpsmiro.medium.com/max/1224/1*z8xlOVoTSYNKvtOiPsyb1w.png) Когда этот процесс будет завершен (~ 1 мин), вы можете ввести awsmobile консоль чтобы увидеть ваше приложение Mobile Hub в браузере по умолчанию. Вы также можете ввести «awsmobile», чтобы увидеть список различных действий. Отсюда мы добавим Cognito Login с помощью браузера, но вы можете сделать это из интерфейса командной строки awsmobile. **3. Фактическое добавление входа в Cognito и хостинга** На последнем этапе мы добавим AWS Cognito в наш проект через консоль AWS MobileHub. Вы также можете проверить Хостинг, который уже включен по умолчанию. ![ ](httpsmiro.medium.com/max/1400/1*qs_KoX4Qn4QXJfXqMCZ7tA.png) Чтобы протестировать хостинг, щелкните функцию в консоли и щелкните URL-адрес, который вы предоставили. Содержимое здесь представляет собой шаблон от AWS, но вы скоро перезапишете его приложением React. **Чтобы добавить вход пользователя Cognito, прокрутите вниз, чтобы найти «Вход пользователя» и щелкните его. ** Это включает пулы пользователей Cognito с системой аутентификации. Используйте âÃÂÃÂEmailâÃÂàс адреса электронной почты или номера телефона, чтобы указать адрес электронной почты в качестве имени пользователя при входе в систему. Или вы можете использовать имя пользователя и включить âÃÂÃÂEmailâÃÂà+ âÃÂÃÂUsernameâà ÂÃÂ, чтобы позволить пользователю выбирать. Код подтверждения вы получите по электронной почте в любом случае. Мы принимаем электронную почту, потому что AWS не взимает плату за отправку кодов подтверждения регистрации по электронной почте, в то время как отправка SMS стоит реальных денег. ![ ](httpsmiro.medium.com/max/1322/1*4ozbhL2UjGXfwcXk9t-mmg.png) Что приводит к: ![ ](httpsmiro.medium.com/max/1304/1*CCPIwYcPoehI2Bzzwj7BKA.png) Если вы нажмете «Действие» >«Редактировать» в Cognito, вы увидите консоль Cognito для управления вашими пользователями и расширенными функциями безопасности. Некоторые настройки, которые вы сделали на этом шаге, необратимы, но вы всегда можете удалить свой пользовательский пул и создать новый. На этом настройка AWS Cognito в MobileHub завершена. Пришло время добавить код. Сколько? 5 строк! И 3 из них — это только импорт в React. = Добавление ваших настроек в проект React и публикация на вашем веб-сайте = В своем терминале вы можете в любое время использовать awsmobile pull или awsmobile push, чтобы соответствующим образом загружать свои изменения из онлайн-консоли AWS MobileHub в свое приложение или отправлять локальные изменения, сделанные через интерфейс командной строки awsmobile в терминале. Для этого варианта использования мы хотим получить сделанные нами изменения. Вернитесь к своему терминалу и введите ![ ](httpsmiro.medium.com/max/1394/1*zxtajVqajk5MtgNNHea7bg.png) Вернувшись в VS Code, вы увидите, что ваш проект был изменен. Вы можете проверить свои локальные конфигурации в ./awsmobile/backend/mobile-hub-project.yml. Кроме того, в ./package.json вы найдете две выделенные библиотеки, добавленные с помощью awsmobile init, который мы сделали ранее. ![ ](httpsmiro.medium.com/max/928/1*0j1ZYd5Qgx3GIUEQ3QA80A.png) Теперь мы будем использовать их для переноса нашего приложения в окно входа в систему Cognito. Откройте ./src/index.js и измените это: ![ ](httpsmiro.medium.com/max/1244/1*fnbXXDHYud2OC411jcja_w.png) к этому: импортировать React из «реагировать»; импортировать ReactDOM из 'react-dom'; импортировать index.css'; импортировать приложение из приложения'; импортировать registerServiceWorker из registerServiceWorker'; импортировать awsMobile из aws-exports; импортировать Amplify из «aws-amplify»; импортировать { withAuthenticator } из «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