반응형

AWS API Gateway는 RESTful API를 간편하게 구축할 수 있는 서비스이며, AWS Lambda는 서버리스 기술을 사용하여 코드를 실행하는 서비스입니다. 두 서비스를 통합하여 파일 업로드 기능을 구현할 수 있습니다.

  1. AWS Lambda 함수 생성하기
  • AWS Management Console에서 AWS Lambda로 이동합니다.
  • "Create function"을 클릭합니다.
  • "Author from scratch"를 선택하고, 함수 이름, 런타임, 권한을 설정합니다.
  • "Create function"을 클릭하여 함수를 생성합니다.
  1. AWS Lambda 함수 코드 작성하기

AWS Lambda 함수에서는 파일 업로드를 처리하는 코드를 작성할 수 있습니다. 아래의 샘플 코드는 파일 업로드를 처리하는 Node.js 코드입니다.

 

const AWS = require('aws-sdk');
const s3 = new AWS.S3();

exports.handler = async (event, context) => {
  const { file } = JSON.parse(event.body);
  const buffer = Buffer.from(file.replace(/^data:image\/\w+;base64,/, ""), 'base64');

  const params = {
    Bucket: 'my-bucket',
    Key: 'my-file',
    Body: buffer,
    ContentEncoding: 'base64',
    ContentType: 'image/jpeg'
  };

  await s3.putObject(params).promise();
반응형

'개발 > Cloud' 카테고리의 다른 글

AWS lambda payload 6mb limit - chatGPT 작성  (0) 2023.02.07
AWS Lambda Cold Start & Warm Start - chatGPT 작성  (0) 2023.02.06
블로그 이미지

민오라방구

개발 , 여행, 일상 아직 배울게 많은 개발자

,
반응형

AWS Lambda는 Amazon Web Services(AWS)에서 제공하는 서버리스 컴퓨팅 플랫폼으로 서버를 관리하지 않고도 코드를 실행할 수 있습니다. 이 플랫폼의 제한 사항 중 하나는 Lambda 함수에 전달할 수 있는 페이로드의 최대 크기인 6MB입니다.

6MB 페이로드 제한은 Lambda 함수가 트리거될 때 전달될 수 있는 데이터의 크기에 영향을 미치는 제약 조건입니다. 즉, 함수에 6MB 이상의 데이터가 필요한 경우 이 제한을 해결할 방법을 찾아야 합니다.

AWS Lambda에서 6MB 페이로드 제한을 극복하는 방법에는 여러 가지가 있습니다. 한 가지 접근 방식은 Amazon S3 버킷에 데이터를 저장한 다음 함수가 실행될 때 데이터를 검색하는 것입니다. 또 다른 접근 방식은 데이터를 여러 청크로 분할한 다음 각 청크를 개별적으로 처리하는 것입니다.

솔루션을 선택할 때 다양한 옵션 간의 장단점을 고려하는 것이 중요합니다. 예를 들어 S3 버킷에 데이터를 저장하는 것은 많은 양의 데이터를 저장해야 하는 경우 좋은 옵션일 수 있지만 S3 버킷에서 데이터를 검색해야 하므로 함수의 대기 시간이 증가할 수도 있습니다. 반면에 데이터를 여러 청크로 분할하는 것은 데이터를 병렬로 처리해야 하는 경우 좋은 옵션일 수 있지만 코드의 복잡성을 증가시킬 수도 있습니다.

결론적으로 AWS Lambda의 6MB 페이로드 제한은 Lambda 함수에 전달할 수 있는 데이터의 크기에 영향을 미치는 제약 조건입니다. 이 제한은 문제가 될 수 있지만 S3 버킷에 데이터를 저장하거나 데이터를 여러 청크로 분할하는 등 여러 가지 방법으로 이를 해결할 수 있습니다. 솔루션을 선택할 때 다양한 옵션 간의 장단점을 고려하는 것이 중요합니다.

반응형
블로그 이미지

민오라방구

개발 , 여행, 일상 아직 배울게 많은 개발자

,
반응형
 
 

AWS Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있는 서버리스 컴퓨팅 플랫폼입니다. Lambda 함수에 대한 요청이 있을 때 AWS는 요청을 처리하기 위해 컨테이너라고 하는 함수의 새 인스턴스를 생성합니다. 새 컨테이너를 만드는 이 프로세스를 콜드 스타트라고 합니다.

콜드 스타트는 컨테이너를 만들고 필요한 리소스를 로드하는 데 추가 시간이 필요하기 때문에 새 컨테이너에 대한 첫 번째 요청에 대한 응답 시간이 느려질 수 있습니다. 이는 많은 종속성이 필요한 더 큰 함수나 함수에서 특히 두드러집니다.

반면에 웜 스타트는 매번 새 컨테이너를 생성하는 대신 컨테이너를 재사용하여 후속 요청을 처리할 때 발생합니다. 필요한 리소스가 이미 로드되어 있으므로 응답 시간이 빨라집니다.

콜드 스타트의 영향을 줄이기 위해 다음 전략을 사용할 수 있습니다.
1. 함수 및 해당 종속성의 크기를 줄입니다.
2. 함수에 대해 지정된 수의 컨테이너를 미리 준비하는 기능인 프로비저닝된 동시성 사용
3. 호출 간에 재사용할 수 있는 메모리에 데이터 저장


다음은 콜드 스타트 ​​시간을 줄이기 위해 데이터를 메모리에 저장하고 여러 호출에서 재사용하는 방법을 보여주는 Python의 예제 코드입니다.

import json

cached_data = {}

def handler(event, context):
    if not cached_data:
        # Fetch data from database or external API
        data = fetch_data()
        cached_data[‘data’] = data

    # Use cached data for subsequent requests
    response = {
        “statusCode”: 200,
        “body”: json.dumps(cached_data[‘data’])
    }

    return response

이 예제에서 함수가 처음 호출되면 외부 소스에서 데이터를 검색하고 이를 cached_data 사전에 저장하기 위해 fetch_data() 함수가 호출됩니다. 후속 호출에서는 캐시된 데이터가 사용되므로 응답 시간이 빨라집니다.

AWS Lambda에서 콜드 스타트와 웜 스타트의 개념을 이해하면 더 나은 성능을 위해 기능을 최적화하고 사용자에게 더 나은 경험을 제공할 수 있습니다.

반응형
블로그 이미지

민오라방구

개발 , 여행, 일상 아직 배울게 많은 개발자

,