Amazon API Gateway에서 만든 API를 통해 전달된 메시지의 사용자 지정 헤더를 처리하기 위한 AWS Lambda 함수를 만드는 방법은 무엇입니까?

기본적으로 Lambda 함수는 API Gateway에서 만든 API에 수신된 요청 본문만 수집합니다.

Amazon API Gateway API에서 Lambda 함수로 사용자 지정 헤더를 전달하려면 curl 유틸리티로 본문 매핑 템플릿을 사용해 메시지에 추가된 사용자 지정 헤더를 추출하여 API Gateway에 메시지를 보냅니다.

API는 업데이트된 메시지를 Lambda 함수로 보내 헤더를 처리하고 원래 메시지의 헤더 값을 하나 이상 반환합니다.

Lambda 함수 생성

시작하기 전에 AWS Lambda에 대한 인증 및 액세스 제어 API Gateway에 액세스하기 위한 IAM 권한 설정에서 설명한 대로 Lambda 및 Amazon API Gateway에 필요한 권한을 구성해야 합니다. 테스트 역할을 만들고 AmazonAPIGatewayInvokeFullAccess 및 AmazonAPIGatewayPushToCloudWatchLogs 관리형 정책을 연결하십시오.

1.    Lambda 콘솔을 열고 함수 생성을 선택합니다.

2.    새로 작성을 선택합니다. 이름에 의미 있는 이름을 입력합니다. [Runtime]에서 [Node.js 6.10]을 선택합니다. 역할에서 전에 만든 테스트 역할 이름을 선택합니다.

3.    [Create function]을 선택합니다.

4.    함수 코드에서 index.js의 코드를 다음과 같이 바꿉니다.

exports.handler = (event, context, callback) => {
// TODO implement
callback(null, "This message header was processed by Amazon " +event.headers["header1"]);
};

5.    저장을 선택합니다.

API Gateway API 생성

1.    API Gateway 콘솔에서 API 생성을 선택합니다.

2.    새 API를 선택합니다. API 이름SendtoLambda를 입력하고 API 생성을 선택합니다.

3.    탐색 창에서 리소스를 선택하고 작업 메뉴를 연 다음 리소스 생성을 선택합니다.

4.    리소스 이름HeadersResource를 입력하고 리소스 생성을 선택합니다.

5.    작업을 열고 메서드 생성을 선택합니다.

6.    /headersresource 아래 드롭다운 목록에서 POST를 선택하고 확인 표시를 클릭하여 선택합니다.

7.    통합 포인트를 구성합니다.
통합 유형에서 Lambda 함수를 선택합니다.
Lambda 리전에서 해당 리전을 선택합니다.
Lambda 함수CustomHeaders를 입력합니다.

8.    저장을 선택합니다.

9.    통합 요청을 선택합니다.

10.   본문 매핑 템플릿을 확장하고 요청 본문 패스스루에 대해 정의된 템플릿이 없는 경우(권장)를 선택합니다.

11.   매핑 템플릿 추가를 선택합니다.

12.   콘텐츠 유형application/json을 입력하고 체크 표시를 클릭하여 선택합니다.

13.   입력 섹션에 다음을 추가합니다.

{
    "method": "$context.httpMethod",
    "body" : $input.json('$'),
    "headers": {
        #foreach($param in $input.params().header.keySet())
        "$param": "$util.escapeJavaScript($input.params().header.get($param))"
        #if($foreach.hasNext),#end
        #end
    }
}

14.   저장을 선택합니다.

15.   작업 메뉴에서 API 배포.를 선택합니다.

16.   배포 단계에서 [새 단계]를 선택한 후 단계 이름(예: "prod", "test" 또는 "beta")을 입력합니다.

17.   배포를 선택합니다. 단계 편집기 위쪽의 URL 호출 옆에 표시된 URL을 적어 둡니다.

18.   curl 유틸리티를 사용하여 API Gateway에 메시지를 보냅니다. 이 예제에서는 Lambda 함수에서 참조한 header1 헤더의 값을 반환합니다.

curl -H "Content-Type: application/json" -H "header1: API Gateway and AWS Lambda" -X POST -d "{\"API_body\": \"This is the body\"}" https://<api-id>.execute-api.<region>.amazonaws.com/<stage>/headersresource

이 프로세스가 성공적이면 다음 출력이 표시됩니다.

"This message header was processed by Amazon API Gateway and AWS Lambda"

참고: Windows에 curl을 설치하려면 Windows용 Git다운로드를 고려해 보십시오. GNU bash 셸 및 curl, tail, cat, grep, gzip, Perl과 같은 그 밖의 Linux 도구가 Windows용 Git에 포함되어 있습니다.


페이지 내용이 도움이 되었습니까? | 아니요

AWS 지원 지식 센터로 돌아가기

도움이 필요하십니까? AWS 지원 센터를 방문하십시오.

게시된 날짜: 2016년 10월 06일

업데이트된 날짜: 2018년 7월 31일