DevOps
[ DevOps ] - (AWS Lambda) EFS 파일시스템 생성 + 연동
우선 AWS EFS에서 간단한 설정으로 기본 EFS를 만들어 주도록 하겠습니다. 사용자가 1명인 만큼, 소유자도 1명으로 지정해줍니다. 이는 기본값들이므로 그냥 외우면 됩니다. 그리고 네트워크 텝에 들어가면 각 VPC의 서브넷에 보안그룹이 할당되어 있는데, Lambda Function을 만들 떄 보안그룹을 설정할 떄 이로 무조건 설정해 주어야 합니다. 다음으로는 AWS Lambda로 돌아와서 functionforefs라는 함수를 하나 만들어 주었습니다. 그리고 구성 > 권한으로 들어가서 기본적으로 만들어주는 권한을 확인합니다. 이에 정책 하나가 있는데 이 정책을 확인해 보면 다음과 같이 CloudWatch에 대한 정책밖에 없습니다. 진짜 아무것도 아닌 겁니다. 우선 EFS도 VPC가 하나이긴 하지만, V..
[ DevOps ] - (AWS Lambda) Layers
Lambda는 앞에서도 계속 말했지만, 엄청난 독립성 때문에 환경을 공유하고 이런 것이 EC2와는 다르게 불가능합니다. 만약 공통된 20개의 Python Lambda Function에 대해서 pandas, sckit learn... 등이 필요하다고 해 봅시다. 이를 모든 Lambda에 깔아주는 일은 매우 번거롭고 비효율적입니다. 그래서 일반적으로는 위와같이 zip파일을 업로드해야 합니다. 이를 20개에 대해서 zip파일을 다 만들면 너무 복잡한 일이 됩니다. 그래서 저희는 Layer를 사용해서 이를 Lambda아래에 붙이는 과정을 거쳐서 간단히 해결할 수 있게 됩니다. 우선 python_package라는 폴더를 만들고 여기서 간단히 requests모듈과 의존성들을 pip install을 통해 설치해 주도..
[ DevOps ] - (AWS Lambda) 환경변수 설정
궁극적으로 환경변수가 필요한 이유는, 코드에서 아이디나, 비밀번호가 필요한 경우가 있을 수 있기 때문입니다. 그래서 이를 하드코딩 되서 외부에 노출되는 것보다 환경변수를 통해 백단에 숨겨주는 것이 좋습니다. 일단 실습을 위해 secret에 hyunseo라고 지정해 주었습니다. function Function import json import os def lambda_handler(event, context): # TODO implement print(os.getenv("secret")) return 1 # return { # 'statusCode': 200, # 'body': json.dumps('Hello from version2!') # } 다음과 같이 Lambda 함수를 작성해서 환경변수에 등록된 ..
[ DevOps ] - (AWS Lambda) 버전관리와 Alias
일단 function이라는 새 Lambda function을 만들어 보도록 하겠습니다. 그리고 version1이라는 버전을 만들겠습니다. 그리고 코드소스를 조금 수정하고 Deploy후에, version2를 만들겠습니다. 그리고 위와 같이 version_test라는 별칭을 2를 가리키게 만들어 주었습니다. 별칭을 만드는 이유는 사람이 알아들을 수 있는 이유로 표현하기 위함입니다. 나중에 function:version_test와 같이 직관적으로 버전을 알아보게 할 수도 있으니까 말이죠