AWS Amplify를 사용하여 React 앱을 생성하고 Amazon Cognito로 인증 추가 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS Amplify를 사용하여 React 앱을 생성하고 Amazon Cognito로 인증 추가

작성자: Rishi Singla(AWS)

환경: PoC 또는 파일럿

기술: 웹 및 모바일 앱, 보안, 자격 증명, 규정 준수

워크로드: 기타 모든 워크로드

AWS 서비스: AWS Amplify, Amazon Cognito

요약

이 패턴은 AWS Amplify를 사용하여 React 기반 앱을 생성하는 방법과 Amazon Cognito 를 사용하여 프런트엔드에 인증을 추가하는 방법을 보여줍니다. AWS Amplify는 에서 모바일 및 웹 앱 개발을 가속화하는 도구 세트(오픈 소스 프레임워크, 시각적 개발 환경, 콘솔) 및 서비스(웹 앱 및 정적 웹 사이트 호스팅)로 구성됩니다AWS.

사전 조건 및 제한 사항

사전 조건

  • 활성 AWS 계정

  • 시스템에 설치된 Node.jsnpm

제품 버전

  • Node.js 버전 10.x 이상(버전을 확인하려면 터미널 창에서 node -v(을)를 실행)

  • npm version 6.x 이상(버전을 확인하려면 터미널 창에서 npm -v(을)를 실행)

아키텍처

대상 기술 스택

  • AWS Amplify

  • Amazon Cognito

도구

에픽

작업설명필요한 기술

Amplify를 설치합니다CLI.

Amplify는 React 앱에 대한 AWS 클라우드 서비스를 생성하기 위한 통합 도구 체인CLI입니다. Amplify를 설치하려면 다음을 CLI실행합니다.

npm install -g @aws-amplify/cli

새 주요 버전이 출시되면 npm에서 알려줍니다. 그 경우 다음 명령을 사용하여 npm 버전을 업그레이드합니다.

npm install -g npm@9.8.0

여기서 9.8.0은 설치하려는 버전을 의미합니다.

앱 개발자
작업설명필요한 기술

React App을 생성합니다.

새 AMI를 생성하려면 명령을 사용합니다.

npx create-react-app amplify-react-application

여기서 ampify-react-application(은)는 앱 이름입니다.

앱이 성공적으로 생성되면 다음과 같은 메시지가 표시됩니다.

Success! Created amplify-react-application

다양한 하위 폴더가 있는 디렉터리가 React 앱용으로 생성됩니다.

앱 개발자

로컬 시스템에서 앱을 실행합니다.

이전 단계에서 생성한 amplify-react-application 디렉터리로 이동하여 다음 명령을 실행합니다.

amplify-react-application% npm start

그러면 로컬 시스템에서 React 앱이 실행됩니다.

앱 개발자
작업설명필요한 기술

AWS 계정에 연결하도록 Amplify를 구성합니다.

다음 명령을 실행하여 Amplify를 구성합니다.

amplify-react-application % amplify configure

Amplify는 다음 단계에 따라 AWS 계정에 대한 액세스를 설정하도록 CLI 요청합니다.

  1. AWS 관리자 계정에 로그인합니다.

  2. 사용할 AWS 리전을 지정합니다.

  3. 프로그래밍 방식으로 액세스할 수 있는 AWS 자격 증명 및 액세스 관리(IAM) 사용자를 생성하고 AdministratorAccess-Amplify 권한 정책을 사용자에게 연결합니다.

  4. 액세스 키 ID 및 보안 액세스 키를 생성하고 복사합니다.

  5. 터미널에 이러한 세부 정보를 입력합니다.

  6. 프로파일 이름을 생성하거나 기본 프로파일을 사용합니다.

