AWS HTTP API용 압축
7179 단어 apiprogrammingawsjavascript
그러나 HTTP API로 작업할 때 what types to use for handler arguments 과 같은 몇 가지 문제를 인식해야 합니다. REST API는 또한 페이로드 압축을 활성화하는 방법을 제공하는 데 사용됩니다. 하지만 HTTP API의 경우 페이로드를 직접 압축해야 합니다.
고맙게도 이것은 비교적 간단하며 아래에서 필요한 각 단계를 설명하겠습니다. 빠른 솔루션을 찾는 사람들을 위해 라이브러리
lambda-compression
를 만들었습니다. 다음과 같이 사용할 수 있습니다.라이브러리로 압축
lambda-compression
라이브러리는 HTTP API 및 '구조화된' 결과(Lambda function response for format 2.0 참조)에 의해 핸들러 함수로 전달되는 compress
변수를 허용하는 하나의 메서드event
만 제공합니다.compress
함수는 핸들러 함수의 결과로 반환되는 구조화된 결과를 반환합니다.라이브러리는 노드 종속성으로 설치할 수 있습니다.
npm i lambda-compression
yarn add lambda-compression
다음은 JavaScript를 사용한 구현 예입니다.
import { compress } from 'lambda-compression';
export const handler = async (event, context) => {
return compress(event, {
statusCode: 201,
headers: {
'Content-Type': 'application/json',
},
body: '{"data":"hello"}',
});
};
다음은 TypeScript를 사용한 구현 예입니다.
import { compress } from 'lambda-compression';
import {
Handler,
APIGatewayProxyEventV2,
APIGatewayProxyResultV2,
} from 'aws-lambda';
type ProxyHandler = Handler<APIGatewayProxyEventV2, APIGatewayProxyResultV2>;
export const handler: ProxyHandler = async (event, context) => {
return compress(event, {
statusCode: 201,
headers: {
'Content-Type': 'application/json',
},
body: '{"data":"hello"}',
});
};
압축에 필요한 단계
Node.js에서 제공하는
zlib
패키지에 의존할 수 있으므로 압축을 구현하는 데 필요한 논리는 매우 간단합니다.여기에서 전체 소스 코드 예제를 참조하십시오:
lambdaCompression.ts
기본적으로 다음이 필요합니다.
accept-encoding
헤더를 쿼리하여 클라이언트가 허용하는 압축 형식을 결정합니다. br
, gzip
또는 deflate
), isBase64Encoded
속성을 설정하고 body
로 설정합니다. 마지막 생각들
압축은 CPU 집약적일 수 있으므로 동일한 결과가 반복적으로 반환될 것으로 예상되는 경우 압축된 결과를 캐시하는 것이 현명할 수 있습니다. 제한된 상황에서 CloudFront Distribution을 처리할 수 있는 compressing payloads 뒤에 API를 배치할 수도 있습니다. 마지막으로 REST API를 사용하도록 되돌리면 built-in compression function 을 사용할 수도 있습니다.
도서관 개선에 대한 아이디어가 있으시면 issue 🤗을 제출해 주십시오.
Reference
이 문제에 관하여(AWS HTTP API용 압축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mxro/compression-for-aws-http-apis-3alm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)