Today_I_Learned

AWS API Gateway로 DynamoDB PutItem 메서드 구현 (23.10.13)

CONCAT 2023. 10. 14. 12:28
728x90

본 글을 이해하기 위해서는 아래와 같은 사항이 필요함

- 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 : 데이터 삽입 및 확인

다시금 APIPOST 메서드 창으로 이동

좌측의 테스트 클릭

{
  "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 편집기로 데이터 추가 여부 확인

다음에 해야할 것

- Query 등 다른 DynamoDB의 API 구현 (문서)
- API Key 적용 (문서)