프로젝트

AWS 유니티 DynamoDB 복습

아이고이아 2023. 3. 23. 04:23

 

 DynamoDB로 로그인 시스템을 만들어서 이미지를 S3에 올리고 내려 받는 것을 하면 될듯 싶다. 

 UI는 다시 만들기 귀찮으니까 저번에 만든 씬을 재탕을 하도록 해야 겠다. 

 근데 이게 비밀 번호 시스템도 넣어야 할듯 싶다. 책에 있는 Salt 작업도 해볼꺼라서 UI를 조금 바꿔야 할듯 싶다. 회원가입이 업로드가 될듯 싶고 로그인을 하면 다운로드를 하면 될듯 싶다. 

 어떻게 해야 할지 가물가물 하긴 한데 부딧쳐 가며 해결을 하면 될듯 싶긴하다. 

 일단 먼저 UI부터 손을 보고 스크립트를 다시 짜게 땔껀 때야 할듯 싶다. 이거 이번주 까지 해서 끝내면 다시 취업을 해야 겠다.

 그 회사에 가면 대부분 Script Scean 이런식으로 파일종류 별로 구분하던데 개인적으로는 이런식으로 기능별로 나누는 편이다. 이편이 더 작업 하기가 편하다. Rider에서 네임스페이스가 폴더명으로 자동으로 정해지기 때문이다. 

 일단 AWS가서 DynamoDB를 만들고 Lambda를 만들어서 서버에서 로그인을 처리하는 걸 만들고 API을 등록시켜서 유니티로 로그인과 로그아웃을 하는 것까지 만들어 놓으면 될듯 싶다. 그 다음에 S3를 연동을 하자. 

 자전거 타고 왔다가 만들면 될듯 싶다. 요세 관악산에 자전거 타고 가서 도시락을 까먹고 있다. 첫 회사 월급으로 자전거를 하나 샀었다. 

 이번에는 서울 리전에다가 만들도록 해야 겠다. DynamoDB를 설치해 준다. 그 다음에 Lambda를 만든다. 람다는 평소 익숙한 툴인 VS Code로 작업을 해야 할듯 싶다. 아직 AWS랑 연동하는 법은 잘 모른다. 그건 천천히 익히도록 해야 겠다.  

https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-lambda/

 

@aws-sdk/client-lambda

@aws-sdk/client-lambda @aws-sdk/client-lambda Description AWS SDK for JavaScript Lambda Client for Node.js, Browser and React Native. Lambda Overview Lambda is a compute service that lets you run code without provisioning or managing servers. Lambda runs y

docs.aws.amazon.com

 람다 사용법이라든지 이런건 여기 도큐먼트에 가면 잘 정리가 되어 있다. 

 하나 하나 설명하면 첫번째는 DynamoDB랑 연결하는 거다. 두번째는 여러 커맨드를 불러올수가 있는데 Put말고도 Get도 있고 다양하다. 세번째는 람다와 연결하는 거고 Invoke 커맨드 말고도 다양한 커맨드를 불러올수가 있다. 이것들은 공식 문서에 잘 정리가 되어 있고 예제도 있어서 그대로 넣고 따라하면 된다. 네번째는 Node.js에서 재공하는 암호화 모듈이다.

 자바 스크립트 문법을 간단히 설명하면 let const 이런식으로 선언한다. let는 재정의가 가능하고 const는 재정의가 불가능하다. 좀더 범용적으로는 var가 있는데 요세는 잘 사용하지 않는 추세다. 

 자바스크립트는 함수형 언어에 특징을 가지고 있어서 회살표 함수를 쓰고 함수를 변수처럼 쓸수도 있다. 자세한건 실습을 하면서 설명을 하도록 하겠다. 

 async는 코루틴 비슷한 거라고 생각하면 편하다. event는 편지지라고 생각하면 된다. 일단 기본값으로 400을 만들자 200은 성공했을때 나오는 숫자이다. 

 DynamoDB와 Lambda을 쓸수 있도록 세팅을 해준다. 저번과 다르게 이번엔 서울로 접속해 들어간다. 

 아직 VS Code에서 테스트를 하는 법을 모르니까 AWS에서 테스트를 하도록 해야 겠다. 아마 터미널로 요청을 보낼수 있을 꺼다. 

 편지지를 열어서 보낸다고 보면 된다. 잘 되는지 한번 테스트를 해보자. 

 어세스 디나이드가 뜨는데 이건 AWS에서 권한을 설정해 주면 된다. 

 이런식으로 한다. 다시 테스트를 해보자. 

 저장이 잘 되었다. 강의에서 이메일을 중복 체크하는걸 별도로 분리했는데 구지 그럴 필요가 있을까 싶긴 하다. 그러나 실습이니 하고 넘어가자. Invoke를 어떻게 쓰는지 복습이 필요하다. 
 
 아 이게 셰이더랑 최적화 하는 법이랑 블렌더 교육을 하러 갈수가 있으니까 미리 강의안을 만들어야 하는지 모르겠다. 일단 확정이 되면 준비를 해야 할듯 싶다. 그전에 이거 빨리 끝을 내어 놓아야 할듯 싶다.
 

 일단 산책을 갔다가 와서 람다 함수를 더 만들도록 해야 겠다. 

 그게 기본 설정된 키와 다른 벨류들을 검색하는 방법이 달라서 유저 네임 인풋을 따로 만들어야 할듯 싶다. 

 이렇게 수정해주면 될듯 싶다. 일단 Invoke 함수를 만들고 이름을 등록해 주는 걸 만들어야 할듯 싶다. 배울때는 20일 가까이 걸린거 같은데 복습은 하루 이틀이면 끝이 날꺼 같은 예감이 든다. 

 Invoke를 할때는 Payload라는 걸 쓴다.

 그 다음이 좀 어려운데 이게 string이 아니라 uint8이라는 배열을 뱉는다. 따라서 이걸 string으로 바꿔주고 그 string을 다시 JSON으로 바꿔줘야 한다. 

http://gnipbao.github.io/2017/11/15/Uint8Array-to-string/

 

Uint8Array to string in Javascript

Little strings少量数据使用超出异常123456789/** * little arrays (>=100k characters), otherwise you'll get exceptions as RangeError : Maximum call * stack size exceeded or Out of stack space. * @returns

gnipbao.github.io

 어려운 내용이니 천천히 진행하자. 

 await이 빠져서 Promise오류가 난다. 요청을 보내는게 지연시간이 들기때문에 await은 필수다. 

 Lambda도 쓰려면 권한이 설정이 되어 있어야 한다. 

...

...

... 

그래도 안되는데 머가 문제일까?

 둘다 해줘야 하는듯 싶다. 왠지 처음부터 함수를 만들때 기존에 설정된 권한을 불러오는게 있었거 같다. userName 체크 할때 찾아 봐야 할듯 싶다. 

 구문을 바꾸는데 오류가 뜨는듯 싶다. 머가 문제이려나?

 from char code를 안해줘서 그런거였다. 

 그래도 안된다. 

 Payload 값을 변환해줬어야 하는 거였다. 여튼 예상대로 어려웠다. 

 이제 결과값에 따라 제어 처리를 해주는걸 추가 하자. 

 이부분은 만드는데 생각보다 시간이 걸려서 복사 붙어넣기 하고 넘어가자. 실재로 구현하려면 계속 테스트를 해야 해서 오래 걸린다. 

 양이 너무 많아져서 유저 내임과 같이 값을 검색하는 거랑 패스워드 암호화는 내일 작업하도록 해야 겠다. 금토일 3일 하면 DynamoDB까지는 어찌어찌 복습이 될꺼 같긴 하다.