【API Gateway】HTTP API 사용해 보았다
3763 단어 APIGatewayAWS
※ 정식 릴리스 버전이 아닌 베타 버전임에 주의하십시오.
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 인코딩 부분은 조금 빠졌습니다. . .
Reference
이 문제에 관하여(【API Gateway】HTTP API 사용해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/otogiri/items/1ff251d9b236c45ce01b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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 인코딩 부분은 조금 빠졌습니다. . .
Reference
이 문제에 관하여(【API Gateway】HTTP API 사용해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/otogiri/items/1ff251d9b236c45ce01b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
curl -X POST -d '{"username": "test-user", "message": "テストメッセージ", "channel": "#work"}' https://XXXXXXXXXX.execute-api.ap-northeast-1.amazonaws.com/slackNotification
{
'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 인코딩 부분은 조금 빠졌습니다. . .
Reference
이 문제에 관하여(【API Gateway】HTTP API 사용해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/otogiri/items/1ff251d9b236c45ce01b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)