YUDA't

읽지 않아도 되는 서론;

2016년에 Lambda랑 API Gateway로 API 만드는 튜토리얼을 올렸었는데 이제 시간도 좀 지나고 AWS 콘솔 UI도 바뀌어서 업뎃해보고자 한다. 그리고 이번엔 Lambda 프록시 통합으로!

Lambda 함수는 Python 3.6으로 작성했으나 워낙 간단해서 무슨 언어로 하든 상관 없다.

빨리빨리 하면 5분 안에 끝낼 수 있다.

 

0. AWS Lambda 함수 생성

AWS 콘솔의 Lambda 서비스로 가서 '함수 생성'을 누르고 함수를 빨리 생성한다. 아놔 곱셈 API인데 GuguFunction이라 했다. 뭐 어쨌든 Lambda 권한을 가진 role이 없다면 하나 생성한다.

 

1. Lambda 코드 작성

아래로 스크롤을 내리면 코드를 작성하는 부분이 있다. 여기에 아래 코드를 서둘러 입력한다.

import json

def lambda_handler(event, context):
    a = int(event['queryStringParameters']['a'])
    b = int(event['queryStringParameters']['b'])
    result = {
        "a": a,
        "b": b,
        "result": a*b
    }
    
    return {
        'statusCode': 200,
        'body': json.dumps(result),
        'headers': {
          'Access-Control-Allow-Origin': '*',
        }
    }

참고로 API Gateway에서 Lambda 프록시 통합을 사용하면 파라미터를 받아올 때 event['queryStringParameters']['파라미터 이름'] 이런 식으로 받아야 한다. 난 파라미터 a와 b를 받아 곱셈 결과를 리턴할 것이기 때문에 위와 같이 했다.

제대로 한다면 일단 파라미터가 있는지부터 확인해야겠지만...이게 더 코드가 예뿌니까...샘플 말고 제대로 할 때 만들면 된다.

 

만들었으면 빨리 오른쪽 위의 테스트 섹션에서 테스트 이벤트 구성을 해준다. queryStringParameters를 넣어야 해서 좀 지저분해 보인다. 하지만 지금 그게 중요한 게 아냐!!!

테스트까지 완료했으면 이제 API를 연결해줄 차례다.

 

2. API Gateway 트리거 추가

 'API 게이트웨이'를 어서 추가한다.

 

트리거 구성은 '새 API 생성'을 선택한다. 보안은 'AWS IAM'과 'API 키', 그리고 '열기'가 있는데 '열기'는 API 주소만 있으면 누구나 호출 가능하니 웬만하면 하지 말자. 난 API 키를 선택했다. 추가 세팅은 해도 되고 안 해도 되고 알아서.

생성한 뒤 지금 Lambda 페이지의 오른쪽 위 '저장' 버튼을 누른다. 이거 의외로 까먹기 쉬워서 저장 안 하고 엥 API 어디갓어- 하는 경우가 있다.(내 얘기임)

무튼 이렇게 API 게티으웨이가 생겼으면 API 이름을 눌러 API Gateway 서비스 페이지로 이동한다. 이름이 뭔가 구리다면 좀 아까 추가 세팅을 안 해준 탓이다.

 

3. API Gateway 프록시 리소스 설정

Lambda와 API Gateway를 연결해줬으니 이제 API의 리소스나 메서드를 설정해줘야 한다. 방금 API를 생성했을 때 자동으로 리소스(/GuguFunction)와 메서드(ANY)가 세팅됐을 거다. (ANY는 모든 HTTP 메서드를 지원한다.)

 

하지만 우린 이거 말고 프록시 리소스를 쓸 거다!!!! 프록시 리소스 설명은 AWS 자습서에서 보면 된다. 거의 하루 이틀 정도를 꼬박 읽고나서야 조금 이해가 갔는데, 유연한 엔드포인트라고 해야 하나. 프록시 리소스 경로를 {proxy+} 라 하면 무슨 무슨 경로로 들어가든 이 API가 호출된다. 이해가 잘 안 간다면 정상이다. 사실 지금도 좀 헷갈림;;

 

무튼 프록시 리소스를 사용하고 싶다면 왼쪽 위의 '작업' 버튼을 누르고 '리소스 생성'을 눌러 다음과 같이 세팅/생성한다.

리소스가 생성되면 미리 만들어둔 Lambda 함수를 연결해준다. 반드시 'Lambda 함수 프록시'를 선택하도록 한다.

4. API 키 설정하기

잊어버릴 뻔했다! 아까 Lambda 페이지에서 API Gateway를 생성할 때 보안 항목을 'API 키로 열기'를 선택했어도 직접 키를 만들고 세팅을 해줘야 한다.이럴거면왜물어봤어

 

4-1) 아래 화면에서 '메서드 요청'을 누른 뒤 나오는 설정화면에서 'API 키가 필요함'을 false에서 true로 바꿔준다.

4-2) 맨 왼쪽 카테고리에서 '사용량 계획'을 선택해 하나 생성한다. 여기서 API 사용을 조절할 수 있는데 사용량을 예상해 대강 설정하자.

4-3) 다음 버튼을 누르면 API를 연결할 수 있는 창이 나온다. 방금 만든 API를 적어주자.

4-4) 사용량 계획 API 키를 추가할 수 있다. 아직 만들어놓은 API 키가 없으니 'API 키 생성 후 사용량 계획에 추가'를 선택해 하나 만들어준다. 그리고 완료 버튼을 누르면 끝!

5. API Gateway 배포하기

이제 배포할 시간이다!!! 5분은 아까 지난 것 같지만!!! 다시 아까 만든 API로 돌아와 '작업' 버튼을 누르고 'API 배포'를 누른다.

 

 

그럼 이렇게 URL이 생성된다. 이게 내 API 엔드포인트다.

이제 저기에 아무 엔드포인트나 붙여주고 파라미터 a, b를 정해주면 된다..

https://ph273tzyse.execute-api.ap-northeast-2.amazonaws.com/default/gugu?a=3&b=7

물론 이 API는 작동하지 않을 거다. 아까 API 키를 줬으니까 나만 들어갈 수 있댜...

 

근데 postman에서는 잘 작동하는데 curl에서는 자꾸 {"message": "Internal server error"} 가 뜬다! 흠냐😪😪졸리니까 이건 좀 나중에😪😪