본문 바로가기

클라우드/Public Cloud(Naver, Amazon)

aws lambda (dev-1)

객체가 Amazon S3 버킷에 업로드될 때 AWS Lambda를 사용하여 Lambda 함수를 실행하는 방법을 배운다.

Lambda 함수는 S3 버킷에 업로드되는 객체에 포함된 숫자의 최소값, 최대값 및 평균을 계산한다. Amazon S3 버킷의 콘텐츠를 가리킬 때 _파일_ _객체_라는 용어가 호환적으로 사용된다.

개발 환경에 연결하였다. 실습을 위해 임의의 window 가상환경인 Guacamol을 사용하여 window 개발 인스턴스에 연결하였다.

먼저 AWS Management Console에서 입력 버킷을 생성하겠다.

임의의 이름을 설정 (전 세계 고유하여야 한다.)

이름 설정 후 나머지는 기본 값으로 진행하면 무사히 버킷이 생성된다.

Numbers.txt라는 파일을 바탕화면에 다운로드하고 열어보았다.

생성한 버킷을 클릭해서 들어간 뒤 number.txt파일을 업로드 하겠다.

Upload를 클릭한 후 add files에서 클릭한다.

S3 버킷에 업로드 된 것을 확인할 수 있다.

Lambda 함수의 실행 역할을 생성해보겠다. IAM 서비스를 실행 한 뒤 역할을 생성하겠다.

AWS service를 실행한 뒤 Lambda를 클릭한 후 Next: Permissions를 클릭한다.

AmazonS3ReadOnlyAccess, AWSLambdaBasicExecutionRole을 선택한다.

역할 이름을 설정한 뒤 역할을 생성한다.

권한 설정이 끝나고 이제 Lambda 함수를 생성하겠다.

함수 생성을 클릭한다.

새로운 함수를 쓸 것이므로 Author from scratch를 선택한다.

PythonCalculator으로 이름을 설정한 뒤 Runtime에서 Python 3.6을 선택한다.

역할은 바로 전에 만들어 준 lambda_exection_role를 선택한 후 함수 생성!!

함수 코드 섹션에 lambda_function.lambda_handler를 입력했다.

Designer 섹션으로 가 트리거를 생성한다.

S3를 클릭한 후 앞서 생성한 버킷을 선택한 후 이벤트 타입 설정!(새로 생성될 떄마다)

위에 트리거를 추가해준 후 저장한다.

Lambda 함수 빌드, 패키지화 및 배포해야 한다. 이 함수는 Amazon S3 버킷에서 객체를 검색하고 이 객체에 포함된 숫자의 최소값, 최대값 및 평균을 계산한다.

먼저 Lambda 함수를 테스트하겠다. 개발 인스턴스에서 코드를 테스트하고 디버그한다. 코드에 만족할 경우 정확히 동일한 코드가 패키지화된 후 Lambda에 배포된다.

개발 인스턴스환경에서 pycharm으로 lambda.function.py라는 파일을 열었다.

버킷 이름 부분을 내가 생성한 버킷 이름으로 바꿔준다.

Lambda_function.py가 있는 디렉토리로 이동한 후 python 명령어로 실행한다.

최소값, 최대값 및 평균 결과가 표시된다.

개발 인스턴스에 코드를 개발한 후 테스트했으므로 이제 Lambda 함수를 배포한다. Lambda 함수의 zip 파일 패키지 lambda_function.zip을 생성한다.

Window 파일 탐색기에서 폴더를 찾은 후 마우스 오른쪽 버튼을 클릭한 후 send to를 클릭한 후 압축 폴더를 클릭한다.

배포 패키지를 Lambda에 배포하려면 명령을 실행한다. (powershell)

aws lambda update-function-code --function-name PythonCalculator --zip-file fileb://lambda_function.zip

Lambda 함수 호출 테스트하겠다. Lambda 서비스를 클릭한다.

PythonCalculator 함수를 클릭한다.

오른쪽 위 모서리에서 Test를 클릭한다.

Configure test event페이지에서 Event nameCalcTest를 입력한다. 다음 JSON 테스트 페이로드를 입력하고 버킷 이름을 앞서 생성한 버킷 이름으로 변경 한 후 생성한다.

상단으로 스크롤하여 Test를 클릭한다. 실행이 성공적이라는 메시지가 표시 되어야 한다.

Log output섹션에서 Click here를 따라 CloudWatch 로그 그룹 하이퍼링크를 클릭한다.

임의로 테스트할 txt파일을 만들어 조사하겠다. S3 서비스를 클릭한다.

생성한 버킷을 클릭한다.

3 파일을 추가한 후 upload한다. 무사히 업로드 된 것을 확인할 수 있다.

다시 Lambda 서비스로 돌아와 PythonCalculator로 이동한다.

Test를 클릭한다. 실행 결과가 성공적이여야 한다. (로그를 보냄)

역시 Log Output섹션에서 Click here을 따라 CloudWatch 로그 그룹 하이퍼 링크를 클릭!

CloudWatch 사이트가 나온다. 최근 이벤트된 시간이 나온다.

클릭해서 들어가보게 되면 로그 기록들을 다 확인할 수 있다. ( 4개의 파일마다 최소값 최대값 평균 값들을 확인할 수 있다.)