경고: 이 시나리오에서는 프로그래밍 방식 액세스 및 장기 보안 인증 정보를 가진 IAM 사용자에게 보안 위험이 있습니다. 이 위험을 줄이려면 이러한 사용자에게 작업을 수행하는 데 필요한 권한만 제공하고 더 이상 필요하지 않을 경우 이러한 사용자를 제거하는 것이 좋습니다. 필요한 경우 액세스 키를 업데이트할 수 있습니다. 자세한 내용은 IAM 사용 설명서액세스 키 업데이트를 참조하세요.

이 절차는 터미널에 다음과 같이 표시됩니다.

Follow these steps to set up access to your AWS account: Sign in to your AWS administrator account: https://console.aws.amazon.com/ Press Enter to continue Specify the AWS Region ? region: us-east-1 Follow the instructions at https://docs.amplify.aws/cli/start/install/#configure-the-amplify-cli to complete the user creation in the AWS console https://console.aws.amazon.com/iamv2/home#/users/create Press Enter to continue Enter the access key of the newly created user: ? accessKeyId: ******************** ? secretAccessKey: **************************************** This would update/create the AWS Profile in your local machine ? Profile Name: new Successfully set up the new user.

이 절차에 대한 자세한 내용은 Amplify Dev Center의 설명서를 참조하십시오.

일반 AWS, 앱 개발자
작업설명필요한 기술

Amplify를 초기화합니다.

  1. 새 디렉터리에서 Amplify를 초기화하려면 다음을 실행합니다.

    amplify init

    Amplify는 프로젝트 이름 및 구성 파라미터를 입력하라는 프롬프트를 표시합니다.

  2. 모든 파라미터를 지정한 다음 Y를 눌러 지정된 구성으로 프로젝트를 초기화합니다.

    Project information | Name: amplifyreactproject | Environment: dev | Default editor: Visual Studio Code | App type: javascript | Javascript framework: react | Source Directory Path: src | Distribution Directory Path: build | Build Command: npm run-script build | Start Command: npm run-script start
  3. 이전 단계에서 생성한 프로파일을 선택합니다. 리소스는 생성한 Amplify 프로젝트의 dev 환경에 배포됩니다.

  4. 리소스가 생성되었는지 확인하기 위해 AWS Amplify 콘솔을 열고 리소스 및 세부 정보를 생성하는 데 사용된 AWS CloudFormation 템플릿을 볼 수 있습니다.

    Deploying root stack amplifyreactproject [ ====================-------------------- ] 2/4 amplify-amplifyreactproject-d… AWS::CloudFormation::Stack CREATE_IN_PROGRESS UnauthRole AWS::IAM::Role CREATE_COMPLETE DeploymentBucket AWS::S3::Bucket CREATE_IN_PROGRESS AuthRole AWS::IAM::Role CREATE_COMPLETE
앱 개발자, 일반 AWS
작업설명필요한 기술

인증 추가

amplify add <category> 명령을 사용하여 사용자 로그인 또는 백엔드와 같은 기능을 추가할 수 있습니다API. 이 단계에서는 명령을 사용하여 인증을 추가합니다.

