2023. 9. 11. 22:20ㆍAWS
이전 글
https://muyeon95.tistory.com/278
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