본 글을 이해하기 위해서는 아래와 같은 사항이 필요함
- AWS 계정 생성 경험
- RESTful API에 대한 이해 (HTTP Verb, Body, 테스트 등)
- Colab(Jupyter Notebook, Python)에 대한 경험
STEP 1 : API Gateway 생성
상단 검색바에 API Gateway 검색 및 접속
API 생성 클릭
REST API 의 구축 선택
프로토콜 선택 : REST, 새 API 생성 : 새 API 을 선택 (기본값)
API 이름을 입력하고 (예: DynamoDB) API 생성 클릭
STEP 2 : DynamoDB 사용을 위한 IAM 역할 생성
API Gateway를 통해 DynamoDB에 접근하기 위해서 역할 을 생성해줘야함.
상단 검색바에 IAM 검색 및 접속
좌측 액세스 관리 - 역할 선택
우측 상단 역할 만들기 선택
신뢰할 수 있는 엔터티 유형 - 사용자 지정 신뢰 정책 선택
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "apigateway.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
위의 JSON을 사용자 지정 신뢰 정책 편집기에 복붙.
우측 하단에 다음 선택
AmazonDynamoDBFullAccess 선택 후 다음 클릭
역할 이름을 작성하고, 우측 하단 역할 생성 클릭
새로 생성한 역할의 신뢰할 수 있는 개체가 AWS 서비스 : apigateway인 걸 확인하고 클릭하여 진입
ARN을 확인하여 복사
예) arn:aws:iam::____________:role/_______________
STEP 3 : 데이터 삽입 메서드 생성
다시금 API Gateway 에 방금 생성한 API 로 접속
리소스 옆 작업 버튼을 누르고, 하단 메뉴의 메서드 생성을 클릭
생성된 메소드를 선택하여 POST 설정
그 후 ✔︎ 를 선택
열린 설정 페이지에서 상단 내용을 선택/기입
통합 유형 : AWS 서비스
AWS 리전 : ap-northeast-2 (서울)
작업 : PutItem (테이블에 데이터 삽입)
실행 역할 : 이전 단계에서 생성했던 역할의 ARN
마지막으로 저장 클릭
메서드 생성 완료
STEP 4 : DynamoDB 테이블 생성
검색 창에서 DynamoDB 검색 후 접속
좌측 메뉴바의 테이블 을 선택하고, 우측의 테이블 생성 선택
테이블 이름과 파티션 키를 입력
우측 하단에 테이블 생성 선택
테이블 생성 완료
STEP 5 : 데이터 삽입 및 확인
다시금 API 의 POST 메서드 창으로 이동
좌측의 테스트 클릭
{
"TableName": "gw_dd_test",
"Item": {
"id": { "S": "20231013" },
"message": {
"S": "Hello World!"},
"score": { "N": "100" }
}
}
요청 본문에 위 JSON 데이터를 입력 후 하단에 테스트 클릭
자세한 데이터 삽입에 대한 설명은 링크를 참고
TableName에 자신이 생성한 테이블의 이름을, Item에 자신이 추가할 데이터들의 명세를 입력
- 테이블 생성 시 파티션 키로 지정한 속성을 빼먹지 않도록 주의
- DynamoDB 특성 상 숫자도 전달 시에는 문자열로 전달해야함
이후 DynamoDB PartiQL 편집기에 들어가서 조회할 테이블 옆의 ... 을 선택
테이블 스캔을 클릭
방금 추가한 데이터가 조회됨
STEP 5 : API 배포 및 외부 접속
API Gateway로 들어가서 생성했던 API로 접속
상단의 작업을 클릭하고, 하단 메뉴에 API 배포를 선택
API 배포 창이 열리고, 배포 스테이지의 [새 스테이지]를 선택,
스테이지 이름를 입력. 예) prod, dev
이후 배포 클릭
스테이지 편집기에 URL 호출에 있는 URL 복사
Colab (링크) 를 통해 POST 요청 진행 (200시 정상)
PartiQL 편집기로 데이터 추가 여부 확인
다음에 해야할 것
'Today_I_Learned' 카테고리의 다른 글
Playwright로 Colab에서 연합뉴스 크롤링하기 (1) | 2023.12.21 |
---|---|
[Django DRF] Serializer에서 id를 사용한 M:N 관계 (0) | 2023.11.13 |
multiprocessing를 통한 병렬 처리 파이썬 코드 예제 (0) | 2023.09.30 |
네이버 증권 ETF 시세 정보 및 항목 리스트 API 조회 파이썬 코드 예제 (0) | 2023.09.30 |
장내채권 가격 데이터 조회 파이썬 코드 예제 (0) | 2023.09.29 |