Lambda 프록시 통합에서 이진 미디어 반환
AWS Lambda 프록시 통합에서 이진 미디어를 반환하려면 Lambda 함수의 응답을 base64로 인코딩합니다. 또한 API의 이진 미디어 유형을 구성해야 합니다.
참고
웹 브라우저를 사용하여 이 예제 통합이 포함된 API를 호출하려면 API의 이진 미디어 유형을 */*
로 설정합니다. API Gateway는 클라이언트의 첫 번째 Accept
헤더를 사용하여 응답이 이진 미디어를 반환해야 하는지 결정합니다. 브라우저의 요청과 같이 Accept
헤더 값의 순서를 제어할 수 없을 때 이진 미디어를 반환하려면 API의 이진 미디어 유형을 */*
(모든 콘텐츠 유형에 대해)로 설정합니다.
다음 예제 Python 3 Lambda 함수는 Amazon S3의 이진 이미지나 텍스트를 클라이언트에 반환할 수 있습니다. 함수의 응답에는 클라이언트에 반환하는 데이터 유형을 나타내는 Content-Type
헤더가 포함됩니다. 이 함수는 반환하는 데이터 유형에 따라 응답에 isBase64Encoded
속성을 조건부로 설정합니다.
import base64 import boto3 import json import random s3 = boto3.client('s3') def lambda_handler(event, context): number = random.randint(0,1) if number == 1: response = s3.get_object( Bucket='
bucket-name
', Key='image.png'
, ) image = response['Body'].read() return { 'headers': { "Content-Type": "image/png" }, 'statusCode': 200, 'body': base64.b64encode(image).decode('utf-8'), 'isBase64Encoded': True } else: return { 'headers': { "Content-type": "text/html" }, 'statusCode': 200, 'body': "<h1>This is text</h1>", }
이진 미디어 유형에 대한 자세한 내용은 REST API에 대한 이진 미디어 유형 작업 단원을 참조하세요.