-
AWS :: API Gateway를 통해 S3에 데이터 저장하기 (1/2)AWS 2021. 7. 7. 14:58728x90
1. Amazon S3 버킷 생성
- Amazon S3에서 데이터를 저장할 버킷을 생성한다.
- ex) bucket name : bucket-test-kinesis
2. Role 생성
- API Gateway와 Kinesis에서 사용할 role을 생성한다.
- ex) Role name : api-gateway-to-kinesis
- 생성 후, "AmazonKinesisFirehoseFullAccess" policy를 추가한다.
3. Kinesis Firehose 생성
- Kinesis 생성 시, destination 설정 과정에서 S3와 Buffer conditions를 다음과 같이 설정한다. (테스트 용이기 때문에, 최대한 빠른 시간 안에 데이터 흐름을 파악하기 위함)
4. API Gateway 생성 및 연결
- [API Gateway - REST API]를 생성한다.
- ex) API name : api-kinesis
- 생성한 API에 resource를 추가한다.
- ex) resource name : user
- 생성한 resource 아래에 method를 추가한다.
- 이 때 post 방식을 선택한다.
- API Gateway와 Kinesis firehose를 연결하기 위해 다음과 같이 설정한다.
- 'Action'의 경우, 다음 document를 참고하여 'PutRecord'로 설정한다. (document url : https://docs.aws.amazon.com/ko_kr/firehose/latest/APIReference/API_PutRecord.html)
- 'Execution role'의 경우, IAM Role에서 생성한 role의 ARN을 붙여넣는다.
- 설정을 완료한 API Gateway 흐름도는 다음과 같다.
5. API Gateway 동작 확인
- "Integration Request"를 클릭한다.
- "HTTP Header"를 클릭하여 다음 내용을 추가한다.
- "Mapping Templates"를 클릭하여 다음 내용을 선택 및 추가하고 save한다.
- 아래의 json script에 다음 내용을 추가한다.
- 아래의 코드를 설명하자면, 입력으로 받은 값을 'data'에 저장하고, 이 값을 적절히 인코딩하여 'Data'라는 변수에 저장한다.
- 다시 앞으로 돌아와, "TEST"를 클릭한다.
- 아래의 "Request Body"에 다음 내용을 작성한다.
- 'data'라는 변수를 설정하고, 이 안에 다음과 같은 내용을 json 형식으로 작성한다.
- 예시는 'id'와 'event'라는 두 개의 값을 설정하였지만, 다른 더 많은 값을 설정해도 된다.
- "TEST"를 클릭하여 다음과 같은 결과를 확인할 수 있다.
- 'Recordid'가 적절히 출력됨을 알 수 있다.
- 'Data'라는 변수 안에 다음과 같이 한 줄의 긴 string 형식으로 인코딩되어 저장됨을 알 수 있다.
- S3에 접속하여 설정한 버킷 경로에 가보면 데이터 파일이 저장됨을 알 수 있다.
- 내용을 확인하기 위해 해당 파일을 선택하여 [object actions - Query with S3 Select]를 클릭한다.
- "Input settings"와 "Output settings"를 json으로 선택하고, "Run SQL query"를 클릭하여 다음과 같은 결과를 확인한다.
다음 게시물 : AWS :: API Gateway를 통해 S3에 데이터 저장하기 (2/2)
728x90'AWS' 카테고리의 다른 글
AWS :: Rest API를 이용하는 Data Pipeline 생성 (0) 2021.07.19 AWS :: S3 데이터를 slack에 notify하기 (AWS Lambda) (0) 2021.07.08 AWS :: EC2에 접속하여 S3 조회하기 (SSH, WSL, AWS CLI) (0) 2021.07.06 AWS :: S3에서 S3로 데이터 복사하기 (0) 2021.07.06 AWS :: Well-Architected Framework (0) 2021.06.28