Save to AWS EFS(PVC) as AWS Lambda
Language/Python

Save to AWS EFS(PVC) as AWS Lambda

뉴비뉴 2022. 8. 22.

안녕하세요.

 

저번 시간에는 'Python argparse, S3 folder upload' 까지 알아봤습니다.

오늘 해볼 것은 S3에 올라온 파일을 Lambda를 이용하여 AWS EFS(Elastic File System)에 저장하는 것 입니다. 그러면 왜 EFS에 저장을 해야 될까요? 바로 Kubernetes 에서 파일 시스템을 이용하여 폴더를 사용할 수 있기 때문입니다.

 

링크 여기에 EFS 관련 설명이 자세히 나와있습니다.

 

중요한 것들을 뽑아보자면

1. AWS EFS는 NFSv4 프로토콜을 준수하는 AWS 서버리스 파일 시스템 상품이다.

2. 영구적으로 파일을 저장할 수 있다는 공통점을 가진 AWS S3와 다른 점은 인스턴스에 네이티브한 하나의 파일 시스템으로 작동한다는 것이다.

3. 수천대 이상의 인스턴스(또는 작업)이 EFS에 동시간에 마운트하는 것이 가능하다.

4. 용량 관리에 신경 쓸 필요가 없다. 최대 페타 바이트 수준까지 자동으로 확장한다.

AWS EFS

먼저 EFS를 만들어보도록 하겠습니다.

파일 시스템을 생성하였으면 바로 액세스 포인트로 이동합니다.

'액세스 포인트 생성' 버튼을 클릭하시면 아래와 같은 창이 뜹니다.

여기서 설정해야 될 것은 루트 디렉터리 경로입니다.

만약 여기서 /foo/bar로 입력했다면 Lambda에서 EFS를 연결 했다고 가정하겠습니다.

/mnt/foo/bar로 에 데이터를 쌓아야 EFS 에 데이터가 쌓이기 시작합니다. 

 

보통은 / 로 설정해주시면 되겠습니다. 그 이유는 Lambda에서 자세히 살펴보겠습니다.

다음으로는 생성 권한을 설정할 수 있는 것 인데요. 여기에서 삽질을 했습니다.

검색을 했을 때 1100 이라는 ID 를 넣어주면 된다는 글을 많이 봐왔고,

저의 케이스는 root 권한이 필요한 상태라 0 을 설정하면 root 으로 자동으로 변경 되었습니다.

AWS Lambda

Lambda에서 함수 생성을 눌러주시고,

 여기서 블루프린트 사용을 눌러주시고, s3-get-object-python을 검색하여 선택합니다.

저번 시간에 S3에 데이터를 올리는 것 까지 완료하였습니다.

Lambda 에서는 올라온 이미지를 내려받아서 EFS에 저장하는 걸 구현하겠습니다.

여기서 가져올 버킷의 정보를 입력해줍니다.

완료하셨다면 아래와 같이 Lambda 함수가 생성됐을 겁니다.

AWS Lambda 코드 소스

import os
import boto3
import math
import time
from botocore.exceptions import ClientError


def lambda_handler(event, lambda_context):

    s3_resource = boto3.resource('s3')

    bucket = s3_resource.Bucket("bucket-name")

    objs = list(bucket.objects.filter(Prefix="seller-car/car/hyundai"))

    client = boto3.client('s3')

    obj = objs[1]  # obj.key는 S3의 경로
    out_name = "/mnt/seller-car/car/hyundai" + obj.key.split('/')[-1]  # /mnt/seller-car/car/hyundai
    client.download_file("bucket-name", obj.key, out_name)

    return print('true')

여기서 out_name 이 AWS EFS 경로에 저장하는 부분이 되겠습니다.

아래 첨부한 사진처럼 로컬 탑재 경로로 저장을 하게되면 EFS에 저장이 됩니다!

추후에 Python argparse, S3 folder upload 폴더 업로드와 AWS Lambda 로 EFS저장

한번에 하는 것 까지 게시글로 작성해보겠습니다.

 

감사합니다!

댓글

💲 추천 글