개발/AOS

안드로이드 AWS Amplify + S3에 파일 업로드 Android uploads files with AWS Amplify + S3 (2/3) S3버킷 생성

728x90

이번 포스팅의 과정은 아래와 같다.

 

 

1. S3버킷 생성

2. AWS Cognito 생성

3. IAM 설정

 

 

안드로이드에서 Amplify SDK 세팅을 끝냈다면.

S3 Console (s3.console.aws.amazon.com/s3/home?region=ap-northeast-2 에 들어가서 새 버킷을 만들어주자. (리전 선택은 자유~)

생성 방법은 매우 단순해서 생략 하도록 한다.

 

 

 

AWS Cognito 설정하기

 

원래 AWS 를 연동하려면 AccessKey, SecretKey 로 접근해야 하지만 어디선가 보기에는 인증서가 앱에 탑재되므로 보안성이 낮아져, AWS 자체에서 제공하는 Cognito 서비스를 이용하여 인증 권한자를 추가하고, 이 정보를 앱에 탑재하는 방법을 사용한다.

 

아래 링크에서 Manage Identify Pools를 클릭.

ap-northeast-2.console.aws.amazon.com/cognito/home?region=ap-northeast-2

 

 

 

아래의 화면이 뜨면 pool 이름을 넣고 Unauthenticated identities 의 체크박스에 체크를 표시한다. (이 체크박스를 선택해야만 앱에서 접근 가능.)

 

그리고 Create Pool 를 누르면 정보를 확인하는 창이 나오는데, Allow를 눌러준다.

 

그러면 이제 Getting Started with Amazon Cognito 하면서 밑 부분 Get AWS Credentials 에 코드가 있을텐데, 이 부분을 메모장에 잘 옮겨놓으면 된다.

 

 

 

 

IAM만 설정하면 된다.

console.aws.amazon.com/iam/home#/home

옆에 roles를 누르면 생성한 Cognito Role들이 보이고

 

Unauth가 붙은 Role에 들어간다 (중요, Unauth가 붙은 것을 클릭해야함)

 

그 다음, Add inline policy 를 눌러준다.

 

 

이제 Policy 를 생성하는 창이 나오는데, Service 에는 S3 를, 두 번째 Action 은 PutObject, GetObject 를 넣어준다. 보안상의 이유로 일단  최소한의 역할만 부여하도록 한다.

 

그 다음, object resource type 를 설정하라면서 ARN 을 추가하라는 곳이 있는데, 해당 부분을 클릭하면 팝업창이 뜬다.

bucket name 에는 방금 생성한 S3의 버킷 이름을, object 에는 Any 를 체크한다.

Add 를 클릭한 다음 Review policy 를 클릭하면 생성한 policy 를 검토하는 창이 나온다. 그대로 Create Policy 를 누른다.

 

이제 해당 Cognito Role 에 S3 에 대한 접속 권한이 생겼다. 남은 작업은 앱에 연동하는 것 뿐이다. 다음 포스팅에 끝내보도록 하자.