【API Gateway】HTTP API 사용해 보았다

3763 단어 APIGatewayAWS
AWS의 API Gateway에서 HTTP API(베타)를 사용할 수 있게 되었으므로 사용해 보았습니다.
※ 정식 릴리스 버전이 아닌 베타 버전임에 주의하십시오.

HTTP API란?



AWS 공식 문서에는 다음과 같은 내용이 적혀 있습니다.

HTTP API를 사용하면 REST API보다 낮은 대기 시간과 비용으로 RESTful API를 만들 수 있습니다.

HTTP API를 사용하여 AWS Lambda 함수나 라우팅 가능한 HTTP 엔드포인트로 요청을 보낼 수 있습니다.

API를 낮은 레이턴시, 저비용으로 이용할 수 있게 되는 것은 매우 고맙습니다.

HTTP API 만들기



AWS Management Console에서 생성합니다.
API 만들기를 클릭합니다.


작성할 API 유형 선택 화면이 표시됩니다.
HTTP API에서 빌드를 클릭합니다.


API 작성 화면이 표시됩니다.
통합 유형 및 통합 대상을 지정합니다.
[통합 유형]은 Lambda 또는 HTTP가 지정 가능합니다.
이번에는 Lambda를 지정하고 대상에 "slackNotification"이라는 Lambda 함수를 지정합니다.
API 이름을 입력하고 다음을 클릭합니다.


메서드, 리소스 경로, 통합 대상을 지정한 후 다음을 클릭합니다.
이번에는 "/slackNotification"에 "POST"요청이 있으면 Lambda 함수 "slackNotification"에 요청을 보내도록 설정하고 있습니다.


스테이지 이름을 지정하고 다음을 클릭합니다.
기본적으로 '$default' 단계가 설정되어 있으며 자동 배포가 '사용'으로 설정되어 있습니다.


설정을 검토하고 만들기를 클릭합니다.


API가 생성되었습니다.


HTTP API 실행



curl을 사용하여 API에 요청을 보냅니다.
실행 방법은 당연히 이전 API와 다르지 않습니다.
curl -X POST -d '{"username": "test-user", "message": "テストメッセージ", "channel": "#work"}' https://XXXXXXXXXX.execute-api.ap-northeast-1.amazonaws.com/slackNotification

주목하고 싶은 것은 API Gateway에서 Lambda로 연결되는 데이터입니다.
아래에 그 예가 나와 있습니다.
요청 본문이 암호화되어 있음을 알 수 있습니다.
위 POST 요청의 '{"username": "test-user", "message": "テストメッセージ", "channel": "#work"}'에 해당하는 부분입니다.
HTTP API에서는 기본적으로 Base64 인코딩이 활성화되어 있습니다.
Lambda측의 처리로 디코드해 줄 필요가 있으므로, 주의가 필요합니다.
{
    'version': 2, 
    'path': '/slackNotification', 
    'httpMethod': 'POST', 
    'headers': {
        (省略)
    }, 
    'multiValueHeaders': {
        (省略)
    }, 
    'queryStringParameters': None, 
    'multiValueQueryStringParameters': None, 
    'requestContext': {
        (省略)
    }, 
    'pathParameters': None, 
    'stageVariables': None, 
    'body': 'eyJ1c2VybmFtZSI6ICJ0ZXN0LXVzZXIiLCAibWVzc2FnZSI6ICLjg4bjgrnjg4jjg6Hjg4Pjgrvjg7zjgrgiLCAiY2hhbm5lbCI6ICIjd29yayJ9', 
    'isBase64Encoded': True
}

사용해 본 소감



지금까지의 REST API는 설정 방법이 꽤 어려운 인상이 있었지만, HTTP API는 직관적으로 꽤 알기 쉽다고 느꼈습니다.
Base64 인코딩 부분은 조금 빠졌습니다. . .

좋은 웹페이지 즐겨찾기