[ AWS ] DynamoDB 연결 REST API 만들기 (3)

이전 강좌에서 람다 함수를 생성하고 트리거에 API 게이트웨이를 하나 추가하고 정책 만들어 연결까지 했습니다. 사실 이런 간단한 콘솔에서의 추가 생성으로 어떤 서비스가 동작한다는 사실이 신기하기만 합니다. 이번 글에서는 지난 시간에 추가했던 DynamoDB 권한에 새로운 테이블을 만들고 HTTP 요청을 통해 새로운 값을 추가하는 것을 알아보겠습니다. 

 

테이블 추가

 

▼ 1. DynamoDB의 새로운 테이블을 추가하기 위해서 AWS 전체 메뉴에서 DynamoDB를 선택합니다.

AWS DynamoDB 데이터베이스


 

 

▼ 2. Amazon DynamoDB 페이지로 이동하면 테이블 만들기 버튼을 눌러 새로운 테이블을 추가합니다.

AWS 다이나모 DB 데이블 추가


 

 

 

▼ 3. DynamoDB 테이블 만들기에서 테이블 이름을 api_test_table이라고 입력하고 기본키를 id로 입력해줍니다. 그리고 하단의 생성 버튼을 눌러 테이블을 생성합니다. 약간의 시간이 소요되고 새로운 테이블이 생성됩니다.

AWS 다이나모DB 테이블 생성 완료


 

 

▼ 4. 테이블 페이지에서 왼쪽에 api_test_table 이 선택된 것을 확인하고 상단의 항목 메뉴를 눌러봅니다. 그럼 해당 테이블의 데이터를 볼 수 있습니다. 아직 새로운 데이터가 없기 때문에 필드가 없는 것을 확인할 수 있습니다.

다이나모 DB 테이블 확인


 

 

▼ 5. DynamoDB 테이블이 잘 만들어졌다면 다시 AWS 전체 메뉴에서 Lambda 메뉴를 선택해서 람다 함수를 편집합니다.

AWS Lambda 함수


 

람다 함수 편집

 

▼ 6. 람다 메인 페이지에서 기존에 만든 람다 함수를 선택합니다. 현재 함수가 하나뿐이 없어서 1로 표시됩니다.

람다 함수


 

 

 

▼ 7. 이전에 만들었던 lambda_api_test 를 선택합니다. 패키지 유형은 Zip 이고 런타임은 Node.js 14.x 입니다.

lambda_api_test 람다 함수 선택


 

 

▼ 8. 다음과 같이 코드를 입력하고 Deploy 버튼을 눌러서 새로 코드를 적용합니다.

const AWS = require('aws-sdk')
const dynamodb = new AWS.DynamoDB.DocumentClient()

exports.handler = async (event) => {
    let response
    
    if (!event.queryStringParameters || !event.queryStringParameters.id) {
        response = {
            statusCode: 400,
            body: JSON.stringify("id가 없습니다."),
        }
        return response
    } else {
        let params = {
            Item: {
                id: event.queryStringParameters.id,
                data: event.queryStringParameters
            },
            TableName: "api_test_table",
        }
        
        await dynamodb.put(params).promise().catch(e => {
            response = {
                statusCode: 500,
                body: JSON.stringify("에러가 발생하였습니다: " + e),
            }
            return response
        })
        
        response = {
            statusCode: 200,
            body: JSON.stringify("데이터가 성공적으로 저장되었습니다.")
        }
        return response
    }
};

람다 함수 Node.js 코드 입력


 

 

▼ 9. 이제 코드가 잘 적용되었는지 확인하기 위해서 트리거로 설정한 API 게이트웨이의 엔드포인트로 이동합니다. API 게이트웨이의 상세메뉴를 눌러서 URL링크를 클릭합니다.

API 게이트웨이 URL 확인


 

 

▼ 10. 다음과 같이 id가 없습니다. 라고 메시지가 출력됩니다. 위에 코드에서 보시다시피 쿼리스트링에 id값이 포함되어 있지 않는다면 statusCode 400과 함께 id가 없습니다. 라고 응답합니다.

GET 응답


 

 

▼ 11. 이번에는 쿼리스트링에 id 값을 포함시켜보겠습니다. URL 끝에 ?id=test 를 추가합니다. 그럼 응답 값으로 데이터가 성공적으로 저장되었습니다. 라는 메시지와 함께 200코드가 응답합니다.

id 값 추가


 

 

 

▼ 12. 이제 다시 다이나모 DB 테이블 페이지로 이동해보면 새로운 값이 포함된 것은 확인할 수 있습니다. 단순 id 값만 추가되었기 때문에 이번에는 data 라는 값을 추가해보겠습니다.

추가된 다이나모 DB 테이블 필드 확인


 

 

▼ 13. 웹 브라우저를 열고 리 스트링 끝에 &data=OK 라고 추가해서 요청합니다.

id, data 추가


 

 

▼ 14. 이번에는 test 라는 id 값을 업데이트했습니다. data 값이 추가된 것을 확인합니다.

테이블에 추가된 값 확인


 

 

지금까지 다이나모 DB에 API 게이트웨이 트리거를 이용해 값을 추가하는 방법을 알아봤습니다. 내용이 다소 길어서 3개의 글로 나눠서 올립니다. 단순히 GET으로 요청을 해서 응답하는 내용이라 너무 쉽다고 생각하실 수 있습니다만 위의 코드를 잘 응용해서 다양한 API를 만들어서 서버 없이 배포할 수 있을 것 같습니다. 암호화 같은 부분을 포함해도 좋겠지만 API 게이트웨이를 특정 권한이 있는 사람만 접근하게 하는 편이 좀 더 우수한 보안 환경을 만들 수 있을 것 같습니다. 만약 이전 글이 필요하시다면 다음 링크를 확인해주세요.

 

https://tttap.tistory.com/194

 

https://tttap.tistory.com/195

 

댓글

Designed by JB FACTORY