AWS Serverless Aplication : Api service lambda [Lambda, API Gateway, DynamoDB] (3)

2023. 9. 11. 22:20AWS

이전 글

 

https://muyeon95.tistory.com/278

 

AWS Serverless Aplication : Webpage Lambda [Lambda, API Gateway, DynamoDB] (2)

이전 글 https://muyeon95.tistory.com/277 AWS Serverless Aplication : Hello world Lambda [Lambda, API Gateway, DynamoDB] (1) AWS Builders 100 - Web application 을 듣고 정리한 내용입니다. 계정 생성하기 AWS 계정을 생성한 후 IAM 사

muyeon95.tistory.com

AWS Builders 100 - Web application 을 듣고 정리한 내용입니다.

Api service lambda 생성하기

 

맨 위에 있는 Functions 를 눌러 다시 Functions 창으로 돌아간다. 아까는 빈껍데기 웹페이지를 만들었다면 이번에는 빈껍데기 웹페이지가 동적으로 반응하면서 좀 더 사용자에게 재미를 줄 수 있도록 기능을 추가해 본다.

Function name 으로는 api-service-create를 입력하고, Runtime 으로는 python 3.9 를 선택한다.

 

어번에는 Permissions 을 직접 생성해 본다. Permissions 섹션에서 Execution role 의 Create a new role from AWS policy templates 를 선택한다. Role name 으로는 my-lambda-role 으로 작성한다.

 

이번 Function 을 만든 다음에는 NoSQL 데이터베이스 서비스인 AWS DynamoDB 와 연결한다. AWS 서비스끼리 서로와 연결하거나 이용하거나 호출하거나 할 때는 권한이 필요하다. Simple microservice permissions DynamoDB 를 선택한다. 그리고 오른쪽 아래의 Create 버튼을 눌러 다음으로 이동한다.

Code source 에 아래를 복사 붙여넣기 한 다음 Deploy 를 누른다.

 

import json
import boto3
import random
import json

def lambda_handler(event, context):
    
    member_name = ['Ama','Jone','Zon','Penny','Jessie']
    member_status = ['Happy','Sad','Serious','Satisfied','Free']
    
    dynamodb = boto3.resource('dynamodb',endpoint_url='http://dynamodb.ap-northeast-2.amazonaws.com')
    member_table = dynamodb.Table('hello-member')
    
    name = member_name[random.randint(0,4)]
    status = member_status[random.randint(0, 4)]
    
    member_table.put_item(
       Item={
            'name': name,
            'status': status,
        }
    )
    
    documents = {'name':name,'status':status}
    
    print(documents)
    
    return {
        'statusCode': 200,
        'headers': {'Access-Control-Allow-Origin': '*'},
        'body': json.dumps(documents)
    }

* 앞서 만든것이 웹 페이지라면, 이번에는 웹페이지에 들어갈 기능을 추가한다. 멤버의 이름과 기분 상태를 랜덤으로 매핑시켜주고, 이를 DynamoDB 에 저장하는 기능이다.

 

이제 Test 버튼을 누른다.

 

Configure test event 에는 다음과 같이 입력한다. Event name 으로는 my-api-test 를 입려가고 Event sharing settings 로는 Private 을 선택한다. Template 는 hello-world 를 선택한다.

이제 Test 버튼을 누르면 테스트가 진행된다. 아직은 DynamoDB를 만들지 못한 상태여서 다음과 같은 에러가 나게 된다.

 

여기까지 만들었다면 두 개의 Lambda 함수를 만든 것이다.

이제 이 function 에 연결할 dynamoDB 를 만들어 본다.

 


다음 글

 

https://muyeon95.tistory.com/280

 

AWS Serverless Aplication : DynamoDB 생성 [Lambda, API Gateway, DynamoDB] (4)

이전 글 https://muyeon95.tistory.com/279 AWS Serverless Aplication : Api service lambda [Lambda, API Gateway, DynamoDB] (3) 이전 글 https://muyeon95.tistory.com/278 AWS Serverless Aplication : Webpage Lambda [Lambda, API Gateway, DynamoDB] (2) 이전

muyeon95.tistory.com