Lambda 프록시 통합을 사용하여 이진 데이터를 처리하도록 API Gateway API를 설정하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 3월 23일

AWS Lambda 프록시 통합을 사용하여 내 Amazon API Gateway REST API(또는 HTTP API)를 통해 이진 데이터를 반환하려고 합니다. 어떻게 설정해야 합니까?

해결 방법

참고:API Gateway HTTP API는 이진 데이터를 자동으로 처리합니다. API Gateway REST API가 이진 데이터를 처리하려면 백엔드 Lambda 함수가 프록시 통합을 위한 Lambda 함수의 올바른 출력 형식을 사용해야 합니다.

Lambda 프록시 통합을 사용하여 API Gateway REST API를 통해 이진 데이터 반환

1.    Lambda 콘솔에서 새 Lambda 함수를 생성합니다.
참고: Python 3 Lambda 함수의 예는 Lambda 프록시 통합에서 이진 미디어 반환을 참조하세요.

2.    API Gateway 콘솔에서 새 REST API를 생성합니다.

3.    다음을 수행하여 새 API에 대한 GET 메서드를 생성합니다.
리소스(Resources) 패널에서 작업(Actions)을 선택합니다.
메서드 생성(Create Method)을 선택합니다. 그런 다음 추가(Add)를 선택합니다.
/ - GET - 설정(/ - GET - Setup) 섹션의 통합 유형(Integration type)에서 Lambda 함수(Lambda Function)를 선택합니다.
Lambda 프록시 통합 사용(Use Lambda Proxy integration) 확인란을 선택합니다.
Lambda 리전(Lambda Region)에서 Lambda 함수를 생성한 리전을 선택합니다.
Lambda 함수(Lambda Function)에 1단계에서 생성한 Lambda 함수의 이름을 입력합니다.
저장(Save)을 선택합니다.
표시되는 Lambda 함수에 권한 추가(Add Permission to Lambda Function) 대화 상자에서 확인(OK)을 선택합니다.

4.    왼쪽 탐색 창의 API 섹션에서 설정(Settings)을 선택합니다.

5.    이진 미디어 유형(Binary Media Types) 아래에서 이진 미디어 유형 추가(Add Binary Media Type)를 선택하고 image/png 또는 사용하려는 다른 파일 형식(예: application/pdf)을 추가합니다.

6.    변경 내용 저장(Save Changes)을 선택합니다.

7.    API를 새 스테이지에 배포합니다. 자세한 내용은 API Gateway 콘솔을 사용하여 메서드 설정을 참조하세요.

이제 API가 Lambda 프록시 통합을 사용하여 API Gateway를 통해 이진 데이터를 반환할 준비가 되었습니다. API를 호출하는 방법에 대한 자세한 내용은 Amazon API Gateway에서 REST API 호출을 참조하세요.

참고: 이진 데이터를 처리할 때 Lambda 함수 출력의 isBase64Encoded 속성은 true로 설정되어야 합니다. 또한 body 속성도 base64로 인코딩된 이진 미디어를 포함해야 합니다. 자세한 내용은 REST API에 대한 이진 미디어 유형 작업을 참조하세요.

Postman 및 cURL을 사용하여 이진 데이터를 반환하기 위해 REST API 호출

중요 사항: Postman 또는 cURL을 사용하여 REST API를 호출하여 이진 데이터를 반환하는 경우 API 요청에 Accept 헤더를 포함해야 합니다. Accept 헤더 값은 사용 중인 파일 형식과 일치해야 합니다. 예: image/png또는application/pdf.

Postman을 사용하여 REST API를 호출하는 방법에 대한 자세한 내용은 Postman를 사용하여 REST API 호출을 참조하세요.

API Gateway가 페이로드를 인코딩하는 방법에 대한 자세한 내용은 API Gateway의 콘텐츠 유형 변환을 참조하세요.

이진 데이터를 반환하기 위해 API Gateway REST API를 호출하는 예제 cURL 명령

$ curl 'https://{restapi_id}.execute-api.{region}.amazonaws.com/{stage_name}/' -H 'Accept: image/png'

참고: 예제 cURL 명령을 실행하기 전에 다음 변수를 바꿉니다.
{restapi_id}에 API의 식별자를 입력합니다.
{region}에 API가 있는 AWS 리전을 입력합니다.
{stage_name}에 API의 스테이지 이름을 입력합니다.
image/png에는 사용 중인 실제 이미지 파일 형식을 입력해야 합니다.

웹 브라우저를 사용하여 이진 데이터를 반환하기 위해 REST API 호출

웹 브라우저를 사용하여 REST API를 호출하여 이진 데이터를 반환하는 경우 API에 이진 미디어 유형으로 text/html을 추가합니다.

참고: 웹 브라우저는 자동으로 Accept 헤더를 여러 값으로 전송합니다. 기본적으로 첫 번째 값은 항상 html/text입니다. API Gateway는 첫 번째 값만 존중합니다. 따라서 API에 이진 미디어 유형으로 text/html을 추가해야 합니다. 그러지 않으면 다음과 같은 오류 메시지가 표시됩니다.

"The image "https://{restapi_id}.execute-api.{region}.amazonaws.com/{stage_name}/" cannot be displayed because it contains errors."

REST API에 이진 미디어 유형으로 text/html을 추가하려면 다음을 수행합니다.

1.    API Gateway 콘솔에서 API를 선택합니다.

2.    왼쪽 탐색 창의 API 섹션 맨 아래에서 설정(Settings)을 선택합니다.

3.    이진 미디어 유형(Binary Media Types) 아래에서 이진 미디어 유형 추가(Add Binary Media Type)를 선택하고 text/html을 추가합니다.

4.    변경 내용 저장(Save Changes)을 선택합니다.

5.    API를 배포합니다.

자세한 내용은 API Gateway의 콘텐츠 유형 변환을 참조하세요.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?