Amplify는 Amazon Cognito, 프런트엔드 라이브러리, 드롭인 인증자 UI 구성 요소를 포함한 백엔드 인증 서비스를 제공합니다. 기능에는 사용자 가입, 사용자 로그인, 다중 인증, 사용자 로그아웃, 암호 없는 로그인이 포함됩니다. Amazon, Google과 Facebook 같은 페더레이션된 자격 증명 공급자와 통합합으로써 사용자를 인증할 수도 있습니다. Amplify 인증 범주는 API, 분석 및 스토리지와 같은 다른 Amplify 범주와 원활하게 통합되므로 인증된 사용자와 인증되지 않은 사용자에 대한 권한 부여 규칙을 정의할 수 있습니다.

  1. React 앱에 대한 인증을 구성하려면 다음 명령을 실행합니다.

    amplify-react-application1 % amplify add auth

    그러면 다음과 같은 정보와 프롬프트가 표시됩니다. 비즈니스 및 보안 요구 사항에 따라 적절한 구성을 선택할 수 있습니다.

    Using service: Cognito, provided by: awscloudformation The current configured provider is Amazon Cognito. Do you want to use the default authentication and security configuration? (Use arrow keys) ❯ Default configuration Default configuration with Social Provider (Federation) Manual configuration I want to learn more.
  2. 간단한 예를 들어, 기본 구성을 선택한 다음 사용자의 로그인 메커니즘(이 경우 이메일)을 선택합니다.

    How do you want users to be able to sign in? Username ❯ Email Phone Number Email or Phone Number I want to learn more.
  3. 고급 설정을 우회하여 인증 리소스 추가를 완료합니다.  

    Do you want to configure advanced settings? (Use arrow keys) ❯ No, I am done. Yes, I want to make some additional changes.
  4. 로컬 백엔드 리소스를 빌드하고 클라우드에서 프로비저닝합니다.

    amplify-react-application1 % amplify push

    이 명령은 계정의 Congito 사용자 풀을 적절하게 변경합니다.

  5. Y를 눌러 를 사용하여 auth 리소스를 구성합니다 CloudFormation.

    그러면 다음과 같은 리소스가 구성됩니다.

    UserPool AWS::Cognito::UserPool CREATE_COMPLETE UserPoolClientWeb AWS::Cognito::UserPoolClient CREATE_COMPLETE UserPoolClientWeb AWS::Cognito::UserPoolClient CREATE_COMPLETE UserPoolClientRole AWS::IAM::Role CREATE_COMPLETE UserPoolClientLambda AWS::Lambda::Function CREATE_COMPLETE UserPoolClientLambdaPolicy AWS::IAM::Policy CREATE_COMPLETE UserPoolClientLogPolicy AWS::IAM::Policy CREATE_IN_PROGRESS

    AWS Cognito 콘솔을 사용하여 이러한 리소스를 볼 수도 있습니다(Cognito 사용자 풀 및 자격 증명 풀 찾기).

    이 단계는 Cognito 사용자 풀 및 자격 증명 풀 구성으로 React 앱의 src 폴더에 있는 aws-exports.js 파일을 업데이트합니다.

앱 개발자, 일반 AWS
작업설명필요한 기술

App.js 파일을 변경합니다.

src 폴더에서 App.js 파일을 열고 수정합니다. 수정된 파일은 다음과 같아야 합니다.

{ App.Js File after modifications: import React from 'react'; import logo from './logo.svg'; import './App.css'; import { Amplify } from 'aws-amplify'; import { withAuthenticator, Button, Heading } from '@aws-amplify/ui-react'; import awsconfig from './aws-exports'; Amplify.configure(awsconfig); function App({ signOut }) { return ( <div> <h1>Thankyou for doing verification</h1> <h2>My Content</h2> <button onClick={signOut}>Sign out</button> </div> ); } export default withAuthenticator(App);
앱 개발자

React 패키지를 가져옵니다.

App.js 파일은 두 개의 React 패키지를 가져옵니다. 다음 명령을 사용하여 이 패키지를 설치합니다.

amplify-react-application1 % npm install --save aws-amplify @aws-amplify/ui-react
앱 개발자
작업설명필요한 기술

앱을 실행합니다.

로컬 머신에서 React 앱을 시작합니다.

amplify-react-application1 % npm start
앱 개발자, 일반 AWS

인증을 확인합니다.

앱에 인증 파라미터를 입력하라는 프롬프트가 표시되는지 확인합니다. (이 예제에서는 이메일을 로그인 방법으로 구성했습니다.)

프론트엔드 UI에 로그인 자격 증명을 입력하라는 프롬프트가 표시되고 계정을 생성할 수 있는 옵션이 있어야 합니다.

또한 Amplify 빌드 프로세스를 구성하여 지속적 배포 워크플로의 부분으로서 백엔드를 추가할 수 있습니다. 하지만 이 패턴에서는 그러한 옵션을 다루지 않습니다.

앱 개발자, 일반 AWS

관련 리소스