AWS Lambda 프록시 통합을 사용하여 Amazon API 게이트웨이 REST API 또는 HTTP API를 통해 바이너리 데이터를 반환하려고 합니다.
해결 방법
참고: API 게이트웨이 HTTP API는 바이너리 데이터를 자동으로 처리합니다. API 게이트웨이 REST API가 바이너리 데이터를 처리하려면 백엔드 Lambda 함수가 프록시 통합을 위한 Lambda 함수의 출력 형식을 사용해야 합니다.
Lambda 프록시 통합을 사용하여 API 게이트웨이 REST API를 통해 바이너리 데이터 반환
다음 단계를 완료하십시오.
- Lambda 콘솔을 엽니다.
- 새 Lambda 함수를 생성합니다.
참고: Python 3 Lambda 함수의 예는 API 게이트웨이의 Lambda 프록시 통합에서 바이너리 미디어 반환을 참조하십시오.
- API 게이트웨이 콘솔을 엽니다.
- 새 REST API를 생성합니다.
- 새 API의 GET 메서드를 생성하려면 다음과 같이 하십시오.
방법 창에서 메서드 생성을 선택합니다.
메서드 유형에서 GET을 선택합니다.
/ - GET - 설정 섹션에서 통합 유형으로 Lambda 함수를 선택합니다. Lambda 프록시 통합 사용을 활성화합니다.
Lambda 함수에서 Lambda 함수를 생성한 AWS 리전을 선택합니다. 그런 다음 새 Lambda 함수의 이름을 입력합니다.
메서드 생성을 선택합니다.
- API에서 API 설정을 선택합니다.
- 바이너리 미디어 유형에서 미디어 유형 관리를 선택한 다음 바이너리 미디어 유형 추가를 선택합니다.
- image/png 또는 application/pdf와 같은 파일 형식을 추가합니다.
- 변경 사항 저장을 선택합니다.
- API를 새 단계에 배포합니다.
참고: 새 단계를 설정하는 방법에 대한 자세한 내용은 API 게이트웨이에서 REST API를 위한 단계 설정을 참조하십시오.
API를 호출하는 방법에 대한 자세한 내용은 API 게이트웨이에서 REST API 호출을 참조하십시오.
참고: 바이너리 데이터의 경우 Lambda 함수의 출력에서 ;isBase64Encoded 속성을 true로 설정해야 합니다. body 속성에는 base64로 인코딩된 바이너리 미디어도 포함되어야 합니다. 자세한 내용은 API 게이트웨이의 REST API용 바이너리 미디어 유형을 참조하십시오.
Postman 또는 cURL로 REST API를 호출하여 바이너리 데이터 반환
중요: Postman 또는 cURL의 경우 API 요청에 Accept 헤더를 포함시키십시오. Accept 헤더 값은 사용 중인 파일 형식(예: image/png 또는 application/pdf)과 일치해야 합니다.
다음 curl 명령을 실행합니다.
curl 'https://exampleRestApiId.execute-api.exampleRegion.amazonaws.com/exampleStageName/' -H 'Accept: image/png'
참고: 위 명령에서 exampleRestApiId API의 식별자로, exampleRegion을 API가 있는 리전으로 바꾸십시오. 또한 exampleStageName을 API의 단계 이름으로, image/png를 이미지 파일 유형으로 바꾸십시오.
웹 브라우저에서 REST API를 호출하여 바이너리 데이터를 반환
웹 브라우저는 여러 값이 포함된 Accept 헤더를 자동으로 보냅니다. 기본적으로 첫 번째 값은 항상 html/text입니다. API 게이트웨이는 첫 번째 값만 허용하므로 text/html을 API에 바이너리 미디어 유형으로 추가해야 합니다. 그렇지 않으면 다음과 같은 오류 메시지가 나타납니다.
"The image "https://{restapi_id}.execute-api.{region}.amazonaws.com/{stage_name}/" cannot be displayed because it contains errors."
text/html을 REST API에 바이너리 미디어 유형으로 추가하려면 다음 단계를 완료하십시오.
- API 게이트웨이 콘솔을 엽니다.
- API를 선택합니다.
- 탐색 창에서 API 설정을 선택합니다.
- 바이너리 미디어 유형에서 미디어 유형 관리를 선택한 다음 바이너리 미디어 유형 추가를 선택합니다.
- text/html을 입력합니다.
- 변경 사항 저장을 선택합니다.
- API를 배포합니다.
자세한 내용은 API 게이트웨이의 콘텐츠 유형 변환을 참조하십시오.