Create React App
#
2021-10-05#
List- Display a Note
- Render the Note Form
#
Display a Note#
Add the Routessrc/Route.js
- 루트 경로 /notes/:id를 사용함으로써 우리는 라우터에게 해당되는 경로에 컴포넌트인 Notes를 설정함
- /notes/new 경로의 new의 id와 매칭 시킨 결과도 가져올 수 있으므로 이를 방지하기 위해 /notes/new 경로의 뒤에 선언
src/containers/Note.js
useEffect Hooks 에서 로드를 메모한 후 React 상태를 저장함. React Router와 함께 제공되는 useParams Hooks를 통해 id를 사용하여 URL에서 메모를 얻음
첨부 파일이 있는 경우 키를 사용하여 S3에 업로드한 파일에 대한 보안 링크를 얻음
note와 함께 상태의 객체를 갖는 이유는 나중에 사용자가 메모를 편집할 때 이것을 사용할 것이기 때문임
#
Render the Note Formsrc/containers/Notes.js
note 상태 변수가 설정된 경우에만 양식을 렌더링
양식 내에서 note.attachment를 사용하여 첨부 파일을 표시하는 부분을 조건부로 렌더링
formatFilename 업로드하는 동안 파일 이름에 추가한 타임스탬프를 제거 하여 첨부 URL 형식을 지정
또한 사용자가 메모를 삭제할 수 있도록 삭제 버튼을 추가하고, 제출 버튼과 마찬가지로 호출이 진행 중임을 알리는 플래그를 설정 isDeleting.
NewNote 컴포넌트 에서 했던 것과 똑같은 방식으로 파일 입력으로 첨부 파일을 처리
삭제 버튼은 사용자가 브라우저의 confirm 대화 상자를 사용하여 메모를 삭제할 것인지 확인
#
2021-10-12#
List- Delete a Note
- Set up Secure Pages
- Create a Route That Redirects
#
Delete a Notesrc/containers/Notes.js
#
Set up Secure Pages사용자 인증과정 준비
라우팅 전에 사용자가 인증되었는지 확인하는 AuthenticatedRoute라는 경로 생성
그리고 사용자가 인증되지 않았는지 확인하는 UnauthenticatedRoute라는 구성 요소 생성
#
Create a Route That Redirectssrc/components/AuthenticatedRoute.js
AuthenticatedRoute 컴포넌트의 props에 children이 존재(모든 react 컴포넌트 동일) 현재 경우 하위 구성 요소의 예는 NewNote, Notes
AuthenticatedRoute 컴포넌트는 Route 컴포넌트 반환
useAppContext Hooks를 사용하여 사용자가 인증되었는지 확인
사용자가 인증되면 children구성 요소를 렌더링, 사용자가 인증되지 않은 경우 Redirect React Router 구성 요소를 사용하여 사용자를 로그인 페이지로 리디렉션
또한 로그인 페이지의 현재 경로( redirect쿼리 문자열)를 전달, 나중에 이것을 사용하여 사용자가 로그인한 후 다시 리다이렉션 처리하며, useLocationReact Router 후크를 사용하여 이 정보를 습득
#
2021-10-19#
List- Hexo Blog
#
2021-10-26#
List- Serverless Stack
#
Serverless StackDocs SST**
서버리스 스택(SST)은 서버리스 앱을 쉽게 구축할 수 있는 프레임워크라고 소개되어 있다.
2021-10-24
일 기준으로 현재 SST는 JavaScript, TypeScript, Python, Golang 및 C#을 지원하고 있다.
Language | CDK | Lambda |
---|---|---|
JavaScript | ✓ | ✓ |
TypeScript | ✓ | ✓ |
Go | Coming soon | ✓ |
Python | Coming soon | ✓ |
C# | Coming soon | ✓ |
F# | Coming soon | ✓ |
SST 프레임워크를 사용하면 앱에서 필요한 인프라스트럭쳐를 코드로(AWS CDK 사용) 정의하고, AWS Lambda 함수를 보다 간편하게 구성할 수 있다.
#
디자인 원리SST는 몇가지 핵심 원리를 가지고 설계된 프레임워크이다.
- 점진적 공개
- 구조의 설정
- 권한 부여
- 제로베이스 구성
#
점진적 공개서버리스 앱을 구축하기 위해 SST가 제공 하는 구성은 점진적 공개 라는 아이디어를 기반으로 한다. 기본 구성이 간단하고 이해하기 쉬우며 환경파악에 용이하며, 더 복잡한 사용 사례에 대해 점진적으로 사용자가 쉽게 지정할 수 있는 장점이 있다.
#
구조의 설정Api Routes에 간단한 예시
이러한 형태는 정의한것을 쉽게 이해할 수 있다. 만약 커스텀한 함수 속성이 필요하다면 아래와 같이 추가할 수 있다.
#
권한 부여SST는 attaching function을 통해 권한을 부여한다.
아래 cronjob 설정에 대한 예를 살펴보자
cronjob에 대한 접근권한을 부여에 대한 예시
#
제로베이스 구성SST를 프레임워크가 탄생한 가장 큰 이유 중 하나는 서버리스 개발 환경이 항상 부족하다고 느꼈기 때문이라고 한다.
- 부족한 점
- Live Lambda Development 가 해결하려고 하는 긴밀한 피드백 루프가 부족
- 여러 플러그인, Webpack, Babel, TypeScript, 테스트 프레임워크, 린터 등을 구성해야 함
- 설정은 종종 깨지기 쉽고 최신 상태를 유지하기 위해 별도의 프로젝트 유지 관리자에 의존
위에 부족한 점들로 인해 Serverless 환경에 많은 경험이 있는 개인 개발자라면 괜찮겠지만 더 큰 팀의 일원이거나 이제 막 서버리스를 시작하는 경우 개발 환경을 시작하고 실행하는 것이 매우 어려운 점 발생한다.
SST의 설계 원칙 중 하나는 개발 환경이 기본적으로 작동하는지 확인하는 것이며, 구성이 거의 또는 전혀 필요하지 않는것이 핵심 원칙이다.
#
Quick StartNode 환경에서 아래 명령어로 빠르게 SST 프로젝트를 생성할 수 있다.