진행하는 프로젝트 시나리오에서 aws s3에 사진을 업로드하고 ai서버로 key값을 보낸다.
그러면 ai서버에서 그 사진을 판독해서 다시 s3 버킷에 판독한 사진이 올라올린다.
이 후 그 사진을 다시 불러와 사용자에게 보여주며 판별 값을 통해 결과를 보여주는 형식인데
aws s3와 통신하는 방법은 여러가지가 있지만
그 중에서 aws cognito라는 사용자 인증방식을 통한 방법으로 진행했다.
간단히 말하면 내가 접근 할 수 있도록 자격을 갖췄다라는 걸 증명해주는 플랫폼이다.
Amazon Cognito는 웹 및 모바일 앱을 위한 자격 증명 플랫폼입니다. Amazon Cognito는 OAuth 2.0 액세스 토큰 및 AWS 보안 인증을 위한 사용자 디렉터리, 인증 서버, 인증 서비스
사용방법은 너무 많이 널려있기에 생략하고
문제가 생겼던 부분은 IAM 사용자의 역할에도 따로 S3 버킷에 접근할 수 있는 권한을 따로 설정했어야 했었다.
이 문제로 꽤나 고생했지만 쓰고 보니 별거 아닌거 같다..ㅎㅎ
사실 이 방법을 찾기 위해 시행착오가 두가지나 된다.
1번째로는 서버에서 aws-s3와 통신할 수 있는 동적url을 가지고 s3에 접근해 업로드하는 방법
- 가장 많이 사용하는 방법인거 같긴한데 아쉽게도 이미지파일이 자꾸 일반 파일처럼 올라가서 실패했다.
동적 url을 받아와서 그 주소에 이미지파일을 바로 올리려고 해서 생긴 문제 같아서
Bitmap을 사용한 이미지파일을 전환해서 보내려했지만 AI에서 사진 분석을 위해선 최대한 원본 그대로가
좋을 것 같다는 생각이라고 하셔서 다른 방법을 찾아보게 됐다.
2번째로는 AI서버에 직접 사진을 쏘고 s3에서 받아서 진행하는 방법
- 다른 방법으로 전전긍긍하던 와중에 AI서버와의 직접 소통을 통한 방법이 생각 나 서버관리자 분이랑 해서 시나리오대로
잘 소통할 수 있게 됐지만 보안적인 측면에서 탈락됐다.
그렇게 마지막 방법으로 앞선 이야기로 다룬 aws cognito를 통한 자격증명 방법으로 통신에 성공했고,
보안도 챙기고 시나리오 대로 잘 진행 할 수 있게 됐다.
또한, 다운받을 때도 같은 방법을 사용하게 되어 시간을 훨씬 단축할 수 있게 됐다.
아 맞다 머릿속으로 생각한 데이터의 형식과 들어온 데이터의 형식이 달라서 조금 헤맸었는데
아직은 미숙해서 잘못된 생각을 한 것 같고 꼭 로그를 통한 데이터 확인은 필수 인것 같다.
'Project > APP' 카테고리의 다른 글
Kotlin TTS(Text To Speach) (0) | 2024.03.30 |
---|---|
근접 센서를 이용한 밝기조절 / 배터리 아끼기 (2) | 2023.11.20 |
시리얼 명령 class / 시리얼 명령 동적화 (0) | 2023.11.15 |
Kotlin으로 메인보드 컨트롤 (2) | 2023.11.14 |
Flutter의 한계와 kotlin 외부 usb카메라 연동 (2) | 2023.11.10 |